diff options
Diffstat (limited to 'BJC-Utils2/src/examples/java/bjc')
| -rw-r--r-- | BJC-Utils2/src/examples/java/bjc/utils/examples/cli/FDSExample.java | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/BJC-Utils2/src/examples/java/bjc/utils/examples/cli/FDSExample.java b/BJC-Utils2/src/examples/java/bjc/utils/examples/cli/FDSExample.java index aab4985..38b9e0c 100644 --- a/BJC-Utils2/src/examples/java/bjc/utils/examples/cli/FDSExample.java +++ b/BJC-Utils2/src/examples/java/bjc/utils/examples/cli/FDSExample.java @@ -1,9 +1,17 @@ package bjc.utils.examples.cli; +import java.io.InputStreamReader; + import bjc.utils.cli.fds.FDS; import bjc.utils.cli.fds.FDSException; import bjc.utils.cli.fds.FDSMode; +import bjc.utils.cli.fds.FDSState; import bjc.utils.cli.fds.SimpleFDSMode; +import bjc.utils.cli.fds.FDSState.InputMode; +import bjc.utils.ioutils.BlockReader; +import bjc.utils.ioutils.PushbackBlockReader; +import bjc.utils.ioutils.SimpleBlockReader; +import bjc.utils.ioutils.TriggeredBlockReader; /** * Simple example for FDS. @@ -12,6 +20,13 @@ import bjc.utils.cli.fds.SimpleFDSMode; * */ public class FDSExample { + private static final class Prompter implements Runnable { + @Override + public void run() { + System.out.print("Enter a command (m to exit): "); + } + } + /** * Main method. * @@ -25,8 +40,24 @@ public class FDSExample { FDSMode<TestContext> testMode = new SimpleFDSMode<>(); TestContext ctx = new TestContext(); + InputStreamReader reader = new InputStreamReader(System.in); + try { - FDS.runFDS(System.in, System.in, System.out, testMode, ctx); + BlockReader input = new SimpleBlockReader("\\R", reader); + + Prompter comPrompter = new Prompter(); + Prompter dataPrompter = new Prompter(); + + BlockReader rawComInput = new TriggeredBlockReader(input, comPrompter); + BlockReader rawDataInput = new TriggeredBlockReader(input, dataPrompter); + + PushbackBlockReader comInput = new PushbackBlockReader(rawComInput); + PushbackBlockReader dataInput = new PushbackBlockReader(rawDataInput); + + FDSState<TestContext> fdsState = new FDSState<>(ctx, InputMode.CHORD, comInput::addBlock, + dataInput::addBlock); + + FDS.runFDS(comInput, dataInput, System.out, testMode, fdsState); } catch (FDSException fex) { fex.printStackTrace(); } |
