maudite
maudite (moe-DEET) is a templating system using template literals. It returns a stream of buffers, or a string, for sending the resulting data to its destination.
maudite
is pretty quick
Usage
A single function is exported, which acts as a template tag. This tag returns a function taking in a context object, which is then passed to any functions that are inlined into the template literal.
const m = ;const template = m`Hello, !\n`;; // Hello, World!
Your inlined functions can return a buffer or a string or another template, and these will be sent to the stream. This means you can do any kind of conditional logic you want to determine what to render.
As a shortcut, you can simply put a property name (as a string that's parsed
with deep-access
) for the context object, rather than a function accessing it.
const m = ;const template = m`Hello, !\n`;; // Hello, World!
You can also use the special m.each
function to iterate over arrays in your
context object.
const m = ;const template = m`Hello,!\n`;; // Hello, Thing 1 Thing 2!
The first argument to m.each
is a context accessor string (see Accessing
Properties, below), giving the property that is an array to iterate over. The
next argument is a template to apply to each element of the array.
To return a compiled and ready-to-go string, rather than a stream, just call the
asString
function on the template, passing in the context object.
const m = ;const template = m`Hello, !\n`;console; // Hello, World!
Accessing properties
For both inline values (like ${'foo'}
) and for the first argument to m.each
,
strings can be used to access properties of the context object. These are
dot-separated strings that are compatible with their usage in [deep-access
][].
In addition, you can use the @
symbol to refer to the current context object.
Here's an example, where the context object passed in is the string `'World':
const m = ;const template = m`Hello, !\n`;console; // Hello, World!
License
See LICENSE.txt