fixing heredocs with multiple double quotes (broken regex from the Ruby translation), with tests.

This commit is contained in:
Jeremy Ashkenas 2010-02-28 10:29:30 -05:00
parent 47f71f9193
commit b08995cbcc
3 changed files with 8 additions and 2 deletions

View File

@ -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;

View File

@ -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

View File

@ -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'