ArrayIndexContextMatcher

class ArrayIndexContextMatcher[A](debugName: String, f: IndexStart => Option[A]) extends ContextMatcher[JsonStackElem, A]
trait ContextMatcher[JsonStackElem, A]
class Object
trait Matchable
class Any

Value members

Concrete methods

def applyChained[B](stack: IndexedSeq[JsonStackElem], offset: Int, avail: Int, next: ContextMatcher[JsonStackElem, B]): Option[(A, B)]
override def toString: String
Definition Classes
Any

Inherited methods

def \[A1 >: A, B, R](next: ContextMatcher[JsonStackElem, B])(reduce: Aux[A1, B, R]): ContextMatcher[JsonStackElem, R]

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.

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.

Type Params
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 the reduce rule.

Value Params
next

A matcher which will be used to match the "inner" context

reduce

The TypeReduce rule to help omit Unit from the resulting context type

Returns

A matcher which delegates to this matcher first, then the next matcher for the remaining stack.

Inherited from
ContextMatcher
def apply(stack: IndexedSeq[JsonStackElem], 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 of A, the implementation must then pass the remaining elements of the stack to the next matcher, i.e. by calling next(stack, offset + numConsumed, avail - numConsumed).

The difference between this method and applyChained is the lack of the next parameter; in this method, the current matcher is assumed to be the end of the chain.

Value Params
avail

The number of elements available in the stack starting from the offset.

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)

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 and avail.

Returns

An option containing the successfully-matched context, or None.

Inherited from
ContextMatcher
def filter(p: A => Boolean): ContextMatcher[JsonStackElem, A]

Create a new ContextMatcher which takes the match result of this matcher and passes it through the validation function f. If f returns false, the match is unsuccessful.

Create a new ContextMatcher which takes the match result of this matcher and passes it through the validation function f. If f returns false, the match is unsuccessful.

Value Params
p

The filter predicate, i.e. the validation function

Returns

A new matcher with validated results

Inherited from
ContextMatcher
def flatMap[B](f: A => Option[B]): ContextMatcher[JsonStackElem, B]

Create a new ContextMatcher which takes the match result of this matcher and passes it through the combined transformation/validation function f. If f returns None, the match is unsuccessful; if f returns a Some, the value inside is the result of the match.

Create a new ContextMatcher which takes the match result of this matcher and passes it through the combined transformation/validation function f. If f returns None, the match is unsuccessful; if f returns a Some, the value inside is the result of the match.

Type Params
B

The transformed context type

Value Params
f

The transformation/validation function

Returns

A new matcher with transformed and validated results

Inherited from
ContextMatcher
def map[B](f: A => B): ContextMatcher[JsonStackElem, 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.

Type Params
B

The transformed context type

Value Params
f

The transformation function

Returns

A new matcher with transformed results

Inherited from
ContextMatcher
def or[A2 >: A](that: ContextMatcher[JsonStackElem, A2]): ContextMatcher[JsonStackElem, 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.

Type Params
A2

The resulting context type (common supertype between this matcher and that)

Value Params
that

The matcher which will be used as the fallback

Returns

A matcher that falls back to another matcher in case of failure

Inherited from
ContextMatcher
def |[A2 >: A](that: ContextMatcher[JsonStackElem, A2]): ContextMatcher[JsonStackElem, A2]

Operator version of or

Operator version of or

Inherited from
ContextMatcher