source: frontend/node_modules/core-js/modules/es.string.match.js

Last change on this file was 9af201e, checked in by MBK <marija.karapandzova@…>, 2 weeks ago

Fix frontend appearance

  • Property mode set to 100644
File size: 2.1 KB
Line 
1'use strict';
2var call = require('../internals/function-call');
3var uncurryThis = require('../internals/function-uncurry-this');
4var fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');
5var anObject = require('../internals/an-object');
6var isObject = require('../internals/is-object');
7var toLength = require('../internals/to-length');
8var toString = require('../internals/to-string');
9var requireObjectCoercible = require('../internals/require-object-coercible');
10var getMethod = require('../internals/get-method');
11var advanceStringIndex = require('../internals/advance-string-index');
12var getRegExpFlags = require('../internals/regexp-get-flags');
13var regExpExec = require('../internals/regexp-exec-abstract');
14
15var stringIndexOf = uncurryThis(''.indexOf);
16
17// @@match logic
18fixRegExpWellKnownSymbolLogic('match', function (MATCH, nativeMatch, maybeCallNative) {
19 return [
20 // `String.prototype.match` method
21 // https://tc39.es/ecma262/#sec-string.prototype.match
22 function match(regexp) {
23 var O = requireObjectCoercible(this);
24 var matcher = isObject(regexp) ? getMethod(regexp, MATCH) : undefined;
25 return matcher ? call(matcher, regexp, O) : new RegExp(regexp)[MATCH](toString(O));
26 },
27 // `RegExp.prototype[@@match]` method
28 // https://tc39.es/ecma262/#sec-regexp.prototype-@@match
29 function (string) {
30 var rx = anObject(this);
31 var S = toString(string);
32 var res = maybeCallNative(nativeMatch, rx, S);
33
34 if (res.done) return res.value;
35
36 var flags = toString(getRegExpFlags(rx));
37
38 if (!~stringIndexOf(flags, 'g')) return regExpExec(rx, S);
39
40 var fullUnicode = !!~stringIndexOf(flags, 'u') || !!~stringIndexOf(flags, 'v');
41 rx.lastIndex = 0;
42 var A = [];
43 var n = 0;
44 var result;
45 while ((result = regExpExec(rx, S)) !== null) {
46 var matchStr = toString(result[0]);
47 A[n] = matchStr;
48 if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);
49 n++;
50 }
51 return n === 0 ? null : A;
52 }
53 ];
54});
Note: See TracBrowser for help on using the repository browser.