e8dbb16dbc
This was implemented a long time ago in the original template parser, but it was missed in the rewrite of the template parser to make it use a two-stage parsing strategy. It's implemented as a post-processing step on the result of the first stage of parsing, which produces a flat sequence of literal strings, interpolation markers, and control markers, and prior to the second stage which matches opening and closing control markers to produce an expression AST. It's important to do this at parse time rather than eval time since it is the static layout of the source code that decides the indentation level, and so an interpolation marker at the start of a line that itself produces spaces does not affect the result.
15 lines
199 B
Plaintext
15 lines
199 B
Plaintext
variables {
|
|
bar = "Bar"
|
|
space_bar = " Bar"
|
|
words = ["Foo", "Bar", "Baz"]
|
|
}
|
|
|
|
object {
|
|
attr "normal" {
|
|
type = map(string)
|
|
}
|
|
attr "flush" {
|
|
type = map(string)
|
|
}
|
|
}
|