UNPKG

metal-soy-critic

Version:
33 lines (32 loc) 788 B
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); function noop() { } function getEnter(handler) { if (typeof handler === 'function') { return handler; } else if (handler && handler.enter) { return handler.enter; } return noop; } function getExit(handler) { if (typeof handler === 'object' && handler.exit) { return handler.exit; } return noop; } function visit(node, visitor) { const handler = visitor[node.type]; getEnter(handler)(node); if (node.body) { if (Array.isArray(node.body)) { node.body.forEach(node => visit(node, visitor)); } else { visit(node.body, visitor); } } getExit(handler)(node); } exports.default = visit;