org.unlaxer.TokenPredicators Maven / Gradle / Ivy
package org.unlaxer;
import java.util.function.Predicate;
import org.unlaxer.parser.Parser;
public class TokenPredicators{
public final static Predicate parserImplements(Class>... interfaceClasses){
return token->{
for (Class> interfaceClass : interfaceClasses) {
if(interfaceClass.isAssignableFrom(token.parser.getClass())) {
return true;
}
}
return false;
};
}
@SafeVarargs
public final static Predicate parsers(Class extends Parser>... parserClasses){
return token->{
for (Class extends Parser> parserClass : parserClasses) {
if(token.parser.getClass() == parserClass) {
return true;
}
}
return false;
};
}
public final static Predicate parsersMatchWithClass(Parser... parsers){
return token->{
for (Parser parser: parsers) {
if(token.parser.getClass() == parser.getClass()) {
return true;
}
}
return false;
};
}
public final static Predicate noMatch(){
return token-> false;
}
public final static Predicate allMatch(){
return token-> true;
}
public final static Predicate afterToken(Token targetToken){
return token-> targetToken.getSource().cursorRange()
.lessThan(token.getSource().cursorRange());
}
public final static Predicate beforeToken(Token targetToken){
return token-> targetToken.getSource().cursorRange()
.graterThan(token.getSource().cursorRange());
}
public final static Predicate relation(Token targetToken , RangesRelation rangesRelation){
return token-> targetToken.getSource().cursorRange()
.relation(token.getSource().cursorRange()) == rangesRelation;
}
public final static Predicate hasTag(Tag tag){
return token-> token.parser.hasTag(tag);
}
public final static Predicate hasTagInParent(Tag tag){
return token-> token.parser.getParent()
.map(_parent->_parent.hasTag(tag)).orElse(false);
}
public final static Predicate pathEndsWith(String path){
return token-> token.parser.getPath().endsWith(path);
}
public final static Predicate parentPathEndsWith(String path){
return token-> token.parser.getParentPath().endsWith(path);
}
} © 2015 - 2025 Weber Informatics LLC | Privacy Policy