Module Merlin_utils.Marg
Argument parsing library which fold over arguments
Specifications of arguments is split in two passes:
_ tablefor parsing global arguments (compiler flags, merlin configuration)- a (string * _ t) for parsing command local arguments
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.
type 'acc table = (string, 'acc Merlin_utils.Marg.t) Stdlib.Hashtbl.tA table mapping a flag to the corresponding action
Combinators for building actions
val unit : ('acc -> 'acc) -> 'acc Merlin_utils.Marg.tAction updating state and not consuming any argument
val param : string -> (string -> 'acc -> 'acc) -> 'acc Merlin_utils.Marg.tAction consuming a single argument
val bool : (bool -> 'acc -> 'acc) -> 'acc Merlin_utils.Marg.tAction consuming a boolean argument
val int : (int -> 'acc -> 'acc) -> 'acc Merlin_utils.Marg.tAction consuming an integer argument
val unit_ignore : 'acc Merlin_utils.Marg.tAction doing nothing
val param_ignore : 'acc Merlin_utils.Marg.tAction doing nothing and dropping one argument
Parsing of argument lists
type 'a spec = string * Merlin_utils.Marg.docstring * 'a Merlin_utils.Marg.tval parse_one :
warning:(string -> unit) ->
'global Merlin_utils.Marg.table ->
'local Merlin_utils.Marg.spec list ->
string list ->
'global ->
'local ->
(string list * 'global * 'local) optionConsume 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.
val parse_all :
warning:(string -> unit) ->
'global Merlin_utils.Marg.table ->
'local Merlin_utils.Marg.spec list ->
string list ->
'global ->
'local ->
'global * 'localConsume all arguments from the input list, calling warning for incorrect ones and resuming parsing after.