namespace Commands module ConsoleCommands = open System open Console.Waterworks.Core open Console.Waterworks.Core.Attributes open FunkyFishCore // This is where the "LibraryTest" functions are -- in BFLibCore [] [] [] [ test">] let test() = "The console is working" [] [] [] [ exit">] let exit() = System.Environment.Exit(Environment.ExitCode) [] [] [] [ help">] let help() = let liaison = CW_Liaison() liaison.RequestHelpDocumentation("Commands") [] [] [] [ libtest1 5 10">] let libtest1 x y = String.Format("Result: {0}" , LibraryTest1 x y) [] [] [] [ libtest2 5 10 2">] let libtest2 x y z = String.Format("Result: {0}", (LibraryTest2 x y z)) [] [] [] [ libtest3 \"Craig Oates\"">] let libtest3 name = String.Format("Result: {0}", LibraryTest3 name) (* WARNING: Here are some gotchas. =============================== (I will explain using "test 1" as the example but it applies to all of the below.) This command-method looks like it works but it is a false-positive. The reason why it "works" in this instance is because there is a command-method called "Test" up above (line 13). Console.Waterworks interprets the input as "Test" is the command-method and "1" is a parameter. The same goes for the others with a space in their name. Because Test does not take any parameteres, Console.Waterworks ignores the extra input from the user. Console.Waterworks only worries about the parameters when the command-method specifies it requires them. GENERAL RULE: ============= Avoid using F# features for creating variables, functions Etc. with spaces in them. *) [] [] [] [ test 1">] let ``test 1``() = "Result: Test 1 working" (* This does not work.*) [] [] [] [ > test-2">] let ``test-2``() = "Result: Test 2 working" (* This does work. *) [] [] [] [ test 3">] let """test 3""" = "Result: Test 3 working" (* This does not work. *) [] [] [] [ test 4">] let """test-4""" = "Result: Test 4 working" (* This does not work. *)