takeWhile method

OffsetIterator<T> takeWhile(
  1. bool predicate(
    1. T item,
    2. Option<T> prev
    ), {
  2. String name = 'takeWhile',
  3. SeedCallback<T>? seed,
  4. int retention = 0,
  5. bool? cancelOnError,
  6. bool bubbleCancellation = true,
})

Implementation

OffsetIterator<T> takeWhile(
  bool Function(T item, Option<T> prev) predicate, {
  String name = 'takeWhile',
  SeedCallback<T>? seed,
  int retention = 0,
  bool? cancelOnError,
  bool bubbleCancellation = true,
}) {
  Option<T> prev = const None();
  seed = generateSeed(override: seed);

  return transform(
    (item) {
      final more = predicate(item, prev);
      prev = Some(item);
      return more ? [item] : null;
    },
    seed: () {
      if (seed != null) prev = seed();
      return prev;
    },
    name: name,
    retention: retention,
    bubbleCancellation: bubbleCancellation,
    cancelOnError: cancelOnError,
  );
}