Fixes Issue #525 -- String interpolation bug due to conflict with Heredoc interpolation.

This commit is contained in:
Jeremy Ashkenas
2010-07-21 15:45:25 -07:00
parent ff88482034
commit dfa50c90b3
3 changed files with 24 additions and 7 deletions

View File

@@ -11,6 +11,7 @@ ok "${hello}$${world}" is 'Hello$World'
ok "Hello ${ 1 + 2 } World" is 'Hello 3 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'
ok "${s}${t}${r}${i}${n}${g}" is 'string'
@@ -20,6 +21,7 @@ ok "\${s}\${t}\${r}\${i}\${n}\${g}" is '${s}${t}${r}${i}${n}${g}'
ok "\$string" is '$string'
ok "\${string}" is '${string}'
ok "\$Escaping first" is '$Escaping first'
ok "\${Escaping} first" is '${Escaping} first'
ok "Escaping \$in middle" is 'Escaping $in middle'
@@ -27,24 +29,29 @@ ok "Escaping \${in} middle" is 'Escaping ${in} middle'
ok "Escaping \$last" is 'Escaping $last'
ok "Escaping \${last}" is 'Escaping ${last}'
ok "$$" is '$$'
ok "${}" is ''
ok "${}A${} ${} ${}B${}" is 'A B'
ok "\\\\\$$" is '\\\\\$$'
ok "\\\${}" is '\\${}'
ok "I won $20 last night." is 'I won $20 last night.'
ok "I won $${20} last night." is 'I won $20 last night.'
ok "I won $#20 last night." is 'I won $#20 last night.'
ok "I won $${'#20'} last night." is 'I won $#20 last night.'
ok "${hello + world}" is 'HelloWorld'
ok "${hello + ' ' + world + '!'}" is 'Hello World!'
list: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
ok "values: ${list.join(', ')}, length: ${list.length}." is 'values: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, length: 10.'
ok "values: ${list.join ' '}" is 'values: 0 1 2 3 4 5 6 7 8 9'
obj: {
name: 'Joe'
hi: -> "Hello $@name."
@@ -53,6 +60,7 @@ obj: {
ok obj.hi() is "Hello Joe."
ok obj.cya() is "Goodbye Joe."
ok "With ${"quotes"}" is 'With quotes'
ok 'With ${"quotes"}' is 'With ${"quotes"}'
@@ -64,17 +72,24 @@ ok "Hello ${world ? "$hello"}" is 'Hello World'
ok "Hello ${"${"${obj["name"]}" + '!'}"}" is 'Hello Joe!'
a: """
Hello ${ "Joe" }
"""
ok a is "Hello Joe"
a: 1
b: 2
c: 3
ok "$a$b$c" is '123'
result: null
stash: (str) -> result: str
stash "a ${ ('aa').replace /a/g, 'b' } c"
ok result is 'a bb c'
ok result is 'a bb c'
foo: "hello"
ok "${foo.replace("\"", "")}" is 'hello'