sig
type 'a record
type 'a signature
type ('a, 'b) field
module type S =
sig
type r
type t = r record
val jtype : Package.jtype
val of_json : json -> t
val to_json : t -> json
val default : t
val has : (Data.Record.S.r, 'a) Data.Record.field -> t -> bool
val get : (Data.Record.S.r, 'a) Data.Record.field -> t -> 'a
val set : (Data.Record.S.r, 'a) Data.Record.field -> 'a -> t -> t
end
val signature : unit -> 'a Data.Record.signature
val field :
'r Data.Record.signature ->
name:string ->
descr:Markdown.text ->
?default:'a -> 'a Data.data -> ('r, 'a) Data.Record.field
val option :
'r Data.Record.signature ->
name:string ->
descr:Markdown.text -> 'a Data.data -> ('r, 'a option) Data.Record.field
val publish :
package:Package.package ->
name:string ->
?descr:Markdown.text ->
'a Data.Record.signature -> (module Data.Record.S with type r = 'a)
end