diff --git a/lib/lexer.js b/lib/lexer.js index c5d2b467..0ea85e64 100644 --- a/lib/lexer.js +++ b/lib/lexer.js @@ -431,7 +431,7 @@ if (before.length) { tokens.push(['STRING', quote + before + quote]); } - nested = lexer.tokenize(expression.substring(2, expression.length - 1), { + nested = lexer.tokenize('(' + expression.substring(2, expression.length - 1) + ')', { rewrite: false }); nested.pop(); diff --git a/src/lexer.coffee b/src/lexer.coffee index c86da8cb..ff6cc449 100644 --- a/src/lexer.coffee +++ b/src/lexer.coffee @@ -367,7 +367,7 @@ exports.Lexer: class Lexer tokens.push ['STRING', quote + before.substring(0, before.length - 1) + expression + quote] if before.length else tokens.push ['STRING', quote + before + quote] if before.length - nested: lexer.tokenize expression.substring(2, expression.length - 1), {rewrite: no} + nested: lexer.tokenize '(' + expression.substring(2, expression.length - 1) + ')', {rewrite: no} nested.pop() tokens.push ['TOKENS', nested] str: str.substring(group.length) diff --git a/test/test_string_interpolation.coffee b/test/test_string_interpolation.coffee index 87152447..dd3fecad 100644 --- a/test/test_string_interpolation.coffee +++ b/test/test_string_interpolation.coffee @@ -8,6 +8,7 @@ ok "[$hello$world]" is '[HelloWorld]' ok "[${hello}${world}]" is '[HelloWorld]' ok "$hello$$world" is 'Hello$World' ok "${hello}$${world}" is 'Hello$World' +ok "Hello ${ 1 + 2 } World" is 'Hello 3 World' [s, t, r, i, n, g]: ['s', 't', 'r', 'i', 'n', 'g'] ok "$s$t$r$i$n$g" is 'string'