Nervously Proposing Marriage

    engine

    1.0.0 • Public • Published

    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

    • options {Object}

    Example

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

    .helper

    Register a template helper.

    Params

    • prop {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'});
    //=> 'DOOWB'

    .helpers

    Register an object of template helpers.

    Params

    • helpers {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();
     }
    });
     
    // Or, just require in `template-helpers`
    engine.helpers(require('template-helpers')._);

    .data

    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'});
    //=> '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

    • 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 %>!');
    //=> [function]
     
    fn({user: 'doowb'});
    //=> 'Hello, doowb!'
     
    fn({user: 'halle'});
    //=> 'Hello, halle!'

    .render

    Renders templates with the given data and returns a string.

    Params

    • str {String}
    • data {Object}
    • returns {String}

    Example

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

    About

    Related projects

    • assemble: Get the rocks out of your socks! Assemble makes you fast at creating web projects… more | homepage
    • template-helpers: Generic JavaScript helpers that can be used with any template engine. Handlebars, Lo-Dash, Underscore, or… more | homepage
    • template: Render templates using any engine. Supports, layouts, pages, partials and custom template types. Use template… more | homepage
    • verb: Documentation generator for GitHub projects. Verb is extremely powerful, easy to use, and is used… more | homepage

    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.

    Install

    npm i engine

    DownloadsWeekly Downloads

    29,061

    Version

    1.0.0

    License

    MIT

    Unpacked Size

    21.6 kB

    Total Files

    5

    Last publish

    Collaborators

    • doowb
    • jonschlinkert