forked from daren.hsu/line_push
21 lines
364 B
JavaScript
21 lines
364 B
JavaScript
|
|
const esrecurse = require('esrecurse');
|
|
|
|
const visit = (ast, visitor) => {
|
|
const newVisitor = {};
|
|
|
|
for (const key of Object.keys(visitor)) {
|
|
const value = visitor[key];
|
|
newVisitor[key] = function (node, ...rest) {
|
|
value.call(this, node, ...rest);
|
|
this.visitChildren(node);
|
|
};
|
|
}
|
|
|
|
esrecurse.visit(ast, newVisitor);
|
|
};
|
|
|
|
module.exports = {
|
|
visit,
|
|
};
|