From 57322e766a0ece579dafcddcfe2572676a98fca8 Mon Sep 17 00:00:00 2001 From: Lukasz Kasprzak Date: Tue, 11 Aug 2026 11:37:32 +0200 Subject: kernel: Names, Citation and Date_spec Names is an open language-keyed assoc kept in canonical order so equal name sets serialise identically. Citation carries references only, never text. Date_spec ships the one form the EF sanctoral needs; 29 February is constructible and resolves to None in common years. --- lib/kernel/names.mli | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 lib/kernel/names.mli (limited to 'lib/kernel/names.mli') diff --git a/lib/kernel/names.mli b/lib/kernel/names.mli new file mode 100644 index 0000000..567ce2e --- /dev/null +++ b/lib/kernel/names.mli @@ -0,0 +1,20 @@ +(** Celebration names keyed by language. The language set is open; entries are + kept sorted by language code, so equal name sets have equal sexp forms. *) +type t = (Lang.t * string) list [@@deriving sexp] + +val sexp_of_t : t -> Sexplib0.Sexp.t +val t_of_sexp : Sexplib0.Sexp.t -> t + +val empty : t + +(** Canonicalises; on duplicate languages the last entry wins. *) +val of_list : (Lang.t * string) list -> t + +val set : t -> Lang.t -> string -> t +val remove : t -> Lang.t -> t +val find : t -> Lang.t -> string option + +(** [find_first t langs] returns the name for the first language present. *) +val find_first : t -> Lang.t list -> string option + +val to_list : t -> (Lang.t * string) list -- cgit v1.3