@axway/api-builder-runtime
Version:
API Builder Runtime
52 lines (45 loc) • 1 kB
JavaScript
/**
* @class EjsRendererEngine
* Renderer engine for EJS templates.
* @extends APIBuilderRendererEngine
* @pseudo
*/
/**
* @property skipread
* @hide
*/
var ejs = require('ejs'),
fs = require('fs'),
util = require('./util');
exports.extension = 'ejs';
function render(app, filename, opts) {
filename = util.resolveLayoutFilename(app, filename);
var tpl = ejs.compile(fs.readFileSync(filename).toString(), { filename: filename });
return tpl(opts);
}
exports.createRenderer = function (content, filename, app) {
var tpl;
return function (filePath, opts, callback) {
if (!tpl) {
try {
tpl = ejs.compile(content, {
filename: filename
});
} catch (err) {
return callback(err);
}
}
var result;
try {
result = tpl(opts || {});
} catch (err) {
return callback(err);
}
util.render(app, result, opts, exports.extension, render, callback);
};
};
/**
* @property {Object} ejs
* ejs module instance to access its APIs.
*/
exports.ejs = ejs;