All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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... parserClasses){
		return token->{
			for (Class 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