trait Handler[-In, +Out] extends AnyRef
An internally-mutable representation of a Parser, which reacts to inputs from a data stream and eventually produces a result.
- Source
- Parser.scala
- Alphabetic
- By Inheritance
- Handler
- AnyRef
- Any
- by any2stringadd
- by StringFormat
- by Ensuring
- by ArrowAssoc
- Hide All
- Show All
- Public
- Protected
Abstract Value Members
- abstract def finish(): Out
Signal the end of the data stream to this handler, forcing it to generate a result.
Signal the end of the data stream to this handler, forcing it to generate a result. Handlers may throw exceptions in response to this, such as a handler which wants the first event from an empty stream.
Further calls to
step
orfinish
after the first call tofinish
will result in undefined behavior. The general assumption is that a handler should be discarded after itsfinish
method is called.- returns
the final result of this parser
- abstract def step(in: In): Either[Out, Handler[In, Out]]
Advance the state of this handler by accepting a single input of type
In
.Advance the state of this handler by accepting a single input of type
In
. If doing so would cause this parser to complete, return aLeft
containing the output. Otherwise, return aRight
containing the next parser state.Handlers are assumed to be internally-mutable, so it is acceptable to simply update some internal state and then return
Right(this)
, although in some cases it will be desirable to return a separate handler entirely.- in
A single input event from a data stream
- returns
If the input would finish the parser, return a
Left
containing the result. Otherwise, return aRight
containing a Handler which represents the next parsing state. The handler in aRight
may be this handler, or a completely separate one.
Concrete Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- def +(other: String): String
- def ->[B](y: B): (Handler[In, Out], B)
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def asTopLevelHandler(caller: SpacTraceElement): Handler[In, Out]
Wraps this handler as a "top level" handler, which will inject a SpacTraceElement (representing the current input or the "EOF" signal) to any exception is thrown by this handler when calling its
step
orfinish
methods.Wraps this handler as a "top level" handler, which will inject a SpacTraceElement (representing the current input or the "EOF" signal) to any exception is thrown by this handler when calling its
step
orfinish
methods.Used internally by
Parser
'sparse
methods. - def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- def ensuring(cond: (Handler[In, Out]) => Boolean, msg: => Any): Handler[In, Out]
- def ensuring(cond: (Handler[In, Out]) => Boolean): Handler[In, Out]
- def ensuring(cond: Boolean, msg: => Any): Handler[In, Out]
- def ensuring(cond: Boolean): Handler[In, Out]
- 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])
- 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 stepMany[C[_], In2 <: In](inputs: C[In2])(implicit C: Unconsable[C]): Either[(Out, C[In2]), Handler[In, Out]]
Convenience function to call
step
on a sequence of inputs all at once.Convenience function to call
step
on a sequence of inputs all at once. If thestep
returns a result, this method will return aLeft
containing that result and the remainder of theinputs
that were not consumed. If theinputs
run out before the handler returns a result from astep
, this method will return aRight
containing the latest state of the handler. This method will not call the handler'sfinish()
.In general, you won't call this method directly. Instead, use one of the Parser trait's
parse
methods.- C
An
Unconsable
collection, i.e.List
orcats.data.Chain
- In2
Subtype of
In
, orIn
(to satisfy contravariance)- inputs
A sequence of inputs
- C
Evidence that the
inputs
has ahead/tail
split operation- returns
Either the handler's result paired with the remaining inputs, or the new handler state
- 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()
Deprecated Value Members
- def formatted(fmtstr: String): String
- Implicit
- This member is added by an implicit conversion from Handler[In, Out] toStringFormat[Handler[In, Out]] performed by method StringFormat in scala.Predef.
- Definition Classes
- StringFormat
- Annotations
- @deprecated @inline()
- Deprecated
(Since version 2.12.16) Use
formatString.format(value)
instead ofvalue.formatted(formatString)
, or use thef""
string interpolator. In Java 15 and later,formatted
resolves to the new method in String which has reversed parameters.
- def →[B](y: B): (Handler[In, Out], B)
- Implicit
- This member is added by an implicit conversion from Handler[In, Out] toArrowAssoc[Handler[In, Out]] performed by method ArrowAssoc in scala.Predef.
- Definition Classes
- ArrowAssoc
- Annotations
- @deprecated
- Deprecated
(Since version 2.13.0) Use
->
instead. If you still wish to display it as one character, consider using a font with programming ligatures such as Fira Code.