Exemplo n.º 1
0
    def call(self, interpreter, arguments, parentheses):
        if not isinstance(arguments[0], PseudoList):
            raise RuntimeError(parentheses, "Can only append to a list.")

        pseudoList = DeepCopy(arguments[0]) #Deep copy is inefficient
        pseudoList.getValues().append(arguments[1])

        return PseudoList(pseudoList.getValues())
Exemplo n.º 2
0
    def call(self, interpreter, arguments, parentheses):
        if not isinstance(arguments[0], PseudoList):
            raise RuntimeError(parentheses, "Can only remove elements from a list.")

        pseudoList = DeepCopy(arguments[0])
        pseudoList._checkIndex(parentheses, arguments[1]) #bad, using a private method but CBA
        del pseudoList.getValues()[int(arguments[1])]

        return PseudoList(pseudoList.getValues())
Exemplo n.º 3
0
    def call(self, interpreter, arguments, parentheses):
        if not isinstance(arguments[0], PseudoList):
            raise RuntimeError(parentheses, "Can only slice a list.")

        if not isinstance(arguments[1], float) and not isinstance(arguments[2], float):
            raise RuntimeError(parentheses, "Start and End indices must be numbers.")

        pseudoList = DeepCopy(arguments[0])

        pseudoList._checkIndex(parentheses, arguments[1])
        pseudoList._checkIndex(parentheses, arguments[2])

        return PseudoList(pseudoList.getValues()[int(arguments[1]) : int(arguments[2])])