[[.import name=transform]]
[[\
def tag(o, tags=[], **kwargs):
import string
pre = string.join(map(lambda x: '<'+x+'>',tags))
tags.reverse()
post = string.join(map(lambda x: '</'+x+'>',tags))
return pre+str(o)+post
def bold(o, _tag=tag, **kwargs):
kwargs['tags'] = ['b']
return apply(_tag, (o,), kwargs)
def bolditalic(o, _tag=tag, **kwargs):
kwargs['tags'] = ['b','i']
return apply(_tag, (o,), kwargs)
myfilter = transform.create(['html_encode', bolditalic])
mystring = 'bold and italic unsafe string: < > &'
def simpletable(o, **kwargs):
s = '<table border=1>'
for row in o:
s=s+'<tr>'
for cell in row:
s=s+'<td>'+str(cell)+'</td>'
s=s+'</tr>'
s = s+'</table>'
return s
]]
<html><body>
install an expression filter:<br>
[[transform.expr(['html_encode', tag])]]
1.[[=mystring, tags=['b','i'] ]]
<br>
[[transform.expr(myfilter)]]
2.[[=mystring]]
[[transform.expr()]]
<p>
or use a filter directly:<br>
1.[[=transform.create(['html_encode',tag])(mystring,tags=['b','i'])]]
<br>
2.[[=myfilter(mystring)]]
<p>
Formatting data in a table...<br>
[[=simpletable([ [1,2,3], [4,5,6] ])]]
<p>
Though the transform module is flexible, <br>
most users will probably only install the <br>
<b>html_encode</b> filter.
</body></html>
|