gully

Procs

proc `$`(document: Document): string {...}{.raises: [Exception, ValueError],
                                   tags: [RootEffect].}
proc add(document: Document; line: Line) {...}{.raises: [], tags: [].}
add a Line to a Document
proc newLineGroup(): LineGroup {...}{.raises: [], tags: [].}
create a new LineGroup
proc newDocument(): Document {...}{.raises: [], tags: [].}
make a new Document
proc newDocument(stream: Stream): Document {...}{.raises: [Defect, IOError, OSError],
    tags: [ReadIOEffect].}
make a new Document; populate it from an input Stream
proc newMutation(kind: MutationKind): Mutation {...}{.raises: [], tags: [].}
all mutations are instantiated here
proc `[]`(recipe: Recipe; kind: MutationKind): Mutation {...}{.raises: [KeyError], tags: [].}
convenience syntax for fetching the given mutation
proc `[]=`(recipe: Recipe; kind: MutationKind; mutation: Mutation) {...}{.raises: [], tags: [].}
a singular entry for mutations into the recipe
proc add[T](recipe: Recipe; kind: MutationKind; value: T) {...}{.used.}
used at runtime to instantiate new mutations in the cligen'd proc
proc add[T](recipe: Recipe; kind: MutationKind; value: T; switch: string; help = "")
instantiate a new mutation with the given switch and add it to the recipe
proc contains(recipe: Recipe; kind: MutationKind): bool {...}{.raises: [], tags: [].}
is a mutation of the provided kind in the given Recipe
proc newRecipe(): Recipe {...}{.raises: [], tags: [].}
create a new Recipe and prepare it for Mutation
proc switchIdent(switch: string): NimNode {...}{.raises: [], tags: [].}
turn a string into its suitable ident"long_option"
proc switchIdent(mutation: Mutation): NimNode {...}{.raises: [], tags: [].}
turn a mutation into its suitable ident"long_option"
proc toIdentDefs(mutation: Mutation): NimNode {...}{.raises: [], tags: [].}
turn a mutation into a param typedef for a cligen input proc
proc createDefaultRecipe(): Recipe {...}{.compileTime, raises: [ValueError], tags: [].}
enumerate the default recipe, setting defaults and help text
proc makeCliEntryProcedure(recipe: Recipe; nameIt: string): NimNode {...}{.compileTime,
    raises: [KeyError], tags: [].}
create a new entry procedure for cligen using the given Recipe
proc helpText(recipe: Recipe): HelpText {...}{.raises: [], tags: [].}
generate help text from a recipe; see also keyValueToHelp
proc considerArgumentOrder(recipe: var Recipe; parsed: seq[ClParse]) {...}{.
    raises: [KeyError, ValueError], tags: [].}
lookup the arguments and register them, in order, in the recipe
proc includesFailure(parsed: seq[ClParse]): bool {...}{.raises: [], tags: [].}
true if the list of parsed options includes a failure
proc `$`(parse: ClParse): string {...}{.raises: [], tags: [].}
render a parse result
proc outputErrors(parsed: seq[ClParse]) {...}{.raises: [Exception], tags: [RootEffect].}
report command-line parse errors to the user
proc cliRecipe(max_width: int = 80; min_width: int = 16; tab_size: int = 2; padding: int = 2;
              syntax: string = "#"; header: string = "#["; footer: string = "]#";
              leader: string = "  "; grow_lines: Preposition = Preposition(8);
              indent: bool = true; flow_mo: bool = false; remove_comments: bool = false;
              word_wrap: bool = true; center_text: bool = false;
              align_right: bool = false; strip_whitespace: bool = true;
              borders: Preposition = Preposition(0); shrink_wrap: bool = true;
              justify: bool = false; thick: bool = false; thin: bool = false;
              gravity: ContentKind = ContentKind(1); gully: bool = true;
              dry_run: bool = false; log_level: Level = Level(2)): int {...}{.
    raises: [Exception, Defect, IOError, OSError, ValueError, KeyError],
    tags: [RootEffect, ReadIOEffect, WriteIOEffect].}
generated by a macro for use by cligen

Macros

macro keyValueToHelp(help: static[HelpText]): untyped
turn a sequence of (switch: string, help: string) into {"switch-name": "help", ...}; this is the required input for cligen's dispatchGen
macro cliEntryProcedureBody(name: static[string]; body: untyped): untyped
create a cli entry with the given body