A simple template engine built specifically for nodejs.

npm install jazz
16 downloads in the last day
62 downloads in the last week
293 downloads in the last month
Jazz is a simple template engine built specifically for nodejs.

# Usage

    var jazz = require("jazz");

    var template = jazz.compile("my template source code {someVariable}");
    template.eval({"someVariable": "lolmuffin"}, function(data) { sys.puts(data); });

This example would output the following:

    my template source code lolmuffin

# Syntax

## Printing variables


This works for any type of expression, so the following should also work:

    {a eq b}

## Filter functions

You can call filter functions like so:

    {someFilter(arg1, arg2)}

Filter functions are statements, NOT expressions so they cannot be chained
nor used in if/forelse/etc. tests. However, calls can be made on any type
of expression -- e.g.


### Implementing filter functions

Filter functions may block so rather than returning the value you want
rendered as you might in other frameworks, jazz passes in a callback to
your filter function that you then call to indicate that you have a
result. e.g. here we simulate a blocking operation using setTimeout().

    // sum.jazz

    {sum(5, 10)}

    // sum.js

    var jazz = require("jazz");

    var params = {
        sum: function(arg1, arg2, cb) {
            setTimeout(function() {
                cb((arg1 + arg2).toString());
            }, 2000);
    jazz.compile("sum.jazz").eval(params, function(output) { console.log(output); });

Note that even though the execution of the callback is delayed, this example still

## Conditional Statements

You can check if a variable evaluates to a true value like so:

    {if name}
        Hello, {name}

Else clauses are also supported:

    {if name}
        Hello, {name}
        Hello, Captain Anonymous

As are else..if clauses:

    {if firstName}
        Hello, {firstName}
    {elif lastName}
        Hello, Mr. {lastName}
        Hello, Captain Anonymous

Limited logical expressions are also possible:

    {if user.lastName and user.isVip}
        Hello, Mr. {user.lastName}, my good man!

    {if fred.tired or fred.bored}
        Fred: "Yawn!"

    {if not awake}

eq & neq comparison operators are available for comparing two values:

    {if config.feature eq "enabled"}
        Feature is enabled!

    {if status neq "inactive"}

You can also group expressions using parentheses:

    {if (a and b) or c}

## Looping over an array

    {foreach item in someArray}

The value being iterated over can be any expression supporting
an Array-like interface.

npm loves you