diff options
author | Clombrong <cromblong@egregore.fun> | 2025-07-02 00:56:10 +0200 |
---|---|---|
committer | Clombrong <cromblong@egregore.fun> | 2025-07-26 21:55:50 +0200 |
commit | 9d2e9c106aafa53e8d877984b6c2de4b64e3df9f (patch) | |
tree | 6b7aa460b9f8ef709b6d6da794ec8cf0ee43644a | |
parent | 42a306a6be2663974fbd700713c78f7addac854d (diff) |
fix(jid): implement show manually instead of using derivers
it translated unicode into the string repr
-rw-r--r-- | lib/jid.ml | 10 |
1 files changed, 9 insertions, 1 deletions
@@ -2,7 +2,7 @@ type t = { localpart : string option; domainpart : string; resourcepart : string option; - } [@@deriving show { with_path = false }] + } exception InvalidUTF8 @@ -52,6 +52,14 @@ let of_string (jid : string) : t = resourcepart = map (fun i -> sub jid (i + 1) (length jid - i - 1)) domain_end; } +let show ({ localpart; domainpart; resourcepart } : t) = + let show_opt = Option.fold ~none:"None" ~some:(Format.sprintf {|Some "%s"|}) + in Printf.sprintf +{|{ localpart = %s; + domainpart = "%s"; + resourcepart = %s }|} + (show_opt localpart) domainpart (show_opt resourcepart) + let%expect_test {|A "bare JID"|} = "juliet@example.com" |> of_string |> show |> print_string; [%expect {| |