]> jfr.im git - yt-dlp.git/commitdiff
[jsinterp] Do not compile regex
authorpukkandan <redacted>
Wed, 24 May 2023 17:35:20 +0000 (23:05 +0530)
committerpukkandan <redacted>
Wed, 24 May 2023 18:00:45 +0000 (23:30 +0530)
test/test_jsinterp.py
yt_dlp/jsinterp.py

index 96274116b9c57c2d694df2670833d57b9a8cf63b..4d44e6efe6aed7c4f3882a06b24e3d4504891e17 100644 (file)
@@ -8,7 +8,6 @@
 sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
 
 import math
-import re
 
 from yt_dlp.jsinterp import JS_Undefined, JSInterpreter
 
@@ -275,7 +274,9 @@ def test_object(self):
 
     def test_regex(self):
         self._test('function f() { let a=/,,[/,913,/](,)}/; }', None)
+        self._test('function f() { let a=/,,[/,913,/](,)}/; return a; }', R'/,,[/,913,/](,)}/0')
 
+        R'''  # We are not compiling regex
         jsi = JSInterpreter('function f() { let a=/,,[/,913,/](,)}/; return a; }')
         self.assertIsInstance(jsi.call_function('f'), re.Pattern)
 
@@ -287,6 +288,7 @@ def test_regex(self):
 
         jsi = JSInterpreter(R'function f() { let a=[/[)\\]/]; return a[0]; }')
         self.assertEqual(jsi.call_function('f').pattern, r'[)\\]')
+        '''
 
     @unittest.skip('Not implemented')
     def test_replace(self):
index 1ef1f0823a779f5f87bf9b6cead7ab7374c14570..7c7940efd581f7646cb0521935da529b8eb2ab68 100644 (file)
@@ -352,8 +352,10 @@ def interpret_statement(self, stmt, local_vars, allow_recursion=100):
             inner, outer = self._separate(expr, expr[0], 1)
             if expr[0] == '/':
                 flags, outer = self._regex_flags(outer)
+                # We don't support regex methods yet, so no point compiling it
+                inner = f'{inner}/{flags}'
                 # Avoid https://github.com/python/cpython/issues/74534
-                inner = re.compile(inner[1:].replace('[[', r'[\['), flags=flags)
+                inner = re.compile(inner[1:].replace('[[', r'[\['), flags=flags)
             else:
                 inner = json.loads(js_to_json(f'{inner}{expr[0]}', strict=True))
             if not outer: