1
0
forked from Mirror/wren

Simple string interpolation.

This allows "%(...)" inside a string literal to interpolate the
stringified result of an expression.

It doesn't support custom interpolators or format strings, but we can
consider extending that later.
This commit is contained in:
Bob Nystrom
2015-11-11 07:55:48 -08:00
parent 71575d9179
commit 78655c68b0
41 changed files with 321 additions and 129 deletions

View File

@ -0,0 +1,2 @@
// expect error line 3
" %() "

View File

@ -0,0 +1,15 @@
// Full string.
System.print("%(1 + 2)") // expect: 3
// Multiple in one string.
System.print("str%(1 + 2)(%(3 + 4)\%%(5 + 6)") // expect: str3(7%11
// Nested.
System.print("[%("{%("in" + "ner")}")]") // expect: [{inner}]
// Ignore newlines in template.
System.print("[%(
"template"
)]") // expect: [template]

View File

@ -0,0 +1 @@
System.print("%(123.badMethod)") // expect runtime error: Num does not implement 'badMethod'.

View File

@ -0,0 +1,8 @@
var fiber = Fiber.new {
System.print("in fiber")
Fiber.yield("result")
}
System.print("outer %(fiber.call()) string")
// expect: in fiber
// expect: outer result string

View File

@ -0,0 +1,2 @@
" %(
// expect error

View File

@ -0,0 +1,2 @@
// expect error line 2
" %(123"