mirror of
				https://github.com/ytdl-org/youtube-dl.git
				synced 2025-10-29 09:26:20 -07:00 
			
		
		
		
	[jsinterp] Fix function calls without arguments.
This commit is contained in:
		| @@ -104,6 +104,13 @@ class TestJSInterpreter(unittest.TestCase): | ||||
|         }''') | ||||
|         self.assertEqual(jsi.call_function('x'), [20, 20, 30, 40, 50]) | ||||
|  | ||||
|     def test_call(self): | ||||
|         jsi = JSInterpreter(''' | ||||
|         function x() { return 2; } | ||||
|         function y(a) { return x() + a; } | ||||
|         function z() { return y(3); } | ||||
|         ''') | ||||
|         self.assertEqual(jsi.call_function('z'), 5) | ||||
|  | ||||
| if __name__ == '__main__': | ||||
|     unittest.main() | ||||
|   | ||||
| @@ -198,12 +198,12 @@ class JSInterpreter(object): | ||||
|             return opfunc(x, y) | ||||
|  | ||||
|         m = re.match( | ||||
|             r'^(?P<func>%s)\((?P<args>[a-zA-Z0-9_$,]+)\)$' % _NAME_RE, expr) | ||||
|             r'^(?P<func>%s)\((?P<args>[a-zA-Z0-9_$,]*)\)$' % _NAME_RE, expr) | ||||
|         if m: | ||||
|             fname = m.group('func') | ||||
|             argvals = tuple([ | ||||
|                 int(v) if v.isdigit() else local_vars[v] | ||||
|                 for v in m.group('args').split(',')]) | ||||
|                 for v in m.group('args').split(',')]) if len(m.group('args')) > 0 else tuple() | ||||
|             if fname not in self._functions: | ||||
|                 self._functions[fname] = self.extract_function(fname) | ||||
|             return self._functions[fname](argvals) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user