Argument parsing library which fold over arguments
Specifications of arguments is split in two passes:
_ table
for parsing global arguments (compiler flags, merlin configuration)- a (string * _ t) for parsing command local arguments
Sourcetype 'acc t = string list -> 'acc -> string list * 'acc
Action associated to a flag updating a state of type 'acc. It takes a list of arguments and either succeeds returning untouched arguments or fails raising an exception.
A table mapping a flag to the corresponding action
Combinators for building actions
Sourceval unit : ('acc -> 'acc) -> 'acc t
Action updating state and not consuming any argument
Sourceval param : string -> (string -> 'acc -> 'acc) -> 'acc t
Action consuming a single argument
Sourceval bool : (bool -> 'acc -> 'acc) -> 'acc t
Action consuming a boolean argument
Sourceval int : (int -> 'acc -> 'acc) -> 'acc t
Action consuming an integer argument
Action doing nothing and dropping one argument
Parsing of argument lists
Sourceval parse_one :
warning:(string -> unit) ->
'global table ->
'local spec list ->
string list ->
'global ->
'local ->
(string list * 'global * 'local) option
Consume at most one flag from the list, returning updated state or None
in case of failure. Warning function is called with an error message in case of incorrect use.
Sourceval parse_all :
warning:(string -> unit) ->
'global table ->
'local spec list ->
string list ->
'global ->
'local ->
'global * 'local
Consume all arguments from the input list, calling warning for incorrect ones and resuming parsing after.