aboutsummaryrefslogtreecommitdiff
path: root/lib/kernel/lectionary.mli
diff options
context:
space:
mode:
Diffstat (limited to 'lib/kernel/lectionary.mli')
-rw-r--r--lib/kernel/lectionary.mli21
1 files changed, 21 insertions, 0 deletions
diff --git a/lib/kernel/lectionary.mli b/lib/kernel/lectionary.mli
new file mode 100644
index 0000000..1595377
--- /dev/null
+++ b/lib/kernel/lectionary.mli
@@ -0,0 +1,21 @@
+(** Reading citations keyed by liturgical slug (parent spec ยง2: "keyed by
+ liturgical slug + cycle -> citation set"). Data only: which slug a given
+ day falls back to is a rubric, and lives in the rite module.
+
+ Same discipline as {!Layer}: slug-canonical, validated at construction,
+ sexp round-trips. *)
+type t [@@deriving sexp]
+
+val empty : t
+
+(** Canonically sorts by slug. [Error] on a duplicate slug, naming it --
+ a lectionary with two answers for one day is not a lectionary. *)
+val of_entries : (Slug.t * Citation.t list) list -> (t, string) result
+
+val find : t -> Slug.t -> Citation.t list option
+val mem : t -> Slug.t -> bool
+val entries : t -> (Slug.t * Citation.t list) list
+
+(** Loads from a sexp file. Parse and validation failures come back as
+ [Error], never as an exception. *)
+val load : string -> (t, string) result