twig

JS port of the Twig templating language.

About

Twig.js is a pure JavaScript implementation of the Twig PHP templating language (http://twig.sensiolabs.org/)

The goal is to provide a library that is compatible with both browsers and server side JavaScript environments such as node.js.

Twig.js is currently a work in progress and supports a limited subset of the Twig templating language (with more coming).

Documentation is available in the twig.js wiki on Github.

For a list of supported tags/filters/functions/tests see the Implementation Notes page on the wiki.

If you have a change you want to make to twig.js, feel free to fork this repository and submit a pull request on Github. The source files are located in src/*.js. twig.js is built by running make

For more details on getting setup, see the contributing page on the wiki.

Browser Usage

Twig.js can be installed as a bower package with:

bower install twig.js

Include twig.js or twig.min.js in your page, then:

var template = twig({
    data: 'The {{ baked_good }} is a lie.'
});
 
console.log(
    template.render({baked_good: 'cupcake'})
);
// outputs: "The cupcake is a lie." 

Node Usage

Twig.js can be installed with NPM

npm install twig

You can use twig in your app with

var Twig = require('twig'), // Twig module
    twig = Twig.twig;       // Render function

Twig is compatable with express 2 and 3. You can create an express app using the twig.js templating language by setting the view engine to twig.

Express 3

var Twig = require("twig"),
    express = require('express'),
    app = express();
 
// This section is optional and used to configure twig. 
app.set("twig options", {
    strict_variables: false
});
 
app.get('/', function(reqres){
  res.render('index.twig', {
    message : "Hello World"
  });
});
 
app.listen(9999);
Message of the moment: <b>{{ message }}</b>

An Express 2 Example is available on the wiki.

Tests

The twig.js tests are written in Mocha and can be invoked with make test.

License

Twig.js is available under a BSD 2-Clause License, see the LICENSE file for more information.

Acknowledgments

See the LICENSES.md file for copies of the referenced licenses.

  1. The JavaScript Array fills in src/twig.fills.js are from https://developer.mozilla.org/ and are available under the MIT License or are public domain.

  2. The Date.format function in src/twig.lib.js is from http://jpaq.org/ and used under a MIT license.

  3. The sprintf implementation in src/twig.lib.js used for the format filter is from http://www.diveintojavascript.com/projects/javascript-sprintf and used under a BSD 3-Clause License.

  4. The strip_tags implementation in src/twig.lib.js used for the striptags filter is from http://phpjs.org/functions/strip_tags and used under and MIT License.