43 lines
1005 B
Java
43 lines
1005 B
Java
package tc.oc.pgm.xml;
|
|
|
|
import java.util.stream.Stream;
|
|
import javax.inject.Singleton;
|
|
|
|
public interface NodeSplitter {
|
|
Stream<String> split(Node node);
|
|
|
|
/**
|
|
* The node name as a single value
|
|
*/
|
|
@Singleton
|
|
class Name implements NodeSplitter {
|
|
@Override public Stream<String> split(Node node) {
|
|
return Stream.of(node.getName());
|
|
}
|
|
}
|
|
|
|
/**
|
|
* The node content as a single value
|
|
*/
|
|
@Singleton
|
|
class Atom implements NodeSplitter {
|
|
@Override public Stream<String> split(Node node) {
|
|
return Stream.of(node.getValue());
|
|
}
|
|
}
|
|
|
|
/**
|
|
* The node content, split by spaces/commas
|
|
*/
|
|
@Singleton
|
|
class List implements NodeSplitter {
|
|
@Override public Stream<String> split(Node node) {
|
|
return Stream.of(node.getValue().split("\\s+|\\s*,\\s*"));
|
|
}
|
|
}
|
|
|
|
NodeSplitter NAME = new Name();
|
|
NodeSplitter ATOM = new Atom();
|
|
NodeSplitter LIST = new List();
|
|
}
|