'use strict'; const createAstWalker = require("./walker"); let processors = [ require("./processors/add-parent"), require("./processors/mark-scopes"), require("./processors/add-variable-declarator-kind"), require("./processors/utility-methods"), ]; module.exports = function processAst(ast) { let initializedProcessors = processors.map((processor) => { return processor(); }); let walker = createAstWalker(ast); let finishedWalking = false; walker.on("enterNode", function processNode(node) { for (let processor of initializedProcessors) { if (processor.onEnter != null) { processor.onEnter(node); } } }); walker.on("exitNode", function processNode(node) { for (let processor of initializedProcessors) { if (processor.onExit != null) { processor.onExit(node); } } }); while (finishedWalking === false) { walker.step(); finishedWalking = walker.done; } return; };