Exemplo n.º 1
0
    def _parse_scope(self, token_iterator) -> Command:
        parts = []
        for tok in token_iterator:
            if tok == '{':
                parts.append(self._parse_scope(token_iterator))
            elif tok == '}':
                break
            else:
                parts.append(tok)

        if ':' in parts:
            cmd = Command(parts[2])
            cmd.target = parts[0]
            cmd.arguments = parts[3:]
            return cmd
        else:
            cmd = Command(parts[0])
            cmd.arguments = parts[1:]
            return cmd
Exemplo n.º 2
0
    def test_execute_set(self):
        set_cmd = Command('set')
        set_cmd.target = 'foo'
        set_cmd.arguments = [3]
        self.assertEqual(1, self.interpreter.root['foo'].value)
        self.interpreter.execute(set_cmd)
        self.assertEqual(3, self.interpreter.root['foo'].value)

        self.assertEqual(2, self.interpreter.root['foo.bar'].value)
        set_cmd.target = 'foo.bar'
        self.interpreter.execute(set_cmd)
        self.assertEqual(3, self.interpreter.root['foo.bar'].value)
Exemplo n.º 3
0
    def test_recursive_argument_evaluation(self):
        self.root['foo'].append_node('value', Node(123))

        get_value_cmd = Command('get')
        get_value_cmd.target = 'foo.value'

        set_cmd = Command('set')
        set_cmd.target = 'foo'
        set_cmd.arguments = [get_value_cmd]

        # Execute: foo: set {foo.value: get}
        self.interpreter.execute(set_cmd)
        self.assertEqual(123, self.root['foo'].value)
Exemplo n.º 4
0
 def test_nested_arguments_string(self):
     cmd = Command("foobar")
     cmd.arguments = [Command("spam"), "rabbit", Command("rabarbar")]
     self.assertEqual("foobar {spam} rabbit {rabarbar}", str(cmd))
Exemplo n.º 5
0
 def test_command_arguments_string(self):
     cmd = Command("foobar")
     cmd.arguments = ["foo", "bar", "spam"]
     self.assertEqual("foobar foo bar spam", str(cmd))