astx
Version:
super powerful structural search and replace for JavaScript and TypeScript to automate your refactoring
44 lines (34 loc) • 1.35 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = matchTemplateLiteral;
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _Placeholder = require("./Placeholder");
function generateValue(cooked) {
return {
raw: cooked.replace(/\\|`|\${/g, '\\$&'),
cooked: cooked
};
}
function matchTemplateLiteral(path, compileOptions) {
var pattern = path.value;
var placeholderMatcher = (0, _Placeholder.compileStringPlaceholderMatcher)(path, function (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) {
var _pattern$quasis = (0, _slicedToArray2["default"])(pattern.quasis, 1),
quasi = _pattern$quasis[0];
if (quasi.value.cooked) {
var unescaped = (0, _Placeholder.unescapeIdentifier)(quasi.value.cooked);
if (unescaped !== quasi.value.cooked) {
quasi.value = generateValue(unescaped);
}
}
}
}