aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClombrong <cromblong@egregore.fun>2025-07-02 00:56:10 +0200
committerClombrong <cromblong@egregore.fun>2025-07-26 21:55:50 +0200
commit9d2e9c106aafa53e8d877984b6c2de4b64e3df9f (patch)
tree6b7aa460b9f8ef709b6d6da794ec8cf0ee43644a
parent42a306a6be2663974fbd700713c78f7addac854d (diff)
fix(jid): implement show manually instead of using derivers
it translated unicode into the string repr
-rw-r--r--lib/jid.ml10
1 files changed, 9 insertions, 1 deletions
diff --git a/lib/jid.ml b/lib/jid.ml
index 47de37d..f51114d 100644
--- a/lib/jid.ml
+++ b/lib/jid.ml
@@ -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 {|