sitespeed.io/lib/plugins/html/renderer.js

39 lines
879 B
JavaScript

'use strict';
const jade = require('jade'),
fs = require('fs'),
Promise = require('bluebird'),
path = require('path');
Promise.promisifyAll(fs);
const basePath = path.resolve(__dirname, 'templates');
const templateCache = {};
function getTemplate(templateName) {
if (!templateName.endsWith('.jade'))
templateName = templateName + '.jade';
const template = templateCache[templateName];
if (template) {
return Promise.resolve(template);
}
const filename = path.resolve(basePath, templateName);
return fs.readFileAsync(filename, 'utf-8')
.then((source) => {
const template = jade.compile(source, {filename});
templateCache[templateName] = template;
return template;
});
}
module.exports = {
renderTemplate(templateName, locals) {
return getTemplate(templateName)
.then((template) => template(locals));
}
};