Awesome
pa_extjs
This is a fork of the pa_js
syntax extension of js_of_ocaml
. The official
source tree is here.
The original file is here.
This version contains a custom syntax extension to express Javascript object literals, that is used by ocaml-extjs.
Example
class type js_class = object
method p1 : Js.js_string Js.t Js.prop
method p2 : bool Js.t Js.prop
end
let obj : js_class Js.t = {|
p1 = Js.string "string property";
p2 = Js._true;
|}
is expanded to:
let obj : js_class Js.t =
Js.Unsafe.obj [|
("p1", Js.Unsafe.inject (Js.string "string property"));
("p2", Js.Unsafe.inject Js._true);
|]
and properties p1
and p2
are also type checked with respect to their
arguments. So that, for example:
let obj : js_class Js.t = {|
p1 = Js._true;
p2 = Js.string "string property";
|}
won't compile.
Acknowledgement
This feature was inspired by Jacques Garrigue's OO syntax extension.