this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

more

+136
+85
claudeio/lib/json_utils.ml
··· 1 + open Ezjsonm 2 + 3 + (* Combinations of find + get_* that are commonly used *) 4 + let find_string json path = 5 + find json path |> get_string 6 + 7 + let find_int json path = 8 + find json path |> get_int 9 + 10 + let find_bool json path = 11 + find json path |> get_bool 12 + 13 + let find_float json path = 14 + find json path |> get_float 15 + 16 + (* Optional versions using Ezjsonm's find_opt *) 17 + let find_string_opt json path = 18 + Option.map get_string (find_opt json path) 19 + 20 + let find_int_opt json path = 21 + Option.map get_int (find_opt json path) 22 + 23 + let find_bool_opt json path = 24 + Option.map get_bool (find_opt json path) 25 + 26 + let find_float_opt json path = 27 + Option.map get_float (find_opt json path) 28 + 29 + let assoc_string key fields = 30 + List.assoc key fields |> get_string 31 + 32 + let assoc_int key fields = 33 + List.assoc key fields |> get_int 34 + 35 + let assoc_bool key fields = 36 + List.assoc key fields |> get_bool 37 + 38 + let assoc_float key fields = 39 + List.assoc key fields |> get_float 40 + 41 + let assoc_string_opt key fields = 42 + Option.map get_string (List.assoc_opt key fields) 43 + 44 + let assoc_int_opt key fields = 45 + Option.map get_int (List.assoc_opt key fields) 46 + 47 + let assoc_bool_opt key fields = 48 + Option.map get_bool (List.assoc_opt key fields) 49 + 50 + let assoc_float_opt key fields = 51 + Option.map get_float (List.assoc_opt key fields) 52 + 53 + (* Ezjsonm.get_dict extracts fields, but we keep get_fields as an alias for clarity *) 54 + let get_fields = get_dict 55 + 56 + (* Single field access - simpler than using find with a single-element path *) 57 + let get_field json key = 58 + List.assoc key (get_dict json) 59 + 60 + let get_field_opt json key = 61 + List.assoc_opt key (try get_dict json with _ -> []) 62 + 63 + let get_field_string json key = 64 + get_field json key |> get_string 65 + 66 + let get_field_int json key = 67 + get_field json key |> get_int 68 + 69 + let get_field_bool json key = 70 + get_field json key |> get_bool 71 + 72 + let get_field_float json key = 73 + get_field json key |> get_float 74 + 75 + let get_field_string_opt json key = 76 + Option.map get_string (get_field_opt json key) 77 + 78 + let get_field_int_opt json key = 79 + Option.map get_int (get_field_opt json key) 80 + 81 + let get_field_bool_opt json key = 82 + Option.map get_bool (get_field_opt json key) 83 + 84 + let get_field_float_opt json key = 85 + Option.map get_float (get_field_opt json key)
+51
claudeio/lib/json_utils.mli
··· 1 + (** JSON utility functions for working with Ezjsonm. 2 + 3 + This module provides convenience combinators that combine common 4 + Ezjsonm operations. Most functions are thin wrappers that combine 5 + find/get operations or provide Option-based error handling. *) 6 + 7 + (** {2 Finding values by path} 8 + 9 + These combine [Ezjsonm.find] with type extraction functions. *) 10 + 11 + val find_string : Ezjsonm.value -> string list -> string 12 + val find_int : Ezjsonm.value -> string list -> int 13 + val find_bool : Ezjsonm.value -> string list -> bool 14 + val find_float : Ezjsonm.value -> string list -> float 15 + 16 + val find_string_opt : Ezjsonm.value -> string list -> string option 17 + val find_int_opt : Ezjsonm.value -> string list -> int option 18 + val find_bool_opt : Ezjsonm.value -> string list -> bool option 19 + val find_float_opt : Ezjsonm.value -> string list -> float option 20 + 21 + (** {2 Association list operations} *) 22 + 23 + val assoc_string : string -> (string * Ezjsonm.value) list -> string 24 + val assoc_int : string -> (string * Ezjsonm.value) list -> int 25 + val assoc_bool : string -> (string * Ezjsonm.value) list -> bool 26 + val assoc_float : string -> (string * Ezjsonm.value) list -> float 27 + 28 + val assoc_string_opt : string -> (string * Ezjsonm.value) list -> string option 29 + val assoc_int_opt : string -> (string * Ezjsonm.value) list -> int option 30 + val assoc_bool_opt : string -> (string * Ezjsonm.value) list -> bool option 31 + val assoc_float_opt : string -> (string * Ezjsonm.value) list -> float option 32 + 33 + (** {2 Object field operations} 34 + 35 + Direct field access without needing to build paths. *) 36 + 37 + (** Alias for [Ezjsonm.get_dict] *) 38 + val get_fields : Ezjsonm.value -> (string * Ezjsonm.value) list 39 + 40 + val get_field : Ezjsonm.value -> string -> Ezjsonm.value 41 + val get_field_opt : Ezjsonm.value -> string -> Ezjsonm.value option 42 + 43 + val get_field_string : Ezjsonm.value -> string -> string 44 + val get_field_int : Ezjsonm.value -> string -> int 45 + val get_field_bool : Ezjsonm.value -> string -> bool 46 + val get_field_float : Ezjsonm.value -> string -> float 47 + 48 + val get_field_string_opt : Ezjsonm.value -> string -> string option 49 + val get_field_int_opt : Ezjsonm.value -> string -> int option 50 + val get_field_bool_opt : Ezjsonm.value -> string -> bool option 51 + val get_field_float_opt : Ezjsonm.value -> string -> float option