aboutsummaryrefslogtreecommitdiff
path: root/lib/kernel/celebration.ml
blob: 2963366669f00c6a77a4bcbce4198d58b14822d5 (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
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. *)
type 'r t = {
  slug : Slug.t;
  names : Names.t;
  rank : 'r;
  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 ~colour ?(subject = Subject.Temporal)
    ?(citations = []) ~layer () =
  { slug; names; rank; colour; subject; citations; layer }