43 lines
1.7 KiB
JavaScript
43 lines
1.7 KiB
JavaScript
"use strict";
|
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
};
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
const templating_1 = __importDefault(require("../templating"));
|
|
const templateEngine_1 = __importDefault(require("../models/templateEngine"));
|
|
const api_1 = __importDefault(require("../api"));
|
|
const plugins_1 = __importDefault(require("../plugins"));
|
|
const defaultBlocks_1 = __importDefault(require("../constants/defaultBlocks"));
|
|
const defaultFilters_1 = __importDefault(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) {
|
|
const plugins = output.getPlugins();
|
|
const book = output.getBook();
|
|
const rootFolder = book.getContentRoot();
|
|
const logger = book.getLogger();
|
|
let filters = plugins_1.default.listFilters(plugins);
|
|
let blocks = plugins_1.default.listBlocks(plugins);
|
|
// Extend with default
|
|
blocks = defaultBlocks_1.default.merge(blocks);
|
|
filters = defaultFilters_1.default.merge(filters);
|
|
// Create loader
|
|
const transformFn = templating_1.default.replaceShortcuts.bind(null, blocks);
|
|
// @ts-expect-error: Expected 0 arguments, but got 3.
|
|
const loader = new templating_1.default.ConrefsLoader(rootFolder, transformFn, logger);
|
|
// Create API context
|
|
const context = api_1.default.encodeGlobal(output);
|
|
return new templateEngine_1.default({
|
|
filters: filters,
|
|
blocks: blocks,
|
|
loader: loader,
|
|
context: context
|
|
});
|
|
}
|
|
exports.default = createTemplateEngine;
|