HTML Templating Engine for TCL and twebserver
Contact: neophytos (at) gmail (dot) com
See sample-blog for a complete example using twebserver.
Template:
set template { <tpl foreach="item" in="${items}"> <div class="item"> <span class="name">${item.name}</span> <span class="value">${item.value}</span> </div> </tpl> }
TCL:
::thtml::render $template { items {{ name "item1" value "value1" } { name "item2" value "value2" }} }
Expected output:
<div class="item"> <span class="name">item1</span> <span class="value">value1</span> </div> <div class="item"> <span class="name">item2</span> <span class="value">value2</span> </div>
Template:
set template { <tpl if='$value eq "one"'> <div class="value1">Value is 1</div> </tpl> <tpl if='$value eq "two"'> <div class="value2">Value is 2</div> </tpl> <tpl if='$value eq "three"'> <div class="value3">Value is 3</div> </tpl> }
TCL:
::thtml::render $template {value one}
Expected output:
<div class="value1">Value is 1</div>
Template:
set template { <tpl include="header.thtml" title="You are awesome!" /> <div class="content">Content</div> <tpl include="footer.thtml" /> }
TCL:
::thtml::render $template {}
Expected output:
<h1>You are awesome!</h1> <div class="content">Content</div> <strong>Footer</strong>
Where header.thtml is:
<h1>$title</h1>
And footer.thtml is:
<strong>Footer</strong>
Template:
set template { <html> <tpl val="x">return 1</tpl> <tpl val="y">return 2</tpl> <tpl val="z">return [expr { $x + $y }]</tpl> <head> <title>$title</title> </head> <body> <h1>$title</h1> <p>$z</p> </body> </html> }
TCL:
::thtml::render $template {title "Hello World!"}