blob: eb4249e5d2224afe043b217fbd90a079276a0bfb (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
open Sexplib0.Sexp_conv
(* A celebration as computed or as loaded from a layer.
One type parameter, not two: a celebration has no season of its own --
season is contextual to the day, and lives in Temporal.t, which pairs a
celebration with the day it falls on. A phantom 's parameter would compile,
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;
layer : string; (** provenance: "temporal", a layer id, or an overlay id *)
}
[@@deriving sexp]
let make ~slug ?(names = Names.empty) ~rank ?(status = Feast) ~colour
?(subject = Subject.Temporal) ?(citations = []) ~layer () =
{ slug; names; rank; status; colour; subject; citations; layer }
|