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

org.unlaxer.ParserFinderToChild Maven / Gradle / Ivy

package org.unlaxer;

import java.util.Optional;
import java.util.function.Predicate;
import java.util.stream.Stream;

import org.unlaxer.parser.Parser;
import org.unlaxer.parser.Parsers;

public interface ParserFinderToChild extends ParserHierarchy{
	
	public default Optional findFirstToChild(Predicate predicate) {
		return findToChild(predicate).findFirst();
	}
	
	public default Stream findToChild(Predicate predicate) {
		Parsers flatten = flatten(RecursiveMode.childrenOnly);
		return flatten.stream().filter(predicate);
	}
	
	public default Parsers flatten(){
		return flatten(RecursiveMode.containsRoot);
	}
	
	public default Parsers flatten(RecursiveMode recursiveMode){
		Parsers list = new Parsers();
		if(recursiveMode.isContainsRoot()){
			list.add(getThisParser());
		}
		for(Parser child :getChildren()){
			list.addAll(child.flatten(recursiveMode));
		}
		return list;
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy