fixing heredocs with multiple double quotes (broken regex from the Ruby translation), with tests.
This commit is contained in:
parent
47f71f9193
commit
b08995cbcc
|
@ -172,7 +172,7 @@
|
|||
}
|
||||
doc = match[2] || match[4];
|
||||
indent = (doc.match(HEREDOC_INDENT) || ['']).sort()[0];
|
||||
doc = doc.replace(new RegExp("^" + indent, 'gm'), '').replace(MULTILINER, "\\n").replace('"', '\\"');
|
||||
doc = doc.replace(new RegExp("^" + indent, 'gm'), '').replace(MULTILINER, "\\n").replace(/"/g, '\\"');
|
||||
this.token('STRING', '"' + doc + '"');
|
||||
this.line += this.count(match[1], "\n");
|
||||
this.i += match[1].length;
|
||||
|
|
|
@ -159,7 +159,7 @@ exports.Lexer: class Lexer
|
|||
indent: (doc.match(HEREDOC_INDENT) or ['']).sort()[0]
|
||||
doc: doc.replace(new RegExp("^" + indent, 'gm'), '')
|
||||
.replace(MULTILINER, "\\n")
|
||||
.replace('"', '\\"')
|
||||
.replace(/"/g, '\\"')
|
||||
@token 'STRING', '"' + doc + '"'
|
||||
@line += @count match[1], "\n"
|
||||
@i += match[1].length
|
||||
|
|
|
@ -36,6 +36,7 @@ a: '''
|
|||
|
||||
ok a is " a\n b\nc"
|
||||
|
||||
|
||||
a: '''
|
||||
a
|
||||
|
||||
|
@ -44,3 +45,8 @@ b c
|
|||
'''
|
||||
|
||||
ok a is "a\n\n\nb c"
|
||||
|
||||
|
||||
a: '''more"than"one"quote'''
|
||||
|
||||
ok a is 'more"than"one"quote'
|
Loading…
Reference in New Issue