UNPKG

twing

Version:

First-class Twig engine for Node.js

89 lines (88 loc) 2.66 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createExtensionSet = void 0; const createExtensionSet = () => { const binaryOperators = []; const filters = new Map(); const functions = new Map(); const nodeVisitors = []; const tagHandlers = []; const tests = new Map(); const unaryOperators = []; const extensionSet = { get binaryOperators() { return binaryOperators; }, get filters() { return filters; }, get functions() { return functions; }, get nodeVisitors() { return nodeVisitors; }, get tagHandlers() { return tagHandlers; }, get tests() { return tests; }, get unaryOperators() { return unaryOperators; }, addExtension: (extension) => { // filters for (const filter of extension.filters) { extensionSet.addFilter(filter); } // functions for (const function_ of extension.functions) { extensionSet.addFunction(function_); } // tests for (const test of extension.tests) { extensionSet.addTest(test); } // operators for (const operator of extension.operators) { extensionSet.addOperator(operator); } // tag handlers for (const tagHandler of extension.tagHandlers) { extensionSet.addTagHandler(tagHandler); } // node visitors for (const nodeVisitor of extension.nodeVisitors) { extensionSet.addNodeVisitor(nodeVisitor); } }, addFilter: (filter) => { filters.set(filter.name, filter); }, addFunction: (twingFunction) => { functions.set(twingFunction.name, twingFunction); }, addNodeVisitor: (nodeVisitor) => { nodeVisitors.push(nodeVisitor); }, addOperator: (operator) => { let bucket; if (operator.type === "UNARY") { bucket = unaryOperators; } else { bucket = binaryOperators; } bucket.push(operator); }, addTagHandler: (tagHandler) => { tagHandlers.push(tagHandler); }, addTest: (test) => { tests.set(test.name, test); } }; return extensionSet; }; exports.createExtensionSet = createExtensionSet;