sig
type plugin = Kernel | Plugin of string
type ident = private {
plugin : Package.plugin;
package : string list;
name : string;
}
type jtype =
Jany
| Jnull
| Jboolean
| Jnumber
| Jstring
| Jalpha
| Jtag of string
| Jkey of string
| Jindex of string
| Joption of Package.jtype
| Jdict of Package.jtype
| Jlist of Package.jtype
| Jarray of Package.jtype
| Jtuple of Package.jtype list
| Junion of Package.jtype list
| Jrecord of (string * Package.jtype) list
| Jdata of Package.ident
| Jenum of Package.ident
| Jself
type fieldInfo = {
fd_name : string;
fd_type : Package.jtype;
fd_descr : Markdown.text;
}
type tagInfo = {
tg_name : string;
tg_label : Markdown.text;
tg_descr : Markdown.text;
}
type paramInfo =
P_value of Package.jtype
| P_named of Package.fieldInfo list
type requestInfo = {
rq_kind : [ `EXEC | `GET | `SET ];
rq_input : Package.paramInfo;
rq_output : Package.paramInfo;
}
type arrayInfo = { arr_key : string; arr_kind : Package.jtype; }
type declKindInfo =
D_signal
| D_type of Package.jtype
| D_enum of Package.tagInfo list
| D_record of Package.fieldInfo list
| D_request of Package.requestInfo
| D_value of Package.jtype
| D_state of Package.jtype
| D_array of Package.arrayInfo
| D_safe of Package.ident * Package.jtype
| D_loose of Package.ident * Package.jtype
| D_order of Package.ident * Package.jtype
type declInfo = {
d_ident : Package.ident;
d_descr : Markdown.text;
d_kind : Package.declKindInfo;
}
type packageInfo = {
p_plugin : Package.plugin;
p_package : string list;
p_title : string;
p_descr : Markdown.text;
p_readme : string option;
p_content : Package.declInfo list;
}
val pp_plugin : Stdlib.Format.formatter -> Package.plugin -> unit
val pp_pkgname : Stdlib.Format.formatter -> Package.packageInfo -> unit
val pp_ident : Stdlib.Format.formatter -> Package.ident -> unit
val pp_jtype : Stdlib.Format.formatter -> Package.jtype -> unit
val derived :
?prefix:string -> ?suffix:string -> Package.ident -> Package.ident
module Derived :
sig
val signal : Package.ident -> Package.ident
val getter : Package.ident -> Package.ident
val setter : Package.ident -> Package.ident
val data : Package.ident -> Package.ident
val fetch : Package.ident -> Package.ident
val reload : Package.ident -> Package.ident
val safe : Package.ident -> Package.ident
val loose : Package.ident -> Package.ident
val order : Package.ident -> Package.ident
val decode : safe:bool -> Package.ident -> Package.ident
end
module IdMap :
sig
type key = ident
type +'a t
val empty : 'a t
val is_empty : 'a t -> bool
val mem : key -> 'a t -> bool
val add : key -> 'a -> 'a t -> 'a t
val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
val singleton : key -> 'a -> 'a t
val remove : key -> 'a t -> 'a t
val merge :
(key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> 'c t
val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
val iter : (key -> 'a -> unit) -> 'a t -> unit
val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
val for_all : (key -> 'a -> bool) -> 'a t -> bool
val exists : (key -> 'a -> bool) -> 'a t -> bool
val filter : (key -> 'a -> bool) -> 'a t -> 'a t
val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
val cardinal : 'a t -> int
val bindings : 'a t -> (key * 'a) list
val min_binding : 'a t -> key * 'a
val min_binding_opt : 'a t -> (key * 'a) option
val max_binding : 'a t -> key * 'a
val max_binding_opt : 'a t -> (key * 'a) option
val choose : 'a t -> key * 'a
val choose_opt : 'a t -> (key * 'a) option
val split : key -> 'a t -> 'a t * 'a option * 'a t
val find : key -> 'a t -> 'a
val find_opt : key -> 'a t -> 'a option
val find_first : (key -> bool) -> 'a t -> key * 'a
val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
val find_last : (key -> bool) -> 'a t -> key * 'a
val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
val map : ('a -> 'b) -> 'a t -> 'b t
val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
val to_seq : 'a t -> (key * 'a) Seq.t
val to_seq_from : key -> 'a t -> (key * 'a) Seq.t
val add_seq : (key * 'a) Seq.t -> 'a t -> 'a t
val of_seq : (key * 'a) Seq.t -> 'a t
end
module Scope :
sig
type t
val create : Package.plugin -> Package.Scope.t
val reserve : Package.Scope.t -> string -> unit
val declare : Package.Scope.t -> Package.ident -> unit
val use : Package.Scope.t -> Package.ident -> unit
val resolve : Package.Scope.t -> string Package.IdMap.t
end
val isRecursive : Package.jtype -> bool
val visit_jtype : (Package.ident -> unit) -> Package.jtype -> unit
val visit_field : (Package.ident -> unit) -> Package.fieldInfo -> unit
val visit_param : (Package.ident -> unit) -> Package.paramInfo -> unit
val visit_request : (Package.ident -> unit) -> Package.requestInfo -> unit
val visit_dkind : (Package.ident -> unit) -> Package.declKindInfo -> unit
val visit_decl : (Package.ident -> unit) -> Package.declInfo -> unit
val visit_package_decl :
(Package.ident -> unit) -> Package.packageInfo -> unit
val visit_package_used :
(Package.ident -> unit) -> Package.packageInfo -> unit
type package
val package :
?plugin:string ->
?name:string ->
title:string ->
?descr:Markdown.text -> ?readme:string -> unit -> Package.package
val declare :
package:Package.package ->
name:string -> ?descr:Markdown.text -> Package.declKindInfo -> unit
val declare_id :
package:Package.package ->
name:string ->
?descr:Markdown.text -> Package.declKindInfo -> Package.ident
val update :
package:Package.package -> name:string -> Package.declKindInfo -> unit
val iter : (Package.packageInfo -> unit) -> unit
val resolve :
?keywords:string list -> Package.packageInfo -> string Package.IdMap.t
val field : Package.fieldInfo -> string * Package.jtype
val name_of_pkg : ?sep:string -> Package.plugin -> string list -> string
val name_of_pkginfo : ?sep:string -> Package.packageInfo -> string
val name_of_package : ?sep:string -> Package.package -> string
val name_of_ident : ?sep:string -> Package.ident -> string
type pp = { self : Markdown.text; ident : Package.ident -> Markdown.text; }
val litteral : string -> Markdown.text
val md_jtype : Package.pp -> Package.jtype -> Markdown.text
val md_tags : ?title:string -> Package.tagInfo list -> Markdown.table
val md_fields :
?title:string -> Package.pp -> Package.fieldInfo list -> Markdown.table
end