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();
|
||
|
}
|