module Annotated_field:sig
..end
An example is as follows:
module M = struct
type t = {
field1 : int;
field2 : float;
field3 : bool;
field4 : string option;
} with fields
module A = Annotated_field
let ann_fields = Fields.fold ~init:[]
~field1:(A.required ~doc:" documentation for field1")
~field2:(A.default 1.0 string_of_float ~doc:" documentation for field2")
~field3:(A.set ~doc:" documentation for field3")
~field4:(A.optional ~doc:" documentation for field4")
let command = create
~summary:"summary"
~init:(fun () -> A.init ann_fields)
~usage_arg:""
~flags:(List.map ann_fields ~f:A.to_flag)
~final:(fun accum _anon_args ->
let get of_string = A.get accum of_string in
let get_opt of_string = A.get_opt accum of_string in
Fields.map
~field1:(get int_of_string)
~field2:(get Float.of_string)
~field3:(get bool_of_string)
~field4:(get_opt ident)
)
~main:(fun _ -> assert false)
endtype
t
type
accum
val required : ?name:string ->
t list ->
doc:string ->
('a, 'b) Fieldslib.Field.t -> t list
val default : ?name:string ->
'field ->
('field -> string) ->
t list ->
doc:string ->
('a, 'field) Fieldslib.Field.t -> t list
val optional : ?name:string ->
?suppress_word_optional:bool ->
t list ->
doc:string ->
('a, 'b option) Fieldslib.Field.t ->
t list
val set : ?name:string ->
t list ->
doc:string ->
('a, bool) Fieldslib.Field.t -> t list
val clear : ?name:string ->
t list ->
doc:string ->
('a, bool) Fieldslib.Field.t -> t list
val list : ?name:string ->
t list ->
doc:string ->
('a, 'b list) Fieldslib.Field.t -> t list
val init : t list ->
accum
val to_flag : t ->
accum Deprecated_command.Flag.t
val get : accum ->
(string -> 'field) -> ('a, 'field) Fieldslib.Field.t -> 'field
val get_opt : accum ->
(string -> 'field) -> ('a, 'field option) Fieldslib.Field.t -> 'field option
val get_list : accum ->
(string -> 'field) -> ('a, 'field list) Fieldslib.Field.t -> 'field list