create Creating the Input-Loop page.

master
Craig Oates 5 years ago
parent
commit
86db11e997
  1. 31
      Creating-the-Input-Loop.md

31
Creating-the-Input-Loop.md

@ -0,0 +1,31 @@
Because of how Console.Waterworks (C.W.) is set-up, the command the end-user enters into the prompt **must match the name of the command-method** -- in "ConsoleCommands.fs". Before we get too far into discussing that, though, we must look at how the program creates the input-loop.
```f#
open Console.Waterworks
[<EntryPoint>]
let main argv =
let liaison = new CW_Liaison ()
liaison.Run ("Commands", true)
0 // return an integer exit code
```
That snippet of code is all what is in "Program.fs". Once you know what is happening in here, you should never need to look at this file much -- if at all.
What is happening is a new `CW_Liaison` object is created and is told to `run`. This is where C.W. creates the input-loop which runs indefinitely until the end-user closes the console (or the program crashes). The first argument passed into `run` refers to the name-space of the `ConsoleCommands` module. In this case it is `Commands`. The second one refers to the information displayed in the console when you run it. When set to `true`, the console displays information found in "AssemblyInfo.fs". If you use `false`, the only thing you will see is the prompt. You can check the name-space of the `ConsoleCommand` module via the following link;
- ["ConsoleCommands.fs"](https://gitlab.com/craig.oates/Smouldering-Beach-Ball/blob/master/SmoulderingBeachBallCLI/ConsoleCommands.fs)
How C.W. creates and manages the input-loop is out of this wiki's scope. Although, if you would like to know more about how is is created, you can use the following link;
- [Console.Waterworks Wiki](https://gitlab.com/craig.oates/Console.Waterworks/wikis/The-Flow-of-the-System)
Here are examples of what is displayed at run-time when you pass `true` or `false` into the `liaison.Run` command, mentioned above.
IMAGE OF ASSEMBLY INFO IN CONSOLE.
IMAGE OF NO ASSEMBLY INFO IN CONSOLE.
Up above, I said I would elaborate on why the end-user's commands must match the name of the commands in the `ConsoleCommands` module. I will do that but not here because it ventures a little too far off topic for this section. So, I have created a dedicated section for it. You can access it with the following link;
- [Command-Methods Overview](Command-Methods-Overview)
Loading…
Cancel
Save