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.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.function.Predicate;
import java.util.stream.Stream;

import org.unlaxer.parser.Parser;

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




© 2015 - 2025 Weber Informatics LLC | Privacy Policy