%PDF- %PDF-
Direktori : /var/www/html/node_modules/string.prototype.matchall/ |
Current File : /var/www/html/node_modules/string.prototype.matchall/implementation.js |
'use strict'; var Call = require('es-abstract/2021/Call'); var Get = require('es-abstract/2021/Get'); var GetMethod = require('es-abstract/2021/GetMethod'); var IsRegExp = require('es-abstract/2021/IsRegExp'); var ToString = require('es-abstract/2021/ToString'); var RequireObjectCoercible = require('es-abstract/2021/RequireObjectCoercible'); var callBound = require('call-bind/callBound'); var hasSymbols = require('has-symbols')(); var flagsGetter = require('regexp.prototype.flags'); var $indexOf = callBound('String.prototype.indexOf'); var regexpMatchAllPolyfill = require('./polyfill-regexp-matchall'); var getMatcher = function getMatcher(regexp) { // eslint-disable-line consistent-return var matcherPolyfill = regexpMatchAllPolyfill(); if (hasSymbols && typeof Symbol.matchAll === 'symbol') { var matcher = GetMethod(regexp, Symbol.matchAll); if (matcher === RegExp.prototype[Symbol.matchAll] && matcher !== matcherPolyfill) { return matcherPolyfill; } return matcher; } // fallback for pre-Symbol.matchAll environments if (IsRegExp(regexp)) { return matcherPolyfill; } }; module.exports = function matchAll(regexp) { var O = RequireObjectCoercible(this); if (typeof regexp !== 'undefined' && regexp !== null) { var isRegExp = IsRegExp(regexp); if (isRegExp) { // workaround for older engines that lack RegExp.prototype.flags var flags = 'flags' in regexp ? Get(regexp, 'flags') : flagsGetter(regexp); RequireObjectCoercible(flags); if ($indexOf(ToString(flags), 'g') < 0) { throw new TypeError('matchAll requires a global regular expression'); } } var matcher = getMatcher(regexp); if (typeof matcher !== 'undefined') { return Call(matcher, regexp, [O]); } } var S = ToString(O); // var rx = RegExpCreate(regexp, 'g'); var rx = new RegExp(regexp, 'g'); return Call(getMatcher(rx), rx, [S]); };