JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 32379
  • Score
    100M100P100Q142364F
  • License MIT

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.

Package Exports

  • engine

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (engine) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

engine NPM version

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'});
//=> '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'
  • assemble: Static site generator for Grunt.js, Yeoman and Node.js. Used by Zurb Foundation, Zurb Ink, H5BP/Effeckt,… more | homepage
  • scaffold: Conventions and API for creating scaffolds that can by used by any build system or… more | homepage
  • snippet: CLI and API for easily creating, reusing, sharing and generating snippets of code from the… 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

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 September 08, 2015.