summaryrefslogtreecommitdiff
path: root/BJC-Utils2/src/main/java/bjc/utils/parserutils/splitter
diff options
context:
space:
mode:
Diffstat (limited to 'BJC-Utils2/src/main/java/bjc/utils/parserutils/splitter')
-rw-r--r--BJC-Utils2/src/main/java/bjc/utils/parserutils/splitter/ChainTokenSplitter.java3
-rw-r--r--BJC-Utils2/src/main/java/bjc/utils/parserutils/splitter/FilteredTokenSplitter.java37
-rw-r--r--BJC-Utils2/src/main/java/bjc/utils/parserutils/splitter/TransformTokenSplitter.java38
3 files changed, 76 insertions, 2 deletions
diff --git a/BJC-Utils2/src/main/java/bjc/utils/parserutils/splitter/ChainTokenSplitter.java b/BJC-Utils2/src/main/java/bjc/utils/parserutils/splitter/ChainTokenSplitter.java
index f431688..4736310 100644
--- a/BJC-Utils2/src/main/java/bjc/utils/parserutils/splitter/ChainTokenSplitter.java
+++ b/BJC-Utils2/src/main/java/bjc/utils/parserutils/splitter/ChainTokenSplitter.java
@@ -2,7 +2,6 @@ package bjc.utils.parserutils.splitter;
import bjc.utils.funcdata.FunctionalList;
import bjc.utils.funcdata.IList;
-import bjc.utils.functypes.ID;
/**
* A token splitter that chains several other splitters together.
@@ -46,6 +45,6 @@ public class ChainTokenSplitter implements TokenSplitter {
return spliters.reduceAux(initList, (splitter, strangs) -> {
return strangs.flatMap(splitter::split);
- }, ID.id());
+ });
}
} \ No newline at end of file
diff --git a/BJC-Utils2/src/main/java/bjc/utils/parserutils/splitter/FilteredTokenSplitter.java b/BJC-Utils2/src/main/java/bjc/utils/parserutils/splitter/FilteredTokenSplitter.java
new file mode 100644
index 0000000..5d954e0
--- /dev/null
+++ b/BJC-Utils2/src/main/java/bjc/utils/parserutils/splitter/FilteredTokenSplitter.java
@@ -0,0 +1,37 @@
+package bjc.utils.parserutils.splitter;
+
+import java.util.function.Predicate;
+
+import bjc.utils.funcdata.IList;
+
+/**
+ * A token splitter that removes tokens that match a predicate from the stream
+ * of tokens.
+ *
+ * @author bjculkin
+ *
+ */
+public class FilteredTokenSplitter implements TokenSplitter {
+ private TokenSplitter source;
+
+ private Predicate<String> filter;
+
+ /**
+ * Create a new filtered token splitter.
+ *
+ * @param source
+ * The splitter to get tokens from.
+ *
+ * @param filter
+ * The filter to pass tokens through.
+ */
+ public FilteredTokenSplitter(TokenSplitter source, Predicate<String> filter) {
+ this.source = source;
+ this.filter = filter;
+ }
+
+ @Override
+ public IList<String> split(String input) {
+ return source.split(input).getMatching(filter);
+ }
+}
diff --git a/BJC-Utils2/src/main/java/bjc/utils/parserutils/splitter/TransformTokenSplitter.java b/BJC-Utils2/src/main/java/bjc/utils/parserutils/splitter/TransformTokenSplitter.java
new file mode 100644
index 0000000..80490f5
--- /dev/null
+++ b/BJC-Utils2/src/main/java/bjc/utils/parserutils/splitter/TransformTokenSplitter.java
@@ -0,0 +1,38 @@
+package bjc.utils.parserutils.splitter;
+
+import java.util.function.UnaryOperator;
+
+import bjc.utils.funcdata.IList;
+
+/**
+ * A token splitter that performs a transform on the tokens from another
+ * splitter.
+ *
+ * @author bjculkin
+ *
+ */
+public class TransformTokenSplitter implements TokenSplitter {
+ private TokenSplitter source;
+
+ private UnaryOperator<String> transform;
+
+ /**
+ * Create a new transforming splitter.
+ *
+ * @param source
+ * The splitter to use as a source.
+ *
+ * @param transform
+ * The transform to apply to tokens.
+ */
+ public TransformTokenSplitter(TokenSplitter source, UnaryOperator<String> transform) {
+ this.source = source;
+ this.transform = transform;
+ }
+
+ @Override
+ public IList<String> split(String input) {
+ return source.split(input).map(transform);
+ }
+
+}