Module parseopt

This module provides the standard Nimrod command line parser. It supports one convenience iterator over all command line options and some lower-level features.

Types

TCmdLineKind* = enum 
  cmdEnd,                     ## end of command line reached
  cmdArgument,                ## argument detected
  cmdLongoption,              ## a long option ``--option`` detected
  cmdShortOption              ## a short option ``-c`` detected
the detected command line token
TOptParser* = object of TObject
  cmd: string
  pos: int
  inShortState: bool
  kind*: TCmdLineKind         ## the dected command line token
  key*, val*: TaintedString   ## key and value pair; ``key`` is the option
                              ## or the argument, ``value`` is not "" if
                              ## the option was given a value
  
this object implements the command line parser

Procs

proc initOptParser*(cmdline = ""): TOptParser
inits the option parser. If cmdline == "", the real command line (as provided by the OS module) is taken.
proc next*(p: var TOptParser) {.rtl, extern: "npo$1".}
parses the first or next option; p.kind describes what token has been parsed. p.key and p.val are set accordingly.
proc cmdLineRest*(p: TOptParser): TaintedString {.rtl, extern: "npo$1".}
retrieves the rest of the command line that has not been parsed yet.

Iterators

iterator getopt*(): tuple[kind: TCmdLineKind, key, val: TaintedString]
This is an convenience iterator for iterating over the command line. This uses the TOptParser object. Example:
var
  filename = ""
for kind, key, val in getopt():
  case kind
  of cmdArgument:
    filename = key
  of cmdLongOption, cmdShortOption:
    case key
    of "help", "h": writeHelp()
    of "version", "v": writeVersion()
  of cmdEnd: assert(false) # cannot happen
if filename == "":
  # no filename has been given, so we show the help:
  writeHelp()
Generated: 2012-09-23 21:47:54 UTC