world/book/node_modules/honkit/lib/output/createTemplateEngine.js
2025-05-12 05:38:44 +09:00

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;