MCPcopy Create free account
hub / github.com/immutable-js/immutable-js / skipWhileFactory

Function skipWhileFactory

src/Operations.js:546–594  ·  view source on GitHub ↗
(collection, predicate, context, useKeys)

Source from the content-addressed store, hash-verified

544}
545
546export function skipWhileFactory(collection, predicate, context, useKeys) {
547 const skipSequence = makeSequence(collection);
548 skipSequence.__iterateUncached = function (fn, reverse) {
549 if (reverse) {
550 return this.cacheResult().__iterate(fn, reverse);
551 }
552 let isSkipping = true;
553 let iterations = 0;
554 collection.__iterate((v, k, c) => {
555 if (!(isSkipping && (isSkipping = predicate.call(context, v, k, c)))) {
556 iterations++;
557 return fn(v, useKeys ? k : iterations - 1, this);
558 }
559 });
560 return iterations;
561 };
562 skipSequence.__iteratorUncached = function (type, reverse) {
563 if (reverse) {
564 return this.cacheResult().__iterator(type, reverse);
565 }
566 const iterator = collection.__iterator(ITERATE_ENTRIES, reverse);
567 let skipping = true;
568 let iterations = 0;
569 return new Iterator(() => {
570 let step;
571 let k;
572 let v;
573 do {
574 step = iterator.next();
575 if (step.done) {
576 if (useKeys || type === ITERATE_VALUES) {
577 return step;
578 }
579 if (type === ITERATE_KEYS) {
580 return iteratorValue(type, iterations++, undefined, step);
581 }
582 return iteratorValue(type, iterations++, step.value[1], step);
583 }
584 const entry = step.value;
585 k = entry[0];
586 v = entry[1];
587 // eslint-disable-next-line @typescript-eslint/no-unused-expressions -- TODO enable eslint here
588 skipping && (skipping = predicate.call(context, v, k, this));
589 } while (skipping);
590 return type === ITERATE_ENTRIES ? step : iteratorValue(type, k, v, step);
591 });
592 };
593 return skipSequence;
594}
595
596class ConcatSeq extends Seq {
597 constructor(iterables) {

Callers 1

skipWhileFunction · 0.90

Calls 6

iteratorValueFunction · 0.90
makeSequenceFunction · 0.85
nextMethod · 0.80
cacheResultMethod · 0.65
__iterateMethod · 0.45
__iteratorMethod · 0.45

Tested by

no test coverage detected