diff2html/src/hoganjs-utils.js
2016-04-16 12:07:23 +01:00

59 lines
1.4 KiB
JavaScript

/*
*
* Utils (hoganjs-utils.js)
* Author: rtfpessoa
*
*/
(function() {
var fs = require('fs');
var path = require('path');
var hogan = require('hogan.js');
var templatesPath = path.resolve(__dirname, 'templates');
var templatesCache = {};
function HoganJsUtils() {
}
HoganJsUtils.prototype.render = function(namespace, view, params) {
var templateKey = this._templateKey(namespace, view);
var template = this._getTemplate(templateKey);
if (template) {
return template.render(params);
}
return null;
};
HoganJsUtils.prototype._getTemplate = function(templateKey) {
var template = this._readFromCache(templateKey);
if (!template && fs) {
var templatePath = path.join(templatesPath, templateKey);
var templateContent = fs.readFileSync(templatePath + '.mustache', 'utf8');
template = hogan.compile(templateContent);
this._addToCache(templateKey, template);
}
return template;
};
HoganJsUtils.prototype._addToCache = function(templateKey, template) {
templatesCache[templateKey] = template;
};
HoganJsUtils.prototype._readFromCache = function(templateKey) {
return global.browserTemplates && global.browserTemplates[templateKey] || templatesCache[templateKey];
};
HoganJsUtils.prototype._templateKey = function(namespace, view) {
return namespace + '-' + view;
};
module.exports.HoganJsUtils = new HoganJsUtils();
})();