From 23b60dc1975db38c280d8a123aff97544d1673e0 Mon Sep 17 00:00:00 2001 From: HelenHuang <LinHuang@pollex.com.tw> Date: 星期四, 09 六月 2022 15:34:21 +0800 Subject: [PATCH] TODO#139890 FAQ 常見問題 1-文案調整 --- PAMapp/node_modules/core-js/modules/es.regexp.constructor.js | 57 +++++++++++++++++++++++++++++---------------------------- 1 files changed, 29 insertions(+), 28 deletions(-) diff --git a/PAMapp/node_modules/core-js/modules/es.regexp.constructor.js b/PAMapp/node_modules/core-js/modules/es.regexp.constructor.js index 98ccf7c..452214c 100644 --- a/PAMapp/node_modules/core-js/modules/es.regexp.constructor.js +++ b/PAMapp/node_modules/core-js/modules/es.regexp.constructor.js @@ -1,15 +1,17 @@ var DESCRIPTORS = require('../internals/descriptors'); var global = require('../internals/global'); +var uncurryThis = require('../internals/function-uncurry-this'); var isForced = require('../internals/is-forced'); var inheritIfRequired = require('../internals/inherit-if-required'); var createNonEnumerableProperty = require('../internals/create-non-enumerable-property'); -var defineProperty = require('../internals/object-define-property').f; var getOwnPropertyNames = require('../internals/object-get-own-property-names').f; +var isPrototypeOf = require('../internals/object-is-prototype-of'); var isRegExp = require('../internals/is-regexp'); var toString = require('../internals/to-string'); -var getFlags = require('../internals/regexp-flags'); +var getRegExpFlags = require('../internals/regexp-get-flags'); var stickyHelpers = require('../internals/regexp-sticky-helpers'); -var redefine = require('../internals/redefine'); +var proxyAccessor = require('../internals/proxy-accessor'); +var defineBuiltIn = require('../internals/define-built-in'); var fails = require('../internals/fails'); var hasOwn = require('../internals/has-own-property'); var enforceInternalState = require('../internals/internal-state').enforce; @@ -21,6 +23,12 @@ var MATCH = wellKnownSymbol('match'); var NativeRegExp = global.RegExp; var RegExpPrototype = NativeRegExp.prototype; +var SyntaxError = global.SyntaxError; +var exec = uncurryThis(RegExpPrototype.exec); +var charAt = uncurryThis(''.charAt); +var replace = uncurryThis(''.replace); +var stringIndexOf = uncurryThis(''.indexOf); +var stringSlice = uncurryThis(''.slice); // TODO: Use only propper RegExpIdentifierName var IS_NCG = /^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/; var re1 = /a/g; @@ -29,10 +37,11 @@ // "new" should create a new object, old webkit bug var CORRECT_NEW = new NativeRegExp(re1) !== re1; +var MISSED_STICKY = stickyHelpers.MISSED_STICKY; var UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y; var BASE_FORCED = DESCRIPTORS && - (!CORRECT_NEW || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG || fails(function () { + (!CORRECT_NEW || MISSED_STICKY || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG || fails(function () { re2[MATCH] = false; // RegExp constructor can alter flags and IsRegExp works correct with @@match return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || NativeRegExp(re1, 'i') != '/a/i'; @@ -45,9 +54,9 @@ var brackets = false; var chr; for (; index <= length; index++) { - chr = string.charAt(index); + chr = charAt(string, index); if (chr === '\\') { - result += chr + string.charAt(++index); + result += chr + charAt(string, ++index); continue; } if (!brackets && chr === '.') { @@ -74,9 +83,9 @@ var groupname = ''; var chr; for (; index <= length; index++) { - chr = string.charAt(index); + chr = charAt(string, index); if (chr === '\\') { - chr = chr + string.charAt(++index); + chr = chr + charAt(string, ++index); } else if (chr === ']') { brackets = false; } else if (!brackets) switch (true) { @@ -84,7 +93,7 @@ brackets = true; break; case chr === '(': - if (IS_NCG.test(string.slice(index + 1))) { + if (exec(IS_NCG, stringSlice(string, index + 1))) { index += 2; ncg = true; } @@ -96,7 +105,7 @@ throw new SyntaxError('Invalid capture group name'); } names[groupname] = true; - named.push([groupname, groupid]); + named[named.length] = [groupname, groupid]; ncg = false; groupname = ''; continue; @@ -110,7 +119,7 @@ // https://tc39.es/ecma262/#sec-regexp-constructor if (isForced('RegExp', BASE_FORCED)) { var RegExpWrapper = function RegExp(pattern, flags) { - var thisIsRegExp = this instanceof RegExpWrapper; + var thisIsRegExp = isPrototypeOf(RegExpPrototype, this); var patternIsRegExp = isRegExp(pattern); var flagsAreUndefined = flags === undefined; var groups = []; @@ -121,9 +130,9 @@ return pattern; } - if (patternIsRegExp || pattern instanceof RegExpWrapper) { + if (patternIsRegExp || isPrototypeOf(RegExpPrototype, pattern)) { pattern = pattern.source; - if (flagsAreUndefined) flags = 'flags' in rawPattern ? rawPattern.flags : getFlags.call(rawPattern); + if (flagsAreUndefined) flags = getRegExpFlags(rawPattern); } pattern = pattern === undefined ? '' : toString(pattern); @@ -131,15 +140,15 @@ rawPattern = pattern; if (UNSUPPORTED_DOT_ALL && 'dotAll' in re1) { - dotAll = !!flags && flags.indexOf('s') > -1; - if (dotAll) flags = flags.replace(/s/g, ''); + dotAll = !!flags && stringIndexOf(flags, 's') > -1; + if (dotAll) flags = replace(flags, /s/g, ''); } rawFlags = flags; - if (UNSUPPORTED_Y && 'sticky' in re1) { - sticky = !!flags && flags.indexOf('y') > -1; - if (sticky) flags = flags.replace(/y/g, ''); + if (MISSED_STICKY && 'sticky' in re1) { + sticky = !!flags && stringIndexOf(flags, 'y') > -1; + if (sticky && UNSUPPORTED_Y) flags = replace(flags, /y/g, ''); } if (UNSUPPORTED_NCG) { @@ -168,21 +177,13 @@ return result; }; - var proxy = function (key) { - key in RegExpWrapper || defineProperty(RegExpWrapper, key, { - configurable: true, - get: function () { return NativeRegExp[key]; }, - set: function (it) { NativeRegExp[key] = it; } - }); - }; - for (var keys = getOwnPropertyNames(NativeRegExp), index = 0; keys.length > index;) { - proxy(keys[index++]); + proxyAccessor(RegExpWrapper, NativeRegExp, keys[index++]); } RegExpPrototype.constructor = RegExpWrapper; RegExpWrapper.prototype = RegExpPrototype; - redefine(global, 'RegExp', RegExpWrapper); + defineBuiltIn(global, 'RegExp', RegExpWrapper, { constructor: true }); } // https://tc39.es/ecma262/#sec-get-regexp-@@species -- Gitblit v1.8.0