# 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.

# Imports

os, strutils

# 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