jonschlinkert / engine

Alternative to Lo-Dash template with support for helpers.
https://github.com/jonschlinkert
Other
17 stars 5 forks source link
compile delimiter ejs engine helpers interpolate javascript jonschlinkert lodash lodash-templates node nodejs regexp render string template template-engine underscore

engine NPM version NPM downloads Build Status

Template engine based on Lo-Dash template, but adds features like the ability to register helpers and more easily set data to be used as context in templates.

Install

Install with npm:

$ npm install --save engine

Usage

var Engine = require('engine');
var engine = new Engine();

engine.helper('upper', function(str) {
  return str.toUpperCase();
});

engine.render('<%= upper(name) %>', {name: 'Brian'});
//=> 'BRIAN'

API

Engine

Create an instance of Engine with the given options.

Params

Example

var Engine = require('engine');
var engine = new Engine();

// or
var engine = require('engine')();

.helper

Register a template helper.

Params

Example

engine.helper('upper', function(str) {
  return str.toUpperCase();
});

engine.render('<%= upper(user) %>', {user: 'doowb'});
//=> 'DOOWB'

.helpers

Register an object of template helpers.

Params

Example

engine.helpers({
 upper: function(str) {
   return str.toUpperCase();
 },
 lower: function(str) {
   return str.toLowerCase();
 }
});

// Or, just require in `template-helpers`
engine.helpers(require('template-helpers')._);

.data

Add data to be passed to templates as context.

Params

Example

engine.data({first: 'Brian'});
engine.render('<%= last %>, <%= first %>', {last: 'Woodward'});
//=> 'Woodward, Brian'

.compile

Creates a compiled template function that can interpolate data properties in "interpolate" delimiters, HTML-escape interpolated data properties in "escape" delimiters, and execute JavaScript in "evaluate" delimiters. Data properties may be accessed as free variables in the template. If a setting object is provided it takes precedence over engine.settings values.

Params

Example

var fn = engine.compile('Hello, <%= user %>!');
//=> [function]

fn({user: 'doowb'});
//=> 'Hello, doowb!'

fn({user: 'halle'});
//=> 'Hello, halle!'

.render

Renders templates with the given data and returns a string.

Params

Example

engine.render('<%= user %>', {user: 'doowb'});
//=> 'doowb'

About

Related projects

Contributing

Pull requests and stars are always welcome. For bugs and feature requests, please create an issue.

Building docs

(This document was generated by verb-generate-readme (a verb generator), please don't edit the readme directly. Any changes to the readme must be made in .verb.md.)

To generate the readme and API documentation with verb:

$ npm install -g verb verb-generate-readme && verb

Running tests

Install dev dependencies:

$ npm install -d && npm test

Author

Jon Schlinkert

License

Copyright © 2016, Jon Schlinkert. Released under the MIT license.


This file was generated by verb, v0.9.0, on July 19, 2016.