mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-11-04 08:35:12 +00:00 
			
		
		
		
	[jsinterp] Support alternative function definition form
This commit is contained in:
		@@ -19,6 +19,9 @@ class TestJSInterpreter(unittest.TestCase):
 | 
				
			|||||||
        jsi = JSInterpreter('function x3(){return 42;}')
 | 
					        jsi = JSInterpreter('function x3(){return 42;}')
 | 
				
			||||||
        self.assertEqual(jsi.call_function('x3'), 42)
 | 
					        self.assertEqual(jsi.call_function('x3'), 42)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        jsi = JSInterpreter('var x5 = function(){return 42;}')
 | 
				
			||||||
 | 
					        self.assertEqual(jsi.call_function('x5'), 42)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_calc(self):
 | 
					    def test_calc(self):
 | 
				
			||||||
        jsi = JSInterpreter('function x4(a){return 2*a+1;}')
 | 
					        jsi = JSInterpreter('function x4(a){return 2*a+1;}')
 | 
				
			||||||
        self.assertEqual(jsi.call_function('x4', 3), 7)
 | 
					        self.assertEqual(jsi.call_function('x4', 3), 7)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -232,10 +232,10 @@ class JSInterpreter(object):
 | 
				
			|||||||
    def extract_function(self, funcname):
 | 
					    def extract_function(self, funcname):
 | 
				
			||||||
        func_m = re.search(
 | 
					        func_m = re.search(
 | 
				
			||||||
            r'''(?x)
 | 
					            r'''(?x)
 | 
				
			||||||
                (?:function\s+%s|[{;]%s\s*=\s*function)\s*
 | 
					                (?:function\s+%s|[{;]%s\s*=\s*function|var\s+%s\s*=\s*function)\s*
 | 
				
			||||||
                \((?P<args>[^)]*)\)\s*
 | 
					                \((?P<args>[^)]*)\)\s*
 | 
				
			||||||
                \{(?P<code>[^}]+)\}''' % (
 | 
					                \{(?P<code>[^}]+)\}''' % (
 | 
				
			||||||
                re.escape(funcname), re.escape(funcname)),
 | 
					                re.escape(funcname), re.escape(funcname), re.escape(funcname)),
 | 
				
			||||||
            self.code)
 | 
					            self.code)
 | 
				
			||||||
        if func_m is None:
 | 
					        if func_m is None:
 | 
				
			||||||
            raise ExtractorError('Could not find JS function %r' % funcname)
 | 
					            raise ExtractorError('Could not find JS function %r' % funcname)
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user