The spec seems fuzzy on how we perform the equivalent of indentation
adjustment from text blocks. Suppose I have
String s = STR."""
Hello \{name}, it is \{time}
""";
This should result in the string "Hello Bob, it is 3:00". My
understanding of how it should work is something like:
- replace all the embedded expressions with a placeholder character;
- evaluate the resulting text block;
- split the text block at the placeholder to produce the fragment
literals.
But the spec says only:
A template resembles a string literal or a text block but consists of
the strict alternate interleaving of two or more string literals or
text blocks, known as fragment literals, with one or more embedded
expressions. An embedded expression can be either empty or an expression.
What is being interleaved is neither string literal nor text block, so
the use of "string literal" and "text block" seems off here, and I don't
see how the TextBlockTemplateFragment is processed for escapes and
whitespace the way we would with a TextBlock. So it seems a little work
is needed here?