Assemble plugin for rendering nested template layouts.
npm install assemble-layouts> Assemble plugin for rendering nested template layouts.
``bash`
npm i assemble-layouts --save-dev
Create a new instance of Layouts to generate flattened layout stacks.
Example:
`js`
var layouts = new Layouts(options);
Default settings for body regex/delimiters:
`js`
var options = {
delims: ['{{', '}}'], // start and end delimiters for body tag
expression: '{{ body }}', // default body tag for empty layouts
matter: '\\sbody\\s', // inner contents of body tag regex
};
Assuming parsedLayouts have been read from the file system and parsed, we can now add them to the layouts cache:
`jslayout
var parsedLayouts = glob.sync('layouts/*.hbs');
parsedLayouts.forEach(function (layout) {
// must have at data and content properties`
layouts.set(layout.name, layout);
});
Render the entire layout stack for a specific page object:
`js`
var page = {data: {a: 'b', layout: 'default'}, content: 'Howdy {{name}}!'};
var template = layouts.render(page);
#### page object
The page object must have data and content properties!
* options {Object}: global options for how to determine layouts.
Flatten the entire layout stack based on the file and options
and how the layout stack is defined.
* file {Object}: object containing data and contents properties. options
* {Object}: additional options to override global and/or file options
Store a layout.
* name {String}: name of the layout to store. layout
* {Object}: object containing data and content properties.
Return a stored layout.
* name {String}: name of the layout
Create a layout stack based on options and layout data. Returned stack is
an array with the layouts to use going from the top level parent to the
lowest level child.
* options {Object}: used to determine the layout to use.
Return a valid layout name if one should be used, otherwise, returns null
to indicate a layout should not be used.
* layout` {String}: layout to use, or a negative value to not use a layout
*
_This file was generated by verb-cli on July 24, 2014._