diff options
author | Sébastien Dailly <sebastien@chimrod.com> | 2021-01-31 04:21:01 +0100 |
---|---|---|
committer | Sébastien Dailly <sebastien@dailly.me> | 2022-02-07 16:43:33 +0100 |
commit | d17d17261faccb3eb42e91f88ca035e5b1730c66 (patch) | |
tree | 28424d286bda347aee77528ece79907026b2e35b /editor/j | |
parent | 1961a9779b482cf9cbdb3365137c2e74423067c6 (diff) |
Bindings to prosemirror
Diffstat (limited to 'editor/j')
-rwxr-xr-x | editor/j/dune | 7 | ||||
-rwxr-xr-x | editor/j/j.ml | 47 | ||||
-rwxr-xr-x | editor/j/j.mli | 32 |
3 files changed, 86 insertions, 0 deletions
diff --git a/editor/j/dune b/editor/j/dune new file mode 100755 index 0000000..56e6691 --- /dev/null +++ b/editor/j/dune @@ -0,0 +1,7 @@ +(library + (name j) + (libraries + brr + js_of_ocaml + ) + ) diff --git a/editor/j/j.ml b/editor/j/j.ml new file mode 100755 index 0000000..96b22e0 --- /dev/null +++ b/editor/j/j.ml @@ -0,0 +1,47 @@ +type ('a, 'b) prop = Jv.prop' + +let prop + : string -> ('a, 'b) prop + = Jstr.of_string + +let get + : 'a -> ('a, 'b) prop -> 'b option + = fun obj prop -> + Jv.get' (Jv.Id.to_jv obj) prop + |> Jv.to_option Jv.Id.of_jv + +let set + : 'a -> ('a, 'b) prop -> 'b -> unit + = fun obj prop value -> + Jv.set' + (Jv.Id.to_jv obj) + prop + (Jv.Id.to_jv value) + +(* Objects *) + +type 'a constr = (Jstr.t * Jv.t) + +let c + : ('a, 'b) prop -> 'b -> 'a constr + = fun prop v -> + (prop, Jv.Id.to_jv v) + +let obj + : 'a constr Array.t -> 'a + = fun props -> + Jv.Id.of_jv @@ Jv.obj' props + +(* Arrays *) + +type 'a array = Jv.t + +let to_array + : 'a array -> 'a Array.t + = fun arr -> + Jv.to_array Jv.Id.of_jv arr + +let of_array + : 'a Array.t -> 'a array + = fun arr -> + Jv.of_array Jv.Id.to_jv arr diff --git a/editor/j/j.mli b/editor/j/j.mli new file mode 100755 index 0000000..796bb9d --- /dev/null +++ b/editor/j/j.mli @@ -0,0 +1,32 @@ +(** The type properties *) +type ('a, 'b) prop + +val prop + : string -> ('a, 'b) prop + +val get + : 'a -> ('a, 'b) prop -> 'b option + +val set + : 'a -> ('a, 'b) prop -> 'b -> unit + + +(* Arrays *) + +type 'a array + +val to_array + : 'a array -> 'a Array.t + +val of_array + : 'a Array.t -> 'a array + +(* Object constructor *) + +type 'a constr + +val c + : ('a, 'b) prop -> 'b -> 'a constr + +val obj + : 'a constr Array.t -> 'a |