Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
!(O instanceof RegExpStringIterator)
|| !SLOT.has(O, '[[IteratingRegExp]]')
|| !SLOT.has(O, '[[IteratedString]]')
|| !SLOT.has(O, '[[Global]]')
|| !SLOT.has(O, '[[Unicode]]')
|| !SLOT.has(O, '[[Done]]')
) {
throw new TypeError('"this" value must be a RegExpStringIterator instance');
}
if (SLOT.get(O, '[[Done]]')) {
return CreateIterResultObject(undefined, true);
}
var R = SLOT.get(O, '[[IteratingRegExp]]');
var S = SLOT.get(O, '[[IteratedString]]');
var global = SLOT.get(O, '[[Global]]');
var fullUnicode = SLOT.get(O, '[[Unicode]]');
var match = RegExpExec(R, S);
if (match === null) {
SLOT.set(O, '[[Done]]', true);
return CreateIterResultObject(undefined, true);
}
if (global) {
var matchStr = ToString(Get(match, '0'));
if (matchStr === '') {
var thisIndex = ToLength(Get(R, 'lastIndex'));
var nextIndex = AdvanceStringIndex(S, thisIndex, fullUnicode);
Set(R, 'lastIndex', nextIndex, true);
}
return CreateIterResultObject(match, false);
}
SLOT.set(O, '[[Done]]', true);
return CreateIterResultObject(match, false);
}
if (
!(O instanceof RegExpStringIterator)
|| !SLOT.has(O, '[[IteratingRegExp]]')
|| !SLOT.has(O, '[[IteratedString]]')
|| !SLOT.has(O, '[[Global]]')
|| !SLOT.has(O, '[[Unicode]]')
|| !SLOT.has(O, '[[Done]]')
) {
throw new TypeError('"this" value must be a RegExpStringIterator instance');
}
if (SLOT.get(O, '[[Done]]')) {
return CreateIterResultObject(undefined, true);
}
var R = SLOT.get(O, '[[IteratingRegExp]]');
var S = SLOT.get(O, '[[IteratedString]]');
var global = SLOT.get(O, '[[Global]]');
var fullUnicode = SLOT.get(O, '[[Unicode]]');
var match = RegExpExec(R, S);
if (match === null) {
SLOT.set(O, '[[Done]]', true);
return CreateIterResultObject(undefined, true);
}
if (global) {
var matchStr = ToString(Get(match, '0'));
if (matchStr === '') {
var thisIndex = ToLength(Get(R, 'lastIndex'));
var nextIndex = AdvanceStringIndex(S, thisIndex, fullUnicode);
Set(R, 'lastIndex', nextIndex, true);
}
return CreateIterResultObject(match, false);
}
next: function next() {
var O = this;
if (Type(O) !== 'Object') {
throw new TypeError('receiver must be an object');
}
if (
!(O instanceof RegExpStringIterator)
|| !SLOT.has(O, '[[IteratingRegExp]]')
|| !SLOT.has(O, '[[IteratedString]]')
|| !SLOT.has(O, '[[Global]]')
|| !SLOT.has(O, '[[Unicode]]')
|| !SLOT.has(O, '[[Done]]')
) {
throw new TypeError('"this" value must be a RegExpStringIterator instance');
}
if (SLOT.get(O, '[[Done]]')) {
return CreateIterResultObject(undefined, true);
}
var R = SLOT.get(O, '[[IteratingRegExp]]');
var S = SLOT.get(O, '[[IteratedString]]');
var global = SLOT.get(O, '[[Global]]');
var fullUnicode = SLOT.get(O, '[[Unicode]]');
var match = RegExpExec(R, S);
if (match === null) {
SLOT.set(O, '[[Done]]', true);
return CreateIterResultObject(undefined, true);
}
if (global) {
var matchStr = ToString(Get(match, '0'));
if (matchStr === '') {
var thisIndex = ToLength(Get(R, 'lastIndex'));
var nextIndex = AdvanceStringIndex(S, thisIndex, fullUnicode);
throw new TypeError('receiver must be an object');
}
if (
!(O instanceof RegExpStringIterator)
|| !SLOT.has(O, '[[IteratingRegExp]]')
|| !SLOT.has(O, '[[IteratedString]]')
|| !SLOT.has(O, '[[Global]]')
|| !SLOT.has(O, '[[Unicode]]')
|| !SLOT.has(O, '[[Done]]')
) {
throw new TypeError('"this" value must be a RegExpStringIterator instance');
}
if (SLOT.get(O, '[[Done]]')) {
return CreateIterResultObject(undefined, true);
}
var R = SLOT.get(O, '[[IteratingRegExp]]');
var S = SLOT.get(O, '[[IteratedString]]');
var global = SLOT.get(O, '[[Global]]');
var fullUnicode = SLOT.get(O, '[[Unicode]]');
var match = RegExpExec(R, S);
if (match === null) {
SLOT.set(O, '[[Done]]', true);
return CreateIterResultObject(undefined, true);
}
if (global) {
var matchStr = ToString(Get(match, '0'));
if (matchStr === '') {
var thisIndex = ToLength(Get(R, 'lastIndex'));
var nextIndex = AdvanceStringIndex(S, thisIndex, fullUnicode);
Set(R, 'lastIndex', nextIndex, true);
}
return CreateIterResultObject(match, false);
if (
!(O instanceof RegExpStringIterator)
|| !SLOT.has(O, '[[IteratingRegExp]]')
|| !SLOT.has(O, '[[IteratedString]]')
|| !SLOT.has(O, '[[Global]]')
|| !SLOT.has(O, '[[Unicode]]')
|| !SLOT.has(O, '[[Done]]')
) {
throw new TypeError('"this" value must be a RegExpStringIterator instance');
}
if (SLOT.get(O, '[[Done]]')) {
return CreateIterResultObject(undefined, true);
}
var R = SLOT.get(O, '[[IteratingRegExp]]');
var S = SLOT.get(O, '[[IteratedString]]');
var global = SLOT.get(O, '[[Global]]');
var fullUnicode = SLOT.get(O, '[[Unicode]]');
var match = RegExpExec(R, S);
if (match === null) {
SLOT.set(O, '[[Done]]', true);
return CreateIterResultObject(undefined, true);
}
if (global) {
var matchStr = ToString(Get(match, '0'));
if (matchStr === '') {
var thisIndex = ToLength(Get(R, 'lastIndex'));
var nextIndex = AdvanceStringIndex(S, thisIndex, fullUnicode);
Set(R, 'lastIndex', nextIndex, true);
}
return CreateIterResultObject(match, false);
}
SLOT.set(O, '[[Done]]', true);
get: function () {
SLOT.assert(this, '[[AggregateErrors]]');
return $slice(SLOT.get(this, '[[AggregateErrors]]'));
}
});