tangled
alpha
login
or
join now
anil.recoil.org
/
ocaml-json-pointer
0
fork
atom
RFC6901 JSON Pointer implementation in OCaml using jsont
0
fork
atom
overview
issues
pulls
pipelines
toplevel
anil.recoil.org
2 months ago
05d2796a
7d348644
+28
-10
2 changed files
expand all
collapse all
unified
split
src
top
jsont_pointer_top.ml
jsont_pointer_top.mli
+26
-4
src/top/jsont_pointer_top.ml
···
2
3
Usage in toplevel:
4
#require "jsont-pointer.top";;
5
-
#install_printer Jsont_pointer_top.nav_printer;;
6
-
#install_printer Jsont_pointer_top.append_printer;;
7
-
#install_printer Jsont_pointer_top.json_printer;;
8
-
#install_printer Jsont_pointer_top.error_printer;;
9
*)
10
11
let nav_printer ppf (p : Jsont_pointer.nav Jsont_pointer.t) =
···
21
22
let error_printer ppf (e : Jsont.Error.t) =
23
Format.pp_print_string ppf (Jsont.Error.to_string e)
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
···
2
3
Usage in toplevel:
4
#require "jsont-pointer.top";;
5
+
6
+
Printers are automatically installed when the library is loaded.
0
0
7
*)
8
9
let nav_printer ppf (p : Jsont_pointer.nav Jsont_pointer.t) =
···
19
20
let error_printer ppf (e : Jsont.Error.t) =
21
Format.pp_print_string ppf (Jsont.Error.to_string e)
22
+
23
+
(* Automatic printer installation *)
24
+
25
+
let printers =
26
+
[ "Jsont_pointer_top.nav_printer";
27
+
"Jsont_pointer_top.append_printer";
28
+
"Jsont_pointer_top.json_printer";
29
+
"Jsont_pointer_top.error_printer" ]
30
+
31
+
let eval_string
32
+
?(print_outcome = false) ?(err_formatter = Format.err_formatter) str =
33
+
let lexbuf = Lexing.from_string str in
34
+
let phrase = !Toploop.parse_toplevel_phrase lexbuf in
35
+
Toploop.execute_phrase print_outcome err_formatter phrase
36
+
37
+
let rec install_printers = function
38
+
| [] -> true
39
+
| printer :: rest ->
40
+
let cmd = Printf.sprintf "#install_printer %s;;" printer in
41
+
eval_string cmd && install_printers rest
42
+
43
+
let () =
44
+
if not (install_printers printers) then
45
+
Format.eprintf "Problem installing jsont-pointer printers@."
+2
-6
src/top/jsont_pointer_top.mli
···
1
(** Toplevel printers for {!Jsont_pointer}, {!Jsont.json}, and {!Jsont.Error.t}.
2
3
-
To use in the OCaml toplevel or utop:
4
{[
5
#require "jsont-pointer.top";;
6
-
#install_printer Jsont_pointer_top.nav_printer;;
7
-
#install_printer Jsont_pointer_top.append_printer;;
8
-
#install_printer Jsont_pointer_top.json_printer;;
9
-
#install_printer Jsont_pointer_top.error_printer;;
10
]}
11
12
-
After installation, JSON Pointers will display their structure:
13
{[
14
# Jsont_pointer.of_string_nav "/foo/0";;
15
- : Jsont_pointer.nav Jsont_pointer.t = [Mem "foo"; Nth 0]
···
1
(** Toplevel printers for {!Jsont_pointer}, {!Jsont.json}, and {!Jsont.Error.t}.
2
3
+
Printers are automatically installed when the library is loaded:
4
{[
5
#require "jsont-pointer.top";;
0
0
0
0
6
]}
7
8
+
After loading, JSON Pointers will display their structure:
9
{[
10
# Jsont_pointer.of_string_nav "/foo/0";;
11
- : Jsont_pointer.nav Jsont_pointer.t = [Mem "foo"; Nth 0]