MCPcopy
hub / github.com/immutable-js/immutable-js / takeWhileFactory

Function takeWhileFactory

src/Operations.js:506–544  ·  view source on GitHub ↗
(collection, predicate, context)

Source from the content-addressed store, hash-verified

504}
505
506export function takeWhileFactory(collection, predicate, context) {
507 const takeSequence = makeSequence(collection);
508 takeSequence.__iterateUncached = function (fn, reverse) {
509 if (reverse) {
510 return this.cacheResult().__iterate(fn, reverse);
511 }
512 let iterations = 0;
513 collection.__iterate(
514 (v, k, c) =>
515 predicate.call(context, v, k, c) && ++iterations && fn(v, k, this)
516 );
517 return iterations;
518 };
519 takeSequence.__iteratorUncached = function (type, reverse) {
520 if (reverse) {
521 return this.cacheResult().__iterator(type, reverse);
522 }
523 const iterator = collection.__iterator(ITERATE_ENTRIES, reverse);
524 let iterating = true;
525 return new Iterator(() => {
526 if (!iterating) {
527 return iteratorDone();
528 }
529 const step = iterator.next();
530 if (step.done) {
531 return step;
532 }
533 const entry = step.value;
534 const k = entry[0];
535 const v = entry[1];
536 if (!predicate.call(context, v, k, this)) {
537 iterating = false;
538 return iteratorDone();
539 }
540 return type === ITERATE_ENTRIES ? step : iteratorValue(type, k, v, step);
541 });
542 };
543 return takeSequence;
544}
545
546export function skipWhileFactory(collection, predicate, context, useKeys) {
547 const skipSequence = makeSequence(collection);

Callers 1

takeWhileFunction · 0.90

Calls 7

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

Tested by

no test coverage detected