Resto.Arg
Arguments are documented serializers-deserializers for parameters.
type 'a arg = 'a t
val make :
?descr:string ->
name:string ->
destruct:(string -> ('a, string) Stdlib.result) ->
construct:('a -> string) ->
unit ->
'a arg
make ?descr ~name ~destruct ~construct ()
is an argument. The values of descr
and name
are used for documentation purpose only. The values of destruct
and construct
are used for conversion from/to string
s. Note that it is expected that destruct
and construct
round-trip (modulo the result
error wrapping).
val bool : bool arg
bool
is an argument for boolean values. The strings "yes"
, "y"
, "true"
, and "t"
, as well as all capitalisation variation thereof, all parsed to true
. The strings "no"
, "n"
, "false"
, and "f"
, as well as all capitalisation variation thereof, all parsed to false
. All other strings fail to parse.
val int : int arg
int
is an argument for integer values. The parsing is identical to that of Stdlib.int_of_string
-- refer to that function's documentation.
val int32 : int32 arg
int32
is an argument for 32-bit integer values. The parsing is identical to that of Int32.of_string
-- refer to that function's documentation.
val int64 : int64 arg
int64
is an argument for 64-bit integer values. The parsing is identical to that of Int64.of_string
-- refer to that function's documentation.
val float : float arg
float
is an argument for floating-point decimal values. The parsing is identical to that of Float.of_string
-- refer to that function's documentation.
val string : string arg
string
is an argument for string values. No parsing is done.
like a ?descr name
is a new argument which carries the same type parameter and uses the same constructor/destructor functions as a
, but has a different name and description. It is intended to be used to give different meaning to isomorphic arguments. E.g.,
let date =
make ~descr:"A date in YYYY-MM-DD format" ~name:"date"
~destruct:(fun s -> ..) ~construct:(fun d -> ..)
() in
let birth_date =
like date
~descr:"A date of birth in the YYYY-MM-DD format" "birth-date" in
..