twing
Version:
First-class Twig engine for Node.js
43 lines (42 loc) • 2.18 kB
JavaScript
;
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;