38 lines
1011 B
JavaScript
38 lines
1011 B
JavaScript
'use strict';
|
|
|
|
const pug = require('pug');
|
|
const path = require('path');
|
|
const log = require('intel').getLogger('sitespeedio.plugin.html');
|
|
const basePath = path.resolve(__dirname, 'templates');
|
|
|
|
const templateCache = {};
|
|
|
|
function getTemplate(templateName) {
|
|
if (!templateName.endsWith('.pug')) templateName = templateName + '.pug';
|
|
|
|
const template = templateCache[templateName];
|
|
if (template) {
|
|
return template;
|
|
}
|
|
|
|
const filename = path.resolve(basePath, templateName);
|
|
const renderedTemplate = pug.compileFile(filename);
|
|
|
|
templateCache[templateName] = renderedTemplate;
|
|
return renderedTemplate;
|
|
}
|
|
|
|
module.exports = {
|
|
renderTemplate(templateName, locals) {
|
|
try {
|
|
return getTemplate(templateName)(locals);
|
|
} catch (e) {
|
|
log.error('Could not generate %s, %s', templateName, e.message);
|
|
}
|
|
},
|
|
addTemplate(templateName, templateString) {
|
|
const compiledTemplate = pug.compile(templateString);
|
|
templateCache[templateName + '.pug'] = compiledTemplate;
|
|
}
|
|
};
|