astx
Version:
super powerful structural search and replace for JavaScript and TypeScript to automate your refactoring
46 lines (39 loc) • 4.33 kB
JavaScript
import {
compileStringPlaceholderMatcher,
unescapeIdentifier,
} from './Placeholder.mjs'
function generateValue(cooked) {
return {
raw: cooked.replace(/\\|`|\${/g, '\\$&'),
cooked,
}
}
export default function matchTemplateLiteral(path, compileOptions) {
const pattern = path.value
const placeholderMatcher = compileStringPlaceholderMatcher(
path,
(node) => {
var _node$quasis$0$value$
return node.quasis.length === 1
? (_node$quasis$0$value$ = node.quasis[0].value.cooked) !== null &&
_node$quasis$0$value$ !== void 0
? _node$quasis$0$value$
: null
: null
},
compileOptions,
{
nodeType: 'TemplateLiteral',
}
)
if (placeholderMatcher) return placeholderMatcher
if (pattern.quasis.length === 1) {
const [quasi] = pattern.quasis
if (quasi.value.cooked) {
const unescaped = unescapeIdentifier(quasi.value.cooked)
if (unescaped !== quasi.value.cooked) {
quasi.value = generateValue(unescaped)
}
}
}
} //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21waWxlU3RyaW5nUGxhY2Vob2xkZXJNYXRjaGVyIiwidW5lc2NhcGVJZGVudGlmaWVyIiwiZ2VuZXJhdGVWYWx1ZSIsImNvb2tlZCIsInJhdyIsInJlcGxhY2UiLCJtYXRjaFRlbXBsYXRlTGl0ZXJhbCIsInBhdGgiLCJjb21waWxlT3B0aW9ucyIsInBhdHRlcm4iLCJ2YWx1ZSIsInBsYWNlaG9sZGVyTWF0Y2hlciIsIm5vZGUiLCJxdWFzaXMiLCJsZW5ndGgiLCJub2RlVHlwZSIsInF1YXNpIiwidW5lc2NhcGVkIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbXBpbGVNYXRjaGVyL1RlbXBsYXRlTGl0ZXJhbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUZW1wbGF0ZUxpdGVyYWwsIE5vZGVQYXRoIH0gZnJvbSAnLi4vdHlwZXMnXG5pbXBvcnQgeyBDb21waWxlT3B0aW9ucywgQ29tcGlsZWRNYXRjaGVyIH0gZnJvbSAnLidcbmltcG9ydCB7XG4gIGNvbXBpbGVTdHJpbmdQbGFjZWhvbGRlck1hdGNoZXIsXG4gIHVuZXNjYXBlSWRlbnRpZmllcixcbn0gZnJvbSAnLi9QbGFjZWhvbGRlcidcblxuZnVuY3Rpb24gZ2VuZXJhdGVWYWx1ZShjb29rZWQ6IHN0cmluZyk6IHsgcmF3OiBzdHJpbmc7IGNvb2tlZDogc3RyaW5nIH0ge1xuICByZXR1cm4geyByYXc6IGNvb2tlZC5yZXBsYWNlKC9cXFxcfGB8XFwkey9nLCAnXFxcXCQmJyksIGNvb2tlZCB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1hdGNoVGVtcGxhdGVMaXRlcmFsKFxuICBwYXRoOiBOb2RlUGF0aDxUZW1wbGF0ZUxpdGVyYWwsIFRlbXBsYXRlTGl0ZXJhbD4sXG4gIGNvbXBpbGVPcHRpb25zOiBDb21waWxlT3B0aW9uc1xuKTogQ29tcGlsZWRNYXRjaGVyIHwgdm9pZCB7XG4gIGNvbnN0IHBhdHRlcm46IFRlbXBsYXRlTGl0ZXJhbCA9IHBhdGgudmFsdWVcblxuICBjb25zdCBwbGFjZWhvbGRlck1hdGNoZXIgPSBjb21waWxlU3RyaW5nUGxhY2Vob2xkZXJNYXRjaGVyKFxuICAgIHBhdGgsXG4gICAgKG5vZGU6IFRlbXBsYXRlTGl0ZXJhbCkgPT5cbiAgICAgIG5vZGUucXVhc2lzLmxlbmd0aCA9PT0gMSA/IG5vZGUucXVhc2lzWzBdLnZhbHVlLmNvb2tlZCA/PyBudWxsIDogbnVsbCxcbiAgICBjb21waWxlT3B0aW9ucyxcbiAgICB7IG5vZGVUeXBlOiAnVGVtcGxhdGVMaXRlcmFsJyB9XG4gIClcblxuICBpZiAocGxhY2Vob2xkZXJNYXRjaGVyKSByZXR1cm4gcGxhY2Vob2xkZXJNYXRjaGVyXG5cbiAgaWYgKHBhdHRlcm4ucXVhc2lzLmxlbmd0aCA9PT0gMSkge1xuICAgIGNvbnN0IFtxdWFzaV0gPSBwYXR0ZXJuLnF1YXNpc1xuICAgIGlmIChxdWFzaS52YWx1ZS5jb29rZWQpIHtcbiAgICAgIGNvbnN0IHVuZXNjYXBlZCA9IHVuZXNjYXBlSWRlbnRpZmllcihxdWFzaS52YWx1ZS5jb29rZWQpXG4gICAgICBpZiAodW5lc2NhcGVkICE9PSBxdWFzaS52YWx1ZS5jb29rZWQpIHtcbiAgICAgICAgcXVhc2kudmFsdWUgPSBnZW5lcmF0ZVZhbHVlKHVuZXNjYXBlZClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7QUFFQTtBQUNFQSwrQkFERjtBQUVFQyxrQkFGRjtBQUdPLGVBSFA7O0FBS0EsU0FBU0MsYUFBVCxDQUF1QkMsTUFBdkIsRUFBd0U7RUFDdEUsT0FBTyxFQUFFQyxHQUFHLEVBQUVELE1BQU0sQ0FBQ0UsT0FBUCxDQUFlLFdBQWYsRUFBNEIsTUFBNUIsQ0FBUCxFQUE0Q0YsTUFBNUMsRUFBUDtBQUNEOztBQUVELGVBQWUsU0FBU0csb0JBQVQ7QUFDYkMsSUFEYTtBQUViQyxjQUZhO0FBR1c7RUFDeEIsTUFBTUMsT0FBd0IsR0FBR0YsSUFBSSxDQUFDRyxLQUF0Qzs7RUFFQSxNQUFNQyxrQkFBa0IsR0FBR1gsK0JBQStCO0VBQ3hETyxJQUR3RDtFQUV4RCxDQUFDSyxJQUFEO01BQ0VBLElBQUksQ0FBQ0MsTUFBTCxDQUFZQyxNQUFaLEtBQXVCLENBQXZCLDRCQUEyQkYsSUFBSSxDQUFDQyxNQUFMLENBQVksQ0FBWixFQUFlSCxLQUFmLENBQXFCUCxNQUFoRCx5RUFBMEQsSUFBMUQsR0FBaUUsSUFEbkUsR0FGd0Q7RUFJeERLLGNBSndEO0VBS3hELEVBQUVPLFFBQVEsRUFBRSxpQkFBWixFQUx3RCxDQUExRDs7O0VBUUEsSUFBSUosa0JBQUosRUFBd0IsT0FBT0Esa0JBQVA7O0VBRXhCLElBQUlGLE9BQU8sQ0FBQ0ksTUFBUixDQUFlQyxNQUFmLEtBQTBCLENBQTlCLEVBQWlDO0lBQy9CLE1BQU0sQ0FBQ0UsS0FBRCxJQUFVUCxPQUFPLENBQUNJLE1BQXhCO0lBQ0EsSUFBSUcsS0FBSyxDQUFDTixLQUFOLENBQVlQLE1BQWhCLEVBQXdCO01BQ3RCLE1BQU1jLFNBQVMsR0FBR2hCLGtCQUFrQixDQUFDZSxLQUFLLENBQUNOLEtBQU4sQ0FBWVAsTUFBYixDQUFwQztNQUNBLElBQUljLFNBQVMsS0FBS0QsS0FBSyxDQUFDTixLQUFOLENBQVlQLE1BQTlCLEVBQXNDO1FBQ3BDYSxLQUFLLENBQUNOLEtBQU4sR0FBY1IsYUFBYSxDQUFDZSxTQUFELENBQTNCO01BQ0Q7SUFDRjtFQUNGO0FBQ0YifQ==