UNPKG

twing

Version:

First-class Twig engine for Node.js

43 lines (42 loc) 2.18 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.executeApplyNodeSynchronously = exports.executeApplyNode = void 0; const get_key_value_pairs_1 = require("../helpers/get-key-value-pairs"); const filter_1 = require("../node/expression/call/filter"); const constant_1 = require("../node/expression/constant"); const executeApplyNode = (node, executionContext) => { const { outputBuffer, nodeExecutor: execute } = executionContext; const { body, filters } = node.children; const { line, column } = node; outputBuffer.start(); return execute(body, executionContext) .then(async () => { let content = outputBuffer.getAndClean(); const keyValuePairs = (0, get_key_value_pairs_1.getKeyValuePairs)(filters); while (keyValuePairs.length > 0) { const { key, value: filterArguments } = keyValuePairs.pop(); const filterName = key.attributes.value; const filterNode = (0, filter_1.createFilterNode)((0, constant_1.createConstantNode)(content, line, column), filterName, filterArguments, line, column); content = await execute(filterNode, executionContext); } outputBuffer.echo(content); }); }; exports.executeApplyNode = executeApplyNode; const executeApplyNodeSynchronously = (node, executionContext) => { const { outputBuffer, nodeExecutor: execute } = executionContext; const { body, filters } = node.children; const { line, column } = node; outputBuffer.start(); execute(body, executionContext); let content = outputBuffer.getAndClean(); const keyValuePairs = (0, get_key_value_pairs_1.getKeyValuePairs)(filters); while (keyValuePairs.length > 0) { const { key, value: filterArguments } = keyValuePairs.pop(); const filterName = key.attributes.value; const filterNode = (0, filter_1.createFilterNode)((0, constant_1.createConstantNode)(content, line, column), filterName, filterArguments, line, column); content = execute(filterNode, executionContext); } outputBuffer.echo(content); }; exports.executeApplyNodeSynchronously = executeApplyNodeSynchronously;