JS template engine
trisquelSimple, customizable template engine for JavaScript
Installation
npm install trisquel --save
Example data
var data = { foo: 'bar', crash: { test: 'dummy' }, list: ['foo', 'bar', 'foobar'], map: { hi: 'all', bye: 'nobody' } };
Caching templates
template.put('partial-map', '$each{ item,key in map }[${foo}:${key}:${item}]{/}'); template.put('partial-list', '$each{ item,i in list }[${foo}:${i}:${item}]{/}'); // cached templates can be invoked with $include{} console.log( template('$if{ foo !== \'bar\' }whoops{:}map: $include{\'partial-map\'} {/}', data) ); // returns 'map: [bar:hi:all][bar:bye:nobody]' console.log( template('$if{ foo !== \'bar\' }whoops{:}list: $include{\'partial-list\'} {/}', data) ); // returns 'list: [bar:0:foo][bar:1:bar][bar:2:foobar]'
Filters
template.filter('months', function (nMonths) { return nMonths + (nMonths > 1 ? ' meses' : ' mes' ); }); console.log( template('${ nMonths | months }')({ nMonths: 5 }) ); // returns '5 meses' console.log( template('${ nMonths | months }')({ nMonths: 1 }) ); // returns '1 mes'
var messages { greeting: template('Hi ${name}!') }; template.filter('message', function (key, data) { return messages[key](data); }); console.log( template('${ person.last_name }: ${ \'greeting\' | message: { name: person.first_name } }')({ person: { first_name: 'John', last_name: 'Smith' } }) ); // returns 'Smith: Hi John!'
Tests
npm test
HomePage
https://github.com/kiltjs/trisquel
Repository
https@github.com:kiltjs/trisquel