UNPKG

assemble-layouts

Version:

Assemble plugin for rendering nested template layouts.

118 lines (72 loc) 2.81 kB
# assemble-layouts [![NPM version](https://badge.fury.io/js/assemble-layouts.png)](http://badge.fury.io/js/assemble-layouts) > Assemble plugin for rendering nested template layouts. ## Install Install with [npm](npmjs.org): ```bash npm i assemble-layouts --save-dev ``` ## API ### Layouts 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: '\\s*body\\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: ```js var parsedLayouts = glob.sync('layouts/*.hbs'); parsedLayouts.forEach(function (layout) { // `layout` must have at `data` and `content` properties layouts.set(layout.name, layout); }); ``` ### Render the stack 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 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 ### .set Store a layout. * `name` {String}: name of the layout to store. * `layout` {Object}: object containing `data` and `content` properties. ### .get Return a stored layout. * `name` {String}: name of the layout ### .createStack 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. ### .useLayout 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 ## Authors **Brian Woodward** + [github/doowb](https://github.com/doowb) + [twitter/doowb](http://twitter.com/doowb) **Jon Schlinkert** + [github/jonschlinkert](https://github.com/jonschlinkert) + [twitter/jonschlinkert](http://twitter.com/jonschlinkert) ## License Copyright (c) 2014 Brian Woodward, contributors. Released under the MIT license *** _This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on July 24, 2014._