summaryrefslogtreecommitdiff
path: root/base/src/main/java/bjc/utils/cli/objects
diff options
context:
space:
mode:
Diffstat (limited to 'base/src/main/java/bjc/utils/cli/objects')
-rw-r--r--base/src/main/java/bjc/utils/cli/objects/Command.java619
-rw-r--r--base/src/main/java/bjc/utils/cli/objects/DefineCLI.java8
-rw-r--r--base/src/main/java/bjc/utils/cli/objects/DelimSplitterCLI.java22
3 files changed, 298 insertions, 351 deletions
diff --git a/base/src/main/java/bjc/utils/cli/objects/Command.java b/base/src/main/java/bjc/utils/cli/objects/Command.java
index af22643..3b287ea 100644
--- a/base/src/main/java/bjc/utils/cli/objects/Command.java
+++ b/base/src/main/java/bjc/utils/cli/objects/Command.java
@@ -3,341 +3,288 @@ package bjc.utils.cli.objects;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-/**
- * A single-line command read from the user.
+/** A single-line command read from the user.
*
- * @author Ben Culkin
- */
+ * @author Ben Culkin */
public class Command {
- /**
- * Command status values.
- *
- * @author Ben Culkin
- */
- public static enum CommandStatus {
- /**
- * The command succeeded.
- */
- SUCCESS,
- /**
- * The command failed non-fatally.
- */
- FAIL,
- /**
- * The command failed fatally.
- */
- ERROR,
- /**
- * The command was the last one.
- */
- FINISH,
- }
-
- /**
- * The line number of this command.
- */
- public final int lno;
-
- /**
- * The full text of this command.
- */
- public final String full;
- /**
- * The text of this command without its name.
- */
- public String remn;
- /**
- * The name of this command.
- */
- public final String name;
-
- /**
- * The name of the I/O source this command was read from.
- */
- public final String src;
-
- /**
- * Create a new command.
- *
- * @param ln
- * The string to get the command from.
- *
- * @param lno
- * The number of the line the command came from.
- *
- * @param ioSrc
- * The name of where the I/O came from.
- */
- public Command(String ln, int lno, String ioSrc) {
- int idx = ln.indexOf(' ');
-
- if (idx == -1)
- idx = ln.length();
-
- /* Grab command parts. */
- full = ln;
- name = ln.substring(0, idx).trim();
- remn = ln.substring(idx).trim();
-
- this.lno = lno;
-
- src = ioSrc;
- }
-
- /**
- * Removes up until the first occurrence of a particular string for the
- * remaining command, and returns the removed string.
- *
- * By default, both the substring and the remaining text are trimmed
- * (leading/trailing spaces removed).
- *
- * @param delm
- * The delimiter to stop substringing at.
- *
- * @return The substring, or null if there is no occurrence of the delimiter.
- */
- public String trimTo(String delm) {
- return trimTo(delm, true);
- }
-
- /**
- * Removes up until the first occurrence of a particular string for the
- * remaining command, and returns the removed string.
- *
- * @param delm
- * The delimiter to stop substringing at.
- * @param doTrim
- * Whether or not to trim the substring and remaining command
- * (Remove leading/trailing spaces).
- *
- * @return The substring, or null if there is no occurrence of the delimiter.
- */
- public String trimTo(String delm, boolean doTrim) {
- int idx = remn.indexOf(delm);
- if (idx == -1)
- return null;
-
- String tmp = remn.substring(0, idx);
- remn = remn.substring(idx);
-
- if (doTrim) {
- tmp = tmp.trim();
- remn = remn.trim();
- }
-
- return tmp;
- }
-
- /**
- * Removes up until the first occurrence of a particular regex for the remaining
- * command, and returns the removed string.
- *
- * By default, both the substring and the remaining text are trimmed
- * (leading/trailing spaces removed).
- *
- * @param rDelm
- * The regex to stop substringing at.
- *
- * @return The string, up to the matched pattern.
- */
- public String trimToRX(String rDelm) {
- return trimToRX(Pattern.compile(rDelm), true);
- }
-
- /**
- * Removes up until the first occurrence of a particular regex for the remaining
- * command, and returns the removed string.
- *
- * By default, both the substring and the remaining text are trimmed
- * (leading/trailing spaces removed).
- *
- * @param delm
- * The regex to stop substringing at.
- *
- * @return The string, up to the matched pattern.
- */
- public String trimToRX(Pattern delm) {
- return trimToRX(delm, true);
- }
-
- /**
- * Removes up until the first occurrence of a particular regex for the remaining
- * command, and returns the removed string.
- *
- * @param rDelm
- * The regex to stop substringing at.
- * @param doTrim
- * Whether or not to trim the substring and remaining command
- * (Remove leading/trailing spaces).
- *
- * @return The string, up to the matched pattern.
- */
- public String trimToRX(String rDelm, boolean doTrim) {
- return trimToRX(Pattern.compile(rDelm), doTrim);
- }
-
- /**
- * Removes up until the first occurrence of a particular regex for the remaining
- * command, and returns the removed string.
- *
- * @param delm
- * The regex to stop substringing at.
- * @param doTrim
- * Whether or not to trim the substring and remaining command
- * (Remove leading/trailing spaces).
- *
- * @return The string, up to the matched pattern.
- */
- public String trimToRX(Pattern delm, boolean doTrim) {
- Matcher mat = delm.matcher(remn);
- if (!mat.find())
- return null;
-
- String tmp = remn.substring(0, mat.start());
- remn = remn.substring(mat.end());
-
- if (doTrim) {
- tmp = tmp.trim();
- remn = remn.trim();
- }
-
- return tmp;
- }
-
- /**
- * Removes up until the first occurrence of a particular string for the
- * remaining command, and returns the removed string.
- *
- * By default, both the substring and the remaining text are trimmed
- * (leading/trailing spaces removed).
- *
- * @param delm
- * The delimiter to stop substringing at.
- *
- * @return The substring, or null if there is no occurrence of the delimiter.
- */
- public String trimTo(char delm) {
- return trimTo(delm, true);
- }
-
- /**
- * Removes up until the first occurrence of a particular string for the
- * remaining command, and returns the removed string.
- *
- * @param delm
- * The delimiter to stop substringing at.
- * @param doTrim
- * Whether or not to trim the substring and remaining command
- * (Remove leading/trailing spaces).
- *
- * @return The substring, or null if there is no occurrence of the delimiter.
- */
- public String trimTo(char delm, boolean doTrim) {
- int idx = remn.indexOf(delm);
- if (idx == -1)
- return null;
-
- String tmp = remn.substring(0, idx);
- remn = remn.substring(idx);
-
- if (doTrim) {
- tmp = tmp.trim();
- remn = remn.trim();
- }
-
- return tmp;
- }
-
- /**
- * Check if this command has text after its name.
- *
- * @return Whether or not this command has text after its name.
- */
- public boolean hasRemaining() {
- return !remn.equals("");
- }
-
- /**
- * Parse a command from a string.
- *
- * The main thing this does is ignore blank lines, as well as comments marked by
- * #'s either at the start of the line or part of the way through the line.
- *
- * @param lne
- * The string to get the command from.
- *
- * @param lno
- * The line number of the command.
- *
- * @param srcName
- * The name of where the I/O came from.
- * @return The parsed command
- */
- public static Command fromString(String lne, int lno, String srcName) {
- String ln = lne;
-
- /* Ignore blank lines and comments. */
- if (ln.equals(""))
- return null;
- if (ln.startsWith("#"))
- return null;
-
- /* Trim off comments part-way through the line. */
- int idxHash = ln.indexOf('#');
- if (idxHash != -1) {
- ln = ln.substring(0, idxHash).trim();
- }
-
- return new Command(ln, lno, srcName);
- }
-
- /**
- * Give an informational message about something in relation to this command.
- *
- * @param info
- * The informational message.
- *
- * @param parms
- * The parameters for the informational message.
- * @return The information message.
- */
- public String info(String info, Object... parms) {
- String msg = String.format(info, parms);
-
- return String.format("INFO (%s:%d): %s", src, lno, msg);
- }
-
- /**
- * Warn about something in relation to this command.
- *
- * @param warning
- * The warning message.
- *
- * @param parms
- * The parameters for the warning message.
- *
- * @return The formatted warning.
- */
- public String warn(String warning, Object... parms) {
- String msg = String.format(warning, parms);
-
- return String.format("WARNING (%s:%d): %s", src, lno, msg);
- }
-
- /**
- * Give an error about something in relation to this command.
- *
- * @param err
- * The error message.
- *
- * @param parms
- * The parameters for the error message.
- *
- * @return The formatted error
- */
- public String error(String err, Object... parms) {
- String msg = String.format(err, parms);
-
- return String.format("ERROR (%s:%d): %s", src, lno, msg);
- }
-}
+ /** Command status values.
+ *
+ * @author Ben Culkin */
+ public static enum CommandStatus {
+ /** The command succeeded. */
+ SUCCESS,
+ /** The command failed non-fatally. */
+ FAIL,
+ /** The command failed fatally. */
+ ERROR,
+ /** The command was the last one. */
+ FINISH,
+ }
+
+ /** The line number of this command. */
+ public final int lno;
+
+ /** The full text of this command. */
+ public final String full;
+ /** The text of this command without its name. */
+ public String remn;
+ /** The name of this command. */
+ public final String name;
+
+ /** The name of the I/O source this command was read from. */
+ public final String src;
+
+ /** Create a new command.
+ *
+ * @param ln
+ * The string to get the command from.
+ *
+ * @param lno
+ * The number of the line the command came from.
+ *
+ * @param ioSrc
+ * The name of where the I/O came from. */
+ public Command(String ln, int lno, String ioSrc) {
+ int idx = ln.indexOf(' ');
+ if (idx == -1) idx = ln.length();
+
+ /* Grab command parts. */
+ full = ln;
+ name = ln.substring(0, idx).trim();
+ remn = ln.substring(idx).trim();
+
+ this.lno = lno;
+
+ src = ioSrc;
+ }
+
+ /** Removes up until the first occurrence of a particular string for the
+ * remaining command, and returns the removed string.
+ *
+ * By default, both the substring and the remaining text are trimmed
+ * (leading/trailing spaces removed).
+ *
+ * @param delm
+ * The delimiter to stop substringing at.
+ *
+ * @return The substring, or null if there is no occurrence of the delimiter. */
+ public String trimTo(String delm) {
+ return trimTo(delm, true);
+ }
+
+ /** Removes up until the first occurrence of a particular string for the
+ * remaining command, and returns the removed string.
+ *
+ * @param delm
+ * The delimiter to stop substringing at.
+ * @param doTrim
+ * Whether or not to trim the substring and remaining command
+ * (Remove leading/trailing spaces).
+ *
+ * @return The substring, or null if there is no occurrence of the delimiter. */
+ public String trimTo(String delm, boolean doTrim) {
+ int idx = remn.indexOf(delm);
+ if (idx == -1) return null;
+
+ String tmp = remn.substring(0, idx);
+ remn = remn.substring(idx);
+
+ if (doTrim) {
+ tmp = tmp.trim();
+ remn = remn.trim();
+ }
+
+ return tmp;
+ }
+
+ /** Removes up until the first occurrence of a particular regex for the
+ * remaining
+ * command, and returns the removed string.
+ *
+ * By default, both the substring and the remaining text are trimmed
+ * (leading/trailing spaces removed).
+ *
+ * @param rDelm
+ * The regex to stop substringing at.
+ *
+ * @return The string, up to the matched pattern. */
+ public String trimToRX(String rDelm) {
+ return trimToRX(Pattern.compile(rDelm), true);
+ }
+
+ /** Removes up until the first occurrence of a particular regex for the
+ * remaining
+ * command, and returns the removed string.
+ *
+ * By default, both the substring and the remaining text are trimmed
+ * (leading/trailing spaces removed).
+ *
+ * @param delm
+ * The regex to stop substringing at.
+ *
+ * @return The string, up to the matched pattern. */
+ public String trimToRX(Pattern delm) {
+ return trimToRX(delm, true);
+ }
+
+ /** Removes up until the first occurrence of a particular regex for the
+ * remaining
+ * command, and returns the removed string.
+ *
+ * @param rDelm
+ * The regex to stop substringing at.
+ * @param doTrim
+ * Whether or not to trim the substring and remaining command
+ * (Remove leading/trailing spaces).
+ *
+ * @return The string, up to the matched pattern. */
+ public String trimToRX(String rDelm, boolean doTrim) {
+ return trimToRX(Pattern.compile(rDelm), doTrim);
+ }
+
+ /** Removes up until the first occurrence of a particular regex for the
+ * remaining
+ * command, and returns the removed string.
+ *
+ * @param delm
+ * The regex to stop substringing at.
+ * @param doTrim
+ * Whether or not to trim the substring and remaining command
+ * (Remove leading/trailing spaces).
+ *
+ * @return The string, up to the matched pattern. */
+ public String trimToRX(Pattern delm, boolean doTrim) {
+ Matcher mat = delm.matcher(remn);
+ if (!mat.find()) return null;
+
+ String tmp = remn.substring(0, mat.start());
+ remn = remn.substring(mat.end());
+
+ if (doTrim) {
+ tmp = tmp.trim();
+ remn = remn.trim();
+ }
+
+ return tmp;
+ }
+
+ /** Removes up until the first occurrence of a particular string for the
+ * remaining command, and returns the removed string.
+ *
+ * By default, both the substring and the remaining text are trimmed
+ * (leading/trailing spaces removed).
+ *
+ * @param delm
+ * The delimiter to stop substringing at.
+ *
+ * @return The substring, or null if there is no occurrence of the delimiter. */
+ public String trimTo(char delm) {
+ return trimTo(delm, true);
+ }
+
+ /** Removes up until the first occurrence of a particular string for the
+ * remaining command, and returns the removed string.
+ *
+ * @param delm
+ * The delimiter to stop substringing at.
+ * @param doTrim
+ * Whether or not to trim the substring and remaining command
+ * (Remove leading/trailing spaces).
+ *
+ * @return The substring, or null if there is no occurrence of the delimiter. */
+ public String trimTo(char delm, boolean doTrim) {
+ int idx = remn.indexOf(delm);
+ if (idx == -1) return null;
+
+ String tmp = remn.substring(0, idx);
+ remn = remn.substring(idx);
+
+ if (doTrim) {
+ tmp = tmp.trim();
+ remn = remn.trim();
+ }
+
+ return tmp;
+ }
+
+ /** Check if this command has text after its name.
+ *
+ * @return Whether or not this command has text after its name. */
+ public boolean hasRemaining() {
+ return !remn.equals("");
+ }
+
+ /** Parse a command from a string.
+ *
+ * The main thing this does is ignore blank lines, as well as comments marked by
+ * #'s either at the start of the line or part of the way through the line.
+ *
+ * @param lne
+ * The string to get the command from.
+ *
+ * @param lno
+ * The line number of the command.
+ *
+ * @param srcName
+ * The name of where the I/O came from.
+ *
+ * @return The parsed command */
+ public static Command fromString(String lne, int lno, String srcName) {
+ String ln = lne;
+
+ /* Ignore blank lines and comments. */
+ if (ln.equals("")) return null;
+ if (ln.startsWith("#")) return null;
+
+ /* Trim off comments part-way through the line. */
+ int idxHash = ln.indexOf('#');
+ if (idxHash != -1) ln = ln.substring(0, idxHash).trim();
+
+ return new Command(ln, lno, srcName);
+ }
+
+ /** Give an informational message about something in relation to this command.
+ *
+ * @param info
+ * The informational message.
+ *
+ * @param parms
+ * The parameters for the informational message.
+ *
+ * @return The information message. */
+ public String info(String info, Object... parms) {
+ String msg = String.format(info, parms);
+
+ return String.format("INFO (%s:%d): %s", src, lno, msg);
+ }
+
+ /** Warn about something in relation to this command.
+ *
+ * @param warning
+ * The warning message.
+ *
+ * @param parms
+ * The parameters for the warning message.
+ *
+ * @return The formatted warning. */
+ public String warn(String warning, Object... parms) {
+ String msg = String.format(warning, parms);
+
+ return String.format("WARNING (%s:%d): %s", src, lno, msg);
+ }
+
+ /** Give an error about something in relation to this command.
+ *
+ * @param err
+ * The error message.
+ *
+ * @param parms
+ * The parameters for the error message.
+ *
+ * @return The formatted error */
+ public String error(String err, Object... parms) {
+ String msg = String.format(err, parms);
+
+ return String.format("ERROR (%s:%d): %s", src, lno, msg);
+ }
+} \ No newline at end of file
diff --git a/base/src/main/java/bjc/utils/cli/objects/DefineCLI.java b/base/src/main/java/bjc/utils/cli/objects/DefineCLI.java
index d2595d6..613b223 100644
--- a/base/src/main/java/bjc/utils/cli/objects/DefineCLI.java
+++ b/base/src/main/java/bjc/utils/cli/objects/DefineCLI.java
@@ -14,7 +14,7 @@ import java.util.logging.Logger;
import java.util.regex.Pattern;
import bjc.utils.cli.objects.Command.CommandStatus;
-import bjc.utils.funcutils.StringUtils;
+import bjc.utils.parserutils.*;
/*
* @TODO 10/09/17 :DefineCLIFinish
@@ -130,7 +130,7 @@ public class DefineCLI {
}
private CommandStatus defString(Command com) {
- List<String> arguments = StringUtils.processArguments(com.remn);
+ List<String> arguments = TokenUtils.processArguments(com.remn);
if (arguments.size() < 1) {
LOGGER.severe(com.error(
@@ -158,7 +158,7 @@ public class DefineCLI {
}
private CommandStatus defFormat(Command com) {
- List<String> arguments = StringUtils.processArguments(com.remn);
+ List<String> arguments = TokenUtils.processArguments(com.remn);
if (arguments.size() < 1) {
LOGGER.severe(com.error(
@@ -186,7 +186,7 @@ public class DefineCLI {
}
private CommandStatus bindFormat(Command com) {
- List<String> strings = StringUtils.processArguments(com.remn);
+ List<String> strings = TokenUtils.processArguments(com.remn);
if (strings.size() < 2) {
LOGGER.severe(com.error(
diff --git a/base/src/main/java/bjc/utils/cli/objects/DelimSplitterCLI.java b/base/src/main/java/bjc/utils/cli/objects/DelimSplitterCLI.java
index a6820f2..53d6d1e 100644
--- a/base/src/main/java/bjc/utils/cli/objects/DelimSplitterCLI.java
+++ b/base/src/main/java/bjc/utils/cli/objects/DelimSplitterCLI.java
@@ -10,9 +10,9 @@ import java.util.List;
import java.util.Map;
import java.util.Scanner;
-import bjc.data.ITree;
+import bjc.data.Tree;
import bjc.funcdata.FunctionalList;
-import bjc.funcdata.IList;
+import bjc.funcdata.ListEx;
import bjc.utils.funcutils.StringUtils;
import bjc.utils.ioutils.MirrorDB;
import bjc.utils.parserutils.delims.DelimiterException;
@@ -359,7 +359,7 @@ public class DelimSplitterCLI {
private void handleDelim(final String args) {
try {
- final ITree<String> res = dlm.delimitSequence(args.split(" "));
+ final Tree<String> res = dlm.delimitSequence(args.split(" "));
printDelimSeq(res);
} catch (final DelimiterException dex) {
@@ -372,14 +372,14 @@ public class DelimSplitterCLI {
for (int i = 0; i < argArray.length; i++) {
final String arg = argArray[i];
- final IList<String> strangs = split.split(arg);
+ final ListEx<String> strangs = split.split(arg);
System.out.printf("%d '%s' %s\n", i, arg, strangs);
}
}
private void handleTest(final String inp, final boolean splitWS) {
- IList<String> strings;
+ ListEx<String> strings;
try {
strings = split.split(inp);
@@ -400,7 +400,7 @@ public class DelimSplitterCLI {
strings = new FunctionalList<>(tks);
}
try {
- final ITree<String> delim
+ final Tree<String> delim
= dlm.delimitSequence(strings.toArray(new String[0]));
printDelimSeq(delim);
@@ -410,7 +410,7 @@ public class DelimSplitterCLI {
}
}
- private void printDelimSeq(final ITree<String> delim) {
+ private void printDelimSeq(final Tree<String> delim) {
System.out.println("Delimited tokens:\n" + delim.getChild(1).toString());
System.out.print("Delimited expr: ");
printDelimTree(delim);
@@ -420,7 +420,7 @@ public class DelimSplitterCLI {
System.out.println();
}
- private void printDelimTree(final ITree<String> tree) {
+ private void printDelimTree(final Tree<String> tree) {
final StringBuilder sb = new StringBuilder();
intPrintDelimTree(tree.getChild(1), sb);
@@ -428,13 +428,13 @@ public class DelimSplitterCLI {
System.out.println(sb.toString().replaceAll("\\s+", " "));
}
- private void intPrintDelimTree(final ITree<String> tree, final StringBuilder sb) {
+ private void intPrintDelimTree(final Tree<String> tree, final StringBuilder sb) {
tree.doForChildren(child -> {
intPrintDelimNode(child, sb);
});
}
- private void intPrintDelimNode(final ITree<String> tree, final StringBuilder sb) {
+ private void intPrintDelimNode(final Tree<String> tree, final StringBuilder sb) {
if (tree.getHead().equals("contents")) {
intPrintDelimTree(tree, sb);
return;
@@ -458,7 +458,7 @@ public class DelimSplitterCLI {
case 3:
intPrintDelimNode(tree.getChild(0), sb);
- final ITree<String> contents = tree.getChild(1);
+ final Tree<String> contents = tree.getChild(1);
intPrintDelimTree(contents.getChild(0), sb);
intPrintDelimNode(tree.getChild(2), sb);