UNPKG

astx

Version:

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

44 lines (34 loc) 1.35 kB
"use strict"; 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); } } } }