astx
Version:
super powerful structural search and replace for JavaScript and TypeScript to automate your refactoring
31 lines (28 loc) • 4.54 kB
JavaScript
import { pathIs } from '../types.mjs'
import compileMatcher from './index.mjs'
import indentDebug from './indentDebug.mjs'
import compileGenericNodeMatcher from './GenericNodeMatcher.mjs'
export default function compileAssignmentPatternMatcher(
pattern,
compileOptions
) {
const { debug } = compileOptions
const n = compileOptions.backend.t.namedTypes
const subCompileOptions = { ...compileOptions, debug: indentDebug(debug, 1) }
const left = pattern.get('left')
const right = pattern.get('right')
const rightMatcher = compileMatcher(right, subCompileOptions)
if (rightMatcher.optional) {
const leftMatcher = compileMatcher(left, subCompileOptions)
const wholeMatcher = compileGenericNodeMatcher(pattern, subCompileOptions)
return {
pattern,
match: (path, matchSoFar) => {
debug('AssignmentPattern (with optional right)')
return (
pathIs(path, n.AssignmentPattern) ? wholeMatcher : leftMatcher
).match(path, matchSoFar)
},
}
}
} //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYXRoSXMiLCJjb21waWxlTWF0Y2hlciIsImluZGVudERlYnVnIiwiY29tcGlsZUdlbmVyaWNOb2RlTWF0Y2hlciIsImNvbXBpbGVBc3NpZ25tZW50UGF0dGVybk1hdGNoZXIiLCJwYXR0ZXJuIiwiY29tcGlsZU9wdGlvbnMiLCJkZWJ1ZyIsIm4iLCJiYWNrZW5kIiwidCIsIm5hbWVkVHlwZXMiLCJzdWJDb21waWxlT3B0aW9ucyIsImxlZnQiLCJnZXQiLCJyaWdodCIsInJpZ2h0TWF0Y2hlciIsIm9wdGlvbmFsIiwibGVmdE1hdGNoZXIiLCJ3aG9sZU1hdGNoZXIiLCJtYXRjaCIsInBhdGgiLCJtYXRjaFNvRmFyIiwiQXNzaWdubWVudFBhdHRlcm4iXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tcGlsZU1hdGNoZXIvQXNzaWdubWVudFBhdHRlcm4udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTm9kZVBhdGgsIEFzc2lnbm1lbnRQYXR0ZXJuLCBwYXRoSXMgfSBmcm9tICcuLi90eXBlcydcbmltcG9ydCBjb21waWxlTWF0Y2hlciwgeyBDb21waWxlZE1hdGNoZXIsIENvbXBpbGVPcHRpb25zLCBNYXRjaFJlc3VsdCB9IGZyb20gJy4nXG5pbXBvcnQgaW5kZW50RGVidWcgZnJvbSAnLi9pbmRlbnREZWJ1ZydcbmltcG9ydCBjb21waWxlR2VuZXJpY05vZGVNYXRjaGVyIGZyb20gJy4vR2VuZXJpY05vZGVNYXRjaGVyJ1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjb21waWxlQXNzaWdubWVudFBhdHRlcm5NYXRjaGVyKFxuICBwYXR0ZXJuOiBOb2RlUGF0aDxBc3NpZ25tZW50UGF0dGVybiwgQXNzaWdubWVudFBhdHRlcm4+LFxuICBjb21waWxlT3B0aW9uczogQ29tcGlsZU9wdGlvbnNcbik6IENvbXBpbGVkTWF0Y2hlciB8IHZvaWQge1xuICBjb25zdCB7IGRlYnVnIH0gPSBjb21waWxlT3B0aW9uc1xuICBjb25zdCBuID0gY29tcGlsZU9wdGlvbnMuYmFja2VuZC50Lm5hbWVkVHlwZXNcbiAgY29uc3Qgc3ViQ29tcGlsZU9wdGlvbnMgPSB7XG4gICAgLi4uY29tcGlsZU9wdGlvbnMsXG4gICAgZGVidWc6IGluZGVudERlYnVnKGRlYnVnLCAxKSxcbiAgfVxuXG4gIGNvbnN0IGxlZnQgPSBwYXR0ZXJuLmdldCgnbGVmdCcpXG4gIGNvbnN0IHJpZ2h0ID0gcGF0dGVybi5nZXQoJ3JpZ2h0JylcbiAgY29uc3QgcmlnaHRNYXRjaGVyID0gY29tcGlsZU1hdGNoZXIocmlnaHQsIHN1YkNvbXBpbGVPcHRpb25zKVxuICBpZiAocmlnaHRNYXRjaGVyLm9wdGlvbmFsKSB7XG4gICAgY29uc3QgbGVmdE1hdGNoZXIgPSBjb21waWxlTWF0Y2hlcihsZWZ0LCBzdWJDb21waWxlT3B0aW9ucylcbiAgICBjb25zdCB3aG9sZU1hdGNoZXIgPSBjb21waWxlR2VuZXJpY05vZGVNYXRjaGVyKHBhdHRlcm4sIHN1YkNvbXBpbGVPcHRpb25zKVxuICAgIHJldHVybiB7XG4gICAgICBwYXR0ZXJuLFxuICAgICAgbWF0Y2g6IChwYXRoOiBOb2RlUGF0aCwgbWF0Y2hTb0ZhcjogTWF0Y2hSZXN1bHQpOiBNYXRjaFJlc3VsdCA9PiB7XG4gICAgICAgIGRlYnVnKCdBc3NpZ25tZW50UGF0dGVybiAod2l0aCBvcHRpb25hbCByaWdodCknKVxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIHBhdGhJcyhwYXRoLCBuLkFzc2lnbm1lbnRQYXR0ZXJuKSA/IHdob2xlTWF0Y2hlciA6IGxlZnRNYXRjaGVyXG4gICAgICAgICkubWF0Y2gocGF0aCwgbWF0Y2hTb0ZhcilcbiAgICAgIH0sXG4gICAgfVxuICB9XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBLFNBQXNDQSxNQUF0QyxRQUFvRCxVQUFwRDtBQUNBLE9BQU9DLGNBQVAsTUFBNkUsR0FBN0U7QUFDQSxPQUFPQyxXQUFQLE1BQXdCLGVBQXhCO0FBQ0EsT0FBT0MseUJBQVAsTUFBc0Msc0JBQXRDOztBQUVBLGVBQWUsU0FBU0MsK0JBQVQ7QUFDYkMsT0FEYTtBQUViQyxjQUZhO0FBR1c7RUFDeEIsTUFBTSxFQUFFQyxLQUFGLEtBQVlELGNBQWxCO0VBQ0EsTUFBTUUsQ0FBQyxHQUFHRixjQUFjLENBQUNHLE9BQWYsQ0FBdUJDLENBQXZCLENBQXlCQyxVQUFuQztFQUNBLE1BQU1DLGlCQUFpQixHQUFHO0lBQ3hCLEdBQUdOLGNBRHFCO0lBRXhCQyxLQUFLLEVBQUVMLFdBQVcsQ0FBQ0ssS0FBRCxFQUFRLENBQVIsQ0FGTSxFQUExQjs7O0VBS0EsTUFBTU0sSUFBSSxHQUFHUixPQUFPLENBQUNTLEdBQVIsQ0FBWSxNQUFaLENBQWI7RUFDQSxNQUFNQyxLQUFLLEdBQUdWLE9BQU8sQ0FBQ1MsR0FBUixDQUFZLE9BQVosQ0FBZDtFQUNBLE1BQU1FLFlBQVksR0FBR2YsY0FBYyxDQUFDYyxLQUFELEVBQVFILGlCQUFSLENBQW5DO0VBQ0EsSUFBSUksWUFBWSxDQUFDQyxRQUFqQixFQUEyQjtJQUN6QixNQUFNQyxXQUFXLEdBQUdqQixjQUFjLENBQUNZLElBQUQsRUFBT0QsaUJBQVAsQ0FBbEM7SUFDQSxNQUFNTyxZQUFZLEdBQUdoQix5QkFBeUIsQ0FBQ0UsT0FBRCxFQUFVTyxpQkFBVixDQUE5QztJQUNBLE9BQU87TUFDTFAsT0FESztNQUVMZSxLQUFLLEVBQUUsQ0FBQ0MsSUFBRCxFQUFpQkMsVUFBakIsS0FBMEQ7UUFDL0RmLEtBQUssQ0FBQyx5Q0FBRCxDQUFMO1FBQ0EsT0FBTztRQUNMUCxNQUFNLENBQUNxQixJQUFELEVBQU9iLENBQUMsQ0FBQ2UsaUJBQVQsQ0FBTixHQUFvQ0osWUFBcEMsR0FBbURELFdBRDlDO1FBRUxFLEtBRkssQ0FFQ0MsSUFGRCxFQUVPQyxVQUZQLENBQVA7TUFHRCxDQVBJLEVBQVA7O0VBU0Q7QUFDRiJ9