summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Culkin <scorpress@gmail.com>2021-04-11 10:51:42 -0400
committerBen Culkin <scorpress@gmail.com>2021-04-11 10:51:42 -0400
commitaba8e262d0e89ebef4229ad807b67660fc9bef35 (patch)
tree18660d4181c5836ce9d530a6d71fd0d615f95937
parent58e0022923d573782f5db1f22a1713a98712e37b (diff)
Tweak a few things
-rw-r--r--base/src/main/java/bjc/utils/funcutils/StringUtils.java175
-rw-r--r--base/src/main/java/bjc/utils/ioutils/LevelSplitter.java49
-rw-r--r--base/src/test/java/bjc/utils/test/ioutils/LevelSplitterTest.java12
3 files changed, 86 insertions, 150 deletions
diff --git a/base/src/main/java/bjc/utils/funcutils/StringUtils.java b/base/src/main/java/bjc/utils/funcutils/StringUtils.java
index b029e1d..0b57e18 100644
--- a/base/src/main/java/bjc/utils/funcutils/StringUtils.java
+++ b/base/src/main/java/bjc/utils/funcutils/StringUtils.java
@@ -8,21 +8,15 @@ import com.ibm.icu.text.BreakIterator;
import bjc.utils.ioutils.LevelSplitter;
-/**
- * Utility methods for operations on strings.
+/** Utility methods for operations on strings.
*
- * @author ben
- */
+ * @author ben */
public class StringUtils {
- /**
- * Check if a string consists only of one or more matches of a regular
+ /**Check if a string consists only of one or more matches of a regular
* expression.
*
- * @param input
- * The string to check.
- *
- * @param rRegex
- * The regex to see if the string only contains matches of.
+ * @param input The string to check.
+ * @param rRegex The regex to see if the string only contains matches of.
*
* @return Whether or not the string consists only of multiple matches of the
* provided regex.
@@ -31,38 +25,29 @@ public class StringUtils {
if (input == null) throw new NullPointerException("Input must not be null");
else if (rRegex == null) throw new NullPointerException("Regex must not be null");
- /*
- * This regular expression is fairly simple.
+ /* This regular expression is fairly simple.
*
* First, we match the beginning of the string. Then, we start a non-capturing
* group whose contents are the passed in regex. That group is then matched one
- * or more times and the pattern matches to the end of the string.
- */
+ * or more times and the pattern matches to the end of the string. */
return input.matches("\\A(?:" + rRegex + ")+\\Z");
}
- /**
- * Indent the string being built in a StringBuilder n levels.
- *
- * @param builder
- * The builder to indent in.
+ /** Indent the string being built in a StringBuilder n levels.
*
- * @param levels
- * The number of levels to indent.
+ * @param builder The builder to indent in.
+ * @param levels The number of levels to indent.
*/
public static void indentNLevels(final StringBuilder builder, final int levels) {
for (int i = 0; i < levels; i++) builder.append("\t");
}
- /**
- * Print out a deque with a special case for easily showing a deque is empty.
- *
- * @param <ContainedType>
- * The type in the deque.
+ /** Print out a deque with a special case for easily showing a deque is empty.
*
- * @param queue
- * The deque to print.
+ * @param <ContainedType> The type in the deque.
*
+ * @param queue The deque to print.
+ *
* @return A string version of the deque, with allowance for an empty deque.
*/
public static <ContainedType> String printDeque(final Deque<ContainedType> queue) {
@@ -72,15 +57,10 @@ public class StringUtils {
/**
* Converts a sequence to an English list.
*
- * @param objects
- * The sequence to convert to an English list.
- *
+ * @param objects The sequence to convert to an English list.
* @param join
- * The string to use for separating the last element from the
- * rest.
- *
- * @param comma
- * The string to use as a comma
+ * The string to use for separating the last element from the rest.
+ * @param comma The string to use as a comma
*
* @return The sequence as an English list.
*/
@@ -129,15 +109,11 @@ public class StringUtils {
return sb.toString();
}
- /**
- * Converts a sequence to an English list.
- *
- * @param objects
- * The sequence to convert to an English list.
+ /** Converts a sequence to an English list.
*
+ * @param objects The sequence to convert to an English list.
* @param join
- * The string to use for separating the last element from the
- * rest.
+ * The string to use for separating the last element from the rest.
*
* @return The sequence as an English list.
*/
@@ -145,14 +121,10 @@ public class StringUtils {
return toEnglishList(objects, join, ",");
}
- /**
- * Converts a sequence to an English list.
- *
- * @param objects
- * The sequence to convert to an English list.
+ /** Converts a sequence to an English list.
*
- * @param and
- * Whether to use 'and' or 'or'.
+ * @param objects The sequence to convert to an English list.
+ * @param and Whether to use 'and' or 'or'.
*
* @return The sequence as an English list.
*/
@@ -161,11 +133,9 @@ public class StringUtils {
else return toEnglishList(objects, "or");
}
- /**
- * Count the number of graphemes in a string.
+ /** Count the number of graphemes in a string.
*
- * @param value
- * The string to check.
+ * @param value The string to check.
*
* @return The number of graphemes in the string.
*/
@@ -179,14 +149,11 @@ public class StringUtils {
return count;
}
- /**
- * Count the number of times a pattern matches in a given string.
+ /** Count the number of times a pattern matches in a given string.
*
- * @param value
- * The string to count occurances in.
- *
- * @param pattern
- * The pattern to count occurances of.
+ * @param value The string to count occurrences in.
+ * @param pattern The pattern to count occurrences of.
+ *
* @return The number of times the pattern matches.
*/
public static int countMatches(final String value, final String pattern) {
@@ -198,42 +165,36 @@ public class StringUtils {
return num;
}
- /**
- * Get a substring until a specified string.
+ /** Get a substring until a specified string.
*
- * @param strang
- * The string to substring.
- * @param vx
- * The place to substring until.
+ * @param strang The string to substring.
+ * @param until The place to substring until.
*
* @return The specified substring.
*/
- public static String substringTo(String strang, String vx) {
- return substringTo(strang, vx, true);
+ public static String substringTo(String strang, String until) {
+ return substringTo(strang, until, true);
}
/**
* Get a substring until a specified string.
*
- * @param strang
- * The string to substring.
- * @param vx
- * The place to substring until.
- * @param allowFail
- * Whether or not to allow failure.
+ * @param strang The string to substring.
+ * @param until The place to substring until.
+ * @param allowFail Whether or not to allow failure.
*
* @return The specified substring, or null if the specified place to substring
* to was not found, and we were not allowed to fail.
*/
- public static String substringTo(String strang, String vx, boolean allowFail) {
- int idx = strang.indexOf(vx);
+ public static String substringTo(String strang, String until, boolean allowFail) {
+ int idx = strang.indexOf(until);
if (idx == -1) {
if (allowFail) return strang;
else return null;
}
- return strang.substring(0, strang.indexOf(vx));
+ return strang.substring(0, strang.indexOf(until));
}
private static class LineIterator implements Iterator<String> {
@@ -282,11 +243,9 @@ public class StringUtils {
}
}
- /**
- * Read a series of lines from an input source.
+ /** Read a series of lines from an input source.
*
- * @param scn
- * The source to read the lines from.
+ * @param scn The source to read the lines from.
*
* @return An iterator over the lines from the input source.
*/
@@ -297,17 +256,10 @@ public class StringUtils {
/**
* Read a series of lines from an input source.
*
- * @param scn
- * The source to read the lines from.
- *
- * @param processComments
- * Whether or not to skip comment lines.
- *
- * @param commentInd
- * Indicator for starting comment lines.
- *
- * @param skipBlanks
- * Whether or not to skip blank lines.
+ * @param scn The source to read the lines from.
+ * @param processComments Whether or not to skip comment lines.
+ * @param commentInd Indicator for starting comment lines.
+ * @param skipBlanks Whether or not to skip blank lines.
*
* @return An iterator over the lines from the input source.
*/
@@ -323,27 +275,23 @@ public class StringUtils {
return itr;
}
- /**
- * Check if a string contains any one of a specified number of things,
+ /** Check if a string contains any one of a specified number of things,
* respecting groups.
*
- * @param haystack
- * The string to look in.
- * @param needles
- * The strings to look for.
+ * @param haystack The string to look in.
+ * @param needles The strings to look for.
+ *
* @return Whether or not any of the strings were contained outside of groups.
*/
public static boolean levelContains(String haystack, String... needles) {
return LevelSplitter.def.levelContains(haystack, needles);
}
- /**
- * Split a string, respecting groups.
+ /** Split a string, respecting groups.
*
- * @param phrase
- * The string to split.
- * @param splits
- * The strings to split on.
+ * @param phrase The string to split.
+ * @param splits The strings to split on.
+ *
* @return A list of split strings. If keepDelims is true, it also includes the
* delimiters in between the split strings.
*/
@@ -351,15 +299,12 @@ public class StringUtils {
return LevelSplitter.def.levelSplit(phrase, false, splits);
}
- /**
- * Split a string, respecting groups.
+ /** Split a string, respecting groups.
*
- * @param phrase
- * The string to split.
- * @param keepDelims
- * Whether or not to include the delimiters in the results.
- * @param splits
- * The strings to split on.
+ * @param phrase The string to split.
+ * @param keepDelims Whether or not to include the delimiters in the results.
+ * @param splits The strings to split on.
+ *
* @return A list of split strings. If keepDelims is true, it also includes the
* delimiters in between the split strings.
*/
@@ -367,4 +312,4 @@ public class StringUtils {
String... splits) {
return LevelSplitter.def.levelSplit(phrase, keepDelims, splits);
}
-}
+} \ No newline at end of file
diff --git a/base/src/main/java/bjc/utils/ioutils/LevelSplitter.java b/base/src/main/java/bjc/utils/ioutils/LevelSplitter.java
index c2467ae..93bc424 100644
--- a/base/src/main/java/bjc/utils/ioutils/LevelSplitter.java
+++ b/base/src/main/java/bjc/utils/ioutils/LevelSplitter.java
@@ -5,29 +5,24 @@ import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-/**
- * Splits a string on a delimiter, respecting grouping delimiters.
+/** Splits a string on a delimiter, respecting grouping delimiters.
*
* By default, grouping delimiters are (), [], {}, and <>, as well as single and
* double quoted strings.
*
- * @author bjculkin
- *
- */
+ * @author bjculkin */
public class LevelSplitter {
- /**
- * Defaultly configured level splitter.
- */
+ /** Default configured level splitter. */
public final static LevelSplitter def = new LevelSplitter();
- /**
- * Check if a string contains any one of a specified number of things,
+ /** Should empty strings be ignored? */
+ public boolean ignoreEmpty = false;
+
+ /** Check if a string contains any one of a specified number of things,
* respecting groups.
*
- * @param haystack
- * The string to look in.
- * @param needles
- * The strings to look for.
+ * @param haystack The string to look in.
+ * @param needles The strings to look for.
* @return Whether or not any of the strings were contained outside of groups.
*/
public boolean levelContains(String haystack, String... needles) {
@@ -88,13 +83,11 @@ public class LevelSplitter {
return false;
}
- /**
- * Split a string, respecting groups.
+ /** Split a string, respecting groups.
*
- * @param phrase
- * The string to split.
- * @param splits
- * The strings to split on.
+ * @param phrase The string to split.
+ * @param splits The strings to split on.
+ *
* @return A list of split strings. If keepDelims is true, it also includes the
* delimiters in between the split strings.
*/
@@ -102,15 +95,12 @@ public class LevelSplitter {
return levelSplit(phrase, false, splits);
}
- /**
- * Split a string, respecting groups.
+ /** Split a string, respecting groups.
*
- * @param phrase
- * The string to split.
- * @param keepDelims
- * Whether or not to include the delimiters in the results.
- * @param splits
- * The strings to split on.
+ * @param phrase The string to split.
+ * @param keepDelims Whether or not to include the delimiters in the results.
+ * @param splits The strings to split on.
+ *
* @return A list of split strings. If keepDelims is true, it also includes the
* delimiters in between the split strings.
*/
@@ -140,8 +130,7 @@ public class LevelSplitter {
if (work.regionMatches(i, split, 0, split.length())) {
strangs.add(work.substring(0, i));
- if (keepDelims)
- strangs.add(split);
+ if (keepDelims) strangs.add(split);
work = work.substring(i + split.length());
i = 0;
diff --git a/base/src/test/java/bjc/utils/test/ioutils/LevelSplitterTest.java b/base/src/test/java/bjc/utils/test/ioutils/LevelSplitterTest.java
index 5fb3756..b0db059 100644
--- a/base/src/test/java/bjc/utils/test/ioutils/LevelSplitterTest.java
+++ b/base/src/test/java/bjc/utils/test/ioutils/LevelSplitterTest.java
@@ -3,6 +3,8 @@ package bjc.utils.test.ioutils;
import static bjc.utils.funcutils.TestUtils.assertListEquals;
import static bjc.utils.test.ioutils.LevelSplitterTest.RXPair.pair;
+import java.util.*;
+
import org.junit.Test;
import bjc.utils.ioutils.LevelSplitter;
@@ -28,21 +30,21 @@ public class LevelSplitterTest {
}
}
- /**
- * Test regex splitter.
- */
+ /** Test regex splitter. */
@Test
public void testRXSplit() {
// LevelSplitter splitter = LevelSplitter.def;
// Check generic splitting works
- assertRXSplit("\\s+", pair("", ""), pair("a", "a"), pair("a b", "a", "b"),
+ assertRXSplit("\\s+",
+ pair("", ""), pair("a", "a"), pair("a b", "a", "b"),
pair("a b", "a", "b"), pair("a\t \tb", "a", "b"));
}
private static void assertRXSplit(String pat, RXPair... pairs) {
for (RXPair pair : pairs) {
- assertListEquals(LevelSplitter.def.levelSplitRX(pair.inp, pat), pair.outp);
+ List<String> res = LevelSplitter.def.levelSplitRX(pair.inp, pat);
+ assertListEquals(res, pair.outp);
}
}
}