Skip to content

Commit

Permalink
reorder procedure definition
Browse files Browse the repository at this point in the history
  • Loading branch information
soryy708 committed Mar 25, 2024
1 parent 2789869 commit 76846b4
Showing 1 changed file with 41 additions and 41 deletions.
82 changes: 41 additions & 41 deletions src/exportMapBuilder.js
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,47 @@ function makeSourceCode(text, ast) {
}
}

/**
* Traverse a pattern/identifier node, calling 'callback'
* for each leaf identifier.
* @param {node} pattern
* @param {Function} callback
* @return {void}
*/
export function recursivePatternCapture(pattern, callback) {
switch (pattern.type) {
case 'Identifier': // base case
callback(pattern);
break;

case 'ObjectPattern':
pattern.properties.forEach((p) => {
if (p.type === 'ExperimentalRestProperty' || p.type === 'RestElement') {
callback(p.argument);
return;
}
recursivePatternCapture(p.value, callback);
});
break;

case 'ArrayPattern':
pattern.elements.forEach((element) => {
if (element == null) { return; }
if (element.type === 'ExperimentalRestProperty' || element.type === 'RestElement') {
callback(element.argument);
return;
}
recursivePatternCapture(element, callback);
});
break;

case 'AssignmentPattern':
callback(pattern.left);
break;
default:
}
}

export default class ExportMapBuilder {
static get(source, context) {
const path = resolve(source, context);
Expand Down Expand Up @@ -607,44 +648,3 @@ export default class ExportMapBuilder {
return m;
}
}

/**
* Traverse a pattern/identifier node, calling 'callback'
* for each leaf identifier.
* @param {node} pattern
* @param {Function} callback
* @return {void}
*/
export function recursivePatternCapture(pattern, callback) {
switch (pattern.type) {
case 'Identifier': // base case
callback(pattern);
break;

case 'ObjectPattern':
pattern.properties.forEach((p) => {
if (p.type === 'ExperimentalRestProperty' || p.type === 'RestElement') {
callback(p.argument);
return;
}
recursivePatternCapture(p.value, callback);
});
break;

case 'ArrayPattern':
pattern.elements.forEach((element) => {
if (element == null) { return; }
if (element.type === 'ExperimentalRestProperty' || element.type === 'RestElement') {
callback(element.argument);
return;
}
recursivePatternCapture(element, callback);
});
break;

case 'AssignmentPattern':
callback(pattern.left);
break;
default:
}
}

0 comments on commit 76846b4

Please sign in to comment.