aboutsummaryrefslogtreecommitdiffhomepage
path: root/youtube_dl/jsinterp.py
diff options
context:
space:
mode:
Diffstat (limited to 'youtube_dl/jsinterp.py')
-rw-r--r--youtube_dl/jsinterp.py20
1 files changed, 18 insertions, 2 deletions
diff --git a/youtube_dl/jsinterp.py b/youtube_dl/jsinterp.py
index 0cfae4b28..ec8674936 100644
--- a/youtube_dl/jsinterp.py
+++ b/youtube_dl/jsinterp.py
@@ -488,9 +488,18 @@ class JSInterpreter(object):
skipping = 0
if skip_delims:
skip_delims = variadic(skip_delims)
+ skip_txt = None
for idx, char in enumerate(expr):
+ if skip_txt and idx <= skip_txt[1]:
+ continue
paren_delta = 0
if not in_quote:
+ if char == '/' and expr[idx:idx + 2] == '/*':
+ # skip a comment
+ skip_txt = expr[idx:].find('*/', 2)
+ skip_txt = [idx, idx + skip_txt + 1] if skip_txt >= 2 else None
+ if skip_txt:
+ continue
if char in _MATCHING_PARENS:
counters[_MATCHING_PARENS[char]] += 1
paren_delta = 1
@@ -523,12 +532,19 @@ class JSInterpreter(object):
if pos < delim_len:
pos += 1
continue
- yield expr[start: idx - delim_len]
+ if skip_txt and skip_txt[0] >= start and skip_txt[1] <= idx - delim_len:
+ yield expr[start:skip_txt[0]] + expr[skip_txt[1] + 1: idx - delim_len]
+ else:
+ yield expr[start: idx - delim_len]
+ skip_txt = None
start, pos = idx + 1, 0
splits += 1
if max_split and splits >= max_split:
break
- yield expr[start:]
+ if skip_txt and skip_txt[0] >= start:
+ yield expr[start:skip_txt[0]] + expr[skip_txt[1] + 1:]
+ else:
+ yield expr[start:]
@classmethod
def _separate_at_paren(cls, expr, delim=None):