| | |
| | | var _typeof = require("@babel/runtime/helpers/typeof")["default"]; |
| | | var _typeof = require("./typeof.js")["default"]; |
| | | |
| | | var setPrototypeOf = require("./setPrototypeOf.js"); |
| | | |
| | |
| | | |
| | | function _wrapRegExp() { |
| | | module.exports = _wrapRegExp = function _wrapRegExp(re, groups) { |
| | | return new BabelRegExp(re, undefined, groups); |
| | | }; |
| | | return new BabelRegExp(re, void 0, groups); |
| | | }, module.exports.__esModule = true, module.exports["default"] = module.exports; |
| | | |
| | | module.exports["default"] = module.exports, module.exports.__esModule = true; |
| | | var _super = RegExp.prototype; |
| | | |
| | | var _groups = new WeakMap(); |
| | | var _super = RegExp.prototype, |
| | | _groups = new WeakMap(); |
| | | |
| | | function BabelRegExp(re, flags, groups) { |
| | | var _this = new RegExp(re, flags); |
| | | |
| | | _groups.set(_this, groups || _groups.get(re)); |
| | | |
| | | return setPrototypeOf(_this, BabelRegExp.prototype); |
| | | return _groups.set(_this, groups || _groups.get(re)), setPrototypeOf(_this, BabelRegExp.prototype); |
| | | } |
| | | |
| | | inherits(BabelRegExp, RegExp); |
| | | |
| | | BabelRegExp.prototype.exec = function (str) { |
| | | var result = _super.exec.call(this, str); |
| | | |
| | | if (result) result.groups = buildGroups(result, this); |
| | | return result; |
| | | }; |
| | | |
| | | BabelRegExp.prototype[Symbol.replace] = function (str, substitution) { |
| | | if (typeof substitution === "string") { |
| | | var groups = _groups.get(this); |
| | | |
| | | return _super[Symbol.replace].call(this, str, substitution.replace(/\$<([^>]+)>/g, function (_, name) { |
| | | return "$" + groups[name]; |
| | | })); |
| | | } else if (typeof substitution === "function") { |
| | | var _this = this; |
| | | |
| | | return _super[Symbol.replace].call(this, str, function () { |
| | | var args = arguments; |
| | | |
| | | if (_typeof(args[args.length - 1]) !== "object") { |
| | | args = [].slice.call(args); |
| | | args.push(buildGroups(args, _this)); |
| | | } |
| | | |
| | | return substitution.apply(this, args); |
| | | }); |
| | | } else { |
| | | return _super[Symbol.replace].call(this, str, substitution); |
| | | } |
| | | }; |
| | | |
| | | function buildGroups(result, re) { |
| | | var g = _groups.get(re); |
| | | |
| | | return Object.keys(g).reduce(function (groups, name) { |
| | | groups[name] = result[g[name]]; |
| | | return groups; |
| | | return groups[name] = result[g[name]], groups; |
| | | }, Object.create(null)); |
| | | } |
| | | |
| | | return _wrapRegExp.apply(this, arguments); |
| | | return inherits(BabelRegExp, RegExp), BabelRegExp.prototype.exec = function (str) { |
| | | var result = _super.exec.call(this, str); |
| | | |
| | | return result && (result.groups = buildGroups(result, this)), result; |
| | | }, BabelRegExp.prototype[Symbol.replace] = function (str, substitution) { |
| | | if ("string" == typeof substitution) { |
| | | var groups = _groups.get(this); |
| | | |
| | | return _super[Symbol.replace].call(this, str, substitution.replace(/\$<([^>]+)>/g, function (_, name) { |
| | | return "$" + groups[name]; |
| | | })); |
| | | } |
| | | |
| | | if ("function" == typeof substitution) { |
| | | var _this = this; |
| | | |
| | | return _super[Symbol.replace].call(this, str, function () { |
| | | var args = arguments; |
| | | return "object" != _typeof(args[args.length - 1]) && (args = [].slice.call(args)).push(buildGroups(args, _this)), substitution.apply(this, args); |
| | | }); |
| | | } |
| | | |
| | | return _super[Symbol.replace].call(this, str, substitution); |
| | | }, _wrapRegExp.apply(this, arguments); |
| | | } |
| | | |
| | | module.exports = _wrapRegExp; |
| | | module.exports["default"] = module.exports, module.exports.__esModule = true; |
| | | module.exports = _wrapRegExp, module.exports.__esModule = true, module.exports["default"] = module.exports; |