mirror of
https://github.com/GitbookIO/gitbook.git
synced 2026-09-16 15:45:13 +00:00
46 lines
1.3 KiB
JavaScript
46 lines
1.3 KiB
JavaScript
var Templating = require('../templating');
|
|
var TemplateEngine = require('../models/templateEngine');
|
|
|
|
var Api = require('../api');
|
|
var Plugins = require('../plugins');
|
|
|
|
var defaultBlocks = require('../constants/defaultBlocks');
|
|
var defaultFilters = require('../constants/defaultFilters');
|
|
|
|
/**
|
|
Create template engine for an output.
|
|
It adds default filters/blocks, then add the ones from plugins
|
|
|
|
@param {Output} output
|
|
@return {TemplateEngine}
|
|
*/
|
|
function createTemplateEngine(output) {
|
|
var plugins = output.getPlugins();
|
|
var book = output.getBook();
|
|
var rootFolder = book.getContentRoot();
|
|
var logger = book.getLogger();
|
|
|
|
var filters = Plugins.listFilters(plugins);
|
|
var blocks = Plugins.listBlocks(plugins);
|
|
|
|
// Extend with default
|
|
blocks = defaultBlocks.merge(blocks);
|
|
filters = defaultFilters.merge(filters);
|
|
|
|
// Create loader
|
|
var transformFn = Templating.replaceShortcuts.bind(null, blocks);
|
|
var loader = new Templating.ConrefsLoader(rootFolder, transformFn, logger);
|
|
|
|
// Create API context
|
|
var context = Api.encodeGlobal(output);
|
|
|
|
return new TemplateEngine({
|
|
filters: filters,
|
|
blocks: blocks,
|
|
loader: loader,
|
|
context: context
|
|
});
|
|
}
|
|
|
|
module.exports = createTemplateEngine;
|