Primary "spac" abstraction which represents a transformation stage for a stream of data events
Transformers effectively transform a stream of In
events into a stream of Out
events.
The actual stream handling logic is defined by a Transformer.Handler
, which a Transformer
is responsible for constructing.
Handlers may be internally-mutable, and so they are generally only constructed by other handlers.
Transformers themselves are immutable, acting as "handler factories", and so they may be freely reused.
A transformer may choose to abort in response to any input event, as well as emit any number of outputs in response to an input event or the EOF signal.
- Type parameters:
- In
The incoming event type
- Out
The outgoing event type
- Companion:
- object
Value members
Abstract methods
Transformer's main abstract method; constructs a new Handler representing this transformer's logic. Transformers are expected to be immutable, but Handlers may be internally-mutable.
Transformer's main abstract method; constructs a new Handler representing this transformer's logic. Transformers are expected to be immutable, but Handlers may be internally-mutable.
Concrete methods
Returns this transformer, but with a different view of the Out
type.
The Out <:< Out2
implicit evidence is used to make sure the asInstanceOf
cast is safe.
This is mostly useful when you know you have a transformer that yields a tuple or some kind of type constructor.
Returns this transformer, but with a different view of the Out
type.
The Out <:< Out2
implicit evidence is used to make sure the asInstanceOf
cast is safe.
This is mostly useful when you know you have a transformer that yields a tuple or some kind of type constructor.
Creates a new transformer which filters and maps the outputs from this transformer
Creates a new transformer which filters and maps the outputs from this transformer
- Type parameters:
- Out2
Result type of the
pf
- Value parameters:
- pf
Partial function responsible for the filtering and mapping of outputs from this transformer
- Returns:
The filteried and mapped transformer
Creates a new transformer which filters the outputs from this transformer.
Creates a new transformer which filters the outputs from this transformer.
- Value parameters:
- predicate
A function which decides whether an output from this transformer should be emitted from the returned transformer.
true
means emit,false
means skip.
- Returns:
The filtered transformer
Attach this transformer to a parser
, creating a new parser that encapsulates the pair.
Values emitted from this transformer will be passed as inputs to the parser
,
and the resulting output from the parser
will be yielded as output by the combined parser.
Attach this transformer to a parser
, creating a new parser that encapsulates the pair.
Values emitted from this transformer will be passed as inputs to the parser
,
and the resulting output from the parser
will be yielded as output by the combined parser.
Creates a new transformer which applies the transformation function f
to each of this transformer's outputs.
Creates a new transformer which applies the transformation function f
to each of this transformer's outputs.
- Type parameters:
- Out2
The transformation output type
- Value parameters:
- f
A transformation function
- Returns:
The mapped transformer
Creates a new transformer which transforms the outputs of this transformer via the given function f
,
emitting each individual value from the output of that function in order before continuing.
Creates a new transformer which transforms the outputs of this transformer via the given function f
,
emitting each individual value from the output of that function in order before continuing.
- Type parameters:
- Out2
The transformed output type
- Value parameters:
- f
A function that transforms outputs from this transformer into a collection of other outputs
- Returns:
A new transformer which emits any number of transformed outputs based on outputs from this transformer
Like mergeEither
, but when both sides have a common output type.
This is a less-roundabout way of doing .mergeEither(right).map(_.merge)
.
The same order-of-operations rules apply as with mergeEither
, where this transformer "goes first" for each input.
Like mergeEither
, but when both sides have a common output type.
This is a less-roundabout way of doing .mergeEither(right).map(_.merge)
.
The same order-of-operations rules apply as with mergeEither
, where this transformer "goes first" for each input.
- Type parameters:
- In2
Contravariance-friendly version of
In
- Out2
Common output type between
this
andthat
- Value parameters:
- that
Another transformer
- Returns:
The merged transformer
Creates a new transformer which sends inputs to both this transformer and the right
transformer.
Whenever either this
or right
emit a value, that value will be emitted from the returned transformer,
wrapped as a Left
or Right
depending on which underlying transformer emitted it.
For each individual input, the resulting values emitted by this transformer will be emitted before
the resulting values emitted by the right
transformer.
Creates a new transformer which sends inputs to both this transformer and the right
transformer.
Whenever either this
or right
emit a value, that value will be emitted from the returned transformer,
wrapped as a Left
or Right
depending on which underlying transformer emitted it.
For each individual input, the resulting values emitted by this transformer will be emitted before
the resulting values emitted by the right
transformer.
- Type parameters:
- In2
Contravariance-friendly version of
In
- Out2
The output type of the
right
transformer
- Value parameters:
- right
Another transformer
- Returns:
The merged transformer
Convenience for this into Parser.first
Convenience for this into Parser.first
Convenience for this into Parser.toMap[K, V]
Convenience for this into Parser.toMap[K, V]
Creates a new transformer which folds outputs from this transformer into a "state" which is emitted each time.
Creates a new transformer which folds outputs from this transformer into a "state" which is emitted each time.
- Type parameters:
- Out2
The type of the scan "state"
- Value parameters:
- init
The initial "state"
- op
State update function; this is called for each
Out
emitted by this transformer, and the result is emitted by the combined transformer in addition to becoming the next "state"
- Returns:
The new transformer
Attach this transformer to the next
transformer, creating a single transformer that encapsulates the pair.
Values emitted from this transformer will be passed as inputs to the next
transformer,
and the resulting outputs from the next
transformer are emitted as outputs from the combined transformer.
Attach this transformer to the next
transformer, creating a single transformer that encapsulates the pair.
Values emitted from this transformer will be passed as inputs to the next
transformer,
and the resulting outputs from the next
transformer are emitted as outputs from the combined transformer.
Applies this transformer's logic to an iterator, returning a new Iterator which yields values
emitted by this transformer when run on the underlying itr
.
Applies this transformer's logic to an iterator, returning a new Iterator which yields values
emitted by this transformer when run on the underlying itr
.
- Value parameters:
- itr
An iterator
- Returns:
A wrapped version of
itr
, transformed via this transformer
Applies this transformer's logic to a Source, returning a new Source which yields values emitted by this transformer when run on the underlying iterator.
Applies this transformer's logic to a Source, returning a new Source which yields values emitted by this transformer when run on the underlying iterator.
- Value parameters:
- pos
Captures the call site for the top level SpacTraceElement
- source
A Source
- Returns:
A wrapped version of
source
, transformed via this transformer
Returns this transformer, but with less restricted In
/ Out
types.
Returns this transformer, but with less restricted In
/ Out
types.
- Type parameters:
- In2
A subtype of
In
- Out2
A supertype of
Out
- Returns:
This transformer (not a copy, it's actually literally
this
)
Alias for filter
, used under the hood by for-comprehensions
Alias for filter
, used under the hood by for-comprehensions
- Value parameters:
- predicate
The filtering function
- Returns:
The filtered transformer
Deprecated methods
- Deprecated
- Deprecated
- Deprecated