fix youtube KeyError
This commit is contained in:
parent
bd1f325b42
commit
f16e48ae44
@ -45,6 +45,23 @@ class JSInterpreter(object):
|
|||||||
v = self.interpret_expression(expr, local_vars, allow_recursion)
|
v = self.interpret_expression(expr, local_vars, allow_recursion)
|
||||||
return assign(v)
|
return assign(v)
|
||||||
|
|
||||||
|
def XG(self, list, desiredNonCommentArgIndex):
|
||||||
|
file = list[0]
|
||||||
|
v = int(desiredNonCommentArgIndex) % int(len(list))
|
||||||
|
list[0] = list[int(v)]
|
||||||
|
list[int(desiredNonCommentArgIndex)] = file
|
||||||
|
return list
|
||||||
|
|
||||||
|
def NZ(self, suite):
|
||||||
|
return suite[::-1]
|
||||||
|
|
||||||
|
def PL(self, curr, _part):
|
||||||
|
return curr[int(_part):]
|
||||||
|
|
||||||
|
def fo(self, curr):
|
||||||
|
curr = curr.split("")
|
||||||
|
|
||||||
|
|
||||||
def interpret_expression(self, expr, local_vars, allow_recursion):
|
def interpret_expression(self, expr, local_vars, allow_recursion):
|
||||||
if expr.isdigit():
|
if expr.isdigit():
|
||||||
return int(expr)
|
return int(expr)
|
||||||
@ -55,7 +72,20 @@ class JSInterpreter(object):
|
|||||||
m = re.match(r'^(?P<in>[a-z]+)\.(?P<member>.*)$', expr)
|
m = re.match(r'^(?P<in>[a-z]+)\.(?P<member>.*)$', expr)
|
||||||
if m:
|
if m:
|
||||||
member = m.group('member')
|
member = m.group('member')
|
||||||
|
if m.group('in') == u'fo':
|
||||||
|
val = local_vars[u'a']
|
||||||
|
le = re.match(r'^(?P<function>[A-Z]+)\([a]\,(?P<num>.*)\)$', member)
|
||||||
|
f = le.group('function')
|
||||||
|
n = le.group('num')
|
||||||
|
if f == 'XG':
|
||||||
|
return self.XG(val, n)
|
||||||
|
elif f == 'NZ':
|
||||||
|
return self.NZ(val)
|
||||||
|
elif f == 'PL':
|
||||||
|
return self.PL(val, n)
|
||||||
|
else:
|
||||||
val = local_vars[m.group('in')]
|
val = local_vars[m.group('in')]
|
||||||
|
|
||||||
if member == 'split("")':
|
if member == 'split("")':
|
||||||
return list(val)
|
return list(val)
|
||||||
if member == 'join("")':
|
if member == 'join("")':
|
||||||
@ -64,6 +94,7 @@ class JSInterpreter(object):
|
|||||||
return len(val)
|
return len(val)
|
||||||
if member == 'reverse()':
|
if member == 'reverse()':
|
||||||
return val[::-1]
|
return val[::-1]
|
||||||
|
|
||||||
slice_m = re.match(r'slice\((?P<idx>.*)\)', member)
|
slice_m = re.match(r'slice\((?P<idx>.*)\)', member)
|
||||||
if slice_m:
|
if slice_m:
|
||||||
idx = self.interpret_expression(
|
idx = self.interpret_expression(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user