is is the new
[% message = block %] Hello [% name or 'World' %]! [% end %] [% message is %] Hello [% name or 'World' %]! [% end %] --EOF--look inside...
Thus Spake Andy:
All commands are expressions. There are no statements in TT3 (in the sense that it's used in programming language theory - if you're not familiar with the difference between a statement and expression then don't worry, you can skip this explanation). "Statements" in TT3 are simply expressions that don't yield any values (like Ruby). But as far as the parser is concerned, everything is an expression and you can assign the output of any expression to a variable, pass it to a function, etc.
block command can be used to create named blocks in a statement-like
way, as we saw in the previous example. The first example on this page
shows it being used as an inline expression to simply delineate a block
of content. Everything between
end is evaluated and assigned
message variable. You could do this in TT2, but it was a dedicated
parser hack. In TT3 this is built into the language and it Just Works™
for every command/expression.
The assignment operator
= expects an expression on it's right hand side.
block command effectively takes a block of content and "makes it" an
expression for the assignment to use. The
is command rolls these two
fundamental operations into one. It's essentially a block-oriented version