astx
Version:
super powerful structural search and replace for JavaScript and TypeScript to automate your refactoring
43 lines (37 loc) • 4.24 kB
JavaScript
import compileOptionalMatcher from './Optional.mjs'
import compileOrMatcher from './Or.mjs'
import compileAndMatcher from './And.mjs'
import CompilePathError from '../util/CompilePathError.mjs'
export default function compileSpecialMatcher(
path,
name,
params,
compileOptions
) {
switch (name) {
case '$Maybe':
if (params.value.length !== 1) {
throw new CompilePathError(
`$Maybe must be used with 1 type parameter`,
path
)
}
return compileOptionalMatcher(path, params.get(0), compileOptions)
case '$Or':
if (params.value.length < 2) {
throw new CompilePathError(
`$Or must be called with at least 2 arguments`,
path
)
}
return compileOrMatcher(path, params, compileOptions)
case '$And':
if (params.value.length < 2) {
throw new CompilePathError(
`$And must be called with at least 2 arguments`,
path
)
}
return compileAndMatcher(path, params, compileOptions)
}
} //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21waWxlT3B0aW9uYWxNYXRjaGVyIiwiY29tcGlsZU9yTWF0Y2hlciIsImNvbXBpbGVBbmRNYXRjaGVyIiwiQ29tcGlsZVBhdGhFcnJvciIsImNvbXBpbGVTcGVjaWFsTWF0Y2hlciIsInBhdGgiLCJuYW1lIiwicGFyYW1zIiwiY29tcGlsZU9wdGlvbnMiLCJ2YWx1ZSIsImxlbmd0aCIsImdldCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21waWxlTWF0Y2hlci9TcGVjaWFsTWF0Y2hlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOb2RlLCBOb2RlUGF0aCB9IGZyb20gJy4uL3R5cGVzJ1xuaW1wb3J0IHsgQ29tcGlsZWRNYXRjaGVyLCBDb21waWxlT3B0aW9ucyB9IGZyb20gJy4nXG5pbXBvcnQgY29tcGlsZU9wdGlvbmFsTWF0Y2hlciBmcm9tICcuL09wdGlvbmFsJ1xuaW1wb3J0IGNvbXBpbGVPck1hdGNoZXIgZnJvbSAnLi9PcidcbmltcG9ydCBjb21waWxlQW5kTWF0Y2hlciBmcm9tICcuL0FuZCdcbmltcG9ydCBDb21waWxlUGF0aEVycm9yIGZyb20gJy4uL3V0aWwvQ29tcGlsZVBhdGhFcnJvcidcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY29tcGlsZVNwZWNpYWxNYXRjaGVyKFxuICBwYXRoOiBOb2RlUGF0aCxcbiAgbmFtZTogc3RyaW5nLFxuICBwYXJhbXM6IE5vZGVQYXRoPE5vZGUsIE5vZGVbXT4sXG4gIGNvbXBpbGVPcHRpb25zOiBDb21waWxlT3B0aW9uc1xuKTogQ29tcGlsZWRNYXRjaGVyIHwgdm9pZCB7XG4gIHN3aXRjaCAobmFtZSkge1xuICAgIGNhc2UgJyRNYXliZSc6XG4gICAgICBpZiAocGFyYW1zLnZhbHVlLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICB0aHJvdyBuZXcgQ29tcGlsZVBhdGhFcnJvcihcbiAgICAgICAgICBgJE1heWJlIG11c3QgYmUgdXNlZCB3aXRoIDEgdHlwZSBwYXJhbWV0ZXJgLFxuICAgICAgICAgIHBhdGhcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgcmV0dXJuIGNvbXBpbGVPcHRpb25hbE1hdGNoZXIocGF0aCwgcGFyYW1zLmdldCgwKSwgY29tcGlsZU9wdGlvbnMpXG4gICAgY2FzZSAnJE9yJzpcbiAgICAgIGlmIChwYXJhbXMudmFsdWUubGVuZ3RoIDwgMikge1xuICAgICAgICB0aHJvdyBuZXcgQ29tcGlsZVBhdGhFcnJvcihcbiAgICAgICAgICBgJE9yIG11c3QgYmUgY2FsbGVkIHdpdGggYXQgbGVhc3QgMiBhcmd1bWVudHNgLFxuICAgICAgICAgIHBhdGhcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgcmV0dXJuIGNvbXBpbGVPck1hdGNoZXIocGF0aCwgcGFyYW1zLCBjb21waWxlT3B0aW9ucylcbiAgICBjYXNlICckQW5kJzpcbiAgICAgIGlmIChwYXJhbXMudmFsdWUubGVuZ3RoIDwgMikge1xuICAgICAgICB0aHJvdyBuZXcgQ29tcGlsZVBhdGhFcnJvcihcbiAgICAgICAgICBgJEFuZCBtdXN0IGJlIGNhbGxlZCB3aXRoIGF0IGxlYXN0IDIgYXJndW1lbnRzYCxcbiAgICAgICAgICBwYXRoXG4gICAgICAgIClcbiAgICAgIH1cbiAgICAgIHJldHVybiBjb21waWxlQW5kTWF0Y2hlcihwYXRoLCBwYXJhbXMsIGNvbXBpbGVPcHRpb25zKVxuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7O0FBRUEsT0FBT0Esc0JBQVAsTUFBbUMsWUFBbkM7QUFDQSxPQUFPQyxnQkFBUCxNQUE2QixNQUE3QjtBQUNBLE9BQU9DLGlCQUFQLE1BQThCLE9BQTlCO0FBQ0EsT0FBT0MsZ0JBQVAsTUFBNkIsMEJBQTdCOztBQUVBLGVBQWUsU0FBU0MscUJBQVQ7QUFDYkMsSUFEYTtBQUViQyxJQUZhO0FBR2JDLE1BSGE7QUFJYkMsY0FKYTtBQUtXO0VBQ3hCLFFBQVFGLElBQVI7SUFDRSxLQUFLLFFBQUw7TUFDRSxJQUFJQyxNQUFNLENBQUNFLEtBQVAsQ0FBYUMsTUFBYixLQUF3QixDQUE1QixFQUErQjtRQUM3QixNQUFNLElBQUlQLGdCQUFKO1FBQ0gsMkNBREc7UUFFSkUsSUFGSSxDQUFOOztNQUlEO01BQ0QsT0FBT0wsc0JBQXNCLENBQUNLLElBQUQsRUFBT0UsTUFBTSxDQUFDSSxHQUFQLENBQVcsQ0FBWCxDQUFQLEVBQXNCSCxjQUF0QixDQUE3QjtJQUNGLEtBQUssS0FBTDtNQUNFLElBQUlELE1BQU0sQ0FBQ0UsS0FBUCxDQUFhQyxNQUFiLEdBQXNCLENBQTFCLEVBQTZCO1FBQzNCLE1BQU0sSUFBSVAsZ0JBQUo7UUFDSCw4Q0FERztRQUVKRSxJQUZJLENBQU47O01BSUQ7TUFDRCxPQUFPSixnQkFBZ0IsQ0FBQ0ksSUFBRCxFQUFPRSxNQUFQLEVBQWVDLGNBQWYsQ0FBdkI7SUFDRixLQUFLLE1BQUw7TUFDRSxJQUFJRCxNQUFNLENBQUNFLEtBQVAsQ0FBYUMsTUFBYixHQUFzQixDQUExQixFQUE2QjtRQUMzQixNQUFNLElBQUlQLGdCQUFKO1FBQ0gsK0NBREc7UUFFSkUsSUFGSSxDQUFOOztNQUlEO01BQ0QsT0FBT0gsaUJBQWlCLENBQUNHLElBQUQsRUFBT0UsTUFBUCxFQUFlQyxjQUFmLENBQXhCLENBeEJKOztBQTBCRCJ9