Object

fs2

pipe

Related Doc: package fs2

Permalink

object pipe

Generic implementations of common pipes.

Source
pipe.scala
Linear Supertypes
AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. pipe
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Type Members

  1. sealed trait Stepper[-A, +B] extends AnyRef

    Permalink

    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

  1. final def !=(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  4. object Stepper

    Permalink
  5. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  6. def buffer[F[_], I](n: Int): Pipe[F, I, I]

    Permalink

    Behaves like the identity function, but requests n elements at a time from the input.

  7. def bufferAll[F[_], I]: Pipe[F, I, I]

    Permalink

    Behaves like the identity stream, but emits no output until the source is exhausted.

  8. def bufferBy[F[_], I](f: (I) ⇒ Boolean): Pipe[F, I, I]

    Permalink

    Behaves like the identity stream, but requests elements from its input in blocks that end whenever the predicate switches from true to false.

  9. def changes[F[_], I]: Pipe[F, I, I]

    Permalink

    Emits only elements that are distinct from their immediate predecessors, using natural equality for comparison.

  10. def changesBy[F[_], I, I2](f: (I) ⇒ I2): Pipe[F, I, I]

    Permalink

    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)

  11. def chunkLimit[F[_], I](n: Int): Pipe[F, I, NonEmptyChunk[I]]

    Permalink

    Outputs chunks with a limited maximum size, splitting as necessary.

  12. def chunkN[F[_], I](n: Int, allowFewer: Boolean = true): Pipe[F, I, List[NonEmptyChunk[I]]]

    Permalink

    Outputs a list of chunks, the total size of all chunks is limited and split as necessary.

  13. def chunks[F[_], I]: Pipe[F, I, NonEmptyChunk[I]]

    Permalink

    Outputs all chunks from the input Handle.

  14. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  15. def collect[F[_], I, I2](pf: PartialFunction[I, I2]): Pipe[F, I, I2]

    Permalink

    Map/filter simultaneously.

    Map/filter simultaneously. Calls collect on each Chunk in the stream.

  16. def collectFirst[F[_], I, I2](pf: PartialFunction[I, I2]): Pipe[F, I, I2]

    Permalink

    Emits the first element of the Stream for which the partial function is defined.

  17. def covary[F[_], I, O](s: Pipe[Pure, I, O]): Pipe[F, I, O]

    Permalink

    Converts a pure pipe to an effectful pipe of the specified type.

  18. def delete[F[_], I](p: (I) ⇒ Boolean): Pipe[F, I, I]

    Permalink

    Skips the first element that matches the predicate.

  19. 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]

    Permalink

    Pass elements of s through both f and g, then combine the two resulting streams.

    Pass elements of s through both f and g, then combine the two resulting streams. Implemented by enqueueing elements as they are seen by f onto a Queue used by the g branch. USE EXTREME CARE WHEN USING THIS FUNCTION. Deadlocks are possible if combine pulls from the g branch synchronously before the queue has been populated by the f branch.

    The combine function receives an F[Int] effect which evaluates to the current size of the g-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.

  20. def drop[F[_], I](n: Long): Pipe[F, I, I]

    Permalink

    Drops n elements of the input, then echoes the rest.

  21. def dropLast[F[_], I]: Pipe[F, I, I]

    Permalink

    Drops the last element.

  22. def dropLastIf[F[_], I](p: (I) ⇒ Boolean): Pipe[F, I, I]

    Permalink

    Drops the last element if the predicate evaluates to true.

  23. def dropRight[F[_], I](n: Int): Pipe[F, I, I]

    Permalink

    Emits all but the last n elements of the input.

  24. def dropWhile[F[_], I](p: (I) ⇒ Boolean): Pipe[F, I, I]

    Permalink

    Drops the elements of the input until the predicate p fails, then echoes the rest.

  25. final def eq(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  26. def equals(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  27. def evalScan[F[_], O, I](z: O)(f: (O, I) ⇒ F[O]): Pipe[F, I, O]

    Permalink

    Like pipe.scan, but accepts a function returning an F[_]

  28. def exists[F[_], I](p: (I) ⇒ Boolean): Pipe[F, I, Boolean]

    Permalink

    Emits true as soon as a matching element is received, else false if no input matches

  29. def filter[F[_], I](f: (I) ⇒ Boolean): Pipe[F, I, I]

    Permalink

    Emits only inputs which match the supplied predicate.

  30. def filterWithPrevious[F[_], I](f: (I, I) ⇒ Boolean): Pipe[F, I, I]

    Permalink

    Like filter, but the predicate f depends on the previously emitted and current elements.

  31. def finalize(): Unit

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  32. def find[F[_], I](f: (I) ⇒ Boolean): Pipe[F, I, I]

    Permalink

    Emits the first input (if any) which matches the supplied predicate, to the output of the returned Pull

  33. def fold[F[_], I, O](z: O)(f: (O, I) ⇒ O): Pipe[F, I, O]

    Permalink

    Folds all inputs using an initial value z and supplied binary operator, and emits a single element stream.

  34. def fold1[F[_], I](f: (I, I) ⇒ I): Pipe[F, I, I]

    Permalink

    Folds all inputs using the supplied binary operator, and emits a single-element stream, or the empty stream if the input is empty.

  35. def forall[F[_], I](p: (I) ⇒ Boolean): Pipe[F, I, Boolean]

    Permalink

    Emits a single true value if all input matches the predicate.

    Emits a single true value if all input matches the predicate. Halts with false as soon as a non-matching element is received.

  36. final def getClass(): Class[_]

    Permalink
    Definition Classes
    AnyRef → Any
  37. def groupBy[F[_], K, V](f: (V) ⇒ K): Pipe[F, V, (K, Vector[V])]

    Permalink

    Partitions the input into a stream of chunks according to a discriminator function.

    Partitions the input into a stream of chunks according to a discriminator function. Each chunk is annotated with the value of the discriminator function applied to any of the chunk's elements.

  38. def hashCode(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  39. def head[F[_], I]: Pipe[F, I, I]

    Permalink

    Emits the first element of this stream (if non-empty) and then halts.

  40. def id[F[_], I]: Pipe[F, I, I]

    Permalink

    Identity pipe - every input is output unchanged.

  41. def intersperse[F[_], I](separator: I): Pipe[F, I, I]

    Permalink

    Emits the specified separator between every pair of elements in the source stream.

  42. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  43. def join[F[_], A, B](s: Stream[F, Pipe[F, A, B]])(implicit arg0: Async[F]): Pipe[F, A, B]

    Permalink

    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.

  44. def joinAsync[F[_], A, B](maxQueued: Int)(s: Stream[F, Pipe[F, A, B]])(implicit arg0: Async[F]): Pipe[F, A, B]

    Permalink

    Asynchronous version of join that queues up to maxQueued elements.

  45. 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]

    Permalink

    Queue based version of join that uses the specified queue.

  46. def last[F[_], I]: Pipe[F, I, Option[I]]

    Permalink

    Returns the last element of the input Handle, if non-empty.

  47. def lastOr[F[_], I](li: ⇒ I): Pipe[F, I, I]

    Permalink

    Returns the last element of the input Handle if non-empty, otherwise li.

  48. def lift[F[_], I, O](f: (I) ⇒ O): Pipe[F, I, O]

    Permalink

    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.

  49. def mapAccumulate[F[_], S, I, O](init: S)(f: (S, I) ⇒ (S, O)): Pipe[F, I, (S, O)]

    Permalink

    Maps a running total according to S and the input with the function f.

    Maps a running total according to S and the input with the function f.

    Example:
    1. scala> Stream("Hello", "World")
           |   .mapAccumulate(0)((l, s) => (l + s.length, s.head)).toVector
      res0: Vector[(Int, Char)] = Vector((5,H), (10,W))
  50. def mapChunks[F[_], I, O](f: (Chunk[I]) ⇒ Chunk[O]): Pipe[F, I, O]

    Permalink

    Outputs a transformed version of all chunks from the input Handle.

  51. final def ne(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  52. final def notify(): Unit

    Permalink
    Definition Classes
    AnyRef
  53. final def notifyAll(): Unit

    Permalink
    Definition Classes
    AnyRef
  54. def observe[F[_], A](s: Stream[F, A])(sink: Sink[F, A])(implicit arg0: Async[F]): Stream[F, A]

    Permalink

    Synchronously send values through sink.

  55. def observeAsync[F[_], A](s: Stream[F, A], maxQueued: Int)(sink: Sink[F, A])(implicit arg0: Async[F]): Stream[F, A]

    Permalink

    Send chunks through sink, allowing up to maxQueued pending _chunks_ before blocking s.

  56. def prefetch[F[_], I](implicit arg0: Async[F]): Pipe[F, I, I]

    Permalink

    Behaves like id, but starts fetching the next chunk before emitting the current, enabling processing on either side of the prefetch to run in parallel.

  57. def rechunkN[F[_], I](n: Int, allowFewer: Boolean = true): Pipe[F, I, I]

    Permalink

    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. If allowFewer is true, the final chunk of the stream may be less than n elements. Otherwise, if the final chunk is less than n elements, it is dropped.

  58. def reduce[F[_], I](f: (I, I) ⇒ I): Pipe[F, I, I]

    Permalink

    Alias for pipe.fold1

  59. def rethrow[F[_], I]: Pipe[F, Attempt[I], I]

    Permalink

    Rethrows any Left(err).

    Rethrows any Left(err). Preserves chunkiness.

  60. def scan[F[_], I, O](z: O)(f: (O, I) ⇒ O): Pipe[F, I, O]

    Permalink

    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)) etc

    Works in a chunky fashion, and creates a Chunk.indexedSeq for each converted chunk.

  61. def scan1[F[_], I](f: (I, I) ⇒ I): Pipe[F, I, I]

    Permalink

    Like pipe.scan, but uses the first element of the stream as the seed.

  62. def shiftRight[F[_], I](head: I*): Pipe[F, I, I]

    Permalink

    Emits the given values, then echoes the rest of the input.

  63. def sliding[F[_], I](n: Int): Pipe[F, I, Vector[I]]

    Permalink

    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 to n elements, only one chunk of this size will be emitted.

    Example:
    1. 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 if n <= 0

  64. def split[F[_], I](f: (I) ⇒ Boolean): Pipe[F, I, Vector[I]]

    Permalink

    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.

  65. def stepper[I, O](s: Pipe[Pure, I, O]): Stepper[I, O]

    Permalink

    Creates a Stepper, which allows incrementally stepping a pure pipe.

  66. def sum[F[_], I](implicit ev: Numeric[I]): Pipe[F, I, I]

    Permalink

    Writes the sum of all input elements, or zero if the input is empty.

  67. final def synchronized[T0](arg0: ⇒ T0): T0

    Permalink
    Definition Classes
    AnyRef
  68. def tail[F[_], I]: Pipe[F, I, I]

    Permalink

    Emits all elements of the input except the first one.

  69. def take[F[_], I](n: Long): Pipe[F, I, I]

    Permalink

    Emits the first n elements of the input Handle and returns the new Handle.

  70. def takeRight[F[_], I](n: Long): Pipe[F, I, I]

    Permalink

    Emits the last n elements of the input.

  71. def takeThrough[F[_], I](f: (I) ⇒ Boolean): Pipe[F, I, I]

    Permalink

    Like takeWhile, but emits the first value which tests false.

  72. def takeWhile[F[_], I](f: (I) ⇒ Boolean): Pipe[F, I, I]

    Permalink

    Emits the longest prefix of the input for which all elements test true according to f.

  73. def toString(): String

    Permalink
    Definition Classes
    AnyRef → Any
  74. def unNone[F[_], I]: Pipe[F, Option[I], I]

    Permalink

    Filters any 'None'.

  75. def unNoneTerminate[F[_], I]: Pipe[F, Option[I], I]

    Permalink

    Halts the input stream at the first None.

    Halts the input stream at the first None.

    Example:
    1. scala> Stream[Pure, Option[Int]](Some(1), Some(2), None, Some(3), None).unNoneTerminate.toList
      res0: List[Int] = List(1, 2)
  76. def unchunk[F[_], I]: Pipe[F, I, I]

    Permalink

    Converts the input to a stream of 1-element chunks.

  77. def vectorChunkN[F[_], I](n: Int, allowFewer: Boolean = true): Pipe[F, I, Vector[I]]

    Permalink

    Groups inputs into separate Vector objects of size n.

    Groups inputs into separate Vector objects of size n.

    Example:
    1. scala> Stream(1, 2, 3, 4, 5).vectorChunkN(2).toVector
      res0: Vector[Vector[Int]] = Vector(Vector(1, 2), Vector(3, 4), Vector(5))
  78. final def wait(): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  79. final def wait(arg0: Long, arg1: Int): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  80. final def wait(arg0: Long): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  81. def zipWithIndex[F[_], I]: Pipe[F, I, (I, Int)]

    Permalink

    Zips the elements of the input Handle with its indices, and returns the new Handle

  82. def zipWithNext[F[_], I]: Pipe[F, I, (I, Option[I])]

    Permalink

    Zips the elements of the input Handle with its next element wrapped into Some, and returns the new Handle.

    Zips the elements of the input Handle with its next element wrapped into Some, and returns the new Handle. The last element is zipped with None.

  83. def zipWithPrevious[F[_], I]: Pipe[F, I, (Option[I], I)]

    Permalink

    Zips the elements of the input Handle with its previous element wrapped into Some, and returns the new Handle.

    Zips the elements of the input Handle with its previous element wrapped into Some, and returns the new Handle. The first element is zipped with None.

  84. def zipWithPreviousAndNext[F[_], I]: Pipe[F, I, (Option[I], I, Option[I])]

    Permalink

    Zips the elements of the input Handle with its previous and next elements wrapped into Some, and returns the new Handle.

    Zips the elements of the input Handle with its previous and next elements wrapped into Some, and returns the new Handle. The first element is zipped with None as the previous element, the last element is zipped with None as the next element.

  85. def zipWithScan[F[_], I, S](z: S)(f: (S, I) ⇒ S): Pipe[F, I, (I, S)]

    Permalink

    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 initial z 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

    zipWithScan1

  86. def zipWithScan1[F[_], I, S](z: S)(f: (S, I) ⇒ S): Pipe[F, I, (I, S)]

    Permalink

    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 initial z value is the first emitted to the output:

    scala> Stream("uno", "dos", "tres", "cuatro").zipWithScan1(0)(_ + _.length).toList
    res0: List[(String, Int)] = List((uno,3), (dos,6), (tres,10), (cuatro,16))
    See also

    zipWithScan

Inherited from AnyRef

Inherited from Any

Ungrouped