layouts 
Wrap templates with layouts. Layouts can be nested and optionally use other layouts.
Install
npm i layouts --save
Usage
var layouts = require('layouts');
API
Heads up! Although most of the examples use <%= foo %>
syntax for delimiters, you can change these to be whatever you need.
Set or get an option.
key
{String}: The option name.value
{*}: The value to set.returns
{*|Object}: Returns value
if key
is supplied, or Options
for chaining when an option is set.
layout.option('a', true)
layout.option('a')
Store a template on the cache by its name
, the layout
to use, and the template's `content.
name
{String|Object}: If name
is a string, layout
and content
are required.data
{String|Object}: Pass a string defining the name of layout to use for the given template, or pass an object with a layout
property.content
{String}: The template "content", this will not be compiled or rendered.
Example:
layouts.setLayout('a', 'b', '<h1>Foo</h1>\n<%= body %>\n');
Get a cached template by name
.
name
{String}returns
{Object}: The template object to return.
Example:
layouts.getLayout('a');
Get a cached template by name
.
name
{String}returns
{Object}: The template object to return.
Example:
layouts.getLayout('a');
Reduce a layout stack for a template into a single flattened layout. Pass the name
of the layout defined for the template (e.g. the first layout in the stack).
name
{String}: The layout to start with.options
{Object}returns
{Array}: The template's layout stack is returned as an array.
Example:
layouts.stack('base');
Replace a <%= body %>
tag with the given str
. Custom delimiters and/or variable may be passed on the options
. Unlike renderLayout
, this method does not render templates, it only peforms a basic regex replacement.
str
{String}: The string to use as a replacement value.content
{String}: A string with a <%= body %>
tag where the str
should be injected.returns
{String}: Resulting flattened content.
Example:
layouts.replaceTag('ABC', 'Before <%= body %> After');
Render a layout using Lo-Dash, by passing content (str
), context
and options
.
str
{String}: Content for the layout to render.options
{Object}: Additional options used for building the render settings.returns
{String}: Rendered string.
Example:
layouts.renderLayout(str, context, options);
Since this method uses Lo-Dash to process templates custom delimiters
may be passed on the options.delims
property. This allows layouts to
be rendered prior to injecting "pages" or other str with templates that
should not be rendered when the layout stack is processed.
Example:
layouts.renderLayout(str, context, {
delims: ['<%','%>']
});
Return an object with the string (str
) and data
required to build a final layout. This is useful if you need to use your own template engine to handle this final step.
str
{String}: The string to be injected into the layout. Usually a page, or inner layout, etc.name
{String}: The name of the first layout to use to build the stack.returns
{Object}: Resulting flattened layout.
Example:
var page = layouts.render(str, 'base');
var tmpl = _.template(page, context);
Author
Jon Schlinkert
License
Copyright (c) 2014 Jon Schlinkert, contributors.
Released under the MIT license
This file was generated by verb-cli on September 29, 2014.