object pipe
- Alphabetic
- By Inheritance
- pipe
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Type Members
-
sealed
trait
Stepper
[-A, +B] extends AnyRef
Allows stepping of a pure pipe.
Allows stepping of a pure pipe. Each invocation of step results in a value of the Stepper.Step algebra, indicating that the pipe is either done, it failed with an exception, it emitted a chunk of output, or it is awaiting input.
Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
def
buffer[F[_], I](n: Int): Pipe[F, I, I]
Behaves like the identity function, but requests
n
elements at a time from the input. -
def
bufferAll[F[_], I]: Pipe[F, I, I]
Behaves like the identity stream, but emits no output until the source is exhausted.
-
def
bufferBy[F[_], I](f: (I) ⇒ Boolean): Pipe[F, I, I]
Behaves like the identity stream, but requests elements from its input in blocks that end whenever the predicate switches from true to false.
-
def
changes[F[_], I]: Pipe[F, I, I]
Emits only elements that are distinct from their immediate predecessors, using natural equality for comparison.
-
def
changesBy[F[_], I, I2](f: (I) ⇒ I2): Pipe[F, I, I]
Emits only elements that are distinct from their immediate predecessors according to
f
, using natural equality for comparison.Emits only elements that are distinct from their immediate predecessors according to
f
, using natural equality for comparison.Note that
f
is called for each element in the stream multiple times and hence should be fast (e.g., an accessor). It is not intended to be used for computationally intensive conversions. For such conversions, consider something like:src.map(i => (i, f(i))).changesBy(_._2).map(_._1)
-
def
chunkLimit[F[_], I](n: Int): Pipe[F, I, NonEmptyChunk[I]]
Outputs chunks with a limited maximum size, splitting as necessary.
-
def
chunkN[F[_], I](n: Int, allowFewer: Boolean = true): Pipe[F, I, List[NonEmptyChunk[I]]]
Outputs a list of chunks, the total size of all chunks is limited and split as necessary.
-
def
chunks[F[_], I]: Pipe[F, I, NonEmptyChunk[I]]
Outputs all chunks from the input
Handle
. -
def
clone(): AnyRef
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
def
collect[F[_], I, I2](pf: PartialFunction[I, I2]): Pipe[F, I, I2]
Map/filter simultaneously.
Map/filter simultaneously. Calls
collect
on eachChunk
in the stream. -
def
collectFirst[F[_], I, I2](pf: PartialFunction[I, I2]): Pipe[F, I, I2]
Emits the first element of the Stream for which the partial function is defined.
-
def
covary[F[_], I, O](s: Pipe[Pure, I, O]): Pipe[F, I, O]
Converts a pure pipe to an effectful pipe of the specified type.
-
def
delete[F[_], I](p: (I) ⇒ Boolean): Pipe[F, I, I]
Skips the first element that matches the predicate.
-
def
diamond[F[_], A, B, C, D](s: Stream[F, A])(f: Pipe[F, A, B])(qs: F[Queue[F, Option[Chunk[A]]]], g: Pipe[F, A, C])(combine: Pipe2[F, B, C, D])(implicit F: Async[F]): Stream[F, D]
Pass elements of
s
through bothf
andg
, then combine the two resulting streams.Pass elements of
s
through bothf
andg
, then combine the two resulting streams. Implemented by enqueueing elements as they are seen byf
onto aQueue
used by theg
branch. USE EXTREME CARE WHEN USING THIS FUNCTION. Deadlocks are possible ifcombine
pulls from theg
branch synchronously before the queue has been populated by thef
branch.The
combine
function receives anF[Int]
effect which evaluates to the current size of theg
-branch's queue.When possible, use one of the safe combinators like
observe
, which are built using this function, in preference to using this function directly. -
def
drop[F[_], I](n: Long): Pipe[F, I, I]
Drops
n
elements of the input, then echoes the rest. -
def
dropLast[F[_], I]: Pipe[F, I, I]
Drops the last element.
-
def
dropLastIf[F[_], I](p: (I) ⇒ Boolean): Pipe[F, I, I]
Drops the last element if the predicate evaluates to true.
-
def
dropRight[F[_], I](n: Int): Pipe[F, I, I]
Emits all but the last
n
elements of the input. -
def
dropWhile[F[_], I](p: (I) ⇒ Boolean): Pipe[F, I, I]
Drops the elements of the input until the predicate
p
fails, then echoes the rest. -
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
exists[F[_], I](p: (I) ⇒ Boolean): Pipe[F, I, Boolean]
Emits
true
as soon as a matching element is received, elsefalse
if no input matches -
def
filter[F[_], I](f: (I) ⇒ Boolean): Pipe[F, I, I]
Emits only inputs which match the supplied predicate.
-
def
filterWithPrevious[F[_], I](f: (I, I) ⇒ Boolean): Pipe[F, I, I]
Like
filter
, but the predicatef
depends on the previously emitted and current elements. -
def
finalize(): Unit
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
def
find[F[_], I](f: (I) ⇒ Boolean): Pipe[F, I, I]
Emits the first input (if any) which matches the supplied predicate, to the output of the returned
Pull
-
def
fold[F[_], I, O](z: O)(f: (O, I) ⇒ O): Pipe[F, I, O]
Folds all inputs using an initial value
z
and supplied binary operator, and emits a single element stream. -
def
fold1[F[_], I](f: (I, I) ⇒ I): Pipe[F, I, I]
Folds all inputs using the supplied binary operator, and emits a single-element stream, or the empty stream if the input is empty.
-
def
forall[F[_], I](p: (I) ⇒ Boolean): Pipe[F, I, Boolean]
Emits a single
true
value if all input matches the predicate.Emits a single
true
value if all input matches the predicate. Halts withfalse
as soon as a non-matching element is received. -
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
-
def
id[F[_], I]: Pipe[F, I, I]
Identity pipe - every input is output unchanged.
-
def
intersperse[F[_], I](separator: I): Pipe[F, I, I]
Emits the specified separator between every pair of elements in the source stream.
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
def
join[F[_], A, B](s: Stream[F, Pipe[F, A, B]])(implicit arg0: Async[F]): Pipe[F, A, B]
Joins a stream of pipes in to a single pipe.
Joins a stream of pipes in to a single pipe. Input is fed to the first pipe until it terminates, at which point input is fed to the second pipe, and so on.
-
def
joinAsync[F[_], A, B](maxQueued: Int)(s: Stream[F, Pipe[F, A, B]])(implicit arg0: Async[F]): Pipe[F, A, B]
Asynchronous version of join that queues up to
maxQueued
elements. -
def
joinQueued[F[_], A, B](q: F[Queue[F, Option[Chunk[A]]]])(s: Stream[F, Pipe[F, A, B]])(implicit F: Async[F]): Pipe[F, A, B]
Queue based version of join that uses the specified queue.
-
def
last[F[_], I]: Pipe[F, I, Option[I]]
Returns the last element of the input
Handle
, if non-empty. -
def
lastOr[F[_], I](li: ⇒ I): Pipe[F, I, I]
Returns the last element of the input
Handle
if non-empty, otherwise li. -
def
lift[F[_], I, O](f: (I) ⇒ O): Pipe[F, I, O]
Applies the specified pure function to each input and emits the result.
Applies the specified pure function to each input and emits the result. Works in a chunky fashion and creates a
Chunk.indexedSeq
for each mapped chunk. -
def
mapAccumulate[F[_], S, I, O](init: S)(f: (S, I) ⇒ (S, O)): Pipe[F, I, (S, O)]
Maps a running total according to
S
and the input with the functionf
.Maps a running total according to
S
and the input with the functionf
.scala> Stream("Hello", "World") | .mapAccumulate(0)((l, s) => (l + s.length, s.head)).toVector res0: Vector[(Int, Char)] = Vector((5,H), (10,W))
Example: -
def
mapChunks[F[_], I, O](f: (Chunk[I]) ⇒ Chunk[O]): Pipe[F, I, O]
Outputs a transformed version of all chunks from the input
Handle
. -
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
-
def
observe[F[_], A](s: Stream[F, A])(sink: Sink[F, A])(implicit arg0: Async[F]): Stream[F, A]
Synchronously send values through
sink
. -
def
observeAsync[F[_], A](s: Stream[F, A], maxQueued: Int)(sink: Sink[F, A])(implicit arg0: Async[F]): Stream[F, A]
Send chunks through
sink
, allowing up tomaxQueued
pending _chunks_ before blockings
. -
def
prefetch[F[_], I](implicit arg0: Async[F]): Pipe[F, I, I]
Behaves like
id
, but starts fetching the next chunk before emitting the current, enabling processing on either side of theprefetch
to run in parallel. -
def
rechunkN[F[_], I](n: Int, allowFewer: Boolean = true): Pipe[F, I, I]
Modifies the chunk structure of the underlying stream, emitting potentially unboxed chunks of
n
elements.Modifies the chunk structure of the underlying stream, emitting potentially unboxed chunks of
n
elements. IfallowFewer
is true, the final chunk of the stream may be less thann
elements. Otherwise, if the final chunk is less thann
elements, it is dropped. -
def
reduce[F[_], I](f: (I, I) ⇒ I): Pipe[F, I, I]
Alias for
pipe.fold1
-
def
rethrow[F[_], I]: Pipe[F, Attempt[I], I]
Rethrows any
Left(err)
.Rethrows any
Left(err)
. Preserves chunkiness. -
def
scan[F[_], I, O](z: O)(f: (O, I) ⇒ O): Pipe[F, I, O]
Left fold which outputs all intermediate results.
Left fold which outputs all intermediate results. Example:
Stream(1,2,3,4) through pipe.scan(0)(_ + _) == Stream(0,1,3,6,10)
.More generally:
Stream().scan(z)(f) == Stream(z)
Stream(x1).scan(z)(f) == Stream(z, f(z,x1))
Stream(x1,x2).scan(z)(f) == Stream(z, f(z,x1), f(f(z,x1),x2))
etcWorks in a chunky fashion, and creates a
Chunk.indexedSeq
for each converted chunk. -
def
scan1[F[_], I](f: (I, I) ⇒ I): Pipe[F, I, I]
Like
pipe.scan
, but uses the first element of the stream as the seed. -
def
shiftRight[F[_], I](head: I*): Pipe[F, I, I]
Emits the given values, then echoes the rest of the input.
-
def
sliding[F[_], I](n: Int): Pipe[F, I, Vector[I]]
Groups inputs in fixed size chunks by passing a "sliding window" of size
n
over them.Groups inputs in fixed size chunks by passing a "sliding window" of size
n
over them. If the input contains less than or equal ton
elements, only one chunk of this size will be emitted.scala> Stream(1, 2, 3, 4).sliding(2).toList res0: List[Vector[Int]] = List(Vector(1, 2), Vector(2, 3), Vector(3, 4))
- Exceptions thrown
scala.IllegalArgumentException
ifn
<= 0
Example: -
def
split[F[_], I](f: (I) ⇒ Boolean): Pipe[F, I, Vector[I]]
Breaks the input into chunks where the delimiter matches the predicate.
Breaks the input into chunks where the delimiter matches the predicate. The delimiter does not appear in the output. Two adjacent delimiters in the input result in an empty chunk in the output.
-
def
stepper[I, O](s: Pipe[Pure, I, O]): Stepper[I, O]
Creates a Stepper, which allows incrementally stepping a pure pipe.
-
def
sum[F[_], I](implicit ev: Numeric[I]): Pipe[F, I, I]
Writes the sum of all input elements, or zero if the input is empty.
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
tail[F[_], I]: Pipe[F, I, I]
Emits all elements of the input except the first one.
-
def
take[F[_], I](n: Long): Pipe[F, I, I]
Emits the first
n
elements of the inputHandle
and returns the newHandle
. -
def
takeRight[F[_], I](n: Long): Pipe[F, I, I]
Emits the last
n
elements of the input. -
def
takeThrough[F[_], I](f: (I) ⇒ Boolean): Pipe[F, I, I]
Like
takeWhile
, but emits the first value which tests false. -
def
takeWhile[F[_], I](f: (I) ⇒ Boolean): Pipe[F, I, I]
Emits the longest prefix of the input for which all elements test true according to
f
. -
def
toString(): String
- Definition Classes
- AnyRef → Any
-
def
unNoneTerminate[F[_], I]: Pipe[F, Option[I], I]
Halts the input stream at the first
None
.Halts the input stream at the first
None
.scala> Stream[Pure, Option[Int]](Some(1), Some(2), None, Some(3), None).unNoneTerminate.toList res0: List[Int] = List(1, 2)
Example: -
def
unchunk[F[_], I]: Pipe[F, I, I]
Converts the input to a stream of 1-element chunks.
-
def
vectorChunkN[F[_], I](n: Int, allowFewer: Boolean = true): Pipe[F, I, Vector[I]]
Groups inputs into separate
Vector
objects of sizen
.Groups inputs into separate
Vector
objects of sizen
.scala> Stream(1, 2, 3, 4, 5).vectorChunkN(2).toVector res0: Vector[Vector[Int]] = Vector(Vector(1, 2), Vector(3, 4), Vector(5))
Example: -
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
def
zipWithIndex[F[_], I]: Pipe[F, I, (I, Int)]
Zips the elements of the input
Handle
with its indices, and returns the newHandle
-
def
zipWithNext[F[_], I]: Pipe[F, I, (I, Option[I])]
Zips the elements of the input
Handle
with its next element wrapped intoSome
, and returns the newHandle
.Zips the elements of the input
Handle
with its next element wrapped intoSome
, and returns the newHandle
. The last element is zipped withNone
. -
def
zipWithPrevious[F[_], I]: Pipe[F, I, (Option[I], I)]
Zips the elements of the input
Handle
with its previous element wrapped intoSome
, and returns the newHandle
.Zips the elements of the input
Handle
with its previous element wrapped intoSome
, and returns the newHandle
. The first element is zipped withNone
. -
def
zipWithPreviousAndNext[F[_], I]: Pipe[F, I, (Option[I], I, Option[I])]
Zips the elements of the input
Handle
with its previous and next elements wrapped intoSome
, and returns the newHandle
.Zips the elements of the input
Handle
with its previous and next elements wrapped intoSome
, and returns the newHandle
. The first element is zipped withNone
as the previous element, the last element is zipped withNone
as the next element. -
def
zipWithScan[F[_], I, S](z: S)(f: (S, I) ⇒ S): Pipe[F, I, (I, S)]
Zips the input with a running total according to
S
, up to but not including the current element.Zips the input with a running total according to
S
, up to but not including the current element. Thus the initialz
value is the first emitted to the output:scala> Stream("uno", "dos", "tres", "cuatro").zipWithScan(0)(_ + _.length).toList res0: List[(String,Int)] = List((uno,0), (dos,3), (tres,6), (cuatro,10))
- See also
-
def
zipWithScan1[F[_], I, S](z: S)(f: (S, I) ⇒ S): Pipe[F, I, (I, S)]
Zips the input with a running total according to
S
, including the current element.Zips the input with a running total according to
S
, including the current element. Thus the initialz
value is the first emitted to the output:scala> Stream("uno", "dos", "tres", "cuatro").zipWithScan(0)(_ + _.length).toList res0: List[(String,Int)] = List((uno,0), (dos,3), (tres,6), (cuatro,10))
- See also
- object Stepper