Default

io.dylemma.spac.SingleItemContextMatcher.Default
class Default[Item, A](f: Item => Option[A]) extends SingleItemContextMatcher[Item, A]

SingleElementContextMatcher that delegates to the given function f to perform its match.

Type parameters

A

The matched context type

Value parameters

f

A function that performs the context match on a single element

Attributes

Graph
Supertypes
trait SingleItemContextMatcher[Item, A]
trait ContextMatcher[Item, A]
class Object
trait Matchable
class Any

Members list

Value members

Concrete methods

def applyElem(elem: Item): Option[A]

The matching operation for single-element matchers.

The matching operation for single-element matchers.

Value parameters

elem

The first element in the XML tag stack

Attributes

Returns

Some(context) for a successful match, None otherwise

Inherited methods

def &[A1 >: A, B, R](that: SingleItemContextMatcher[Item, B])(implicit reduce: Aux[A1, B, R]): SingleItemContextMatcher[Item, R]

Operator version of and

Operator version of and

Attributes

Inherited from:
SingleItemContextMatcher
def \[A1 >: A, B, R](next: ContextMatcher[Item, 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. 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 parameters

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 parameters

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

Attributes

Returns

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

Inherited from:
ContextMatcher
def and[A1 >: A, B, R](that: SingleItemContextMatcher[Item, B])(implicit reduce: Aux[A1, B, R]): SingleItemContextMatcher[Item, R]

Creates a new single-element matcher which combines the results of both this matcher and that matcher. Both this and that will operate on the first element of the stack (as opposed to Chained matchers).

Creates a new single-element matcher which combines the results of both this matcher and that matcher. Both this and that will operate on the first element of the stack (as opposed to Chained matchers).

Type parameters

A1

To satisfy covariance on A

B

The other matcher's result type

R

The combined result type

Value parameters

reduce

The TypeReduce rule for combining the two match results

that

The matcher to combine

Attributes

Returns

A new matcher which combines the results of this and that

Inherited from:
SingleItemContextMatcher
def apply(stack: IndexedSeq[Item], 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 parameters

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.

Attributes

Returns

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

Inherited from:
ContextMatcher
def applyChained[B](stack: IndexedSeq[Item], offset: Int, avail: Int, next: ContextMatcher[Item, 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 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 next matcher is necessary in order to support non-greedy matchers, e.g. ContextMatcher.variableLength, a.k.a. **. Without a reference to the next 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.

Type parameters

B

The next matcher's context type

Value parameters

avail

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

next

The next matcher in the chain.

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.

Attributes

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 the next match failed, None.

Inherited from:
SingleItemContextMatcher
override def filter(p: A => Boolean): SingleItemContextMatcher[Item, 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 parameters

p

The filter predicate, i.e. the validation function

Attributes

Returns

A new matcher with validated results

Definition Classes
Inherited from:
SingleItemContextMatcher
override def flatMap[B](f: A => Option[B]): SingleItemContextMatcher[Item, 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 parameters

B

The transformed context type

Value parameters

f

The transformation/validation function

Attributes

Returns

A new matcher with transformed and validated results

Definition Classes
Inherited from:
SingleItemContextMatcher
override def map[B](f: A => B): SingleItemContextMatcher[Item, 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 parameters

B

The transformed context type

Value parameters

f

The transformation function

Attributes

Returns

A new matcher with transformed results

Definition Classes
Inherited from:
SingleItemContextMatcher
def or[A2 >: A](that: SingleItemContextMatcher[Item, A2]): SingleItemContextMatcher[Item, A2]

Specialization of the default or method, specifically for SingleElementContextMatchers

Specialization of the default or method, specifically for SingleElementContextMatchers

Attributes

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

Type parameters

A2

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

Value parameters

that

The matcher which will be used as the fallback

Attributes

Returns

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

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

Operator version of or, specialized for SingleElementContextMatchers

Operator version of or, specialized for SingleElementContextMatchers

Attributes

Inherited from:
SingleItemContextMatcher
def |[A2 >: A](that: ContextMatcher[Item, A2]): ContextMatcher[Elem, A2]

Operator version of or

Operator version of or

Attributes

Inherited from:
ContextMatcher