source: trip-planner-front/node_modules/@babel/types/lib/traverse/traverse.js@ 571e0df

Last change on this file since 571e0df was 6a3a178, checked in by Ema <ema_spirova@…>, 3 years ago

initial commit

  • Property mode set to 100644
File size: 1.2 KB
Line 
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.default = traverse;
7
8var _definitions = require("../definitions");
9
10function traverse(node, handlers, state) {
11 if (typeof handlers === "function") {
12 handlers = {
13 enter: handlers
14 };
15 }
16
17 const {
18 enter,
19 exit
20 } = handlers;
21 traverseSimpleImpl(node, enter, exit, state, []);
22}
23
24function traverseSimpleImpl(node, enter, exit, state, ancestors) {
25 const keys = _definitions.VISITOR_KEYS[node.type];
26 if (!keys) return;
27 if (enter) enter(node, ancestors, state);
28
29 for (const key of keys) {
30 const subNode = node[key];
31
32 if (Array.isArray(subNode)) {
33 for (let i = 0; i < subNode.length; i++) {
34 const child = subNode[i];
35 if (!child) continue;
36 ancestors.push({
37 node,
38 key,
39 index: i
40 });
41 traverseSimpleImpl(child, enter, exit, state, ancestors);
42 ancestors.pop();
43 }
44 } else if (subNode) {
45 ancestors.push({
46 node,
47 key
48 });
49 traverseSimpleImpl(subNode, enter, exit, state, ancestors);
50 ancestors.pop();
51 }
52 }
53
54 if (exit) exit(node, ancestors, state);
55}
Note: See TracBrowser for help on using the repository browser.