Whitespace handling
Normally the literal text between template tags will be output as it is. This
behaviour can be changed by passing a different value to the whitespace
parameter in the constructor. The possible values are:
"keep"The default behaviour: literal text will be output as it is.
"strip"Linefeeds and the following indentation in literal text will be ignored:
>>> from ll import ul4c >>> t = ul4c.Template(""" ... <?for i in range(10)?> ... <?print i?> ... ; ... <?end for?> ... """, whitespace="strip") >>> t.renders() '0;1;2;3;4;5;6;7;8;9;'
However trailing whitespace at the end of the line will still be honored.
"smart"If a line contains only indentation and one tag that isn’t a
print,printxorrendertag, the indentation and the linefeed after the tag will be stripped from the text.Furthermore the additional indentation that might be introduced by a
for,if,elif,elseordefblock will be ignored. So for example the output of:<?code langs = ["Python", "Java", "Javascript"]?> <?if langs?> <?for lang in langs?> <?print lang?> <?end for?> <?end if?>
will simply be
Python Java Javascript
without any additional empty lines or indentation.
Rendering a template
Binside an templateAwill reindent the output ofBto the indentation level of the<?render?>tag in the templateA.
It is also possible to specify the whitespace behaviour in the template itself
with the <?whitespace?> tag, so:
<?whitespace smart?>
anywhere in the template source will switch on smart whitespace handling.
A <?whitespace?> tag overwrites the whitespace parameter specified
in the constructor.