UNPKG

astx

Version:

super powerful structural search and replace for JavaScript and TypeScript to automate your refactoring

43 lines (37 loc) 4.24 kB
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