engine 
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.
This code is based on Lo-Dash's _.template method, with a few additions, like the ability to register helpers and more easily control context.
Install
Install with npm
$ npm i engine --save
Table of contents
(Table of contents generated by verb)
Usage
var engine = require('engine');
engine.helper('upper', function(str) {
return str.toUpperCase();
});
engine.render('<%= upper(name) %>', {name: 'Brian'});
API
Create an instance of Engine with the given options.
Params
Example
var Engine = require('engine');
var engine = new Engine();
var engine = require('engine')();
Register a template helper.
Params
key {String}
fn {Function}
returns {Object}: Instance of Engine for chaining
Example
engine.helper('upper', function(str) {
return str.toUpperCase();
});
engine.render('<%= upper(user) %>', {user: 'doowb'});
Register an object of template helpers.
Params
obj {Object|Array}: Object or array of helper objects.
returns {Object}: Instance of Engine for chaining
Example
engine.helpers({
upper: function(str) {
return str.toUpperCase();
},
lower: function(str) {
return str.toLowerCase();
}
});
engine.helpers(require('template-helpers')._);
Add data to be passed to templates as context.
Params
key {String|Object}: Property key, or an object
value {any}: If key is a string, this can be any typeof value
returns {Object}: Engine instance, for chaining
Example
engine.data({first: 'Brian'});
engine.render('<%= last %>, <%= first %>', {last: 'Woodward'});
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
str {string}: The template string.
opts {Object}: The options object.
escape {RegExp}: The HTML "escape" delimiter.
evaluate {RegExp}: The "evaluate" delimiter.
imports {Object}: An object to import into the template as free variables.
interpolate {RegExp}: The "interpolate" delimiter.
sourceURL {string}: The sourceURL of the template's compiled source.
variable {string}: The data object variable name.
returns {Function}: Returns the compiled template function.
Example
var fn = engine.compile('Hello, <%= user %>!');
fn({user: 'doowb'});
fn({user: 'jonschlinkert'});
Renders templates with the given data and returns a string.
Params
str {String}
data {Object}
returns {String}
Example
engine.render('<%= user %>', {user: 'doowb'});
Related projects
- assemble: Static site generator for Grunt.js, Yeoman and Node.js. Used by Zurb Foundation, Zurb Ink, H5BP/Effeckt,… more
- scaffold: Generate a project or files from scaffolds.
- snippet: CLI and API for easily creating, reusing, sharing and generating snippets of code from the… more
- template: Render templates using any engine. Supports, layouts, pages, partials and custom template types. Use template… more
- verb: Documentation generator for GitHub projects. Extremely powerful, easy to use, can generate anything from API… more
Running tests
Install dev dependencies:
$ npm i -d && npm test
Contributing
Pull requests and stars are always welcome. For bugs and feature requests, please create an issue
Author
Jon Schlinkert
License
Copyright © 2015 Jon Schlinkert
Released under the MIT license.
This file was generated by verb-cli on August 13, 2015.