UNPKG

wukong-templates

Version:

A wukong plugin to render files with templates.

60 lines (51 loc) 1.4 kB
'use strict'; /** * Module dependencies. */ var debug = require('debug')('wukong:templates'); var extend = require('extend'); var cons = require('consolidate'); var match = require('multimatch'); /** * Expose `templates`. */ module.exports = templates; function templates(opts) { opts = opts || {}; if ('string' === typeof opts) opts = { engine: opts }; if (!opts.engine) throw new Error('"engine" option required!'); var dir = opts.directory || 'templates'; var engine = opts.engine; var ext = opts.ext; var def = opts.default; var pattern = opts.pattern; var inPlace = opts.inPlace; engine = cons[engine]; return function *templates(next) { var file = this.file; var path = file.path; var tmpl = file.template || def; if ((pattern && !match(path, pattern).length) || (!tmpl && !inPlace)) yield next; var wukong = this.wukong; var metadata = wukong.metadata(); var clone = extend({}, metadata, file); var contents = clone.contents; var _render = engine; if (inPlace) { tmpl = contents; _render = engine.render; } else { tmpl = wukong.join(dir, tmpl); clone.contents = contents; } function render() { return function (done) { _render(tmpl, clone, done); }; } file.contents = yield render(); debug('converted file: %s', path); yield next; }; }