···11-(* Test runner for jsont_pointer *)
11+(* Test runner for json_pointer *)
2233let read_file path =
44 let ic = open_in path in
···1818 | Error e -> failwith e
19192020(* Helper to get indices from any pointer *)
2121-let indices_of_any (Jsont_pointer.Any p) = Jsont_pointer.indices p
2121+let indices_of_any (Json_pointer.Any p) = Json_pointer.indices p
22222323(* Helper to convert to string from any pointer *)
2424-let to_string_of_any (Jsont_pointer.Any p) = Jsont_pointer.to_string p
2424+let to_string_of_any (Json_pointer.Any p) = Json_pointer.to_string p
25252626(* Helper to check if pointer is append *)
2727-let is_append_any (Jsont_pointer.Any p : Jsont_pointer.any) =
2828- not (Jsont_pointer.is_nav (Jsont_pointer.Any p))
2727+let is_append_any (Json_pointer.Any p : Json_pointer.any) =
2828+ not (Json_pointer.is_nav (Json_pointer.Any p))
29293030(* Test: parse pointer and print indices *)
3131let test_parse pointer_str =
3232 try
3333- let result = Jsont_pointer.of_string pointer_str in
3333+ let result = Json_pointer.of_string pointer_str in
3434 let indices = indices_of_any result in
3535 let index_strs = List.map (fun idx ->
3636 match idx with
···4545(* Test: roundtrip pointer string *)
4646let test_roundtrip pointer_str =
4747 try
4848- let result = Jsont_pointer.of_string pointer_str in
4848+ let result = Json_pointer.of_string pointer_str in
4949 let s = to_string_of_any result in
5050 if s = pointer_str then
5151 Printf.printf "OK: %s\n" s
···5858let test_eval json_path pointer_str =
5959 try
6060 let json = parse_json (read_file json_path) in
6161- let p = Jsont_pointer.of_string_nav pointer_str in
6262- let result = Jsont_pointer.get p json in
6161+ let p = Json_pointer.of_string_nav pointer_str in
6262+ let result = Json_pointer.get p json in
6363 Printf.printf "OK: %s\n" (json_to_string result)
6464 with
6565 | Jsont.Error e ->
···69697070(* Test: escape token *)
7171let test_escape token =
7272- let escaped = Jsont_pointer.Token.escape token in
7272+ let escaped = Json_pointer.Token.escape token in
7373 Printf.printf "%s\n" escaped
74747575(* Test: unescape token *)
7676let test_unescape token =
7777 try
7878- let unescaped = Jsont_pointer.Token.unescape token in
7878+ let unescaped = Json_pointer.Token.unescape token in
7979 Printf.printf "OK: %s\n" unescaped
8080 with Jsont.Error e ->
8181 Printf.printf "ERROR: %s\n" (Jsont.Error.to_string e)
···8383(* Test: URI fragment roundtrip *)
8484let test_uri_fragment pointer_str =
8585 try
8686- let result = Jsont_pointer.of_string pointer_str in
8787- let (Jsont_pointer.Any p) = result in
8888- let frag = Jsont_pointer.to_uri_fragment p in
8989- let result2 = Jsont_pointer.of_uri_fragment frag in
8686+ let result = Json_pointer.of_string pointer_str in
8787+ let (Json_pointer.Any p) = result in
8888+ let frag = Json_pointer.to_uri_fragment p in
8989+ let result2 = Json_pointer.of_uri_fragment frag in
9090 let s2 = to_string_of_any result2 in
9191 if s2 = pointer_str then
9292 Printf.printf "OK: %s -> %s\n" pointer_str frag
···100100 try
101101 let json = parse_json json_str in
102102 let value = parse_json value_str in
103103- let p = Jsont_pointer.of_string pointer_str in
104104- let result = Jsont_pointer.add p json ~value in
103103+ let p = Json_pointer.of_string pointer_str in
104104+ let result = Json_pointer.add p json ~value in
105105 Printf.printf "%s\n" (json_to_string result)
106106 with Jsont.Error e ->
107107 Printf.printf "ERROR: %s\n" (Jsont.Error.to_string e)
···110110let test_remove json_str pointer_str =
111111 try
112112 let json = parse_json json_str in
113113- let p = Jsont_pointer.of_string_nav pointer_str in
114114- let result = Jsont_pointer.remove p json in
113113+ let p = Json_pointer.of_string_nav pointer_str in
114114+ let result = Json_pointer.remove p json in
115115 Printf.printf "%s\n" (json_to_string result)
116116 with Jsont.Error e ->
117117 Printf.printf "ERROR: %s\n" (Jsont.Error.to_string e)
···120120let test_replace json_str pointer_str value_str =
121121 try
122122 let json = parse_json json_str in
123123- let p = Jsont_pointer.of_string_nav pointer_str in
123123+ let p = Json_pointer.of_string_nav pointer_str in
124124 let value = parse_json value_str in
125125- let result = Jsont_pointer.replace p json ~value in
125125+ let result = Json_pointer.replace p json ~value in
126126 Printf.printf "%s\n" (json_to_string result)
127127 with Jsont.Error e ->
128128 Printf.printf "ERROR: %s\n" (Jsont.Error.to_string e)
···131131let test_move json_str from_str path_str =
132132 try
133133 let json = parse_json json_str in
134134- let from = Jsont_pointer.of_string_nav from_str in
135135- let path = Jsont_pointer.of_string path_str in
136136- let result = Jsont_pointer.move ~from ~path json in
134134+ let from = Json_pointer.of_string_nav from_str in
135135+ let path = Json_pointer.of_string path_str in
136136+ let result = Json_pointer.move ~from ~path json in
137137 Printf.printf "%s\n" (json_to_string result)
138138 with Jsont.Error e ->
139139 Printf.printf "ERROR: %s\n" (Jsont.Error.to_string e)
···142142let test_copy json_str from_str path_str =
143143 try
144144 let json = parse_json json_str in
145145- let from = Jsont_pointer.of_string_nav from_str in
146146- let path = Jsont_pointer.of_string path_str in
147147- let result = Jsont_pointer.copy ~from ~path json in
145145+ let from = Json_pointer.of_string_nav from_str in
146146+ let path = Json_pointer.of_string path_str in
147147+ let result = Json_pointer.copy ~from ~path json in
148148 Printf.printf "%s\n" (json_to_string result)
149149 with Jsont.Error e ->
150150 Printf.printf "ERROR: %s\n" (Jsont.Error.to_string e)
···153153let test_test json_str pointer_str expected_str =
154154 try
155155 let json = parse_json json_str in
156156- let p = Jsont_pointer.of_string_nav pointer_str in
156156+ let p = Json_pointer.of_string_nav pointer_str in
157157 let expected = parse_json expected_str in
158158- let result = Jsont_pointer.test p json ~expected in
158158+ let result = Json_pointer.test p json ~expected in
159159 Printf.printf "%b\n" result
160160 with Jsont.Error e ->
161161 Printf.printf "ERROR: %s\n" (Jsont.Error.to_string e)
···164164let test_has json_str pointer_str =
165165 try
166166 let json = parse_json json_str in
167167- let p = Jsont_pointer.of_string_nav pointer_str in
168168- let result = Jsont_pointer.find p json in
167167+ let p = Json_pointer.of_string_nav pointer_str in
168168+ let result = Json_pointer.find p json in
169169 Printf.printf "%b\n" (Option.is_some result)
170170 with Jsont.Error e ->
171171 Printf.printf "ERROR: %s\n" (Jsont.Error.to_string e)
···2233This tutorial introduces JSON Pointer as defined in
44{{:https://www.rfc-editor.org/rfc/rfc6901} RFC 6901}, and demonstrates
55-the [jsont-pointer] OCaml library through interactive examples.
55+the [json-pointer] OCaml library through interactive examples.
6677{1 JSON Pointer vs JSON Path}
88···2020(like JSON Schema's [$ref]). Use JSON Path when you might need multiple
2121results (like Kubernetes queries).
22222323-The [jsont-pointer] library implements JSON Pointer and integrates with
2323+The [json-pointer] library implements JSON Pointer and integrates with
2424the {!Jsont.Path} type for representing navigation indices.
25252626{1 Setup}
27272828First, let's set up our environment. In the toplevel, you can load the
2929-library with [#require "jsont-pointer.top";;] which will automatically
2929+library with [#require "json-pointer.top";;] which will automatically
3030install pretty printers.
31313232{@ocaml[
3333-# Jsont_pointer_top.install ();;
3333+# Json_pointer_top.install ();;
3434- : unit = ()
3535-# open Jsont_pointer;;
3535+# open Json_pointer;;
3636# let parse_json s =
3737 match Jsont_bytesrw.decode_string Jsont.json s with
3838 | Ok json -> json
···7373- : Jsont.json = "Alice"
7474]}
75757676-In OCaml, this is represented by the ['a Jsont_pointer.t] type - a sequence
7676+In OCaml, this is represented by the ['a Json_pointer.t] type - a sequence
7777of navigation steps from the document root to a target value. The phantom
7878type parameter ['a] encodes whether this is a navigation pointer or an
7979append pointer (more on this later).
···365365366366{2 Navigation vs Append Pointers}
367367368368-The [jsont-pointer] library uses {b phantom types} to encode the difference
368368+The [json-pointer] library uses {b phantom types} to encode the difference
369369between pointers that can be used for navigation and pointers that target
370370the "append position":
371371···439439{1 Mutation Operations}
440440441441While RFC 6901 defines JSON Pointer for read-only access, RFC 6902
442442-(JSON Patch) uses JSON Pointer for modifications. The [jsont-pointer]
442442+(JSON Patch) uses JSON Pointer for modifications. The [json-pointer]
443443library provides these operations.
444444445445{2 Add}
···582582583583{2 The Library Handles Escaping Automatically}
584584585585-{b Important}: When using [jsont-pointer] programmatically, you rarely need
585585+{b Important}: When using [json-pointer] programmatically, you rarely need
586586to think about escaping. The [Mem] variant stores unescaped strings,
587587and escaping happens automatically during serialization:
588588···882882{- {b Type Safety}: Phantom types ([nav t] vs [append t]) prevent misuse of append pointers with retrieval operations, while the [any] existential type allows ergonomic use with mutation operations}
883883}
884884885885-The [jsont-pointer] library implements all of this with type-safe OCaml
885885+The [json-pointer] library implements all of this with type-safe OCaml
886886interfaces, integration with the [jsont] codec system, and proper error
887887handling for malformed pointers and missing values.
888888
···11-(** Toplevel printers for {!Jsont_pointer}, {!Jsont.json}, and {!Jsont.Error.t}.
11+(** Toplevel printers for {!Json_pointer}, {!Jsont.json}, and {!Jsont.Error.t}.
2233 Printers are automatically installed when the library is loaded:
44 {[
55- #require "jsont-pointer.top";;
55+ #require "json-pointer.top";;
66 ]}
7788 After loading, JSON Pointers will display their structure:
99 {[
1010- # Jsont_pointer.of_string_nav "/foo/0";;
1111- - : Jsont_pointer.nav Jsont_pointer.t = [Mem "foo"; Nth 0]
1010+ # Json_pointer.of_string_nav "/foo/0";;
1111+ - : Json_pointer.nav Json_pointer.t = [Mem "foo"; Nth 0]
1212 ]}
13131414 JSON values will display as formatted JSON strings:
···19192020 And errors will display as readable messages:
2121 {[
2222- # Jsont_pointer.of_string "invalid";;
2222+ # Json_pointer.of_string "invalid";;
2323 Exception: Jsont.Error: Invalid JSON Pointer: must be empty or start with '/'
2424 ]} *)
25252626-val nav_printer : Format.formatter -> Jsont_pointer.nav Jsont_pointer.t -> unit
2626+val nav_printer : Format.formatter -> Json_pointer.nav Json_pointer.t -> unit
2727(** [nav_printer] formats a navigation JSON Pointer showing its index structure.
2828 Suitable for use with [#install_printer]. *)
29293030-val append_printer : Format.formatter -> Jsont_pointer.append Jsont_pointer.t -> unit
3030+val append_printer : Format.formatter -> Json_pointer.append Json_pointer.t -> unit
3131(** [append_printer] formats an append JSON Pointer showing its index structure.
3232 Suitable for use with [#install_printer]. *)
3333
+1-1
test/api.t
···11JSON Pointer API Test Suite
2233-This tests all functions exposed in jsont_pointer.mli.
33+This tests all functions exposed in json_pointer.mli.
4455================================================================================
66Index Functions (mem, nth, pp_index, equal_index, compare_index)
···11-(* Test runner for jsont_pointer *)
11+(* Test runner for json_pointer *)
2233let read_file path =
44 let ic = open_in path in
···1818 | Error e -> failwith e
19192020(* Helper to get indices from any pointer *)
2121-let indices_of_any (Jsont_pointer.Any p) = Jsont_pointer.indices p
2121+let indices_of_any (Json_pointer.Any p) = Json_pointer.indices p
22222323(* Helper to convert to string from any pointer *)
2424-let to_string_of_any (Jsont_pointer.Any p) = Jsont_pointer.to_string p
2424+let to_string_of_any (Json_pointer.Any p) = Json_pointer.to_string p
25252626(* Helper to check if pointer is append *)
2727-let is_append_any p = not (Jsont_pointer.is_nav p)
2727+let is_append_any p = not (Json_pointer.is_nav p)
28282929(* Test: parse pointer and print indices *)
3030let test_parse pointer_str =
3131 try
3232- let result = Jsont_pointer.of_string pointer_str in
3232+ let result = Json_pointer.of_string pointer_str in
3333 let indices = indices_of_any result in
3434 let index_strs = List.map (fun idx ->
3535 match idx with
···4444(* Test: roundtrip pointer string *)
4545let test_roundtrip pointer_str =
4646 try
4747- let result = Jsont_pointer.of_string pointer_str in
4747+ let result = Json_pointer.of_string pointer_str in
4848 let s = to_string_of_any result in
4949 if s = pointer_str then
5050 Printf.printf "OK: %s\n" s
···5757let test_eval json_path pointer_str =
5858 try
5959 let json = parse_json (read_file json_path) in
6060- let p = Jsont_pointer.of_string_nav pointer_str in
6161- let result = Jsont_pointer.get p json in
6060+ let p = Json_pointer.of_string_nav pointer_str in
6161+ let result = Json_pointer.get p json in
6262 Printf.printf "OK: %s\n" (json_to_string result)
6363 with
6464 | Jsont.Error e ->
···68686969(* Test: escape token *)
7070let test_escape token =
7171- let escaped = Jsont_pointer.Token.escape token in
7171+ let escaped = Json_pointer.Token.escape token in
7272 Printf.printf "%s\n" escaped
73737474(* Test: unescape token *)
7575let test_unescape token =
7676 try
7777- let unescaped = Jsont_pointer.Token.unescape token in
7777+ let unescaped = Json_pointer.Token.unescape token in
7878 Printf.printf "OK: %s\n" unescaped
7979 with Jsont.Error e ->
8080 Printf.printf "ERROR: %s\n" (Jsont.Error.to_string e)
···8282(* Test: URI fragment roundtrip *)
8383let test_uri_fragment pointer_str =
8484 try
8585- let result = Jsont_pointer.of_string pointer_str in
8686- let (Jsont_pointer.Any p) = result in
8787- let frag = Jsont_pointer.to_uri_fragment p in
8888- let result2 = Jsont_pointer.of_uri_fragment frag in
8585+ let result = Json_pointer.of_string pointer_str in
8686+ let (Json_pointer.Any p) = result in
8787+ let frag = Json_pointer.to_uri_fragment p in
8888+ let result2 = Json_pointer.of_uri_fragment frag in
8989 let s2 = to_string_of_any result2 in
9090 if s2 = pointer_str then
9191 Printf.printf "OK: %s -> %s\n" pointer_str frag
···9999 try
100100 let json = parse_json json_str in
101101 let value = parse_json value_str in
102102- let p = Jsont_pointer.of_string pointer_str in
103103- let result = Jsont_pointer.add p json ~value in
102102+ let p = Json_pointer.of_string pointer_str in
103103+ let result = Json_pointer.add p json ~value in
104104 Printf.printf "%s\n" (json_to_string result)
105105 with Jsont.Error e ->
106106 Printf.printf "ERROR: %s\n" (Jsont.Error.to_string e)
···109109let test_remove json_str pointer_str =
110110 try
111111 let json = parse_json json_str in
112112- let p = Jsont_pointer.of_string_nav pointer_str in
113113- let result = Jsont_pointer.remove p json in
112112+ let p = Json_pointer.of_string_nav pointer_str in
113113+ let result = Json_pointer.remove p json in
114114 Printf.printf "%s\n" (json_to_string result)
115115 with Jsont.Error e ->
116116 Printf.printf "ERROR: %s\n" (Jsont.Error.to_string e)
···119119let test_replace json_str pointer_str value_str =
120120 try
121121 let json = parse_json json_str in
122122- let p = Jsont_pointer.of_string_nav pointer_str in
122122+ let p = Json_pointer.of_string_nav pointer_str in
123123 let value = parse_json value_str in
124124- let result = Jsont_pointer.replace p json ~value in
124124+ let result = Json_pointer.replace p json ~value in
125125 Printf.printf "%s\n" (json_to_string result)
126126 with Jsont.Error e ->
127127 Printf.printf "ERROR: %s\n" (Jsont.Error.to_string e)
···130130let test_move json_str from_str path_str =
131131 try
132132 let json = parse_json json_str in
133133- let from = Jsont_pointer.of_string_nav from_str in
134134- let path = Jsont_pointer.of_string path_str in
135135- let result = Jsont_pointer.move ~from ~path json in
133133+ let from = Json_pointer.of_string_nav from_str in
134134+ let path = Json_pointer.of_string path_str in
135135+ let result = Json_pointer.move ~from ~path json in
136136 Printf.printf "%s\n" (json_to_string result)
137137 with Jsont.Error e ->
138138 Printf.printf "ERROR: %s\n" (Jsont.Error.to_string e)
···141141let test_copy json_str from_str path_str =
142142 try
143143 let json = parse_json json_str in
144144- let from = Jsont_pointer.of_string_nav from_str in
145145- let path = Jsont_pointer.of_string path_str in
146146- let result = Jsont_pointer.copy ~from ~path json in
144144+ let from = Json_pointer.of_string_nav from_str in
145145+ let path = Json_pointer.of_string path_str in
146146+ let result = Json_pointer.copy ~from ~path json in
147147 Printf.printf "%s\n" (json_to_string result)
148148 with Jsont.Error e ->
149149 Printf.printf "ERROR: %s\n" (Jsont.Error.to_string e)
···152152let test_test json_str pointer_str expected_str =
153153 try
154154 let json = parse_json json_str in
155155- let p = Jsont_pointer.of_string_nav pointer_str in
155155+ let p = Json_pointer.of_string_nav pointer_str in
156156 let expected = parse_json expected_str in
157157- let result = Jsont_pointer.test p json ~expected in
157157+ let result = Json_pointer.test p json ~expected in
158158 Printf.printf "%b\n" result
159159 with Jsont.Error e ->
160160 Printf.printf "ERROR: %s\n" (Jsont.Error.to_string e)
···163163let test_has json_str pointer_str =
164164 try
165165 let json = parse_json json_str in
166166- let p = Jsont_pointer.of_string_nav pointer_str in
167167- let result = Jsont_pointer.find p json in
166166+ let p = Json_pointer.of_string_nav pointer_str in
167167+ let result = Json_pointer.find p json in
168168 Printf.printf "%b\n" (Option.is_some result)
169169 with Jsont.Error e ->
170170 Printf.printf "ERROR: %s\n" (Jsont.Error.to_string e)
···172172(* Test: JMAP extended pointer parse *)
173173let test_jmap_parse pointer_str =
174174 try
175175- let p = Jsont_pointer.Jmap.of_string pointer_str in
176176- let s = Jsont_pointer.Jmap.to_string p in
175175+ let p = Json_pointer.Jmap.of_string pointer_str in
176176+ let s = Json_pointer.Jmap.to_string p in
177177 if s = "" then Printf.printf "OK: (root)\n"
178178 else Printf.printf "OK: %s\n" s
179179 with Jsont.Error e ->
···183183let test_jmap_eval json_str pointer_str =
184184 try
185185 let json = parse_json json_str in
186186- let p = Jsont_pointer.Jmap.of_string pointer_str in
187187- let result = Jsont_pointer.Jmap.eval p json in
186186+ let p = Json_pointer.Jmap.of_string pointer_str in
187187+ let result = Json_pointer.Jmap.eval p json in
188188 Printf.printf "OK: %s\n" (json_to_string result)
189189 with
190190 | Jsont.Error e ->
···196196let test_jmap_eval_file json_path pointer_str =
197197 try
198198 let json = parse_json (read_file json_path) in
199199- let p = Jsont_pointer.Jmap.of_string pointer_str in
200200- let result = Jsont_pointer.Jmap.eval p json in
199199+ let p = Json_pointer.Jmap.of_string pointer_str in
200200+ let result = Json_pointer.Jmap.eval p json in
201201 Printf.printf "OK: %s\n" (json_to_string result)
202202 with
203203 | Jsont.Error e ->
···209209let test_jmap_path_strings json_str pointer_str =
210210 try
211211 let json = parse_json json_str in
212212- let p = Jsont_pointer.Jmap.of_string pointer_str in
213213- let codec = Jsont_pointer.Jmap.path_list p Jsont.string in
212212+ let p = Json_pointer.Jmap.of_string pointer_str in
213213+ let codec = Json_pointer.Jmap.path_list p Jsont.string in
214214 let result = match Jsont.Json.decode' codec json with
215215 | Ok v -> v
216216 | Error e -> raise (Jsont.Error e)
···226226let test_jmap_path_ints json_str pointer_str =
227227 try
228228 let json = parse_json json_str in
229229- let p = Jsont_pointer.Jmap.of_string pointer_str in
230230- let codec = Jsont_pointer.Jmap.path_list p Jsont.int in
229229+ let p = Json_pointer.Jmap.of_string pointer_str in
230230+ let codec = Json_pointer.Jmap.path_list p Jsont.int in
231231 let result = match Jsont.Json.decode' codec json with
232232 | Ok v -> v
233233 | Error e -> raise (Jsont.Error e)
···243243let test_jmap_path_single json_str pointer_str =
244244 try
245245 let json = parse_json json_str in
246246- let p = Jsont_pointer.Jmap.of_string pointer_str in
247247- let codec = Jsont_pointer.Jmap.path p Jsont.string in
246246+ let p = Json_pointer.Jmap.of_string pointer_str in
247247+ let codec = Json_pointer.Jmap.path p Jsont.string in
248248 let result = match Jsont.Json.decode' codec json with
249249 | Ok v -> v
250250 | Error e -> raise (Jsont.Error e)
···260260let test_jmap_path_absent json_str pointer_str default =
261261 try
262262 let json = parse_json json_str in
263263- let p = Jsont_pointer.Jmap.of_string pointer_str in
264264- let codec = Jsont_pointer.Jmap.path ~absent:default p Jsont.string in
263263+ let p = Json_pointer.Jmap.of_string pointer_str in
264264+ let codec = Json_pointer.Jmap.path ~absent:default p Jsont.string in
265265 let result = match Jsont.Json.decode' codec json with
266266 | Ok v -> v
267267 | Error e -> raise (Jsont.Error e)
···275275276276(* Test: index functions - mem, nth, pp_index, equal_index, compare_index *)
277277let test_mem name =
278278- let idx = Jsont_pointer.mem name in
279279- Format.printf "mem(%s) = %a\n" name Jsont_pointer.pp_index idx
278278+ let idx = Json_pointer.mem name in
279279+ Format.printf "mem(%s) = %a\n" name Json_pointer.pp_index idx
280280281281let test_nth n =
282282- let idx = Jsont_pointer.nth n in
283283- Format.printf "nth(%d) = %a\n" n Jsont_pointer.pp_index idx
282282+ let idx = Json_pointer.nth n in
283283+ Format.printf "nth(%d) = %a\n" n Json_pointer.pp_index idx
284284285285let test_equal_index idx1_str idx2_str =
286286 let parse_idx s =
287287 if String.length s > 0 && s.[0] >= '0' && s.[0] <= '9' then
288288- Jsont_pointer.nth (int_of_string s)
288288+ Json_pointer.nth (int_of_string s)
289289 else
290290- Jsont_pointer.mem s
290290+ Json_pointer.mem s
291291 in
292292 let idx1 = parse_idx idx1_str in
293293 let idx2 = parse_idx idx2_str in
294294- Printf.printf "%b\n" (Jsont_pointer.equal_index idx1 idx2)
294294+ Printf.printf "%b\n" (Json_pointer.equal_index idx1 idx2)
295295296296let test_compare_index idx1_str idx2_str =
297297 let parse_idx s =
298298 if String.length s > 0 && s.[0] >= '0' && s.[0] <= '9' then
299299- Jsont_pointer.nth (int_of_string s)
299299+ Json_pointer.nth (int_of_string s)
300300 else
301301- Jsont_pointer.mem s
301301+ Json_pointer.mem s
302302 in
303303 let idx1 = parse_idx idx1_str in
304304 let idx2 = parse_idx idx2_str in
305305- let cmp = Jsont_pointer.compare_index idx1 idx2 in
305305+ let cmp = Json_pointer.compare_index idx1 idx2 in
306306 if cmp < 0 then Printf.printf "LT\n"
307307 else if cmp > 0 then Printf.printf "GT\n"
308308 else Printf.printf "EQ\n"
309309310310(* Test: pointer constructors - root, is_root, make *)
311311let test_root () =
312312- let r = Jsont_pointer.root in
313313- Printf.printf "root = %s\n" (Jsont_pointer.to_string r);
314314- Printf.printf "is_root(root) = %b\n" (Jsont_pointer.is_root r)
312312+ let r = Json_pointer.root in
313313+ Printf.printf "root = %s\n" (Json_pointer.to_string r);
314314+ Printf.printf "is_root(root) = %b\n" (Json_pointer.is_root r)
315315316316let test_is_root pointer_str =
317317 try
318318- let p = Jsont_pointer.of_string pointer_str in
319319- let (Jsont_pointer.Any ptr) = p in
320320- Printf.printf "%b\n" (Jsont_pointer.is_root ptr)
318318+ let p = Json_pointer.of_string pointer_str in
319319+ let (Json_pointer.Any ptr) = p in
320320+ Printf.printf "%b\n" (Json_pointer.is_root ptr)
321321 with Jsont.Error e ->
322322 Printf.printf "ERROR: %s\n" (Jsont.Error.to_string e)
323323···326326 let parts = String.split_on_char ',' indices_str in
327327 let indices = List.map (fun s ->
328328 let s = String.trim s in
329329- if s = "" then Jsont_pointer.mem ""
329329+ if s = "" then Json_pointer.mem ""
330330 else if String.length s > 0 && s.[0] >= '0' && s.[0] <= '9' then
331331- Jsont_pointer.nth (int_of_string s)
331331+ Json_pointer.nth (int_of_string s)
332332 else
333333- Jsont_pointer.mem s
333333+ Json_pointer.mem s
334334 ) parts in
335335- let p = Jsont_pointer.make indices in
336336- Printf.printf "%s\n" (Jsont_pointer.to_string p)
335335+ let p = Json_pointer.make indices in
336336+ Printf.printf "%s\n" (Json_pointer.to_string p)
337337338338(* Test: append_index and / operator *)
339339let test_append_index base_str index_str =
340340 try
341341- let base = Jsont_pointer.of_string_nav base_str in
341341+ let base = Json_pointer.of_string_nav base_str in
342342 let idx =
343343 if String.length index_str > 0 && index_str.[0] >= '0' && index_str.[0] <= '9' then
344344- Jsont_pointer.nth (int_of_string index_str)
344344+ Json_pointer.nth (int_of_string index_str)
345345 else
346346- Jsont_pointer.mem index_str
346346+ Json_pointer.mem index_str
347347 in
348348- let result = Jsont_pointer.(base / idx) in
349349- Printf.printf "%s\n" (Jsont_pointer.to_string result)
348348+ let result = Json_pointer.(base / idx) in
349349+ Printf.printf "%s\n" (Json_pointer.to_string result)
350350 with Jsont.Error e ->
351351 Printf.printf "ERROR: %s\n" (Jsont.Error.to_string e)
352352353353(* Test: at_end *)
354354let test_at_end pointer_str =
355355 try
356356- let p = Jsont_pointer.of_string_nav pointer_str in
357357- let append_p = Jsont_pointer.at_end p in
358358- Printf.printf "%s\n" (Jsont_pointer.to_string append_p)
356356+ let p = Json_pointer.of_string_nav pointer_str in
357357+ let append_p = Json_pointer.at_end p in
358358+ Printf.printf "%s\n" (Json_pointer.to_string append_p)
359359 with Jsont.Error e ->
360360 Printf.printf "ERROR: %s\n" (Jsont.Error.to_string e)
361361362362(* Test: concat *)
363363let test_concat p1_str p2_str =
364364 try
365365- let p1 = Jsont_pointer.of_string_nav p1_str in
366366- let p2 = Jsont_pointer.of_string_nav p2_str in
367367- let result = Jsont_pointer.concat p1 p2 in
368368- Printf.printf "%s\n" (Jsont_pointer.to_string result)
365365+ let p1 = Json_pointer.of_string_nav p1_str in
366366+ let p2 = Json_pointer.of_string_nav p2_str in
367367+ let result = Json_pointer.concat p1 p2 in
368368+ Printf.printf "%s\n" (Json_pointer.to_string result)
369369 with Jsont.Error e ->
370370 Printf.printf "ERROR: %s\n" (Jsont.Error.to_string e)
371371372372(* Test: parent *)
373373let test_parent pointer_str =
374374 try
375375- let p = Jsont_pointer.of_string_nav pointer_str in
376376- match Jsont_pointer.parent p with
377377- | Some parent -> Printf.printf "Some(%s)\n" (Jsont_pointer.to_string parent)
375375+ let p = Json_pointer.of_string_nav pointer_str in
376376+ match Json_pointer.parent p with
377377+ | Some parent -> Printf.printf "Some(%s)\n" (Json_pointer.to_string parent)
378378 | None -> Printf.printf "None\n"
379379 with Jsont.Error e ->
380380 Printf.printf "ERROR: %s\n" (Jsont.Error.to_string e)
···382382(* Test: last *)
383383let test_last pointer_str =
384384 try
385385- let p = Jsont_pointer.of_string_nav pointer_str in
386386- match Jsont_pointer.last p with
387387- | Some idx -> Format.printf "Some(%a)\n" Jsont_pointer.pp_index idx
385385+ let p = Json_pointer.of_string_nav pointer_str in
386386+ match Json_pointer.last p with
387387+ | Some idx -> Format.printf "Some(%a)\n" Json_pointer.pp_index idx
388388 | None -> Printf.printf "None\n"
389389 with Jsont.Error e ->
390390 Printf.printf "ERROR: %s\n" (Jsont.Error.to_string e)
···392392(* Test: indices *)
393393let test_indices pointer_str =
394394 try
395395- let p = Jsont_pointer.of_string pointer_str in
395395+ let p = Json_pointer.of_string pointer_str in
396396 let indices = indices_of_any p in
397397 let strs = List.map (fun idx ->
398398 match idx with
···406406(* Test: coercion - to_nav, to_nav_exn *)
407407let test_to_nav pointer_str =
408408 try
409409- let p = Jsont_pointer.of_string pointer_str in
410410- match Jsont_pointer.to_nav p with
411411- | Some nav -> Printf.printf "Some(%s)\n" (Jsont_pointer.to_string nav)
409409+ let p = Json_pointer.of_string pointer_str in
410410+ match Json_pointer.to_nav p with
411411+ | Some nav -> Printf.printf "Some(%s)\n" (Json_pointer.to_string nav)
412412 | None -> Printf.printf "None\n"
413413 with Jsont.Error e ->
414414 Printf.printf "ERROR: %s\n" (Jsont.Error.to_string e)
415415416416let test_to_nav_exn pointer_str =
417417 try
418418- let p = Jsont_pointer.of_string pointer_str in
419419- let nav = Jsont_pointer.to_nav_exn p in
420420- Printf.printf "OK: %s\n" (Jsont_pointer.to_string nav)
418418+ let p = Json_pointer.of_string pointer_str in
419419+ let nav = Json_pointer.to_nav_exn p in
420420+ Printf.printf "OK: %s\n" (Json_pointer.to_string nav)
421421 with Jsont.Error e ->
422422 Printf.printf "ERROR: %s\n" (Jsont.Error.to_string e)
423423424424(* Test: of_string_kind *)
425425let test_of_string_kind pointer_str =
426426 try
427427- match Jsont_pointer.of_string_kind pointer_str with
428428- | `Nav p -> Printf.printf "Nav(%s)\n" (Jsont_pointer.to_string p)
429429- | `Append p -> Printf.printf "Append(%s)\n" (Jsont_pointer.to_string p)
427427+ match Json_pointer.of_string_kind pointer_str with
428428+ | `Nav p -> Printf.printf "Nav(%s)\n" (Json_pointer.to_string p)
429429+ | `Append p -> Printf.printf "Append(%s)\n" (Json_pointer.to_string p)
430430 with Jsont.Error e ->
431431 Printf.printf "ERROR: %s\n" (Jsont.Error.to_string e)
432432433433(* Test: of_string_result *)
434434let test_of_string_result pointer_str =
435435- match Jsont_pointer.of_string_result pointer_str with
435435+ match Json_pointer.of_string_result pointer_str with
436436 | Ok p -> Printf.printf "Ok(%s)\n" (to_string_of_any p)
437437 | Error e -> Printf.printf "Error(%s)\n" e
438438439439(* Test: of_uri_fragment_nav *)
440440let test_of_uri_fragment_nav frag =
441441 try
442442- let p = Jsont_pointer.of_uri_fragment_nav frag in
443443- Printf.printf "OK: %s\n" (Jsont_pointer.to_string p)
442442+ let p = Json_pointer.of_uri_fragment_nav frag in
443443+ Printf.printf "OK: %s\n" (Json_pointer.to_string p)
444444 with Jsont.Error e ->
445445 Printf.printf "ERROR: %s\n" (Jsont.Error.to_string e)
446446447447(* Test: of_uri_fragment_result *)
448448let test_of_uri_fragment_result frag =
449449- match Jsont_pointer.of_uri_fragment_result frag with
449449+ match Json_pointer.of_uri_fragment_result frag with
450450 | Ok p -> Printf.printf "Ok(%s)\n" (to_string_of_any p)
451451 | Error e -> Printf.printf "Error(%s)\n" e
452452453453(* Test: pp and pp_verbose *)
454454let test_pp pointer_str =
455455 try
456456- let p = Jsont_pointer.of_string pointer_str in
457457- let (Jsont_pointer.Any ptr) = p in
458458- Format.printf "%a\n" Jsont_pointer.pp ptr
456456+ let p = Json_pointer.of_string pointer_str in
457457+ let (Json_pointer.Any ptr) = p in
458458+ Format.printf "%a\n" Json_pointer.pp ptr
459459 with Jsont.Error e ->
460460 Printf.printf "ERROR: %s\n" (Jsont.Error.to_string e)
461461462462let test_pp_verbose pointer_str =
463463 try
464464- let p = Jsont_pointer.of_string pointer_str in
465465- let (Jsont_pointer.Any ptr) = p in
466466- Format.printf "%a\n" Jsont_pointer.pp_verbose ptr
464464+ let p = Json_pointer.of_string pointer_str in
465465+ let (Json_pointer.Any ptr) = p in
466466+ Format.printf "%a\n" Json_pointer.pp_verbose ptr
467467 with Jsont.Error e ->
468468 Printf.printf "ERROR: %s\n" (Jsont.Error.to_string e)
469469470470(* Test: equal *)
471471let test_equal p1_str p2_str =
472472 try
473473- let p1 = Jsont_pointer.of_string p1_str in
474474- let p2 = Jsont_pointer.of_string p2_str in
475475- let (Jsont_pointer.Any ptr1) = p1 in
476476- let (Jsont_pointer.Any ptr2) = p2 in
477477- Printf.printf "%b\n" (Jsont_pointer.equal ptr1 ptr2)
473473+ let p1 = Json_pointer.of_string p1_str in
474474+ let p2 = Json_pointer.of_string p2_str in
475475+ let (Json_pointer.Any ptr1) = p1 in
476476+ let (Json_pointer.Any ptr2) = p2 in
477477+ Printf.printf "%b\n" (Json_pointer.equal ptr1 ptr2)
478478 with Jsont.Error e ->
479479 Printf.printf "ERROR: %s\n" (Jsont.Error.to_string e)
480480481481(* Test: compare *)
482482let test_compare p1_str p2_str =
483483 try
484484- let p1 = Jsont_pointer.of_string p1_str in
485485- let p2 = Jsont_pointer.of_string p2_str in
486486- let (Jsont_pointer.Any ptr1) = p1 in
487487- let (Jsont_pointer.Any ptr2) = p2 in
488488- let cmp = Jsont_pointer.compare ptr1 ptr2 in
484484+ let p1 = Json_pointer.of_string p1_str in
485485+ let p2 = Json_pointer.of_string p2_str in
486486+ let (Json_pointer.Any ptr1) = p1 in
487487+ let (Json_pointer.Any ptr2) = p2 in
488488+ let cmp = Json_pointer.compare ptr1 ptr2 in
489489 if cmp < 0 then Printf.printf "LT\n"
490490 else if cmp > 0 then Printf.printf "GT\n"
491491 else Printf.printf "EQ\n"
···501501 |> Jsont.Path.mem "foo"
502502 |> Jsont.Path.nth 1
503503 ) in
504504- let p = Jsont_pointer.of_path path in
505505- Printf.printf "%s\n" (Jsont_pointer.to_string p)
504504+ let p = Json_pointer.of_path path in
505505+ Printf.printf "%s\n" (Json_pointer.to_string p)
506506507507let test_to_path pointer_str =
508508 try
509509- let p = Jsont_pointer.of_string_nav pointer_str in
510510- let path = Jsont_pointer.to_path p in
509509+ let p = Json_pointer.of_string_nav pointer_str in
510510+ let path = Json_pointer.to_path p in
511511 (* Use rev_indices to get the indices in reverse order *)
512512 let indices = Jsont.Path.rev_indices path in
513513 let parts = List.rev_map (fun idx ->
···523523let test_get_result json_str pointer_str =
524524 try
525525 let json = parse_json json_str in
526526- let p = Jsont_pointer.of_string_nav pointer_str in
527527- match Jsont_pointer.get_result p json with
526526+ let p = Json_pointer.of_string_nav pointer_str in
527527+ match Json_pointer.get_result p json with
528528 | Ok result -> Printf.printf "Ok(%s)\n" (json_to_string result)
529529 | Error e -> Printf.printf "Error(%s)\n" (Jsont.Error.to_string e)
530530 with Jsont.Error e ->
···535535 try
536536 let json = parse_json json_str in
537537 let value = parse_json value_str in
538538- let p = Jsont_pointer.of_string pointer_str in
539539- let result = Jsont_pointer.set p json ~value in
538538+ let p = Json_pointer.of_string pointer_str in
539539+ let result = Json_pointer.set p json ~value in
540540 Printf.printf "%s\n" (json_to_string result)
541541 with Jsont.Error e ->
542542 Printf.printf "ERROR: %s\n" (Jsont.Error.to_string e)
···545545let test_jsont_codec pointer_str =
546546 try
547547 let json = Jsont.Json.string pointer_str in
548548- let decoded = match Jsont.Json.decode' Jsont_pointer.jsont json with
548548+ let decoded = match Jsont.Json.decode' Json_pointer.jsont json with
549549 | Ok p -> p
550550 | Error e -> raise (Jsont.Error e)
551551 in
552552- let encoded = match Jsont.Json.encode' Jsont_pointer.jsont decoded with
552552+ let encoded = match Jsont.Json.encode' Json_pointer.jsont decoded with
553553 | Ok j -> j
554554 | Error e -> raise (Jsont.Error e)
555555 in
···562562let test_jsont_kind pointer_str =
563563 try
564564 let json = Jsont.Json.string pointer_str in
565565- let decoded = match Jsont.Json.decode' Jsont_pointer.jsont_kind json with
565565+ let decoded = match Jsont.Json.decode' Json_pointer.jsont_kind json with
566566 | Ok p -> p
567567 | Error e -> raise (Jsont.Error e)
568568 in
569569 match decoded with
570570- | `Nav p -> Printf.printf "Nav(%s)\n" (Jsont_pointer.to_string p)
571571- | `Append p -> Printf.printf "Append(%s)\n" (Jsont_pointer.to_string p)
570570+ | `Nav p -> Printf.printf "Nav(%s)\n" (Json_pointer.to_string p)
571571+ | `Append p -> Printf.printf "Append(%s)\n" (Json_pointer.to_string p)
572572 with Jsont.Error e ->
573573 Printf.printf "ERROR: %s\n" (Jsont.Error.to_string e)
574574···576576let test_jsont_nav pointer_str =
577577 try
578578 let json = Jsont.Json.string pointer_str in
579579- let decoded = match Jsont.Json.decode' Jsont_pointer.jsont_nav json with
579579+ let decoded = match Jsont.Json.decode' Json_pointer.jsont_nav json with
580580 | Ok p -> p
581581 | Error e -> raise (Jsont.Error e)
582582 in
583583- Printf.printf "OK: %s\n" (Jsont_pointer.to_string decoded)
583583+ Printf.printf "OK: %s\n" (Json_pointer.to_string decoded)
584584 with Jsont.Error e ->
585585 Printf.printf "ERROR: %s\n" (Jsont.Error.to_string e)
586586···588588let test_jsont_uri_fragment pointer_str =
589589 try
590590 (* First parse it normally, then encode as URI fragment *)
591591- let p = Jsont_pointer.of_string pointer_str in
592592- let encoded = match Jsont.Json.encode' Jsont_pointer.jsont_uri_fragment p with
591591+ let p = Json_pointer.of_string pointer_str in
592592+ let encoded = match Jsont.Json.encode' Json_pointer.jsont_uri_fragment p with
593593 | Ok j -> j
594594 | Error e -> raise (Jsont.Error e)
595595 in
···602602let test_query_path json_str pointer_str =
603603 try
604604 let json = parse_json json_str in
605605- let p = Jsont_pointer.of_string_nav pointer_str in
606606- let codec = Jsont_pointer.path p Jsont.string in
605605+ let p = Json_pointer.of_string_nav pointer_str in
606606+ let codec = Json_pointer.path p Jsont.string in
607607 let result = match Jsont.Json.decode' codec json with
608608 | Ok v -> v
609609 | Error e -> raise (Jsont.Error e)
···616616let test_query_path_absent json_str pointer_str default =
617617 try
618618 let json = parse_json json_str in
619619- let p = Jsont_pointer.of_string_nav pointer_str in
620620- let codec = Jsont_pointer.path ~absent:default p Jsont.string in
619619+ let p = Json_pointer.of_string_nav pointer_str in
620620+ let codec = Json_pointer.path ~absent:default p Jsont.string in
621621 let result = match Jsont.Json.decode' codec json with
622622 | Ok v -> v
623623 | Error e -> raise (Jsont.Error e)
···630630let test_set_path json_str pointer_str value_str =
631631 try
632632 let json = parse_json json_str in
633633- let p = Jsont_pointer.of_string pointer_str in
634634- let codec = Jsont_pointer.set_path Jsont.string p value_str in
633633+ let p = Json_pointer.of_string pointer_str in
634634+ let codec = Json_pointer.set_path Jsont.string p value_str in
635635 let result = match Jsont.Json.recode' codec json with
636636 | Ok v -> v
637637 | Error e -> raise (Jsont.Error e)
···644644let test_update_path json_str pointer_str =
645645 try
646646 let json = parse_json json_str in
647647- let p = Jsont_pointer.of_string_nav pointer_str in
648648- let codec = Jsont_pointer.update_path p Jsont.string in
647647+ let p = Json_pointer.of_string_nav pointer_str in
648648+ let codec = Json_pointer.update_path p Jsont.string in
649649 let result = match Jsont.Json.recode' codec json with
650650 | Ok v -> v
651651 | Error e -> raise (Jsont.Error e)
···658658let test_delete_path json_str pointer_str =
659659 try
660660 let json = parse_json json_str in
661661- let p = Jsont_pointer.of_string_nav pointer_str in
662662- let codec = Jsont_pointer.delete_path p in
661661+ let p = Json_pointer.of_string_nav pointer_str in
662662+ let codec = Json_pointer.delete_path p in
663663 let result = match Jsont.Json.recode' codec json with
664664 | Ok v -> v
665665 | Error e -> raise (Jsont.Error e)
···672672let test_delete_path_absent json_str pointer_str =
673673 try
674674 let json = parse_json json_str in
675675- let p = Jsont_pointer.of_string_nav pointer_str in
676676- let codec = Jsont_pointer.delete_path ~allow_absent:true p in
675675+ let p = Json_pointer.of_string_nav pointer_str in
676676+ let codec = Json_pointer.delete_path ~allow_absent:true p in
677677 let result = match Jsont.Json.recode' codec json with
678678 | Ok v -> v
679679 | Error e -> raise (Jsont.Error e)
···684684685685(* Test: JMAP of_string_result *)
686686let test_jmap_of_string_result pointer_str =
687687- match Jsont_pointer.Jmap.of_string_result pointer_str with
688688- | Ok p -> Printf.printf "Ok(%s)\n" (Jsont_pointer.Jmap.to_string p)
687687+ match Json_pointer.Jmap.of_string_result pointer_str with
688688+ | Ok p -> Printf.printf "Ok(%s)\n" (Json_pointer.Jmap.to_string p)
689689 | Error e -> Printf.printf "Error(%s)\n" e
690690691691(* Test: JMAP pp *)
692692let test_jmap_pp pointer_str =
693693 try
694694- let p = Jsont_pointer.Jmap.of_string pointer_str in
695695- Format.printf "%a\n" Jsont_pointer.Jmap.pp p
694694+ let p = Json_pointer.Jmap.of_string pointer_str in
695695+ Format.printf "%a\n" Json_pointer.Jmap.pp p
696696 with Jsont.Error e ->
697697 Printf.printf "ERROR: %s\n" (Jsont.Error.to_string e)
698698···700700let test_jmap_eval_result json_str pointer_str =
701701 try
702702 let json = parse_json json_str in
703703- let p = Jsont_pointer.Jmap.of_string pointer_str in
704704- match Jsont_pointer.Jmap.eval_result p json with
703703+ let p = Json_pointer.Jmap.of_string pointer_str in
704704+ match Json_pointer.Jmap.eval_result p json with
705705 | Ok result -> Printf.printf "Ok(%s)\n" (json_to_string result)
706706 | Error e -> Printf.printf "Error(%s)\n" (Jsont.Error.to_string e)
707707 with Jsont.Error e ->
···711711let test_jmap_find json_str pointer_str =
712712 try
713713 let json = parse_json json_str in
714714- let p = Jsont_pointer.Jmap.of_string pointer_str in
715715- match Jsont_pointer.Jmap.find p json with
714714+ let p = Json_pointer.Jmap.of_string pointer_str in
715715+ match Json_pointer.Jmap.find p json with
716716 | Some result -> Printf.printf "Some(%s)\n" (json_to_string result)
717717 | None -> Printf.printf "None\n"
718718 with Jsont.Error e ->
···722722let test_jmap_jsont pointer_str =
723723 try
724724 let json = Jsont.Json.string pointer_str in
725725- let decoded = match Jsont.Json.decode' Jsont_pointer.Jmap.jsont json with
725725+ let decoded = match Jsont.Json.decode' Json_pointer.Jmap.jsont json with
726726 | Ok p -> p
727727 | Error e -> raise (Jsont.Error e)
728728 in
729729- let encoded = match Jsont.Json.encode' Jsont_pointer.Jmap.jsont decoded with
729729+ let encoded = match Jsont.Json.encode' Json_pointer.Jmap.jsont decoded with
730730 | Ok j -> j
731731 | Error e -> raise (Jsont.Error e)
732732 in