summaryrefslogtreecommitdiff
path: root/lib/kernel
diff options
context:
space:
mode:
authorLukasz Kasprzak <lukas@labunix.xyz>2026-08-11 19:02:08 +0200
committerLukasz Kasprzak <lukas@labunix.xyz>2026-08-11 19:02:08 +0200
commit8ab24da337a10993b98696df5d499706318beb8e (patch)
tree140183b7fa246cbe5d148d7deb4d2412b6a91e23 /lib/kernel
parent0506388da160a15ceddb0cea1a697d737103d5c4 (diff)
downloadcolitur-8ab24da337a10993b98696df5d499706318beb8e.tar.gz
colitur-8ab24da337a10993b98696df5d499706318beb8e.zip
kernel(celebration): distinguish a feast from a commemoration-only entry
The 1960 reform reduced many feasts to a bare commemoration. They keep a rank, because RG 111 orders admitted commemorations by dignity, but they can never be the observed day. Modelled as a separate status rather than a fifth rank: RG 8 fixes the classes at four.
Diffstat (limited to 'lib/kernel')
-rw-r--r--lib/kernel/celebration.ml13
-rw-r--r--lib/kernel/celebration.mli12
2 files changed, 20 insertions, 5 deletions
diff --git a/lib/kernel/celebration.ml b/lib/kernel/celebration.ml
index 2963366..eb4249e 100644
--- a/lib/kernel/celebration.ml
+++ b/lib/kernel/celebration.ml
@@ -8,10 +8,17 @@ open Sexplib0.Sexp_conv
but would carry no information while forcing every consumer (Layer,
Overlay, and later Precedence and Calendar) to thread a variable that
means nothing. *)
+(* Whether this celebration can be the observed day at all. The 1960 reform
+ reduced many feasts to a bare commemoration; they retain a rank (RG 111 orders
+ admitted commemorations by dignity) but can never be observed. NOT a fifth
+ rank: RG 8 fixes the classes at four. *)
+type status = Feast | Commemoration_only [@@deriving sexp]
+
type 'r t = {
slug : Slug.t;
names : Names.t;
rank : 'r;
+ status : status;
colour : Colour.t;
subject : Subject.t;
citations : Citation.t list;
@@ -19,6 +26,6 @@ type 'r t = {
}
[@@deriving sexp]
-let make ~slug ?(names = Names.empty) ~rank ~colour ?(subject = Subject.Temporal)
- ?(citations = []) ~layer () =
- { slug; names; rank; colour; subject; citations; layer }
+let make ~slug ?(names = Names.empty) ~rank ?(status = Feast) ~colour
+ ?(subject = Subject.Temporal) ?(citations = []) ~layer () =
+ { slug; names; rank; status; colour; subject; citations; layer }
diff --git a/lib/kernel/celebration.mli b/lib/kernel/celebration.mli
index 1c84d35..a3c2960 100644
--- a/lib/kernel/celebration.mli
+++ b/lib/kernel/celebration.mli
@@ -1,8 +1,15 @@
+(** Whether this celebration can be the observed day at all. The 1960 reform
+ reduced many feasts to a bare commemoration; they retain a rank (RG 111
+ orders admitted commemorations by dignity) but can never be observed. NOT
+ a fifth rank: RG 8 fixes the classes at four. *)
+type status = Feast | Commemoration_only [@@deriving sexp]
+
(** A celebration. Parameterised by the rite's rank type only. *)
type 'r t = {
slug : Slug.t;
names : Names.t;
rank : 'r;
+ status : status;
colour : Colour.t;
subject : Subject.t;
citations : Citation.t list;
@@ -10,7 +17,8 @@ type 'r t = {
}
[@@deriving sexp]
-(** [subject] defaults to [Subject.Temporal], [names] to empty, [citations] to []. *)
+(** [status] defaults to [Feast], [subject] to [Subject.Temporal], [names] to
+ empty, [citations] to []. *)
val make :
- slug:Slug.t -> ?names:Names.t -> rank:'r -> colour:Colour.t ->
+ slug:Slug.t -> ?names:Names.t -> rank:'r -> ?status:status -> colour:Colour.t ->
?subject:Subject.t -> ?citations:Citation.t list -> layer:string -> unit -> 'r t