mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2024-11-10 01:02:13 +01:00
[jsinterp] Do not compile regex
This commit is contained in:
parent
15b2d3db1d
commit
7aeda6cc9e
2 changed files with 6 additions and 2 deletions
|
@ -8,7 +8,6 @@
|
||||||
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
||||||
|
|
||||||
import math
|
import math
|
||||||
import re
|
|
||||||
|
|
||||||
from yt_dlp.jsinterp import JS_Undefined, JSInterpreter
|
from yt_dlp.jsinterp import JS_Undefined, JSInterpreter
|
||||||
|
|
||||||
|
@ -275,7 +274,9 @@ def test_object(self):
|
||||||
|
|
||||||
def test_regex(self):
|
def test_regex(self):
|
||||||
self._test('function f() { let a=/,,[/,913,/](,)}/; }', None)
|
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; }')
|
jsi = JSInterpreter('function f() { let a=/,,[/,913,/](,)}/; return a; }')
|
||||||
self.assertIsInstance(jsi.call_function('f'), re.Pattern)
|
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]; }')
|
jsi = JSInterpreter(R'function f() { let a=[/[)\\]/]; return a[0]; }')
|
||||||
self.assertEqual(jsi.call_function('f').pattern, r'[)\\]')
|
self.assertEqual(jsi.call_function('f').pattern, r'[)\\]')
|
||||||
|
'''
|
||||||
|
|
||||||
@unittest.skip('Not implemented')
|
@unittest.skip('Not implemented')
|
||||||
def test_replace(self):
|
def test_replace(self):
|
||||||
|
|
|
@ -352,8 +352,10 @@ def interpret_statement(self, stmt, local_vars, allow_recursion=100):
|
||||||
inner, outer = self._separate(expr, expr[0], 1)
|
inner, outer = self._separate(expr, expr[0], 1)
|
||||||
if expr[0] == '/':
|
if expr[0] == '/':
|
||||||
flags, outer = self._regex_flags(outer)
|
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
|
# 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:
|
else:
|
||||||
inner = json.loads(js_to_json(f'{inner}{expr[0]}', strict=True))
|
inner = json.loads(js_to_json(f'{inner}{expr[0]}', strict=True))
|
||||||
if not outer:
|
if not outer:
|
||||||
|
|
Loading…
Reference in a new issue