A string template, that is, a string start, followed by any number of value expression and string mid pairs, followed by a value expression and a string end.
(The distinction between string starts, mids, and ends is a purely lexical one,
and not covered in ceylon.ast
.)
There must be at least one expression in a string template, and the number of string literals must be exactly the number of expressions plus one.
Examples:
"Elapsed: `` tEnd - tStart ``ms" "Hello, ``person.firstName`` ``person.lastName``. How nice to see you back in ``person.homeTown``."
Anything
StringTemplate
Atom
Primary
ValueExpression
Expression
Node
Object
Anything
no subtypes hierarchy
Initializer |
StringTemplate([StringLiteral+] literals, [Expression+] expressions) Parameters:
|
Attributes | |
children | Source Codeshared actual [StringLiteral|Expression+] children The child nodes of this node. |
expressions | Source Codeshared [Expression+] expressions The expressions in the string template, in order of appearance. |
hash | Source Codeshared actual Integer hash The hash value of the value, which allows the value to be an element of a hash-based set or key of a hash-based map. Implementations must respect the constraint that:
Therefore, a class which refines In general, Note that when executing on a Java Virtual Machine, the
64-bit Refines Object.hash |
literals | Source Codeshared [StringLiteral+] literals The string literals of the string template, in order of appearance. |
Inherited Attributes |
Attributes inherited from: Expression |
Attributes inherited from: Node |
Attributes inherited from: Object hash , string |
Methods | |
copy | Source Codeshared StringTemplate copy([StringLiteral+] literals = ..., [Expression+] expressions = ...) Parameters:
|
equals | Source Codeshared actual Boolean equals(Object that) Determine if two values are equal. For any two non-null objects x == y Implementations should respect the constraints that:
Furthermore it is recommended that implementations
ensure that if A class which explicitly refines Note that an implementation of Refines Object.equals |
transform | Source Codeshared actual Result transform<out Result>(Transformer<Result> transformer) Transform this node with the given If you have a Refines Node.transform |
visit | Source Codeshared actual void visit(Visitor visitor) Visit this node with the given Refines Node.visit |
Inherited Methods |
Methods inherited from: Node |
Methods inherited from: Object equals |