UNPKG

twing

Version:

First-class Twig engine for Node.js

30 lines (29 loc) 1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createNodeTraverser = void 0; const node_1 = require("./node"); const createNodeTraverser = (visitors) => { const traverseWithVisitor = (visitor, node, source) => { node = visitor.enterNode(node, source); for (const [key, child] of (0, node_1.getChildren)(node)) { const newChild = traverseWithVisitor(visitor, child, source); if (newChild) { if (newChild !== child) { node.children[key] = newChild; } } else { delete node.children[key]; } } return visitor.leaveNode(node, source); }; return (node, template) => { let result = node; for (const visitor of visitors) { result = traverseWithVisitor(visitor, node, template); } return result; }; }; exports.createNodeTraverser = createNodeTraverser;