mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2025-08-10 10:49:45 +00:00
[cleanup] Misc fixes (see desc)
* [tvver] Fix bug in 6837633a4a
- Closes #4054
* [rumble] Fix tests - Closes #3976
* [make] Remove `cat` abuse - Closes #3989
* [make] Revert #3684 - Closes #3814
* [utils] Improve `get_elements_by_class` - Closes #3993
* [utils] Inherit `Namespace` from `types.SimpleNamespace`
* [utils] Use `re.fullmatch` for matching filters
* [jsinterp] Handle quotes in `_separate`
* [make_readme] Allow overshooting last line
Authored by: pukkandan, kwconder, MrRawes, Lesmiscore
This commit is contained in:
@@ -24,6 +24,7 @@ _ASSIGN_OPERATORS.append(('=', (lambda cur, right: right)))
|
||||
_NAME_RE = r'[a-zA-Z_$][a-zA-Z_$0-9]*'
|
||||
|
||||
_MATCHING_PARENS = dict(zip('({[', ')}]'))
|
||||
_QUOTES = '\'"'
|
||||
|
||||
|
||||
class JS_Break(ExtractorError):
|
||||
@@ -69,12 +70,17 @@ class JSInterpreter:
|
||||
return
|
||||
counters = {k: 0 for k in _MATCHING_PARENS.values()}
|
||||
start, splits, pos, delim_len = 0, 0, 0, len(delim) - 1
|
||||
in_quote, escaping = None, False
|
||||
for idx, char in enumerate(expr):
|
||||
if char in _MATCHING_PARENS:
|
||||
counters[_MATCHING_PARENS[char]] += 1
|
||||
elif char in counters:
|
||||
counters[char] -= 1
|
||||
if char != delim[pos] or any(counters.values()):
|
||||
elif not escaping and char in _QUOTES and in_quote in (char, None):
|
||||
in_quote = None if in_quote else char
|
||||
escaping = not escaping and in_quote and char == '\\'
|
||||
|
||||
if char != delim[pos] or any(counters.values()) or in_quote:
|
||||
pos = 0
|
||||
continue
|
||||
elif pos != delim_len:
|
||||
|
Reference in New Issue
Block a user