úÎ!e@að9      !"#$%&'()*+,-./0123456789Application library for building interactive console CLIs(c) Erick Gonzalez, 2017-2018BSD3erick@codemonkeylabs.deNone"#;<=N`i!structured-cliMAn alias type for the case where CommandsT wraps IO only (i.e. no state, etc)structured-cliThe  transformer monad is the key to building a CLI tree. It is meant to be used as a transformer wrapping an application specific "user" monad (for example, a 9U monad encapsulating application state). This monad is executed _once_ upon calling -ÿ to build the command tree. Keep in mind however that any parsers or actions used in any given command all run in the "user" monad and unlike the process of building the command tree, they will be called multiple times as the user navigates the CLI at runtime. Each ÿM monadic action corresponds to a single "node" (a.k.a. command) in the CLI. Succesive actions simply add commands to the current "level". It is possible to "nest" a new level to a command by using the '(>+)' operator. When properly indented (see example code above) it provides a pretty self explanatory way to build the CLI tree. structured-clihCLI Settings provided upon launching the CLI. It is recommended to modify the settings provided by the : instance: i.e:  def { getBanner = "My CLI" } e that way you can use for example the default exception handler which should suit usual needs, etc. structured-cliKAn optional filename to activate and store the CLI command history function structured-cli1Text to display upon start of the CLI application structured-cliHPrompt characters to display to the right of the current command "stack"structured-cli)Disable prompt for use with batch scriptsstructured-cliException handlerstructured-cli-There is no need to concern oneself with the V type unless one is writing a custom parser, which should actually be rarer than not.structured-cliIParsing provided input doesnt match this command. The difference between  and ­ is a fine but important one. Failure should be used for example when a command keyword is correct but a required parameter is invalid or contains an error for example. A Z should be exclusively used when a command keyword does not correspond to the given inputstructured-cli5Output string to be fed to the command action handlerstructured-cli6Part of the string matched during parsing of a commandstructured-cliRemaining input datastructured-cli?List of possible completions after given input for this commandstructured-cliRemaining input datastructured-cli>A message string containing a possible hint for correct useagestructured-cliRemaining input datastructured-cliA × is a function to which a parsed string is given in order to perform any checks for validity that may be applicable, or even transforming the argument if necessary. Note that the validator runs in the "user" monadstructured-cliAn ~ is returned as the result of a command handler provided by the user and it instructs the CLI of any changes in the CLI statestructured-cliAThe command executed is "entered" into, creating a new CLI level. structured-cliDo not enter a new level.!structured-cli3Reset the CLI state up to a given number of levels."structured-cli4Go back up all the way to the top (root) of the CLI.$structured-cli“the CommandsT "nest" operation. It adds a new deeper CLI level to the command on the left side with the commands on the right side, for example: ' activate >+ do foo bar baz 6 Would result in the following CLI command structure: > activate activate > ?- foo ..- bar ..- baz ..%structured-cliBBuild a command node that is always active and takes no parameters&structured-cliA variation of %Ó that allows for "disabling" the command at runtime by running the given "enable" monadic action (as always in the "user" monad) to check if the command should be displayed as an option and/or accepted or not.'structured-cliÿ Build a command node that takes one parameter (delimited by space). The parsed parameter is fed to the validator monadic function (in the "user" monad) and the resulting string if any is fed in turn as an argument to the handler action (also in the "user" monad).(structured-cliA variation of 'Ó that allows for "disabling" the command at runtime by running the given "enable" monadic action (as always in the "user" monad) to check if the command should be displayed as an option and/or accepted or not.)structured-cliHA utility action to reset the CLI tree to the root node . Equivalent to  return ToRoot*structured-cliAA utility action to "leave" the current CLI level. Equivalent to return $ LevelUp 1+structured-cli?A utility action to "nest" into a new CLI level. Equivalent to return NewLevel,structured-cliIA utility action to leave the current CLI level untouched. Equivalent to return NoAction-structured-cliãLaunches the CLI application. It doesn't normally return unless an exception is thrown or if it runs out of input in batch mode. Normal return value is that returned by the CommandsT action that built the tree. Remember that   is an instance of :%structured-cliCommand keywordstructured-cliHelp text for this commandstructured-cli!Action in the "user" monad (i.e. return NewLevel)&structured-cliCommand keywordstructured-cliHelp text for this commandstructured-cli!Enable action in the "user" monadstructured-cli!Action in the "user" monad (i.e. return NewLevel)'structured-cliCommand keywordstructured-cli;Help text for this command (including argument description)structured-cli'Monadic validator (in the "user" monad)structured-cli!Action in the "user" monad (i.e. return NewLevel)(structured-cliCommand keywordstructured-cli;Help text for this command (including argument description)structured-cli'Monadic validator (in the "user" monad)structured-cli!Enable action in the "user" monadstructured-cli!Action in the "user" monad (i.e. return NewLevel).  !"#$%&'()*+,-. !"# $%&*+,'(-);9 <       !"#$%&'()*+,-./0123456789:;<=>?-structured-cli-2.0.0.0-DhuKbPTphbTJTXFLhZI0W1System.Console.StructuredCLICommands CommandsT CLIExceptionExit InternalError SyntaxErrorUndecisiveInput HelpRequestedInvalidOperationSettings getHistory getBanner getPromptisBatchhandleException ParseResultDonePartialFailNoMatch getOutputgetDoneMatchedgetDoneRemaininggetCompletionsgetPartialRemaininggetFailMessagegetFailRemaining ValidatorParserActionNewLevelNoActionLevelUpToRootHandler>+commandcommand'paramparam'topexitnewLevelnoActionrunCLI $fDefault(->)$fDefault(->)0$fDefaultSettings$fMonadIOCommandsT$fMonadTransCommandsT$fMonadCommandsT$fApplicativeCommandsT$fFunctorCommandsT $fShowAction$fShowParseResult$fShowCLIExceptionState1data-default-class-0.1.2.0-2kYzERBLX3wJoPfj7mwVvWData.Default.ClassDefault-.-