···2233 Usage in toplevel:
44 #require "jsont-pointer.top";;
55- #install_printer Jsont_pointer_top.nav_printer;;
66- #install_printer Jsont_pointer_top.append_printer;;
77- #install_printer Jsont_pointer_top.json_printer;;
88- #install_printer Jsont_pointer_top.error_printer;;
55+66+ Printers are automatically installed when the library is loaded.
97*)
108119let nav_printer ppf (p : Jsont_pointer.nav Jsont_pointer.t) =
···21192220let error_printer ppf (e : Jsont.Error.t) =
2321 Format.pp_print_string ppf (Jsont.Error.to_string e)
2222+2323+(* Automatic printer installation *)
2424+2525+let printers =
2626+ [ "Jsont_pointer_top.nav_printer";
2727+ "Jsont_pointer_top.append_printer";
2828+ "Jsont_pointer_top.json_printer";
2929+ "Jsont_pointer_top.error_printer" ]
3030+3131+let eval_string
3232+ ?(print_outcome = false) ?(err_formatter = Format.err_formatter) str =
3333+ let lexbuf = Lexing.from_string str in
3434+ let phrase = !Toploop.parse_toplevel_phrase lexbuf in
3535+ Toploop.execute_phrase print_outcome err_formatter phrase
3636+3737+let rec install_printers = function
3838+ | [] -> true
3939+ | printer :: rest ->
4040+ let cmd = Printf.sprintf "#install_printer %s;;" printer in
4141+ eval_string cmd && install_printers rest
4242+4343+let () =
4444+ if not (install_printers printers) then
4545+ Format.eprintf "Problem installing jsont-pointer printers@."
+2-6
src/top/jsont_pointer_top.mli
···11(** Toplevel printers for {!Jsont_pointer}, {!Jsont.json}, and {!Jsont.Error.t}.
2233- To use in the OCaml toplevel or utop:
33+ Printers are automatically installed when the library is loaded:
44 {[
55 #require "jsont-pointer.top";;
66- #install_printer Jsont_pointer_top.nav_printer;;
77- #install_printer Jsont_pointer_top.append_printer;;
88- #install_printer Jsont_pointer_top.json_printer;;
99- #install_printer Jsont_pointer_top.error_printer;;
106 ]}
1171212- After installation, JSON Pointers will display their structure:
88+ After loading, JSON Pointers will display their structure:
139 {[
1410 # Jsont_pointer.of_string_nav "/foo/0";;
1511 - : Jsont_pointer.nav Jsont_pointer.t = [Mem "foo"; Nth 0]