diff2html/src/hoganjs-utils.js

74 lines
1.7 KiB
JavaScript
Raw Normal View History

2016-04-15 22:08:57 +00:00
/*
*
* Utils (hoganjs-utils.js)
* Author: rtfpessoa
*
*/
(function() {
var fs = require('fs');
var path = require('path');
var hogan = require('hogan.js');
2016-04-16 11:06:03 +00:00
var hoganTemplates;
2016-04-15 22:08:57 +00:00
var templatesPath = path.resolve(__dirname, 'templates');
var templatesCache = {};
function HoganJsUtils() {
2016-04-16 11:06:03 +00:00
try {
hoganTemplates = require('./templates/diff2html-templates.js');
} catch (_ignore) {
hoganTemplates = {};
}
2016-04-15 22:08:57 +00:00
}
HoganJsUtils.prototype.render = function(namespace, view, params) {
2016-04-16 10:10:08 +00:00
var templateKey = this._templateKey(namespace, view);
var template = this._getTemplate(templateKey);
2016-04-15 22:08:57 +00:00
if (template) {
return template.render(params);
}
return null;
};
2016-04-16 10:10:08 +00:00
HoganJsUtils.prototype._getTemplate = function(templateKey) {
2016-04-15 22:08:57 +00:00
var template = this._readFromCache(templateKey);
2016-04-16 11:06:03 +00:00
if (!template) {
template = this._loadTemplate(templateKey);
}
return template;
};
HoganJsUtils.prototype._loadTemplate = function(templateKey) {
var template;
if (fs.readFileSync) {
2016-04-16 10:10:08 +00:00
var templatePath = path.join(templatesPath, templateKey);
2016-04-15 22:08:57 +00:00
var templateContent = fs.readFileSync(templatePath + '.mustache', 'utf8');
template = hogan.compile(templateContent);
2016-04-16 11:06:03 +00:00
templatesCache[templateKey] = template;
2016-04-15 22:08:57 +00:00
}
return template;
};
HoganJsUtils.prototype._readFromCache = function(templateKey) {
2016-04-16 11:06:03 +00:00
return global.browserTemplates && global.browserTemplates[templateKey] ||
hoganTemplates[templateKey] ||
templatesCache[templateKey];
2016-04-15 22:08:57 +00:00
};
HoganJsUtils.prototype._templateKey = function(namespace, view) {
return namespace + '-' + view;
};
module.exports.HoganJsUtils = new HoganJsUtils();
})();