(** Toplevel printers for {!Json_pointer}, {!type:Jsont.json}, and {!Jsont.Error.t}. Printers are automatically installed when the library is loaded: {[ #require "json-pointer.top";; ]} After loading, JSON Pointers will display their structure: {[ # Json_pointer.of_string_nav "/foo/0";; - : Json_pointer.nav Json_pointer.t = [Mem "foo"; Nth 0] ]} JSON values will display as formatted JSON strings: {v # Jsont_bytesrw.decode_string Jsont.json {|{"foo": [1, 2]}|};; - : Jsont.json = {"foo": [1, 2]} v} And errors will display as readable messages: {[ # Json_pointer.of_string "invalid";; Exception: Jsont.Error: Invalid JSON Pointer: must be empty or start with '/' ]} *) val nav_printer : Format.formatter -> Json_pointer.nav Json_pointer.t -> unit (** [nav_printer] formats a navigation JSON Pointer showing its index structure. Suitable for use with [#install_printer]. *) val append_printer : Format.formatter -> Json_pointer.append Json_pointer.t -> unit (** [append_printer] formats an append JSON Pointer showing its index structure. Suitable for use with [#install_printer]. *) val json_printer : Format.formatter -> Jsont.json -> unit (** [json_printer] formats a {!type:Jsont.json} value as a human-readable JSON string. Suitable for use with [#install_printer]. *) val error_printer : Format.formatter -> Jsont.Error.t -> unit (** [error_printer] formats a {!Jsont.Error.t} as a human-readable error message. Suitable for use with [#install_printer]. *) val install : unit -> unit (** [install ()] installs all printers. This is called automatically when the library is loaded, but can be called again if needed (e.g., in test environments where automatic initialization doesn't run). *)