object Splitter
- Source
- Splitter.scala
- Alphabetic
- By Inheritance
- Splitter
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
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
- def apply[In]: SplitterApplyWithBoundInput[In]
Convenience for creating Splitters with a specific
In
type; useful when type inference can figure out the other type parameters. - final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- def consecutiveMatches[In](p: (In) => Boolean): Splitter[In, Any]
Create a Splitter that treats consecutive values matching the predicate
p
as substreams with no particular context value.Create a Splitter that treats consecutive values matching the predicate
p
as substreams with no particular context value. For example, given a matcher likei => i % 2 == 0
, a stream like1 3 2 2 4 5 6 7 8 10 4 3 1
could be treated as having three substreams:
2 2 4
6
8 10 4
- def consecutiveMatches[In, Context](matcher: PartialFunction[In, Context]): Splitter[In, Context]
Create a Splitter that treats consecutive matched values as substreams.
Create a Splitter that treats consecutive matched values as substreams. For example, given a matcher like
{ case c if c.isLetter => c }
, a stream like1 2 3 A B C 4 5 6 D 7 8 E F G H 9
could be treated as having three substreams, where each substream's "context value" is the first letter in that group (because context is always defined by the beginning of the substream).
A B C
with context'A'
(between the 3 and 4)D
with context'D'
(between the 6 and 7)E F G H
with context'E'
(between the 8 and 9)
- matcher
A function defining which inputs count as a "match"
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- def fromMatcher[In, Elem, C](matcher: ContextMatcher[Elem, C])(implicit S: StackLike[In, Elem], pos: CallerPos): Splitter[In, C]
Create a splitter that keeps track of a "stack" which is pushed and popped by
In
events, starting a new substream when the givenmatcher
matches the stack.Create a splitter that keeps track of a "stack" which is pushed and popped by
In
events, starting a new substream when the givenmatcher
matches the stack.The primary use-case for this is when dealing with nestable data formats like XML or JSON, where a token could signify a push to the stack (e.g. an ElemStart event), and where you want to operate on events that occur within some specific stack of elements.
For inputs that cause a push or pop to the stack, whether that input is included as "inside" the pushed context is up to the specific
StackLike
implementation. - final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- def splitOnMatch[In](f: (In) => Boolean): Splitter[In, Any]
Create a splitter that starts a new substream every time the predicate function
p
returns true for an input.Create a splitter that starts a new substream every time the predicate function
p
returns true for an input. Any inputs passed through before the initial match will be discarded, but every event thereafter will be part of a substream. Context is ignored for substreams from this method - the context type isAny
.For example, in a stream like
4 3 2 1 2 3 1 2 1 2 3 4
, if our predicate was{ _ == 1 }
, then we'd have a new substream starting from each1
input.- (new context) 1 2 3
- (new context) 1 2
- (new context) 1 2 3 4
- In
The input type
- f
The predicate function responsible for determining if a new context should start for an input.
- returns
A splitter that starts a new substream for every input where
p(input) == true
- def splitOnMatch[In, C](matcher: PartialFunction[In, C]): Splitter[In, C]
Create a splitter that starts a new substream every time the
matcher
matches.Create a splitter that starts a new substream every time the
matcher
matches. Any events passed through before the initial match will be discarded, but every event thereafter will be part of a substream. The context for a substream is based on the value returned by thematcher
for the event that caused that match.For example, in a stream like
4 3 2 1 2 3 1 2 1 2 3 4
, if our matcher was{ case 1 => "yay" }
, then we'd have a new substream with context "yay" every time a1
came through:- (new context: "yay") 1 2 3
- (new context: "yay") 1 2
- (new context: "yay") 1 2 3 4
- In
The input type
- C
The extracted context type
- matcher
A PartialFunction that can extract a context value from inputs
- returns
A splitter that starts a new substream for every input where
matcher.isDefinedAt(input)
, with a context equal tomatcher(input)
.
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()