# vinyl-view [![NPM version](https://img.shields.io/npm/v/vinyl-view.svg?style=flat)](https://www.npmjs.com/package/vinyl-view) [![NPM downloads](https://img.shields.io/npm/dm/vinyl-view.svg?style=flat)](https://npmjs.org/package/vinyl-view) [![Build Status](https://img.shields.io/travis/jonschlinkert/vinyl-view.svg?style=flat)](https://travis-ci.org/jonschlinkert/vinyl-view) Extends vinyl with render and compile methods, and properties used for rendering templates. ## Install Install with [npm](https://www.npmjs.com/): ```sh $ npm install --save vinyl-view ``` ## Usage Use the same way you would use a [vinyl](http://github.com/gulpjs/vinyl) file: ```js var View = require('vinyl-view'); var view = new View({path: 'foo'}); ``` ## API ### [View](index.js#L26) Create an instance of `View`. Optionally pass a default object to use. **Params** * `view` **{Object}** **Example** ```js var view = new View({ path: 'foo.html', contents: new Buffer('...') }); ``` ### [.compile](index.js#L57) Synchronously compile a view. **Params** * `locals` **{Object}**: Optionally pass locals to the engine. * `returns` **{Object}** `View`: instance, for chaining. **Example** ```js var view = page.compile(); view.fn({title: 'A'}); view.fn({title: 'B'}); view.fn({title: 'C'}); ``` ### [.renderSync](index.js#L75) Synchronously render templates in `view.content`. **Params** * `locals` **{Object}**: Optionally pass locals to the engine. * `returns` **{Object}** `View`: instance, for chaining. **Example** ```js var view = new View({content: 'This is <%= title %>'}); view.renderSync({title: 'Home'}); console.log(view.content); ``` ### [.render](index.js#L101) Asynchronously render templates in `view.content`. **Params** * `locals` **{Object}**: Context to use for rendering templates. **Example** ```js view.render({title: 'Home'}, function(err, res) { //=> view object with rendered `content` }); ``` ### [.context](index.js#L132) Create a context object from `locals` and the `view.data` and `view.locals` objects. The `view.data` property is typically created from front-matter, and `view.locals` is used when a `new View()` is created. This method be overridden either by defining a custom `view.options.context` function to customize context for a view instance, or static [View.context](#view-context) function to customize context for all view instances. **Params** * `locals` **{Object}**: Optionally pass a locals object to merge onto the context. * `returns` **{Object}**: Returns the context object. **Example** ```js var page = new View({path: 'a/b/c.txt', locals: {a: 'b', c: 'd'}}); var ctx = page.context({a: 'z'}); console.log(ctx); //=> {a: 'z', c: 'd'} ``` ### [.isType](index.js#L148) Returns true if the view is the given `viewType`. Returns `false` if no type is assigned. When used with vinyl-collections, types are assigned by their respective collections. **Params** * `type` **{String}**: (`renderable`, `partial`, `layout`) **Example** ```js var view = new View({path: 'a/b/c.txt', viewType: 'partial'}) view.isType('partial'); ``` ### [.View.context](index.js#L248) Define a custom static `View.context` function to override default `.context` behavior. See the [context](#context) docs for more info. **Params** * `locals` **{Object}** * `returns` **{Object}** **Example** ```js // custom context function View.context = function(locals) { // `this` is the view being rendered return locals; }; ``` ## About ### Contributing Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). ### Building docs _(This document was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme) (a [verb](https://github.com/verbose/verb) generator), please don't edit the readme directly. Any changes to the readme must be made in [.verb.md](.verb.md).)_ To generate the readme and API documentation with [verb](https://github.com/verbose/verb): ```sh $ npm install -g verb verb-generate-readme && verb ``` ### Running tests Install dev dependencies: ```sh $ npm install -d && npm test ``` ### Author **Jon Schlinkert** * [github/jonschlinkert](https://github.com/jonschlinkert) * [twitter/jonschlinkert](http://twitter.com/jonschlinkert) ### License Copyright © 2016, [Jon Schlinkert](https://github.com/jonschlinkert). Released under the [MIT license](https://github.com/jonschlinkert/vinyl-view/blob/master/LICENSE). *** _This file was generated by [verb](https://github.com/verbose/verb), v0.9.0, on July 23, 2016._