diff options
| author | bjculkin <bjculkin@mix.wvu.edu> | 2017-03-28 16:48:43 -0400 |
|---|---|---|
| committer | bjculkin <bjculkin@mix.wvu.edu> | 2017-03-28 16:48:43 -0400 |
| commit | daceafeeb90680116c289a7c301c42eb3e57eb97 (patch) | |
| tree | 77e4656d7559bc84ff381fc95f285a41c4c7d867 /BJC-Utils2/src/main/java/bjc/utils/cli/fds/FDSState.java | |
| parent | 32041545ef34fa83aeea682d97be4ca9a94659f2 (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.java | 54 |
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 |
