astx
Version:
super powerful structural search and replace for JavaScript and TypeScript to automate your refactoring
32 lines (30 loc) • 3.76 kB
JavaScript
import { convertPredicateMatcher } from './index.mjs'
import {
compileStringPlaceholderMatcher,
unescapeIdentifier,
} from './Placeholder.mjs'
export default function matchStringLiteral(path, compileOptions) {
const pattern = path.value
const n = compileOptions.backend.t.namedTypes
const placeholderMatcher = compileStringPlaceholderMatcher(
path,
(pattern) => pattern.value,
compileOptions,
{
nodeType: 'StringLiteral',
}
)
if (placeholderMatcher) return placeholderMatcher
pattern.value = unescapeIdentifier(pattern.value)
return convertPredicateMatcher(
path,
{
match: (path) => {
const { value: node } = path
return n.StringLiteral.check(node) && pattern.value === node.value
},
nodeType: 'StringLiteral',
},
compileOptions
)
} //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb252ZXJ0UHJlZGljYXRlTWF0Y2hlciIsImNvbXBpbGVTdHJpbmdQbGFjZWhvbGRlck1hdGNoZXIiLCJ1bmVzY2FwZUlkZW50aWZpZXIiLCJtYXRjaFN0cmluZ0xpdGVyYWwiLCJwYXRoIiwiY29tcGlsZU9wdGlvbnMiLCJwYXR0ZXJuIiwidmFsdWUiLCJuIiwiYmFja2VuZCIsInQiLCJuYW1lZFR5cGVzIiwicGxhY2Vob2xkZXJNYXRjaGVyIiwibm9kZVR5cGUiLCJtYXRjaCIsIm5vZGUiLCJTdHJpbmdMaXRlcmFsIiwiY2hlY2siXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tcGlsZU1hdGNoZXIvU3RyaW5nTGl0ZXJhbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOb2RlUGF0aCwgU3RyaW5nTGl0ZXJhbCB9IGZyb20gJy4uL3R5cGVzJ1xuaW1wb3J0IHsgQ29tcGlsZU9wdGlvbnMsIGNvbnZlcnRQcmVkaWNhdGVNYXRjaGVyLCBDb21waWxlZE1hdGNoZXIgfSBmcm9tICcuJ1xuaW1wb3J0IHtcbiAgY29tcGlsZVN0cmluZ1BsYWNlaG9sZGVyTWF0Y2hlcixcbiAgdW5lc2NhcGVJZGVudGlmaWVyLFxufSBmcm9tICcuL1BsYWNlaG9sZGVyJ1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtYXRjaFN0cmluZ0xpdGVyYWwoXG4gIHBhdGg6IE5vZGVQYXRoPFN0cmluZ0xpdGVyYWwsIFN0cmluZ0xpdGVyYWw+LFxuICBjb21waWxlT3B0aW9uczogQ29tcGlsZU9wdGlvbnNcbik6IENvbXBpbGVkTWF0Y2hlciB7XG4gIGNvbnN0IHBhdHRlcm46IFN0cmluZ0xpdGVyYWwgPSBwYXRoLnZhbHVlXG4gIGNvbnN0IG4gPSBjb21waWxlT3B0aW9ucy5iYWNrZW5kLnQubmFtZWRUeXBlc1xuICBjb25zdCBwbGFjZWhvbGRlck1hdGNoZXIgPSBjb21waWxlU3RyaW5nUGxhY2Vob2xkZXJNYXRjaGVyKFxuICAgIHBhdGgsXG4gICAgKHBhdHRlcm4pID0+IHBhdHRlcm4udmFsdWUsXG4gICAgY29tcGlsZU9wdGlvbnMsXG4gICAgeyBub2RlVHlwZTogJ1N0cmluZ0xpdGVyYWwnIH1cbiAgKVxuXG4gIGlmIChwbGFjZWhvbGRlck1hdGNoZXIpIHJldHVybiBwbGFjZWhvbGRlck1hdGNoZXJcblxuICBwYXR0ZXJuLnZhbHVlID0gdW5lc2NhcGVJZGVudGlmaWVyKHBhdHRlcm4udmFsdWUpXG5cbiAgcmV0dXJuIGNvbnZlcnRQcmVkaWNhdGVNYXRjaGVyKFxuICAgIHBhdGgsXG4gICAge1xuICAgICAgbWF0Y2g6IChwYXRoOiBOb2RlUGF0aCk6IGJvb2xlYW4gPT4ge1xuICAgICAgICBjb25zdCB7IHZhbHVlOiBub2RlIH0gPSBwYXRoXG5cbiAgICAgICAgcmV0dXJuIG4uU3RyaW5nTGl0ZXJhbC5jaGVjayhub2RlKSAmJiBwYXR0ZXJuLnZhbHVlID09PSBub2RlLnZhbHVlXG4gICAgICB9LFxuICAgICAgbm9kZVR5cGU6ICdTdHJpbmdMaXRlcmFsJyxcbiAgICB9LFxuICAgIGNvbXBpbGVPcHRpb25zXG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6IjtBQUNBLFNBQXlCQSx1QkFBekIsUUFBeUUsR0FBekU7QUFDQTtBQUNFQywrQkFERjtBQUVFQyxrQkFGRjtBQUdPLGVBSFA7O0FBS0EsZUFBZSxTQUFTQyxrQkFBVDtBQUNiQyxJQURhO0FBRWJDLGNBRmE7QUFHSTtFQUNqQixNQUFNQyxPQUFzQixHQUFHRixJQUFJLENBQUNHLEtBQXBDO0VBQ0EsTUFBTUMsQ0FBQyxHQUFHSCxjQUFjLENBQUNJLE9BQWYsQ0FBdUJDLENBQXZCLENBQXlCQyxVQUFuQztFQUNBLE1BQU1DLGtCQUFrQixHQUFHWCwrQkFBK0I7RUFDeERHLElBRHdEO0VBRXhELENBQUNFLE9BQUQsS0FBYUEsT0FBTyxDQUFDQyxLQUZtQztFQUd4REYsY0FId0Q7RUFJeEQsRUFBRVEsUUFBUSxFQUFFLGVBQVosRUFKd0QsQ0FBMUQ7OztFQU9BLElBQUlELGtCQUFKLEVBQXdCLE9BQU9BLGtCQUFQOztFQUV4Qk4sT0FBTyxDQUFDQyxLQUFSLEdBQWdCTCxrQkFBa0IsQ0FBQ0ksT0FBTyxDQUFDQyxLQUFULENBQWxDOztFQUVBLE9BQU9QLHVCQUF1QjtFQUM1QkksSUFENEI7RUFFNUI7SUFDRVUsS0FBSyxFQUFFLENBQUNWLElBQUQsS0FBNkI7TUFDbEMsTUFBTSxFQUFFRyxLQUFLLEVBQUVRLElBQVQsS0FBa0JYLElBQXhCOztNQUVBLE9BQU9JLENBQUMsQ0FBQ1EsYUFBRixDQUFnQkMsS0FBaEIsQ0FBc0JGLElBQXRCLEtBQStCVCxPQUFPLENBQUNDLEtBQVIsS0FBa0JRLElBQUksQ0FBQ1IsS0FBN0Q7SUFDRCxDQUxIO0lBTUVNLFFBQVEsRUFBRSxlQU5aLEVBRjRCOztFQVU1QlIsY0FWNEIsQ0FBOUI7O0FBWUQifQ==