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.
		
		
		
		
		
			
		
			
				
					
					
						
							34 lines
						
					
					
						
							1.4 KiB
						
					
					
				
			
		
		
	
	
							34 lines
						
					
					
						
							1.4 KiB
						
					
					
				'use strict'; | 
						|
var fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic'); | 
						|
var anObject = require('../internals/an-object'); | 
						|
var requireObjectCoercible = require('../internals/require-object-coercible'); | 
						|
var sameValue = require('../internals/same-value'); | 
						|
var regExpExec = require('../internals/regexp-exec-abstract'); | 
						|
 | 
						|
// @@search logic | 
						|
fixRegExpWellKnownSymbolLogic('search', 1, function (SEARCH, nativeSearch, maybeCallNative) { | 
						|
  return [ | 
						|
    // `String.prototype.search` method | 
						|
    // https://tc39.github.io/ecma262/#sec-string.prototype.search | 
						|
    function search(regexp) { | 
						|
      var O = requireObjectCoercible(this); | 
						|
      var searcher = regexp == undefined ? undefined : regexp[SEARCH]; | 
						|
      return searcher !== undefined ? searcher.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O)); | 
						|
    }, | 
						|
    // `RegExp.prototype[@@search]` method | 
						|
    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@search | 
						|
    function (regexp) { | 
						|
      var res = maybeCallNative(nativeSearch, regexp, this); | 
						|
      if (res.done) return res.value; | 
						|
 | 
						|
      var rx = anObject(regexp); | 
						|
      var S = String(this); | 
						|
 | 
						|
      var previousLastIndex = rx.lastIndex; | 
						|
      if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0; | 
						|
      var result = regExpExec(rx, S); | 
						|
      if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex; | 
						|
      return result === null ? -1 : result.index; | 
						|
    } | 
						|
  ]; | 
						|
});
 | 
						|
 |