mirror of
https://github.com/GitbookIO/gitbook.git
synced 2026-09-17 08:05:19 +00:00
45 lines
1.1 KiB
JavaScript
45 lines
1.1 KiB
JavaScript
var Promise = require('../utils/promise');
|
|
var timing = require('../utils/timing');
|
|
var TemplateOutput = require('../models/templateOutput');
|
|
var replaceShortcuts = require('./replaceShortcuts');
|
|
|
|
/**
|
|
Render a template
|
|
|
|
@param {TemplateEngine} engine
|
|
@param {String} filePath
|
|
@param {String} content
|
|
@param {Object} context
|
|
@return {Promise<TemplateOutput>}
|
|
*/
|
|
function renderTemplate(engine, filePath, content, context) {
|
|
context = context || {};
|
|
|
|
// Mutable objects to contains all blocks requiring post-processing
|
|
var blocks = {};
|
|
|
|
// Create nunjucks environment
|
|
var env = engine.toNunjucks(blocks);
|
|
|
|
// Replace shortcuts from plugin's blocks
|
|
content = replaceShortcuts(engine, filePath, content);
|
|
|
|
return timing.measure(
|
|
'template.render',
|
|
|
|
Promise.nfcall(
|
|
env.renderString.bind(env),
|
|
content,
|
|
context,
|
|
{
|
|
path: filePath
|
|
}
|
|
)
|
|
.then(function(content) {
|
|
return TemplateOutput.create(content, blocks);
|
|
})
|
|
);
|
|
}
|
|
|
|
module.exports = renderTemplate;
|