From 4256e76d7a8cfdb2d6b3afafd281c9fc59e800ec Mon Sep 17 00:00:00 2001 From: Clombrong Date: Tue, 1 Jul 2025 11:30:15 +0200 Subject: feat(jid): add utf8-converting function uchars_of_string --- lib/jid.ml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/lib/jid.ml b/lib/jid.ml index 827cf9d..2ca0795 100644 --- a/lib/jid.ml +++ b/lib/jid.ml @@ -8,6 +8,22 @@ exception InvalidUTF8 type uchars = Uchar.t list +let uchars_of_string s : uchars = + let open Uchar in + let len = String.length s in + let rec loop acc i = + if i >= len then + List.rev acc + else + let c = String.get_utf_8_uchar s i in + if not (utf_decode_is_valid c) + then raise InvalidUTF8 + else + let k = utf_decode_length c in + let u = utf_decode_uchar c in + loop (u :: acc) (i + k) + in loop [] (String.length s) + let of_string (jid : string) : t = let open Uchar in let len = String.length jid in -- cgit v1.2.3