TakeStream

com.raquo.airstream.misc.TakeStream
class TakeStream[A](val parent: EventStream[A], takeWhile: A => Boolean, reset: () => Unit, resetOnStop: Boolean) extends SingleParentStream[A, A], InternalNextErrorObserver[A]

Event stream that mimics the parent event stream (both events and errors) for as long as takeWhile returns true. As soon as takeWhile returns false for the first time, it stops emitting anything.

Value parameters

reset

This is called when this stream is stopped if resetOnStop is true. Use it to reset your takeWhile function's internal state, if needed. Warning: MUST NOT THROW!

resetOnStop

If true, stopping this stream will reset the stream's memory of previously taken events (up to you to implement the reset as far as your takeWhile function is concerned though).

takeWhile

nextEvent => shouldDrop Function which determines whether this stream should take the given event. Warning: MUST NOT THROW!

Attributes

Graph
Supertypes
trait SingleParentStream[A, A]
trait InternalObserver[A]
trait WritableStream[A]
trait EventStream[A]
trait EventSource[A]
trait Observable[A]
trait Named
trait Source[A]
class Object
trait Matchable
class Any
Show all

Members list

Value members

Inherited methods

override def addObserver(observer: Observer[A])(implicit owner: Owner): Subscription

Subscribe an external observer to this observable

Subscribe an external observer to this observable

Attributes

Definition Classes
Inherited from:
WritableObservable
def collect[B](pf: PartialFunction[A, B]): EventStream[B]

Apply pf to each event and emit the resulting value, or emit nothing if pf is not defined for that event.

Apply pf to each event and emit the resulting value, or emit nothing if pf is not defined for that event.

Value parameters

pf

Note: guarded against exceptions

Attributes

Inherited from:
EventStream
def collectOpt[B](fn: A => Option[B]): EventStream[B]

Apply fn to parent stream event, and emit resulting x if it returns Some(x)

Apply fn to parent stream event, and emit resulting x if it returns Some(x)

Value parameters

fn

Note: guarded against exceptions

Attributes

Inherited from:
EventStream
def compose[B](operator: EventStream[A] => EventStream[B]): EventStream[B]

Just a convenience helper. stream.compose(f) is equivalent to f(stream)

Just a convenience helper. stream.compose(f) is equivalent to f(stream)

Attributes

Inherited from:
EventStream
def debounce(ms: Int): EventStream[A]

See docs for DebounceStream

See docs for DebounceStream

Attributes

Inherited from:
EventStream
def debounceWithStatus(ms: Int): EventStream[Status[A, A]]

Based on debounce, but tracks the status of input and output to that operator. See Status.

Based on debounce, but tracks the status of input and output to that operator. See Status.

Attributes

Inherited from:
EventStream
override def debugWith(debugger: Debugger[A]): EventStream[A]

See also various debug methods in com.raquo.airstream.debug.DebuggableObservable

See also various debug methods in com.raquo.airstream.debug.DebuggableObservable

Attributes

Definition Classes
Inherited from:
EventStream
protected def defaultDisplayName: String

This is the method that subclasses override to preserve the user's ability to set custom display names.

This is the method that subclasses override to preserve the user's ability to set custom display names.

Attributes

Inherited from:
Named
def delay(ms: Int): EventStream[A]

Value parameters

ms

milliseconds of delay

Attributes

Inherited from:
EventStream
def delaySync(after: EventStream[_]): EventStream[A]

Make a stream that emits this stream's values but waits for after stream to emit first in a given transaction. You can use this for Signals too with Signal.composeChanges (see docs for more details)

Make a stream that emits this stream's values but waits for after stream to emit first in a given transaction. You can use this for Signals too with Signal.composeChanges (see docs for more details)

Attributes

Inherited from:
EventStream
def delayWithStatus(ms: Int): EventStream[Status[A, A]]

Based on delay, but tracks the status of input and output to that operator. See Status.

Based on delay, but tracks the status of input and output to that operator. See Status.

Attributes

Inherited from:
EventStream
final def displayName: String

Attributes

Inherited from:
Named
def distinct: Self[A]

Distinct events (but keep all errors) by == (equals) comparison

Distinct events (but keep all errors) by == (equals) comparison

Attributes

Inherited from:
BaseObservable
def distinctBy(key: A => Any): Self[A]

Distinct events (but keep all errors) by matching key Note: key(event) might be evaluated more than once for each event

Distinct events (but keep all errors) by matching key Note: key(event) might be evaluated more than once for each event

Attributes

Inherited from:
BaseObservable
def distinctByFn(isSame: (A, A) => Boolean): Self[A]

Distinct events (but keep all errors) using a comparison function

Distinct events (but keep all errors) using a comparison function

Attributes

Inherited from:
BaseObservable
def distinctByRef(implicit ev: A <:< AnyRef): Self[A]

Distinct events (but keep all errors) by reference equality (eq)

Distinct events (but keep all errors) by reference equality (eq)

Attributes

Inherited from:
BaseObservable
def distinctErrors(isSame: (Throwable, Throwable) => Boolean): Self[A]

Distinct errors only (but keep all events) using a comparison function

Distinct errors only (but keep all events) using a comparison function

Attributes

Inherited from:
BaseObservable
override def distinctTry(isSame: (Try[A], Try[A]) => Boolean): EventStream[A]

Distinct all values (both events and errors) using a comparison function

Distinct all values (both events and errors) using a comparison function

Attributes

Definition Classes
Inherited from:
EventStream
def drop(numEvents: Int, resetOnStop: Boolean): EventStream[A]

Drop (skip) the first numEvents events from this stream. Note: errors are NOT dropped.

Drop (skip) the first numEvents events from this stream. Note: errors are NOT dropped.

Value parameters

resetOnStop

Reset the count if the stream stops

Attributes

Inherited from:
EventStream
def dropUntil(passes: A => Boolean, resetOnStop: Boolean): EventStream[A]

Drop (skip) events from this stream as long as they do NOT pass the test (as soon as they start passing, stop dropping) Note: errors are NOT dropped.

Drop (skip) events from this stream as long as they do NOT pass the test (as soon as they start passing, stop dropping) Note: errors are NOT dropped.

Value parameters

passes

Note: MUST NOT THROW!

resetOnStop

Forget everything and start dropping again if the stream stops

Attributes

Inherited from:
EventStream
def dropWhile(passes: A => Boolean, resetOnStop: Boolean): EventStream[A]

Drop (skip) events from this stream as long as they pass the test (as soon as they stop passing, stop dropping) Note: errors are NOT dropped.

Drop (skip) events from this stream as long as they pass the test (as soon as they stop passing, stop dropping) Note: errors are NOT dropped.

Value parameters

passes

Note: MUST NOT THROW!

resetOnStop

Forget everything and start dropping again if the stream stops

Attributes

Inherited from:
EventStream
final override def equals(obj: Any): Boolean

Airstream may internally use Scala library functions which use == or hashCode for equality, for example List.contains. Comparing observables by structural equality pretty much never makes sense, yet it's not that hard to run into that, all you need is to create a case class subclass, and the Scala compiler will generate a structural-equality equals and hashCode methods for you behind the scenes.

Airstream may internally use Scala library functions which use == or hashCode for equality, for example List.contains. Comparing observables by structural equality pretty much never makes sense, yet it's not that hard to run into that, all you need is to create a case class subclass, and the Scala compiler will generate a structural-equality equals and hashCode methods for you behind the scenes.

To prevent that, we make equals and hashCode methods final, using the default implementation (which is reference equality).

Attributes

Definition Classes
Inherited from:
BaseObservable
def filter(passes: A => Boolean): EventStream[A]

Value parameters

passes

Note: guarded against exceptions

Attributes

Inherited from:
EventStream
def filterNot(predicate: A => Boolean): EventStream[A]

Attributes

Inherited from:
EventStream
def filterWith(source: SignalSource[Boolean]): EventStream[A]

Filter stream events by a signal or var of boolean (passes when true).

Filter stream events by a signal or var of boolean (passes when true).

Attributes

Inherited from:
EventStream
def filterWith[B](source: SignalSource[B], passes: B => Boolean): EventStream[A]

Filter stream events by a signal or var of boolean.

Filter stream events by a signal or var of boolean.

stream.filterWith(otherSignal, passes = _ == false) is essentially like stream.filter(_ => otherSignal.now() == false) (but it compiles)

Attributes

Inherited from:
EventStream
def flatMap[B, Inner[_], Output <: (Observable)](project: A => Inner[B])(implicit strategy: SwitchingStrategy[EventStream, Inner, Output], allowFlatMap: AllowFlatMap): Output[B]

#WARNING: DO NOT USE THIS METHOD. See https://github.com/raquo/Airstream/#flattening-observables

#WARNING: DO NOT USE THIS METHOD. See https://github.com/raquo/Airstream/#flattening-observables

Attributes

Inherited from:
BaseObservable
def flatMapCustom[B, Inner[_], Output <: (Observable)](project: A => Inner[B])(strategy: FlattenStrategy[EventStream, Inner, Output]): Output[B]

Value parameters

project

Note: guarded against exceptions

Attributes

Inherited from:
BaseObservable
def flatMapMerge[B, Inner[_], Output <: (Observable)](project: A => Inner[B])(implicit strategy: MergingStrategy[EventStream, Inner, Output]): Output[B]

Value parameters

project

Note: guarded against exceptions

Attributes

Inherited from:
BaseObservable
def flatMapSwitch[B, Inner[_], Output <: (Observable)](project: A => Inner[B])(implicit strategy: SwitchingStrategy[EventStream, Inner, Output]): Output[B]

Value parameters

project

Note: guarded against exceptions

Attributes

Inherited from:
BaseObservable
def flatMapTo[B, Inner[_], Output <: (Observable)](s: => Inner[B])(implicit strategy: SwitchingStrategy[EventStream, Inner, Output]): Output[B]

Alias to flatMapSwitch(_ => s)

Alias to flatMapSwitch(_ => s)

Attributes

Inherited from:
BaseObservable
def flatMapWithStatus[B](innerStream: => EventStream[B]): Self[Status[A, B]]

Shorthand for flatMapWithStatus(_ => innerStream).

Shorthand for flatMapWithStatus(_ => innerStream).

Attributes

Inherited from:
BaseObservable
def flatMapWithStatus[B](project: A => EventStream[B]): Self[Status[A, B]]

Based on flatMapSwitch, but tracks the status of input and output to flatMap. See Status.

Based on flatMapSwitch, but tracks the status of input and output to flatMap. See Status.

Attributes

Inherited from:
BaseObservable
def foreach(onNext: A => Unit)(implicit owner: Owner): Subscription

Create an external observer from a function and subscribe it to this observable.

Create an external observer from a function and subscribe it to this observable.

Note: since you won't have a reference to the observer, you will need to call Subscription.kill() to unsubscribe

Attributes

Inherited from:
BaseObservable
final override def hashCode(): Int

Force reference equality checks. See comment for equals.

Force reference equality checks. See comment for equals.

Attributes

Definition Classes
Inherited from:
BaseObservable
override def map[B](project: A => B): EventStream[B]

Value parameters

project

Note: guarded against exceptions

Attributes

Definition Classes
Inherited from:
EventStream
def mapTo[B](value: => B): Self[B]

value is passed by name, so it will be evaluated whenever the Observable fires. Use it to sample mutable values (e.g. myInput.ref.value in Laminar).

value is passed by name, so it will be evaluated whenever the Observable fires. Use it to sample mutable values (e.g. myInput.ref.value in Laminar).

See also: mapToStrict

Value parameters

value

Note: guarded against exceptions

Attributes

Inherited from:
BaseObservable
def mapToStrict[B](value: B): Self[B]

value is evaluated strictly, only once, when this method is called.

value is evaluated strictly, only once, when this method is called.

See also: mapTo

Attributes

Inherited from:
BaseObservable
def mapToUnit: Self[Unit]

Attributes

Inherited from:
BaseObservable
def matchStreamOrSignal[B](ifStream: EventStream[A] => B, ifSignal: Signal[A] => B): B

Attributes

Inherited from:
BaseObservable
override protected def maybeWillStart(): Unit

Attributes

Definition Classes
Inherited from:
WritableObservable
def mergeWith[B >: A](streams: EventStream[B]*): EventStream[B]

Returns a stream that emits events from this stream AND all off the streams, interleaved. Note: For other types of combination, see combineWith, withCurrentValueOf, sample etc.

Returns a stream that emits events from this stream AND all off the streams, interleaved. Note: For other types of combination, see combineWith, withCurrentValueOf, sample etc.

Attributes

Inherited from:
EventStream
override protected def numAllObservers: Int

Total number of internal and external observers

Total number of internal and external observers

Attributes

Definition Classes
Inherited from:
WritableObservable
final override protected def onTry(nextValue: Try[A], transaction: Transaction): Unit

Must not throw

Must not throw

Attributes

Definition Classes
Inherited from:
InternalNextErrorObserver
override protected def onWillStart(): Unit

When starting an observable, this is called recursively on every one of its parents that are not started. This whole chain happens before onStart callback is called. This chain serves to prepare the internal states of observables that are about to start, e.g. you should update the signal's value to match its parent signal's value in this callback, if applicable.

When starting an observable, this is called recursively on every one of its parents that are not started. This whole chain happens before onStart callback is called. This chain serves to prepare the internal states of observables that are about to start, e.g. you should update the signal's value to match its parent signal's value in this callback, if applicable.

Default implementation, for observables that don't need anything, should be to call parent.maybeWillStart() for every parent observable.

If custom behaviour is required, you should generally call parent.maybeWillStart() BEFORE your custom logic. Then your logic will be able to make use of parent's updated value.

Note: NEVER CALL onWillStart() DIRECTLY Call maybeWillStart() instead, it keeps track of important internal state.

Note: THIS METHOD MUST NOT CREATE TRANSACTIONS OR FIRE ANY EVENTS! DO IT IN ONSTART IF NEEDED.

Attributes

Definition Classes
Inherited from:
SingleParentStream
override def recover[B >: A](pf: PartialFunction[Throwable, Option[B]]): EventStream[B]

See docs for MapStream

See docs for MapStream

Value parameters

pf

Note: guarded against exceptions

Attributes

Definition Classes
Inherited from:
EventStream
def recoverIgnoreErrors: Self[A]

Attributes

Inherited from:
BaseObservable
override def recoverToEither: EventStream[Either[Throwable, A]]

Convert this to an observable that emits Left(err) instead of erroring

Convert this to an observable that emits Left(err) instead of erroring

Attributes

Definition Classes
Inherited from:
EventStream
override def recoverToTry: EventStream[Try[A]]

Convert this to an observable that emits Failure(err) instead of erroring

Convert this to an observable that emits Failure(err) instead of erroring

Attributes

Definition Classes
Inherited from:
EventStream
def scanLeft[B](initial: B)(fn: (B, A) => B): Signal[B]

A signal that emits the accumulated value every time that the parent stream emits.

A signal that emits the accumulated value every time that the parent stream emits.

See also: startWith

Value parameters

fn

Note: guarded against exceptions

Attributes

Inherited from:
EventStream
def scanLeftRecover[B](initial: Try[B])(fn: (Try[B], Try[A]) => Try[B]): Signal[B]

A signal that emits the accumulated value every time that the parent stream emits.

A signal that emits the accumulated value every time that the parent stream emits.

Value parameters

fn

Note: Must not throw!

Attributes

Inherited from:
EventStream
def setDisplayName(name: String): Named.this.type

Set the display name for this instance (observable or observer).

Set the display name for this instance (observable or observer).

  • This method modifies the instance and returns this. It does not create a new instance.
  • New name you set will override the previous name, if any. This might change in the future. For the sake of sanity, don't call this more than once for the same instance.
  • If display name is set, toString will output it instead of the standard type@hashcode string

Attributes

Inherited from:
Named
def startWith[B >: A](initial: => B, cacheInitialValue: Boolean): Signal[B]

Convert stream to signal, given an initial value

Convert stream to signal, given an initial value

Value parameters

cacheInitialValue

if false, signal's initial value will be re-evaluated on every restart (so long as the parent stream does not emit any values)

Attributes

Inherited from:
EventStream
def startWithNone: Signal[Option[A]]

Attributes

Inherited from:
EventStream
def startWithTry[B >: A](initial: => Try[B], cacheInitialValue: Boolean): Signal[B]

Value parameters

cacheInitialValue

if false, signal's initial value will be re-evaluated on every restart (so long as the parent stream does not emit any values)

Attributes

Inherited from:
EventStream
def take(numEvents: Int, resetOnStop: Boolean): EventStream[A]

Take the first numEvents events from this stream, ignore the rest. Note: As long as events are being taken, ALL errors are also taken

Take the first numEvents events from this stream, ignore the rest. Note: As long as events are being taken, ALL errors are also taken

Value parameters

resetOnStop

Reset the count if the stream stops

Attributes

Inherited from:
EventStream
def takeUntil(passes: A => Boolean, resetOnStop: Boolean): EventStream[A]

Imitate parent stream as long as events to NOT pass the test; stop emitting after that.

Imitate parent stream as long as events to NOT pass the test; stop emitting after that.

Value parameters

passes

Note: MUST NOT THROW!

resetOnStop

Forget everything and start dropping again if the stream stops

Attributes

Inherited from:
EventStream
def takeWhile(passes: A => Boolean, resetOnStop: Boolean): EventStream[A]

Imitate parent stream as long as events pass the test; stop emitting after that.

Imitate parent stream as long as events pass the test; stop emitting after that.

Value parameters

passes

Note: MUST NOT THROW!

resetOnStop

Forget everything and start dropping again if the stream stops

Attributes

Inherited from:
EventStream
def tapEach[U](f: A => U): Self[A]

Execute a side effecting callback every time the observable emits. If it's a signal, it also runs when its initial value is evaluated.

Execute a side effecting callback every time the observable emits. If it's a signal, it also runs when its initial value is evaluated.

See https://github.com/raquo/Airstream/#tapEach for more details.

Attributes

Inherited from:
BaseObservable
def throttle(ms: Int, leading: Boolean): EventStream[A]

See docs for ThrottleStream

See docs for ThrottleStream

Attributes

Inherited from:
EventStream
def throttleWithStatus(ms: Int, leading: Boolean): EventStream[Status[A, A]]

Based on throttle, but tracks the status of input and output to that operator. See Status.

Based on throttle, but tracks the status of input and output to that operator. See Status.

Attributes

Inherited from:
EventStream
override def toObservable: EventStream[A]

Attributes

Definition Classes
Inherited from:
EventStream
def toSignal[B >: A](initial: => B, cacheInitialValue: Boolean): Signal[B]

Value parameters

cacheInitialValue

if false, signal's initial value will be re-evaluated on every restart (so long as the parent stream does not emit any values)

Attributes

Inherited from:
EventStream
def toSignalIfStream[B >: A](ifStream: EventStream[A] => Signal[B]): Signal[B]

Attributes

Inherited from:
BaseObservable
def toSignalWithEither[B >: A](initial: => Either[Throwable, B], cacheInitialValue: Boolean): Signal[B]

Value parameters

cacheInitialValue

if false, signal's initial value will be re-evaluated on every restart (so long as the parent stream does not emit any values)

Attributes

Inherited from:
EventStream
def toSignalWithTry[B >: A](initial: => Try[B], cacheInitialValue: Boolean): Signal[B]

Value parameters

cacheInitialValue

if false, signal's initial value will be re-evaluated on every restart (so long as the parent stream does not emit any values)

Attributes

Inherited from:
EventStream
def toStreamIfSignal[B >: A](ifSignal: Signal[A] => EventStream[B]): EventStream[B]

Attributes

Inherited from:
BaseObservable
final override def toString: String

Override defaultDisplayName instead of this, if you need to.

Override defaultDisplayName instead of this, if you need to.

Attributes

Definition Classes
Named -> Any
Inherited from:
Named
def toWeakSignal: Signal[Option[A]]

Convert this observable to a signal of Option[A]. If it is a stream, set initial value to None.

Convert this observable to a signal of Option[A]. If it is a stream, set initial value to None.

Attributes

Inherited from:
BaseObservable

Deprecated and Inherited methods

def foldLeft[B](initial: B)(fn: (B, A) => B): Signal[B]

Attributes

Deprecated
true
Inherited from:
EventStream
def foldLeftRecover[B](initial: Try[B])(fn: (Try[B], Try[A]) => Try[B]): Signal[B]

Attributes

Deprecated
true
Inherited from:
EventStream

Inherited fields

Note: Observer can be added more than once to an Observable. If so, it will observe each event as many times as it was added.

Note: Observer can be added more than once to an Observable. If so, it will observe each event as many times as it was added.

Attributes

Inherited from:
WritableObservable

Note: This is enforced to be a Set outside of the type system #performance

Note: This is enforced to be a Set outside of the type system #performance

Attributes

Inherited from:
WritableObservable
protected var willStartDone: Boolean

Set to true after onWillStart finishes, and until onStop finishes. It's set to false all other times. We need this to prevent onWillStart from running twice in weird cases (we have a test for that).

Set to true after onWillStart finishes, and until onStop finishes. It's set to false all other times. We need this to prevent onWillStart from running twice in weird cases (we have a test for that).

Attributes

Inherited from:
WritableObservable