summaryrefslogtreecommitdiff
path: root/BJC-Utils2/src/main/java/bjc/utils/cli/fds/FDSState.java
diff options
context:
space:
mode:
authorbjculkin <bjculkin@mix.wvu.edu>2017-03-28 16:48:43 -0400
committerbjculkin <bjculkin@mix.wvu.edu>2017-03-28 16:48:43 -0400
commitdaceafeeb90680116c289a7c301c42eb3e57eb97 (patch)
tree77e4656d7559bc84ff381fc95f285a41c4c7d867 /BJC-Utils2/src/main/java/bjc/utils/cli/fds/FDSState.java
parent32041545ef34fa83aeea682d97be4ca9a94659f2 (diff)
Mostly finish FDS core
The major changes this time are that we have both data/command macros, as well as proper Unicode character support.
Diffstat (limited to 'BJC-Utils2/src/main/java/bjc/utils/cli/fds/FDSState.java')
-rw-r--r--BJC-Utils2/src/main/java/bjc/utils/cli/fds/FDSState.java54
1 files changed, 44 insertions, 10 deletions
diff --git a/BJC-Utils2/src/main/java/bjc/utils/cli/fds/FDSState.java b/BJC-Utils2/src/main/java/bjc/utils/cli/fds/FDSState.java
index 1627b11..e28e6bc 100644
--- a/BJC-Utils2/src/main/java/bjc/utils/cli/fds/FDSState.java
+++ b/BJC-Utils2/src/main/java/bjc/utils/cli/fds/FDSState.java
@@ -1,9 +1,14 @@
package bjc.utils.cli.fds;
import java.io.PrintStream;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Consumer;
import bjc.utils.esodata.SimpleStack;
import bjc.utils.esodata.Stack;
+import bjc.utils.ioutils.Block;
import bjc.utils.ioutils.PushbackBlockReader;
/**
@@ -39,15 +44,7 @@ public class FDSState<S> {
*
* The semicolon can be escaped with a backslash.
*/
- INLINE,
- /**
- * Reads every character in the block, but after a terminal
- * command, data will be read in-line with each character being
- * a separate item until a semicolon is read.
- *
- * The semicolon can be escaped with a backslash.
- */
- CHARINLINE,
+ INLINE;
}
/**
@@ -80,6 +77,29 @@ public class FDSState<S> {
public PrintStream printer;
/**
+ * The repository for data macros.
+ */
+ public Map<String, List<Block>> dataMacros;
+
+ /**
+ * The repository for command macros.
+ */
+ public Map<String, List<Block>> commandMacros;
+
+ FDSMode<S> dataMacroMode;
+ FDSMode<S> comMacroMode;
+
+ /**
+ * Function to change the current data prompt.
+ */
+ public Consumer<String> dataPrompter;
+
+ /**
+ * The default data prompt.
+ */
+ public String defaultPrompt;
+
+ /**
* Create a new interface state.
*
* @param stat
@@ -95,9 +115,14 @@ public class FDSState<S> {
*
* @param print
* The destination for output.
+ * @param dataPrompt
+ * The function to use for changing the data prompt.
+ *
+ * @param normalPrompt
+ * The default data prompt.
*/
public FDSState(S stat, InputMode inputMode, PushbackBlockReader cmin, PushbackBlockReader datin,
- PrintStream print) {
+ PrintStream print, Consumer<String> dataPrompt, String normalPrompt) {
state = stat;
mode = inputMode;
@@ -105,6 +130,15 @@ public class FDSState<S> {
datain = datin;
printer = print;
+ dataPrompter = dataPrompt;
+ defaultPrompt = normalPrompt;
+
modes = new SimpleStack<>();
+
+ dataMacros = new HashMap<>();
+ commandMacros = new HashMap<>();
+
+ dataMacroMode = new MacroFDSMode<>(dataMacros, datain::addBlock);
+ comMacroMode = new MacroFDSMode<>(commandMacros, comin::addBlock);
}
} \ No newline at end of file