public class PatternMatcher
extends java.lang.Object
implements java.util.function.Function
| Constructor and Description |
|---|
PatternMatcher() |
| Modifier and Type | Method and Description |
|---|---|
java.util.Optional<java.lang.Object> |
apply(java.lang.Object t) |
<T,X> java.util.function.Function<T,java.util.stream.Stream<X>> |
asStreamFunction() |
<T,X> java.util.function.Function<T,X> |
asUnwrappedFunction() |
<R,V,T> PatternMatcher |
caseOf(Extractor<T,R> ext,
java.util.function.Predicate<R> match,
Action<V> a) |
<V> PatternMatcher |
caseOf(java.util.function.Predicate<V> match,
Action<V> a) |
<V> PatternMatcher |
caseOfMany(Action<java.util.List<V>> a,
java.util.function.Predicate<V>... predicates)
Match against an iterable using supplied predicates.
|
<T,R,V,V1> PatternMatcher |
caseOfPredicates(Two<java.util.function.Predicate<V>,java.util.function.Predicate<V1>> predicates,
Action<R> a,
Extractor<T,R> extractor)
Run both predicates in the supplied tuple against the first two elements of a supplied iterable for matching
|
<R,V,T> PatternMatcher |
caseOfThenExtract(java.util.function.Predicate<V> match,
Action<R> a,
Extractor<T,R> extractor) |
<T,R> PatternMatcher |
caseOfTuple(java.lang.Iterable predicates,
Action<R> a,
Extractor<T,R> extractor)
Match against a tuple of predicates (or prototype values, or hamcrest matchers).
|
<V,X> PatternMatcher |
caseOfType(Action<V> a) |
<R,T,X,V> PatternMatcher |
caseOfType(Extractor<T,R> ext,
Action<V> a)
Match by type specified in Extractor as input, if user provided type via match, matches the Action (Action extends Consumer)
will be executed and provided with the result of the extraction.
|
<R,V,T,X> PatternMatcher |
caseOfValue(R value,
Extractor<T,R> extractor,
Action<V> a)
Match by specified value against the extracted value from user input.
|
<V,X> PatternMatcher |
caseOfValue(V value,
Action<V> a)
Match by specified value and then execute supplied action.
|
<R,V,T,X> PatternMatcher |
inCaseOf(Extractor<T,R> ext,
java.util.function.Predicate<V> match,
ActionWithReturn<V,X> a) |
<V,X> PatternMatcher |
inCaseOf(java.util.function.Predicate<V> match,
ActionWithReturn<V,X> a) |
<V,X> PatternMatcher |
inCaseOfMany(ActionWithReturn<java.util.List<V>,X> a,
java.util.function.Predicate<V>... predicates) |
<T,V,X> PatternMatcher |
inCaseOfManyType(java.util.function.Predicate master,
ActionWithReturn<T,X> a,
java.util.function.Predicate<V>... predicates) |
<T,R,V,V1,X> |
inCaseOfPredicates(Two<java.util.function.Predicate<V>,java.util.function.Predicate<V1>> predicates,
ActionWithReturn<R,X> a,
Extractor<T,R> extractor) |
<T,R,X> PatternMatcher |
inCaseOfStream(java.util.stream.Stream<java.util.function.Predicate> predicates,
ActionWithReturn<R,X> a,
Extractor<T,R> extractor) |
<R,T,X> PatternMatcher |
inCaseOfThenExtract(java.util.function.Predicate<T> match,
ActionWithReturn<R,X> a,
Extractor<T,R> extractor) |
<V,X> PatternMatcher |
inCaseOfType(ActionWithReturn<V,X> a) |
<R,V,T,X> PatternMatcher |
inCaseOfType(Extractor<T,R> ext,
ActionWithReturn<V,X> a) |
<V,X> PatternMatcher |
inCaseOfValue(V value,
ActionWithReturn<V,X> a) |
<R,V,T,X> PatternMatcher |
inCaseOfValue(V value,
Extractor<T,R> ext,
ActionWithReturn<V,X> a) |
<R,V,T,X> PatternMatcher |
inMatchOf(Extractor<T,R> ext,
org.hamcrest.Matcher<V> match,
ActionWithReturn<V,X> a) |
<V,X> PatternMatcher |
inMatchOf(org.hamcrest.Matcher<V> match,
ActionWithReturn<V,X> a)
hamcrest
|
<V,X> PatternMatcher |
inMatchOfMany(ActionWithReturn<java.util.List<V>,X> a,
org.hamcrest.Matcher<V>... predicates) |
<T,R,V,V1,X> |
inMatchOfMatchers(Two<org.hamcrest.Matcher<V>,org.hamcrest.Matcher<V1>> predicates,
ActionWithReturn<R,X> a,
Extractor<T,R> extractor) |
<T,R,X> PatternMatcher |
inMatchOfSeq(java.util.stream.Stream<org.hamcrest.Matcher> predicates,
ActionWithReturn<R,X> a,
Extractor<T,R> extractor) |
<R,T,X> PatternMatcher |
inMatchOfThenExtract(org.hamcrest.Matcher<T> match,
ActionWithReturn<R,X> a,
Extractor<T,R> extractor) |
<R> java.util.Optional<R> |
match(java.lang.Object... t)
Aggregates supplied objects into a List for matching against
|
<R> java.util.Optional<R> |
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
|
<R,V,T> PatternMatcher |
matchOf(Extractor<T,R> ext,
org.hamcrest.Matcher<R> match,
Action<V> a) |
<V> PatternMatcher |
matchOf(org.hamcrest.Matcher<V> match,
Action<V> a) |
<V> PatternMatcher |
matchOfMany(Action<java.util.List<V>> a,
org.hamcrest.Matcher<V>... predicates)
Match against an iterable using supplied hamcrest matchers.
|
<T,R,V,V1> PatternMatcher |
matchOfMatchers(Two<org.hamcrest.Matcher<V>,org.hamcrest.Matcher<V1>> predicates,
Action<R> a,
Extractor<T,R> extractor)
Run both matchers in the supplied tuple against the first two elements of a supplied iterable for matching
|
<R,V,T> PatternMatcher |
matchOfThenExtract(org.hamcrest.Matcher<V> match,
Action<V> a,
Extractor<T,R> extractor) |
<T,R> PatternMatcher |
matchOfTuple(java.lang.Iterable predicates,
Action<R> a,
Extractor<T,R> extractor) |
<V,X> PatternMatcher |
selectFrom(java.util.stream.Stream<Two<java.util.function.Predicate<V>,java.util.function.Function<V,X>>> stream) |
<V,X> PatternMatcher |
selectFromChain(java.util.stream.Stream<? extends ChainOfResponsibility<V,X>> stream) |
<R> java.util.Optional<R> |
unapply(com.aol.cyclops.lambda.api.Decomposable t)
Decomposes the supplied input via it's unapply method
Provides a List to the Matcher of values to match on
|
public <T,X> java.util.function.Function<T,X> asUnwrappedFunction()
public <T,X> java.util.function.Function<T,java.util.stream.Stream<X>> asStreamFunction()
public java.util.Optional<java.lang.Object> apply(java.lang.Object t)
apply in interface java.util.function.Functionpublic <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 <R> java.util.Optional<R> match(java.lang.Object... t)
t - Array to match onpublic <R> java.util.Optional<R> unapply(com.aol.cyclops.lambda.api.Decomposable t)
t - Object to decompose and match onpublic <R> java.util.Optional<R> match(java.lang.Object t)
t - Object to match against supplied casespublic <R,T,X,V> PatternMatcher caseOfType(Extractor<T,R> ext, Action<V> a)
new PatternMatcher().caseOfType(Person::getAge, (Integer i) -> value = i)
.match(new Person(100));
This case will be triggered and the action will recieve the age of the Person (100).ext - will be used to extract a value from the user input to the matcher.a - A consumer that will accept value from the extractor if user input matches the extractor input typepublic <R,V,T,X> PatternMatcher caseOfValue(R value, Extractor<T,R> extractor, Action<V> a)
new PatternMatcher.caseOfValue(100, Person::getAge, (Integer i) -> value = i)
.match(new Person(100));
This case will be triggered and the users age will be extracted, it matches 100 so the action will then be triggered.value - Value to match against (via equals method)extractor - will be used to extract a value from the user input to the matcher.a - A consumer that will accept value from the extractor if user input matches the extractor input typepublic <V,X> PatternMatcher caseOfValue(V value, Action<V> a)
new PatternMatcher.caseOfValue(100, (Person p) -> value = p.getAge())
.match(new Person(100));
value - to compare against, if Objects.equals(value,matching-input) is true, action is triggereda - Action to be consumed (no return value)@SafeVarargs public final <V> PatternMatcher caseOfMany(Action<java.util.List<V>> a, java.util.function.Predicate<V>... predicates)
new PatternMatcher()
.caseOfMany((List<String> list) -> language = list.get(1) ,
v -> v.equals("-l") || v.equals("---lang"),v->true)
.match(asList("-l","java"));
assertThat(language,is("java"));
a - Action to execute if case passespredicates - To match against each sequential element in the iterable@SafeVarargs public final <V> PatternMatcher matchOfMany(Action<java.util.List<V>> a, org.hamcrest.Matcher<V>... predicates)
new PatternMatcher()
.matchOfMany( (List<String> list) -> language = list.get(1) ,
equalTo("-l"),any(String.class))
.match(asList("-l","java"));
assertThat(language,is("java"));
a - Action to execute if case passespredicates - To match against each sequential element in the iterablepublic <T,R,V,V1> PatternMatcher matchOfMatchers(Two<org.hamcrest.Matcher<V>,org.hamcrest.Matcher<V1>> predicates, Action<R> a, Extractor<T,R> extractor)
new PatternMatcher()
.matchOfMatchers(tuple( equalTo("-l"),
anything()),
lang -> language = lang,Extractors.<String>at(1) )
.match(tuple("-l","java"));
assertThat(language,is("java"));
predicates - Tuple of 2 hamcrest matchersa - Action to be triggered on successful match, will receive data via the extractorextractor - Extractor to extract data out of incoming iterable after matchers have matchedpublic <T,R,V,V1> PatternMatcher caseOfPredicates(Two<java.util.function.Predicate<V>,java.util.function.Predicate<V1>> predicates, Action<R> a, Extractor<T,R> extractor)
new PatternMatcher()
.caseOfPredicates(tuple( v -> v.equals("-l") || v.equals("---lang"),
v->true),
lang -> language =lang,Extractors.<String>at(1) )
.match(tuple("-l","java"));
assertThat(language,is("java"));
predicates - Tuple of 2 predicatesa - Action to be triggered on successful match, will receive data via the extractorextractor - Extractor to extract data out of incoming iterable after predicates have matchedpublic <T,R> PatternMatcher caseOfTuple(java.lang.Iterable predicates, Action<R> a, Extractor<T,R> extractor)
new PatternMatcher()
.caseOfTuple(tuple(p( v -> v.equals("-l") || v.equals("---lang")),
p(v->true)),
lang -> language =lang,Extractors.<String>at(1) )
.match(tuple("-l","java"));
assertThat(language,is("java"));
predicates - Predicates to match witha - Action triggered if predicates holdextractor - public <T,R> PatternMatcher matchOfTuple(java.lang.Iterable predicates, Action<R> a, Extractor<T,R> extractor)
public <V,X> PatternMatcher selectFromChain(java.util.stream.Stream<? extends ChainOfResponsibility<V,X>> stream)
public <V,X> PatternMatcher selectFrom(java.util.stream.Stream<Two<java.util.function.Predicate<V>,java.util.function.Function<V,X>>> stream)
public <T,V,X> PatternMatcher inCaseOfManyType(java.util.function.Predicate master, ActionWithReturn<T,X> a, java.util.function.Predicate<V>... predicates)
public <V,X> PatternMatcher inCaseOfMany(ActionWithReturn<java.util.List<V>,X> a, java.util.function.Predicate<V>... predicates)
public <V,X> PatternMatcher inMatchOfMany(ActionWithReturn<java.util.List<V>,X> a, org.hamcrest.Matcher<V>... predicates)
public <T,R,V,V1,X> PatternMatcher inMatchOfMatchers(Two<org.hamcrest.Matcher<V>,org.hamcrest.Matcher<V1>> predicates, ActionWithReturn<R,X> a, Extractor<T,R> extractor)
public <T,R,V,V1,X> PatternMatcher inCaseOfPredicates(Two<java.util.function.Predicate<V>,java.util.function.Predicate<V1>> predicates, ActionWithReturn<R,X> a, Extractor<T,R> extractor)
public <T,R,X> PatternMatcher inCaseOfStream(java.util.stream.Stream<java.util.function.Predicate> predicates, ActionWithReturn<R,X> a, Extractor<T,R> extractor)
public <T,R,X> PatternMatcher inMatchOfSeq(java.util.stream.Stream<org.hamcrest.Matcher> predicates, ActionWithReturn<R,X> a, Extractor<T,R> extractor)
public <V,X> PatternMatcher caseOfType(Action<V> a)
public <V> PatternMatcher matchOf(org.hamcrest.Matcher<V> match, Action<V> a)
public <V> PatternMatcher caseOf(java.util.function.Predicate<V> match, Action<V> a)
public <R,V,T> PatternMatcher caseOfThenExtract(java.util.function.Predicate<V> match, Action<R> a, Extractor<T,R> extractor)
public <R,V,T> PatternMatcher matchOfThenExtract(org.hamcrest.Matcher<V> match, Action<V> a, Extractor<T,R> extractor)
public <R,V,T> PatternMatcher caseOf(Extractor<T,R> ext, java.util.function.Predicate<R> match, Action<V> a)
public <R,V,T> PatternMatcher matchOf(Extractor<T,R> ext, org.hamcrest.Matcher<R> match, Action<V> a)
public <V,X> PatternMatcher inCaseOfValue(V value, ActionWithReturn<V,X> a)
public <V,X> PatternMatcher inCaseOfType(ActionWithReturn<V,X> a)
public <V,X> PatternMatcher inCaseOf(java.util.function.Predicate<V> match, ActionWithReturn<V,X> a)
public <R,T,X> PatternMatcher inCaseOfThenExtract(java.util.function.Predicate<T> match, ActionWithReturn<R,X> a, Extractor<T,R> extractor)
public <R,V,T,X> PatternMatcher inCaseOf(Extractor<T,R> ext, java.util.function.Predicate<V> match, ActionWithReturn<V,X> a)
public <R,V,T,X> PatternMatcher inCaseOfType(Extractor<T,R> ext, ActionWithReturn<V,X> a)
public <R,V,T,X> PatternMatcher inCaseOfValue(V value, Extractor<T,R> ext, ActionWithReturn<V,X> a)
public <V,X> PatternMatcher inMatchOf(org.hamcrest.Matcher<V> match, ActionWithReturn<V,X> a)
public <R,T,X> PatternMatcher inMatchOfThenExtract(org.hamcrest.Matcher<T> match, ActionWithReturn<R,X> a, Extractor<T,R> extractor)
public <R,V,T,X> PatternMatcher inMatchOf(Extractor<T,R> ext, org.hamcrest.Matcher<V> match, ActionWithReturn<V,X> a)