blob: ef23b78d84fe2dd826d3688385c4db112897d738 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
open Js_of_ocaml
class type viz = object
(* PNG output *)
method renderImageElement: Js.js_string Js.t -> (Dom_html.imageElement Js.t, unit) Promise.promise Js.meth
(* SVG output *)
method renderSVGElement: Js.js_string Js.t -> (Dom_svg.svgElement Js.t, unit) Promise.promise Js.meth
method renderString: Js.js_string Js.t -> (Js.js_string Js.t, unit) Promise.promise Js.meth
end
type t = Js.js_string Js.t * Js.js_string Js.t
let do_action
: viz Js.t -> Js.js_string Js.t -> (unit, unit) Promise.promise
= fun v text ->
if text##.length != 0 then (
let gv = Formatter.convert text in
let promise =
(try v##renderString gv
with _ -> Promise.reject ()
) in
Promise.then_map
~on_fulfilled:(fun svg -> Worker.post_message ((gv, svg):t))
~on_rejected:(fun _ -> ())
promise
) else
Promise.reject ()
|