Empty expression interpolations evaluate as empty strings now.

This commit is contained in:
Stan Angeloff
2010-03-08 09:31:31 +02:00
parent 532464f7ae
commit a5f69ef716
3 changed files with 22 additions and 14 deletions

View File

@@ -349,12 +349,15 @@ exports.Lexer: class Lexer
tokens.push ['IDENTIFIER', interp]
i += group.length - 1
pi: i + 1
else if (expr: @balanced_string str.substring(i), ['${', '}']) and expr.length > 3
inner: expr.substring(2, expr.length - 1)
nested: lexer.tokenize "($inner)", {rewrite: no, line: @line}
nested.pop()
else if (expr: @balanced_string str.substring(i), ['${', '}'])
tokens.push ['STRING', "$quote${ str.substring(pi, i) }$quote"] if pi < i
tokens.push ['TOKENS', nested]
inner: expr.substring(2, expr.length - 1)
if inner.length
nested: lexer.tokenize "($inner)", {rewrite: no, line: @line}
nested.pop()
tokens.push ['TOKENS', nested]
else
tokens.push ['STRING', "$quote$quote"]
i += expr.length - 1
pi: i + 1
i += 1