   end
 
   @doc """
-  Receives a key-value enumerable and convert it to argv.
+  Receives a key-value enumerable and converts it to argv.
 
   Keys must be atoms. Keys with nil value are discarded,
   boolean values are converted to `--key` or `--no-key`

      iex> OptionParser.parse(["--source-path", "lib", "test/enum_test.exs", "--verbose"])
      {[source_path: "lib", verbose: true], ["test/enum_test.exs"], []}

  By default, Elixir will try to automatically parse switches.
  Switches without an argument, like `--debug` will automatically
  be set to `true`. Switches followed by a value will be assigned
  to the value, always as strings.

  Note Elixir also converts the switches to underscore atoms, as
  `--source-path` becomes `:source_path`, to better suit Elixir
  conventions. This means that option names on the command line cannot contain
  underscores; such options will be reported as `:undefined` (in strict mode)
  or `:invalid` (in basic mode).

  ## Switches

  Many times though, it is better to explicitly list the available
  switches and their formats. The switches can be specified via two
  different options:

    * `:strict` - the switches are strict. Any switch that does not
      exist in the switch list is treated as an error.

    * `:switches` - defines some switches. Switches that do not
      exist in the switch list are still attempted to be parsed.

  Note only `:strict` or `:switches` may be given at once.

  For each switch, the following types are supported:


    * `:float`   - parses the switch as a float.
    * `:string`  - returns the switch as a string.

  If a switch can't be parsed, it is returned in the invalid options list.

  The following extra "types" are supported:

    * `:keep` - keeps duplicated items in the list instead of overriding them.

  Note: if you want to use `:keep` with a non-string type, use a list, e.g.
  `[foo: [:integer, :keep]]`.

  Examples:

