示例#1
0
def is_nil(_, self, parameters):
    obj = parameters[0]

    if isinstance(obj, PrimitiveNilObjectSingleton):
        return PrimitiveTrueObject()
    else:
        return PrimitiveFalseObject()
示例#2
0
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()
示例#3
0
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()
示例#4
0
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()
示例#5
0
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