T - X - public class RecursiveMatcherInstance<T,X>
extends java.lang.Object
implements java.util.function.Function<T,java.util.Optional<X>>
| Constructor and Description |
|---|
RecursiveMatcherInstance() |
| Modifier and Type | Method and Description |
|---|---|
java.util.Optional<X> |
apply(java.lang.Object t) |
java.util.function.Function<T,java.util.stream.Stream<X>> |
asStreamFunction() |
java.util.function.Function<T,X> |
asUnwrappedFunction() |
Cases<T,X,TypedFunction<T,X>> |
cases() |
java.util.Optional<X> |
match(java.lang.Object... t)
Aggregates supplied objects into a List for matching against
|
java.util.Optional<X> |
match(java.lang.Object t) |
<R> java.util.stream.Stream<R> |
matchFromStream(java.util.stream.Stream s)
Each input element can generated a single matched value
|
<R> java.util.stream.Stream<R> |
matchMany(java.lang.Object t) |
<R> java.util.stream.Stream<R> |
matchManyFromStream(java.util.stream.Stream s)
Each input element can generated multiple matched values
|
java.util.Optional<X> |
unapply(com.aol.cyclops.objects.Decomposable decomposableObject)
Immediately decompose the supplied parameter and pass it to the PatternMatcher for matching
|
CheckTypeAndValues<X> |
when()
Create a builder for Matching on Case classes.
|
<T,R> CheckTypeAndValues.AndMembersMatchBuilder<T,R> |
whenIsType(java.lang.Class<T> t,
java.util.function.Function<T,R> f) |
<T,R> CheckTypeAndValues.AndMembersMatchBuilder<T,R> |
whenIsType(TypedFunction<T,R> a)
Build a Case where we will check if user input matches the Type of the input params on the ActionWithReturn instance supplied
If it does, the ActionWithReturn will be executed (applied) to get the result of the Match.
|
public final CheckTypeAndValues<X> when()
\@Value final class CaseClass implements Decomposable { int field1; String field2;}
Use with static imports from the Predicates class to get wildcards via '__' or ANY()
And to apply nested / recursive matching via Predicates.type( ).with ( )
Match disaggregated elements by type, value, JDK 8 Predicate or Hamcrest Matcherpublic final <T,R> CheckTypeAndValues.AndMembersMatchBuilder<T,R> whenIsType(TypedFunction<T,R> a)
a - Action from which the Predicate (by param type) and Function will be extracted to build a Pattern Matching caseExtractors.decompose(),
Extractors.registerDecompositionFunction(java.lang.Class<T>, java.util.function.Function<T, R>)public final <T,R> CheckTypeAndValues.AndMembersMatchBuilder<T,R> whenIsType(java.lang.Class<T> t, java.util.function.Function<T,R> f)
public java.util.function.Function<T,X> asUnwrappedFunction()
public java.util.function.Function<T,java.util.stream.Stream<X>> asStreamFunction()
public java.util.Optional<X> apply(java.lang.Object t)
public <R> java.util.stream.Stream<R> matchManyFromStream(java.util.stream.Stream s)
s - Stream of data to match against (input to matcher)public <R> java.util.stream.Stream<R> matchMany(java.lang.Object t)
t - input to match against - can generate multiple valuespublic <R> java.util.stream.Stream<R> matchFromStream(java.util.stream.Stream s)
s - Stream of data to match against (input to matcher)public java.util.Optional<X> match(java.lang.Object... t)
assertThat(Cases.of(Case.of((List<Integer> input) -> input.size()==3, input -> "hello"),
Case.of((List<Integer> input) -> input.size()==2, input -> "ignored"),
Case.of((List<Integer> input) -> input.size()==1, input -> "world")).match(1,2,3).get(),is("hello"));
t - Array to match onpublic java.util.Optional<X> match(java.lang.Object t)
t - Object to match against supplied casespublic java.util.Optional<X> unapply(com.aol.cyclops.objects.Decomposable decomposableObject)
decomposableObject - Object to match on after decomposed via unapply method