trait ContextMatcher[Elem, +A] extends AnyRef
An object responsible for inspecting a stack of StartElement
events and determining if they correspond
to some "context" value of type A
.
ContextMatcher
s play a primary role in splitting an XML event stream into "substreams", i.e. each
substream is defined as the series of consecutive events during which the XML tag stack matches a context.
ContextMatcher
s are intended to be transformed and combined with each other in order to build up
more complex matching functionality. See also: SingleElementContextMatcher
, which contains additional
combination methods and some specialized transformation methods.
- A
The type of the matched context.
- Source
- ContextMatcher.scala
- Alphabetic
- By Inheritance
- ContextMatcher
- AnyRef
- Any
- by any2stringadd
- by StringFormat
- by Ensuring
- by ArrowAssoc
- Hide All
- Show All
- Public
- Protected
Abstract Value Members
- abstract def applyChained[B](stack: IndexedSeq[Elem], offset: Int, avail: Int, next: ContextMatcher[Elem, B]): Option[(A, B)]
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.- B
The
next
matcher's context type- 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
.
Concrete Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- def +(other: String): String
- Implicit
- This member is added by an implicit conversion from ContextMatcher[Elem, A] toany2stringadd[ContextMatcher[Elem, A]] performed by method any2stringadd in scala.Predef.
- Definition Classes
- any2stringadd
- def ->[B](y: B): (ContextMatcher[Elem, A], B)
- Implicit
- This member is added by an implicit conversion from ContextMatcher[Elem, A] toArrowAssoc[ContextMatcher[Elem, A]] performed by method ArrowAssoc in scala.Predef.
- Definition Classes
- ArrowAssoc
- Annotations
- @inline()
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- def \[A1 >: A, 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.
- def apply(stack: IndexedSeq[Elem], offset: Int, avail: Int): Option[A]
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
.
- 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: (ContextMatcher[Elem, A]) => Boolean, msg: => Any): ContextMatcher[Elem, A]
- Implicit
- This member is added by an implicit conversion from ContextMatcher[Elem, A] toEnsuring[ContextMatcher[Elem, A]] performed by method Ensuring in scala.Predef.
- Definition Classes
- Ensuring
- def ensuring(cond: (ContextMatcher[Elem, A]) => Boolean): ContextMatcher[Elem, A]
- Implicit
- This member is added by an implicit conversion from ContextMatcher[Elem, A] toEnsuring[ContextMatcher[Elem, A]] performed by method Ensuring in scala.Predef.
- Definition Classes
- Ensuring
- def ensuring(cond: Boolean, msg: => Any): ContextMatcher[Elem, A]
- Implicit
- This member is added by an implicit conversion from ContextMatcher[Elem, A] toEnsuring[ContextMatcher[Elem, A]] performed by method Ensuring in scala.Predef.
- Definition Classes
- Ensuring
- def ensuring(cond: Boolean): ContextMatcher[Elem, A]
- Implicit
- This member is added by an implicit conversion from ContextMatcher[Elem, A] toEnsuring[ContextMatcher[Elem, A]] performed by method Ensuring in scala.Predef.
- Definition Classes
- Ensuring
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def filter(p: (A) => Boolean): ContextMatcher[Elem, A]
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
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- def flatMap[B](f: (A) => 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
- 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
- def map[B](f: (A) => 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
- 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 >: A](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
- 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()
- def |[A2 >: A](that: ContextMatcher[Elem, A2]): ContextMatcher[Elem, A2]
Operator version of
or
Deprecated Value Members
- def formatted(fmtstr: String): String
- Implicit
- This member is added by an implicit conversion from ContextMatcher[Elem, A] toStringFormat[ContextMatcher[Elem, A]] 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): (ContextMatcher[Elem, A], B)
- Implicit
- This member is added by an implicit conversion from ContextMatcher[Elem, A] toArrowAssoc[ContextMatcher[Elem, A]] 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.