trisquel

1.1.5 • Public • Published

trisquel

Simple, customizable template engine for JavaScript

Build Status GitHub license

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

Build Status Travis

wercker status Wercker

/trisquel/

    Package Sidebar

    Install

    npm i trisquel

    Weekly Downloads

    18

    Version

    1.1.5

    License

    MIT

    Unpacked Size

    91.5 kB

    Total Files

    23

    Last publish

    Collaborators

    • jgermade