case class Chained[Elem, H, T, F](headM: ContextMatcher[Elem, H], tailM: ContextMatcher[Elem, T])(implicit reduce: Aux[H, T, F]) extends ContextMatcher[Elem, F] with Product with Serializable
Matcher implementation for headM \ tailM
- H
The head result type
- T
The tail result type
- F
The combined result type
- headM
The first matcher in the chain
- tailM
The next matcher in the chain
- reduce
The
TypeReduce
rule to combine the head and tail result types
- Source
- ContextMatcher.scala
- Alphabetic
- By Inheritance
- Chained
- Serializable
- Product
- Equals
- ContextMatcher
- AnyRef
- Any
- by any2stringadd
- by StringFormat
- by Ensuring
- by ArrowAssoc
- Hide All
- Show All
- Public
- Protected
Instance Constructors
- new Chained(headM: ContextMatcher[Elem, H], tailM: ContextMatcher[Elem, T])(implicit reduce: Aux[H, T, F])
- headM
The first matcher in the chain
- tailM
The next matcher in the chain
- reduce
The
TypeReduce
rule to combine the head and tail result types
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): (Chained[Elem, H, T, F], B)
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- def \[A1 >: F, B, R](next: ContextMatcher[Elem, B])(implicit reduce: Aux[A1, B, R]): ContextMatcher[Elem, R]
Create a new matcher by forming a chain with this matcher at the front, and the
next
matcher at the back.Create a new matcher by forming a chain with this matcher at the front, and the
next
matcher at the back. In other words, a matcher for a context within another context.- A1
To satisfy covariance on A
- B
The
next
matcher's context type- R
The "reduced" content type, derived from the tuple type
(A, B)
based on thereduce
rule.- next
A matcher which will be used to match the "inner" context
- reduce
The
TypeReduce
rule to help omitUnit
from the resulting context type- returns
A matcher which delegates to
this
matcher first, then thenext
matcher for the remaining stack.
- Definition Classes
- ContextMatcher
- def apply(stack: IndexedSeq[Elem], offset: Int, avail: Int): Option[F]
The main context match method.
The main context match method.
Inspects the elements in the XML "tag stack", which is essentially a
List[StartElement]
, but for performance reasons is represented as an array with an "offset" index and a number of available elements from that offset. If the elements correspond to a context value ofA
, the implementation must then pass the remaining elements of the stack to thenext
matcher, i.e. by callingnext(stack, offset + numConsumed, avail - numConsumed)
.The difference between this method and
applyChained
is the lack of thenext
parameter; in this method, the current matcher is assumed to be the end of the chain.- stack
A reference to the complete XML "tag stack". Note that the responsibility of this method is limited to a *slice* of this value, as defined by
offset
andavail
.- offset
The index of the first element to be considered by the matching logic. From this method's point of view, the "first" element in the stack is actually at
stack(offset)
- avail
The number of elements available in the
stack
starting from theoffset
.- returns
An option containing the successfully-matched context, or
None
.
- Definition Classes
- Chained → ContextMatcher
- def applyChained[N](stack: IndexedSeq[Elem], offset: Int, avail: Int, next: ContextMatcher[Elem, N]): Option[(F, N)]
The underlying context match method.
The underlying context match method.
Inspects the elements in the XML "tag stack", which is essentially a
List[StartElement]
, but for performance reasons is represented as an array with an "offset" index and a number of available elements from that offset. If the elements correspond to a context value ofA
, the implementation must then pass the remaining elements of the stack to thenext
matcher, i.e. by callingnext(stack, offset + numConsumed, avail - numConsumed)
.The
next
matcher is necessary in order to support non-greedy matchers, e.g.ContextMatcher.variableLength
, a.k.a.**
. Without a reference to thenext
matcher in the chain, matcher implementations would be forced to pick a fixed number of elements for matching, never knowing that the overall match could have succeeded if they had consumed some additional elements.- stack
A reference to the complete XML "tag stack". Note that the responsibility of this method is limited to a *slice* of this value, as defined by
offset
andavail
.- offset
The index of the first element to be considered by the matching logic. From this method's point of view, the "first" element in the stack is actually at
stack(offset)
- avail
The number of elements available in the
stack
starting from theoffset
.- next
The next matcher in the chain.
- returns
If the match succeeded, and the
next
match succeded, an Option containing a tuple of both match results. If the match failed, or if thenext
match failed,None
.
- Definition Classes
- Chained → ContextMatcher
- 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 ensuring(cond: (Chained[Elem, H, T, F]) => Boolean, msg: => Any): Chained[Elem, H, T, F]
- def ensuring(cond: (Chained[Elem, H, T, F]) => Boolean): Chained[Elem, H, T, F]
- def ensuring(cond: Boolean, msg: => Any): Chained[Elem, H, T, F]
- def ensuring(cond: Boolean): Chained[Elem, H, T, F]
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def filter(p: (F) => Boolean): ContextMatcher[Elem, F]
Create a new ContextMatcher which takes the match result of this matcher and passes it through the validation function
f
.Create a new ContextMatcher which takes the match result of this matcher and passes it through the validation function
f
. Iff
returnsfalse
, the match is unsuccessful.- p
The filter predicate, i.e. the validation function
- returns
A new matcher with validated results
- Definition Classes
- ContextMatcher
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- def flatMap[B](f: (F) => Option[B]): ContextMatcher[Elem, B]
Create a new ContextMatcher which takes the match result of this matcher and passes it through the combined transformation/validation function
f
.Create a new ContextMatcher which takes the match result of this matcher and passes it through the combined transformation/validation function
f
. Iff
returnsNone
, the match is unsuccessful; iff
returns aSome
, the value inside is the result of the match.- B
The transformed context type
- f
The transformation/validation function
- returns
A new matcher with transformed and validated results
- Definition Classes
- ContextMatcher
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- val headM: ContextMatcher[Elem, H]
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- def map[B](f: (F) => B): ContextMatcher[Elem, B]
Create a new ContextMatcher which takes the match result of this matcher and passes it through the transformation function
f
.Create a new ContextMatcher which takes the match result of this matcher and passes it through the transformation function
f
.- B
The transformed context type
- f
The transformation function
- returns
A new matcher with transformed results
- Definition Classes
- ContextMatcher
- 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 or[A2 >: F](that: ContextMatcher[Elem, A2]): ContextMatcher[Elem, A2]
Create a new ContextMatcher which will fall back to a second matcher in the event that this matcher fails to match a context.
Create a new ContextMatcher which will fall back to a second matcher in the event that this matcher fails to match a context.
- A2
The resulting context type (common supertype between this matcher and
that
)- that
The matcher which will be used as the fallback
- returns
A matcher that falls back to another matcher in case of failure
- Definition Classes
- ContextMatcher
- def productElementNames: Iterator[String]
- Definition Classes
- Product
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- val tailM: ContextMatcher[Elem, T]
- def toString(): String
- Definition Classes
- Chained → 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()
- def |[A2 >: F](that: ContextMatcher[Elem, A2]): ContextMatcher[Elem, A2]
Operator version of
or
Operator version of
or
- Definition Classes
- ContextMatcher
Deprecated Value Members
- def formatted(fmtstr: String): String
- Implicit
- This member is added by an implicit conversion from Chained[Elem, H, T, F] toStringFormat[Chained[Elem, H, T, F]] 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): (Chained[Elem, H, T, F], B)
- Implicit
- This member is added by an implicit conversion from Chained[Elem, H, T, F] toArrowAssoc[Chained[Elem, H, T, F]] 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.