package edu.stanford.nlp.ling.tokensregex;
import edu.stanford.nlp.util.Pair;
import java.util.List;
import java.util.Map;
import java.util.function.BiFunction;
/**
* Pattern for matching a Map from keys K to objects
*
* @author Angel Chang
*/
public class MapNodePattern<M extends Map<K,Object>, K> extends ComplexNodePattern<M,K> {
private static <M extends Map<K, Object>, K> BiFunction<M,K,Object> createGetter() {
return new BiFunction<M, K, Object>() {
@Override
public Object apply(M m, K k) {
return m.get(k);
}
};
}
public MapNodePattern(List<Pair<K, NodePattern>> annotationPatterns) {
super(createGetter(), annotationPatterns);
}
public MapNodePattern(Pair<K, NodePattern>... annotationPatterns) {
super(createGetter(), annotationPatterns);
}
public MapNodePattern(K key, NodePattern pattern) {
super(createGetter(), key, pattern);
}
}