@axway/api-builder-runtime
Version:
API Builder Runtime
42 lines (37 loc) • 1.09 kB
JavaScript
var path = require('path'),
fs = require('fs');
/*
* attempt to render our body into a layout
*/
exports.render = function (app, body, opts, ext, render, callback) {
opts = opts || {};
let layout;
if (opts.layout) {
layout = opts.layout;
} else if (opts.layout !== false) {
layout = app.get('layout');
}
if (!layout) {
return callback(null, body);
}
opts.body = body;
// don't do the layout by setting to false
opts.layout = false;
// if this is a layout file, we need to return to prevent and infinite loop
if (path.extname(layout) === '.' + ext) {
return callback(null, render(app, layout, opts));
}
return app.render(layout, opts, callback);
};
/*
* resolve a layout to the full path. raises Error if not found
*/
exports.resolveLayoutFilename = function (app, filename) {
filename = fs.existsSync(filename) ? filename
: app.get('views') ? path.join(app.get('views'), filename)
: path.join(process.cwd(), 'web', 'views', filename);
if (!fs.existsSync(filename)) {
throw new Error('Unable to find layout "' + filename + '"');
}
return filename;
};