#, or implicitly with the
end of the line if you're feeling lazy.
#block testBlock # Text in the body of the block directive #end block testBlock #
#block testBlock Text in the body of the block directive #end block testBlock
When a directive tag is closed explicitly, it can be followed with other text on the same line:
bah, bah, #if $sheep.color == 'black'# black#end if # sheep.
When a directive tag is closed implicitly with the end of the line, all trailing whitespace is gobbled, including the newline character:
""" foo #set $x = 2 bar """ outputs """ foo bar """ while """ foo #set $x = 2 # bar """ outputs """ foo bar """
When a directive tag is closed implicitly AND there is no other text on the line, the ENTIRE line is gobbled up including any preceeding whitespace:
""" foo #set $x = 2 bar """ outputs """ foo bar """ while """ foo - #set $x = 2 bar """ outputs """ foo - bar """
The #slurp directive (section 7.7) also gobbles up
whitespace.
Spaces outside directives are output exactly as written. In the black sheep example, there's a space before ``black'' and another before ``sheep''. So although it's legal to put multiple directives on one line, it can be hard to read.
#if $a# #echo $a + 1# #end if
- There's a space between each directive,
or two extra spaces total.
#if $a##echo $a + 1##end if
- No spaces, but you have to look closely
to verify none of the ``##'' are comment markers.
#if $a##echo $a + 1##end if ### A comment.
- In ``###'', the first ``#'' ends the directive,
the other two begin the comment. (This also shows
how you can add extra whitespace in the directive
tag without affecting the output.)
#if $a##echo $a + 1##end if # ## A comment.
- More readable, but now there's a space before the
comment.