Tiny templating tool
npm install mold-templateMold is a minimalist templating library that compiles strings
containing templating directives to functions that instantiate the
template.
Mold's directives are surrounded by << and >>.
The simplest commands are < (also <), which
inserts the result of the given JavaScript expression and HTML-escapes
it in the process, and < (also <>) which inserts
the given expression as-is, without escaping.
Hello <
Simple control flow can be performed as follows:
Inside for constructs, $i is bound to the index of the current
item. A similar construct, < can be used
to iterate over object properties.
Mold templates are _baked_ (precompiled) before they are instantiated.
To bake a template, you need a Mold object.
var Mold = require("mold-template")
var mold = new Mold({myGlobal: "hi"})
A Mold object takes an optional scope object, whose properties are
visible as variables to the code in all templates baked by that
object.
It has a bake property:
var template = mold.bake("mytemplate", "hi <
console.log(template({name: "Sue"}))
// → "hi Sue"
A baked template is a function from an input value to a string. The
input value provides the $in variable inside the template. You can
also unpack with an in directive:
< Hello <
in only understands plain object literals (with only property names
in them) and variable names (<), except when your JS
engine supports ES6 destructuring, in which case you can use all the
patterns, nesting, and defaulting that the language supports.
You can define your own directives with the defs property of aMold object. All templates baked with bake, when a name was
specified for them, are automatically available under their name. You
can also add your own functions that return strings.
mold.defs.caps = function(val) { return String(val).toUpperCase() }
console.log(mold.bake("say <
// → "say WHAT?"
This software is released under an MIT license. You are invited to
report bugs or submit patches via
GitHub.