package tc.oc.pgm.xml.finder;
import java.util.stream.Stream;
import javax.inject.Singleton;
import org.jdom2.Element;
import tc.oc.pgm.xml.Node;
/**
* Given a name and parent {@link Element}, return a sequence of {@link Node}s
* with some structural relationship to the parent.
*/
@Singleton
public interface NodeFinder {
Stream<Node> findNodes(Element parent, String name);
NodeFinder EMPTY = (parent, name) -> Stream.empty();
static NodeFinder empty() {
return EMPTY;
}
static NodeFinder concat(NodeFinder a, NodeFinder b) {
return (parent, name) -> Stream.concat(a.findNodes(parent, name),
b.findNodes(parent, name));
}
}