summaryrefslogtreecommitdiff
path: root/base/src/main/java/bjc/utils/parserutils
diff options
context:
space:
mode:
Diffstat (limited to 'base/src/main/java/bjc/utils/parserutils')
-rw-r--r--base/src/main/java/bjc/utils/parserutils/splitter/ConfigurableTokenSplitter.java105
-rw-r--r--base/src/main/java/bjc/utils/parserutils/splitter/SimpleTokenSplitter.java2
2 files changed, 78 insertions, 29 deletions
diff --git a/base/src/main/java/bjc/utils/parserutils/splitter/ConfigurableTokenSplitter.java b/base/src/main/java/bjc/utils/parserutils/splitter/ConfigurableTokenSplitter.java
index 2a565f2..1ca0fc1 100644
--- a/base/src/main/java/bjc/utils/parserutils/splitter/ConfigurableTokenSplitter.java
+++ b/base/src/main/java/bjc/utils/parserutils/splitter/ConfigurableTokenSplitter.java
@@ -16,15 +16,15 @@ import bjc.utils.funcdata.IList;
*
*/
public class ConfigurableTokenSplitter extends SimpleTokenSplitter {
- private final Set<String> simpleDelimiters;
- private final Set<String> multipleDelimiters;
- private final Set<String> rRawDelimiters;
+ private final Set<String> simpleDelimiters;
+ private final Set<String> multipleDelimiters;
+ private final Set<String> rRawDelimiters;
/**
* Create a new token splitter with blank configuration.
*
* @param keepDelims
- * Whether or not to keep delimiters.
+ * Whether or not to keep delimiters.
*/
public ConfigurableTokenSplitter(final boolean keepDelims) {
super(null, keepDelims);
@@ -35,16 +35,25 @@ public class ConfigurableTokenSplitter extends SimpleTokenSplitter {
rRawDelimiters = new LinkedHashSet<>();
}
+ private ConfigurableTokenSplitter(boolean keepDelims, Set<String> simpleDelimiters,
+ Set<String> multipleDelimiters, Set<String> rRawDelimiters) {
+ super(null, keepDelims);
+
+ this.simpleDelimiters = simpleDelimiters;
+ this.multipleDelimiters = multipleDelimiters;
+ this.rRawDelimiters = rRawDelimiters;
+ }
+
/**
* Add a set of simple delimiters to this splitter.
*
* Simple delimiters match one occurrence of themselves as literals.
*
* @param simpleDelims
- * The simple delimiters to add.
+ * The simple delimiters to add.
*/
public void addSimpleDelimiters(final String... simpleDelims) {
- for(final String simpleDelim : simpleDelims) {
+ for (final String simpleDelim : simpleDelims) {
simpleDelimiters.add(simpleDelim);
}
}
@@ -56,10 +65,10 @@ public class ConfigurableTokenSplitter extends SimpleTokenSplitter {
* literals.
*
* @param multiDelims
- * The multiple delimiters to add.
+ * The multiple delimiters to add.
*/
public void addMultiDelimiters(final String... multiDelims) {
- for(final String multiDelim : multiDelims) {
+ for (final String multiDelim : multiDelims) {
multipleDelimiters.add(multiDelim);
}
}
@@ -71,10 +80,10 @@ public class ConfigurableTokenSplitter extends SimpleTokenSplitter {
* expressions.
*
* @param rRawDelims
- * The raw delimiters to add.
+ * The raw delimiters to add.
*/
public void addRawDelimiters(final String... rRawDelims) {
- for(final String rRawDelim : rRawDelims) {
+ for (final String rRawDelim : rRawDelims) {
rRawDelimiters.add(rRawDelim);
}
}
@@ -86,15 +95,15 @@ public class ConfigurableTokenSplitter extends SimpleTokenSplitter {
public void compile() {
final StringBuilder rPattern = new StringBuilder();
- for(final String rRawDelimiter : rRawDelimiters) {
+ for (final String rRawDelimiter : rRawDelimiters) {
rPattern.append(applyFormat("rawDelim", rRawDelimiter));
}
- for(final String multipleDelimiter : multipleDelimiters) {
+ for (final String multipleDelimiter : multipleDelimiters) {
rPattern.append(applyFormat("multipleDelim", multipleDelimiter));
}
- for(final String simpleDelimiter : simpleDelimiters) {
+ for (final String simpleDelimiter : simpleDelimiters) {
rPattern.append(applyFormat("simpleDelim", simpleDelimiter));
}
@@ -105,7 +114,7 @@ public class ConfigurableTokenSplitter extends SimpleTokenSplitter {
@Override
public IList<String> split(final String input) {
- if(spliter == null) throw new IllegalStateException("Must compile splitter before use");
+ if (spliter == null) throw new IllegalStateException("Must compile splitter before use");
return super.split(input);
}
@@ -117,36 +126,76 @@ public class ConfigurableTokenSplitter extends SimpleTokenSplitter {
return String.format(fmt, simpleDelimiters, multipleDelimiters, rRawDelimiters, spliter);
}
-
+
+ /**
+ * Builder class for the configurable token splitter.
+ *
+ * @author bjculkin
+ *
+ */
public static class Builder {
private ConfigurableTokenSplitter cts;
-
+
+ /**
+ * Create a new splitter builder.
+ *
+ * @param keepDelims
+ * Whether or not to keep the delimited splitter.
+ */
public Builder(boolean keepDelims) {
cts = new ConfigurableTokenSplitter(keepDelims);
}
-
- public Builder simple(String...strings) {
+
+ /**
+ * Add a set of simple delimiters.
+ *
+ * @param strings
+ * The simple delimiters to use.
+ * @return The builder, for chaining.
+ */
+ public Builder simple(String... strings) {
cts.addSimpleDelimiters(strings);
-
+
return this;
}
-
- public Builder multiple(String...strings) {
+
+ /**
+ * Add a set of multiple delimiters.
+ *
+ * @param strings
+ * The multiple delimiters to use.
+ * @return The builder, for chaining.
+ */
+ public Builder multiple(String... strings) {
cts.addMultiDelimiters(strings);
-
+
return this;
}
-
- public Builder raw(String...strings) {
+
+ /**
+ * Add a set of raw delimiters.
+ *
+ * @param strings
+ * The raw delimiters to use.
+ * @return The builder, for chaining.
+ */
+ public Builder raw(String... strings) {
cts.addRawDelimiters(strings);
-
+
return this;
}
-
+
+ /**
+ * Build the splitter.
+ *
+ * @return The built splitter.
+ */
public ConfigurableTokenSplitter build() {
- cts.compile();
+ ConfigurableTokenSplitter ret = new ConfigurableTokenSplitter(cts.keepDelim,
+ cts.simpleDelimiters, cts.multipleDelimiters, cts.rRawDelimiters);
+ ret.compile();
- return cts;
+ return ret;
}
}
}
diff --git a/base/src/main/java/bjc/utils/parserutils/splitter/SimpleTokenSplitter.java b/base/src/main/java/bjc/utils/parserutils/splitter/SimpleTokenSplitter.java
index 4e97008..9eb2d48 100644
--- a/base/src/main/java/bjc/utils/parserutils/splitter/SimpleTokenSplitter.java
+++ b/base/src/main/java/bjc/utils/parserutils/splitter/SimpleTokenSplitter.java
@@ -15,7 +15,7 @@ import bjc.utils.ioutils.RegexStringEditor;
public class SimpleTokenSplitter implements TokenSplitter {
protected Pattern spliter;
- private final boolean keepDelim;
+ protected final boolean keepDelim;
/**
* Create a new simple token splitter.