apeman-tmpl-contrib-official
Version:
Template for official apeman modules
64 lines (60 loc) • 1.47 kB
JavaScript
/**
* @memberof module:apeman-tmpl-contrib-official
* @constructor _Renderer
* @private
*/
;
var coz = require('coz'),
extend = require('extend'),
Handlebars = require('handlebars');
/** @lends _Renderer */
function _Renderer(src) {
var s = this;
s.src = src;
}
_Renderer.prototype = {
/**
* Get buds.
* @param {object} data - Data to render.
* @returns {array} - Buds objects.
*/
buds: function (data) {
var s = this;
return Object.keys(s.src).map(function (pathname) {
var src = s.src[pathname];
pathname = String(Handlebars.compile(pathname)(data));
return extend(src, {
path: pathname,
mkdirp: true,
data: data
});
});
},
/**
* Render with data.
* @param {object} data - Data to render.
* @param {function} callback - Callback when done.
*/
render: function (data, callback) {
var s = this,
buds = s.buds(data);
coz.render(buds, callback);
},
/**
* Bind render method.
* @returns {function(this:_Renderer)}
*/
bindRender: function () {
var s = this;
return s.render.bind(s);
},
/**
* Bind buds method.
* @returns {function(this:_Renderer)}
*/
bindBuds: function () {
var s = this;
return s.buds.bind(s);
}
};
module.exports = _Renderer;