···
-
function callback(node, key, parent, isLeaving) {
-
const visitFn = getVisitFn(visitor, node.kind, isLeaving);
-
const result = visitFn.call(visitor, node, key, parent, path, ancestors);
-
if (result === BREAK) throw BREAK;
function traverse(node, key, parent) {
-
const resultEnter = callback(node, key, parent, false);
if (resultEnter === false) {
} else if (resultEnter === null) {
} else if (resultEnter && typeof resultEnter.kind === 'string') {
hasEdited = resultEnter !== node;
···
if (parent) ancestors.pop();
-
const resultLeave = callback(node, key, parent, true);
-
if (resultLeave !== undefined) {
} else if (resultEnter !== undefined) {
return hasEdited ? copy : resultEnter;
···
function traverse(node, key, parent) {
+
const enter = getVisitFn(visitor, node.kind, false);
+
enter && enter.call(visitor, node, key, parent, path, ancestors);
if (resultEnter === false) {
} else if (resultEnter === null) {
+
} else if (resultEnter === BREAK) {
} else if (resultEnter && typeof resultEnter.kind === 'string') {
hasEdited = resultEnter !== node;
···
if (parent) ancestors.pop();
+
const leave = getVisitFn(visitor, node.kind, true);
+
leave && leave.call(visitor, node, key, parent, path, ancestors);
+
if (resultLeave === BREAK) {
+
} else if (resultLeave !== undefined) {
} else if (resultEnter !== undefined) {
return hasEdited ? copy : resultEnter;