@axway/api-builder-runtime
Version:
API Builder Runtime
39 lines (33 loc) • 939 B
JavaScript
/**
* @class HtmlRendererEngine
* Renderer engine for HTML templates.
* @extends APIBuilderRendererEngine
* @pseudo
*/
/**
* @property skipread
* @hide
*/
var util = require('./util'),
fs = require('fs');
exports.extension = 'html';
function templatize(content, data) {
if (data) {
// support token replacement in generic HTML files
var re = new RegExp('\\${(' + Object.keys(data).join('|') + ')}', 'g');
content = content.replace(re, function (key) {
return data[key.substring(2, key.length - 1)] || key;
});
}
return content;
}
function render(app, filename, opts) {
filename = util.resolveLayoutFilename(app, filename);
return templatize(fs.readFileSync(filename).toString(), opts);
}
exports.createRenderer = function (content, filename, app) {
return function (filePath, opts, callback) {
var tpl = templatize(content, opts);
util.render(app, tpl, opts, exports.extension, render, callback);
};
};