(collection, predicate, context)
| 504 | } |
| 505 | |
| 506 | export 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 | |
| 546 | export function skipWhileFactory(collection, predicate, context, useKeys) { |
| 547 | const skipSequence = makeSequence(collection); |
no test coverage detected