[jsinterp] Formatting code
This commit is contained in:
parent
a9c7310950
commit
e392f7897d
@ -5,6 +5,7 @@ from __future__ import unicode_literals
|
||||
# Allow direct execution
|
||||
import os
|
||||
import sys
|
||||
|
||||
if sys.version_info < (2, 7):
|
||||
import unittest2 as unittest
|
||||
else:
|
||||
@ -36,7 +37,7 @@ class TestJSInterpreterParser(unittest.TestCase):
|
||||
(Token.OPEXPR, [(Token.MEMBER, (Token.INT, 42), None, None)]),
|
||||
None)
|
||||
])
|
||||
)]
|
||||
)]
|
||||
self.assertEqual(list(jsi.statements()), ast)
|
||||
|
||||
def test_calc(self):
|
||||
@ -258,46 +259,47 @@ class TestJSInterpreterParser(unittest.TestCase):
|
||||
jsi = JSInterpreter('return (1) + (2) * ((( (( (((((3)))))) )) ));')
|
||||
ast = [
|
||||
(Token.RETURN, (Token.EXPR, [
|
||||
(Token.ASSIGN, None,
|
||||
(Token.OPEXPR, [
|
||||
(Token.MEMBER, (Token.EXPR, [(Token.ASSIGN, None, (Token.OPEXPR, [
|
||||
(Token.MEMBER, (Token.INT, 1), None, None)
|
||||
]), None),]), None, None),
|
||||
(Token.ASSIGN, None,
|
||||
(Token.OPEXPR, [
|
||||
(Token.MEMBER, (Token.EXPR, [(Token.ASSIGN, None, (Token.OPEXPR, [
|
||||
(Token.MEMBER, (Token.INT, 1), None, None)
|
||||
]), None)]), None, None),
|
||||
|
||||
(Token.MEMBER, (Token.EXPR, [(Token.ASSIGN, None, (Token.OPEXPR, [
|
||||
(Token.MEMBER, (Token.INT, 2), None, None)
|
||||
]), None)]), None, None),
|
||||
(Token.MEMBER, (Token.EXPR, [(Token.ASSIGN, None, (Token.OPEXPR, [
|
||||
(Token.MEMBER, (Token.INT, 2), None, None)
|
||||
]), None)]), None, None),
|
||||
|
||||
(Token.MEMBER, (Token.EXPR, [(Token.ASSIGN, None, (Token.OPEXPR, [
|
||||
(Token.MEMBER, (Token.EXPR, [(Token.ASSIGN, None, (Token.OPEXPR, [
|
||||
(Token.MEMBER, (Token.EXPR, [(Token.ASSIGN, None, (Token.OPEXPR, [
|
||||
|
||||
(Token.MEMBER, (Token.EXPR, [(Token.ASSIGN, None, (Token.OPEXPR, [
|
||||
(Token.MEMBER, (Token.EXPR, [(Token.ASSIGN, None, (Token.OPEXPR, [
|
||||
|
||||
(Token.MEMBER, (Token.EXPR, [(Token.ASSIGN, None, (Token.OPEXPR, [
|
||||
(Token.MEMBER, (Token.EXPR, [(Token.ASSIGN, None, (Token.OPEXPR, [
|
||||
|
||||
(Token.MEMBER, (Token.EXPR, [(Token.ASSIGN, None, (Token.OPEXPR, [
|
||||
(Token.MEMBER, (Token.EXPR, [(Token.ASSIGN, None, (Token.OPEXPR, [
|
||||
(Token.MEMBER, (Token.EXPR, [(Token.ASSIGN, None, (Token.OPEXPR, [
|
||||
(Token.MEMBER, (Token.EXPR, [(Token.ASSIGN, None, (Token.OPEXPR, [
|
||||
(Token.MEMBER, (Token.INT, 3), None, None)
|
||||
(Token.MEMBER,
|
||||
(Token.EXPR, [(Token.ASSIGN, None, (Token.OPEXPR, [
|
||||
(Token.MEMBER, (Token.INT, 3), None, None)
|
||||
]), None)]), None, None)
|
||||
]), None)]), None, None)
|
||||
]), None)]), None, None)
|
||||
]), None)]), None, None)
|
||||
]), None)]), None, None)
|
||||
|
||||
]), None)]), None, None)
|
||||
|
||||
]), None)]), None, None)
|
||||
|
||||
]), None)]), None, None)
|
||||
|
||||
]), None)]), None, None)
|
||||
]), None)]), None, None)
|
||||
]), None)]), None, None),
|
||||
]), None)]), None, None),
|
||||
|
||||
(Token.OP, _OPERATORS['*'][1]),
|
||||
(Token.OP, _OPERATORS['+'][1])
|
||||
]), None)
|
||||
]))
|
||||
(Token.OP, _OPERATORS['*'][1]),
|
||||
(Token.OP, _OPERATORS['+'][1])
|
||||
]), None)
|
||||
]))
|
||||
]
|
||||
self.assertEqual(list(jsi.statements()), ast)
|
||||
|
||||
@ -316,11 +318,11 @@ class TestJSInterpreterParser(unittest.TestCase):
|
||||
(Token.ASSIGN,
|
||||
_ASSIGN_OPERATORS['='][1],
|
||||
(Token.OPEXPR, [(Token.MEMBER, (Token.ID, 'x'), None, None)]),
|
||||
(Token.ASSIGN, None, (Token.OPEXPR, [
|
||||
(Token.MEMBER, (Token.INT, 30), None, None),
|
||||
(Token.MEMBER, (Token.INT, 1), None, None),
|
||||
(Token.OP, _OPERATORS['+'][1])
|
||||
]),
|
||||
(Token.ASSIGN, None,
|
||||
(Token.OPEXPR, [
|
||||
(Token.MEMBER, (Token.INT, 30), None, None),
|
||||
(Token.MEMBER, (Token.INT, 1), None, None),
|
||||
(Token.OP, _OPERATORS['+'][1])]),
|
||||
None))
|
||||
]),
|
||||
|
||||
@ -335,16 +337,16 @@ class TestJSInterpreterParser(unittest.TestCase):
|
||||
|
||||
jsi = JSInterpreter('var x = 20; x += 30 + 1; return x;')
|
||||
ast[1] = (Token.EXPR, [
|
||||
(Token.ASSIGN,
|
||||
_ASSIGN_OPERATORS['+='][1],
|
||||
(Token.OPEXPR, [(Token.MEMBER, (Token.ID, 'x'), None, None)]),
|
||||
(Token.ASSIGN, None, (Token.OPEXPR, [
|
||||
(Token.MEMBER, (Token.INT, 30), None, None),
|
||||
(Token.MEMBER, (Token.INT, 1), None, None),
|
||||
(Token.OP, _OPERATORS['+'][1])
|
||||
]),
|
||||
None))
|
||||
])
|
||||
(Token.ASSIGN,
|
||||
_ASSIGN_OPERATORS['+='][1],
|
||||
(Token.OPEXPR, [(Token.MEMBER, (Token.ID, 'x'), None, None)]),
|
||||
(Token.ASSIGN, None,
|
||||
(Token.OPEXPR, [
|
||||
(Token.MEMBER, (Token.INT, 30), None, None),
|
||||
(Token.MEMBER, (Token.INT, 1), None, None),
|
||||
(Token.OP, _OPERATORS['+'][1])]),
|
||||
None))
|
||||
])
|
||||
self.assertEqual(list(jsi.statements()), ast)
|
||||
|
||||
jsi = JSInterpreter('var x = 20; x -= 30 + 1; return x;')
|
||||
@ -352,11 +354,11 @@ class TestJSInterpreterParser(unittest.TestCase):
|
||||
(Token.ASSIGN,
|
||||
_ASSIGN_OPERATORS['-='][1],
|
||||
(Token.OPEXPR, [(Token.MEMBER, (Token.ID, 'x'), None, None)]),
|
||||
(Token.ASSIGN, None, (Token.OPEXPR, [
|
||||
(Token.MEMBER, (Token.INT, 30), None, None),
|
||||
(Token.MEMBER, (Token.INT, 1), None, None),
|
||||
(Token.OP, _OPERATORS['+'][1])
|
||||
]),
|
||||
(Token.ASSIGN, None,
|
||||
(Token.OPEXPR, [
|
||||
(Token.MEMBER, (Token.INT, 30), None, None),
|
||||
(Token.MEMBER, (Token.INT, 1), None, None),
|
||||
(Token.OP, _OPERATORS['+'][1])]),
|
||||
None))
|
||||
])
|
||||
self.assertEqual(list(jsi.statements()), ast)
|
||||
@ -502,7 +504,7 @@ class TestJSInterpreterParser(unittest.TestCase):
|
||||
ast = []
|
||||
self.assertEqual(list(jsi.statements()), ast)
|
||||
|
||||
jsi = JSInterpreter('function x(a) { return a.split(""); }', objects={'a': 'abc'})
|
||||
jsi = JSInterpreter('function x(a) { return a.split(""); }', variables={'a': 'abc'})
|
||||
ast = []
|
||||
self.assertEqual(list(jsi.statements()), ast)
|
||||
|
||||
@ -517,7 +519,7 @@ class TestJSInterpreterParser(unittest.TestCase):
|
||||
self.assertEqual(list(jsi.statements()), ast)
|
||||
|
||||
def test_getfield(self):
|
||||
jsi = JSInterpreter('return a.var;', objects={'a': {'var': 3}})
|
||||
jsi = JSInterpreter('return a.var;', variables={'a': {'var': 3}})
|
||||
ast = [(Token.RETURN,
|
||||
(Token.EXPR, [
|
||||
(Token.ASSIGN,
|
||||
@ -533,5 +535,6 @@ class TestJSInterpreterParser(unittest.TestCase):
|
||||
]
|
||||
self.assertEqual(list(jsi.statements()), ast)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
|
@ -3,7 +3,6 @@ from ..compat import compat_str
|
||||
|
||||
import re
|
||||
|
||||
|
||||
from ..utils import ExtractorError
|
||||
from .tstream import TokenStream
|
||||
from .jsgrammar import Token
|
||||
@ -223,7 +222,7 @@ class JSInterpreter(object):
|
||||
peek_id, peek_value, peek_pos = token_stream.peek()
|
||||
elif peek_id is Token.POPEN:
|
||||
# TODO handle field query
|
||||
raise ExtractorError('Field querry is not yet supported at %d' % peek_pos)
|
||||
raise ExtractorError('Field query is not yet supported at %d' % peek_pos)
|
||||
|
||||
if peek_id is Token.ID:
|
||||
token_stream.pop()
|
||||
@ -470,7 +469,7 @@ class JSInterpreter(object):
|
||||
|
||||
def getvalue(self, ref):
|
||||
if (ref.value is None or ref.value is self.undefined or
|
||||
isinstance(ref.value, (int, float, str, compat_str, list))):
|
||||
isinstance(ref.value, (int, float, compat_str, list))):
|
||||
return ref.value
|
||||
ref_id, ref_value = ref.value
|
||||
if ref_id is Token.ID:
|
||||
@ -510,7 +509,6 @@ class JSInterpreter(object):
|
||||
|
||||
name = stmt[0]
|
||||
ref = None
|
||||
abort = False
|
||||
if name == 'funcdecl':
|
||||
# TODO interpret funcdecl
|
||||
raise ExtractorError('''Can't interpret statement called %s''' % name)
|
||||
@ -523,7 +521,7 @@ class JSInterpreter(object):
|
||||
elif name is Token.VAR:
|
||||
for name, value in stmt[1]:
|
||||
self.context.local_vars[name] = Reference(self.getvalue(self.interpret_expression(value)),
|
||||
(self.context.local_vars, name))
|
||||
(self.context.local_vars, name))
|
||||
elif name is Token.EXPR:
|
||||
for expr in stmt[1]:
|
||||
ref = self.interpret_expression(expr)
|
||||
|
Loading…
x
Reference in New Issue
Block a user