Skip to content

Commit

Permalink
[python mode] Fix tokenizing of nested strings
Browse files Browse the repository at this point in the history
Closes #5668
  • Loading branch information
marijnh committed Nov 16, 2018
1 parent afa8025 commit b7b9b73
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 4 deletions.
8 changes: 4 additions & 4 deletions mode/python/python.js
Expand Up @@ -144,7 +144,7 @@
if (stream.match(stringPrefixes)) {
var isFmtString = stream.current().toLowerCase().indexOf('f') !== -1;
if (!isFmtString) {
state.tokenize = tokenStringFactory(stream.current());
state.tokenize = tokenStringFactory(stream.current(), state.tokenize);
return state.tokenize(stream, state);
} else {
state.tokenize = formatStringFactory(stream.current(), state.tokenize);
Expand Down Expand Up @@ -251,7 +251,7 @@
return tokenString;
}

function tokenStringFactory(delimiter) {
function tokenStringFactory(delimiter, tokenOuter) {
while ("rubf".indexOf(delimiter.charAt(0).toLowerCase()) >= 0)
delimiter = delimiter.substr(1);

Expand All @@ -266,7 +266,7 @@
if (singleline && stream.eol())
return OUTCLASS;
} else if (stream.match(delimiter)) {
state.tokenize = tokenBase;
state.tokenize = tokenOuter;
return OUTCLASS;
} else {
stream.eat(/['"]/);
Expand All @@ -276,7 +276,7 @@
if (parserConf.singleLineStringErrors)
return ERRORCLASS;
else
state.tokenize = tokenBase;
state.tokenize = tokenOuter;
}
return OUTCLASS;
}
Expand Down
2 changes: 2 additions & 0 deletions mode/python/test.js
Expand Up @@ -35,4 +35,6 @@
MT("fInvalidFString", "[error f'this is wrong}]");
MT("fNestedFString", "[string f'expression ]{[number 100] [operator +] [string f'inner]{[number 5]}[string ']}[string string']");
MT("uValidStringPrefix", "[string u'this is an unicode string']");

MT("nestedString", "[string f']{[variable b][[ [string \"c\"] ]]}[string f'] [comment # oops]")
})();

0 comments on commit b7b9b73

Please sign in to comment.