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