def is_nil(_, self, parameters): obj = parameters[0] if isinstance(obj, PrimitiveNilObjectSingleton): return PrimitiveTrueObject() else: return PrimitiveFalseObject()
def is_false(_, self, parameters): from tinySelf.vm.primitives.primitive_true import PrimitiveTrueObject obj = parameters[0] if isinstance(obj, PrimitiveFalseObjectSingleton): return PrimitiveTrueObject() else: return PrimitiveFalseObject()
def compare(_, self, parameters): obj = parameters[0] assert isinstance(self, PrimitiveIntObject) assert isinstance(obj, _NumberObject) if self.value == obj.value: return PrimitiveTrueObject() else: return PrimitiveFalseObject()
def gt(_, self, parameters): obj = parameters[0] assert isinstance(self, PrimitiveFloatObject) assert isinstance(obj, _NumberObject) assert isinstance(self.value, float) # assert isinstance(obj.value, float) if self.value > obj.value: return PrimitiveTrueObject() else: return PrimitiveFalseObject()
def get_primitives(): """ Return object with primitive functions mapped to its slots. Returns: obj: Instance of tinySelf's Object. """ primitives = Object() # add_primitive_fn(primitives, "primitiveInt", lambda x: PrimitiveIntObject(x), ["literal"]) # add_primitive_fn(primitives, "primitiveStr", lambda x: PrimitiveStrObject(x), ["literal"]) primitives.meta_add_slot("nil", PrimitiveNilObject()) primitives.meta_add_slot("true", PrimitiveTrueObject()) primitives.meta_add_slot("false", PrimitiveFalseObject()) primitives.meta_add_slot("block_traits", _USER_EDITABLE_BLOCK_TRAIT) primitives.meta_add_slot("time", get_primitive_time_object()) add_primitive_fn(primitives, "mirrorOn:", _create_mirror, ["obj"]) return primitives