README
trisquel
Simple, 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