You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					44 lines
				
				1.6 KiB
			
		
		
			
		
	
	
					44 lines
				
				1.6 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								var global = require('./_global');
							 | 
						||
| 
								 | 
							
								var inheritIfRequired = require('./_inherit-if-required');
							 | 
						||
| 
								 | 
							
								var dP = require('./_object-dp').f;
							 | 
						||
| 
								 | 
							
								var gOPN = require('./_object-gopn').f;
							 | 
						||
| 
								 | 
							
								var isRegExp = require('./_is-regexp');
							 | 
						||
| 
								 | 
							
								var $flags = require('./_flags');
							 | 
						||
| 
								 | 
							
								var $RegExp = global.RegExp;
							 | 
						||
| 
								 | 
							
								var Base = $RegExp;
							 | 
						||
| 
								 | 
							
								var proto = $RegExp.prototype;
							 | 
						||
| 
								 | 
							
								var re1 = /a/g;
							 | 
						||
| 
								 | 
							
								var re2 = /a/g;
							 | 
						||
| 
								 | 
							
								// "new" creates a new object, old webkit buggy here
							 | 
						||
| 
								 | 
							
								var CORRECT_NEW = new $RegExp(re1) !== re1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if (require('./_descriptors') && (!CORRECT_NEW || require('./_fails')(function () {
							 | 
						||
| 
								 | 
							
								  re2[require('./_wks')('match')] = false;
							 | 
						||
| 
								 | 
							
								  // RegExp constructor can alter flags and IsRegExp works correct with @@match
							 | 
						||
| 
								 | 
							
								  return $RegExp(re1) != re1 || $RegExp(re2) == re2 || $RegExp(re1, 'i') != '/a/i';
							 | 
						||
| 
								 | 
							
								}))) {
							 | 
						||
| 
								 | 
							
								  $RegExp = function RegExp(p, f) {
							 | 
						||
| 
								 | 
							
								    var tiRE = this instanceof $RegExp;
							 | 
						||
| 
								 | 
							
								    var piRE = isRegExp(p);
							 | 
						||
| 
								 | 
							
								    var fiU = f === undefined;
							 | 
						||
| 
								 | 
							
								    return !tiRE && piRE && p.constructor === $RegExp && fiU ? p
							 | 
						||
| 
								 | 
							
								      : inheritIfRequired(CORRECT_NEW
							 | 
						||
| 
								 | 
							
								        ? new Base(piRE && !fiU ? p.source : p, f)
							 | 
						||
| 
								 | 
							
								        : Base((piRE = p instanceof $RegExp) ? p.source : p, piRE && fiU ? $flags.call(p) : f)
							 | 
						||
| 
								 | 
							
								      , tiRE ? this : proto, $RegExp);
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								  var proxy = function (key) {
							 | 
						||
| 
								 | 
							
								    key in $RegExp || dP($RegExp, key, {
							 | 
						||
| 
								 | 
							
								      configurable: true,
							 | 
						||
| 
								 | 
							
								      get: function () { return Base[key]; },
							 | 
						||
| 
								 | 
							
								      set: function (it) { Base[key] = it; }
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								  for (var keys = gOPN(Base), i = 0; keys.length > i;) proxy(keys[i++]);
							 | 
						||
| 
								 | 
							
								  proto.constructor = $RegExp;
							 | 
						||
| 
								 | 
							
								  $RegExp.prototype = proto;
							 | 
						||
| 
								 | 
							
								  require('./_redefine')(global, 'RegExp', $RegExp);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								require('./_set-species')('RegExp');
							 |