Пример #1
0
def is_nil(_, self, parameters):
    obj = parameters[0]

    if isinstance(obj, PrimitiveNilObjectSingleton):
        return PrimitiveTrueObject()
    else:
        return PrimitiveFalseObject()
Пример #2
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()
Пример #3
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()
Пример #4
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