aboutsummaryrefslogtreecommitdiff
path: root/lib/kernel/rite.mli
blob: db8e86f904434316a0c517d9d38c739c618421fa (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
(** Everything a rite supplies, bundled. Passing these as loose arguments let a
    caller pair one rite's vocab with another's temporal; bundling makes that
    unrepresentable through the normal path. Carries functions, so it has no
    sexp form. *)
type ('s, 'r) t = {
  id : string;
  vocab : ('s, 'r) Vocab.t;
  year_start : int -> Date.t;
      (** first day of the liturgical year opening in civil year y *)
  temporal : Date.t -> ('s, 'r) Temporal.t;
  anchors : int -> (string * Date.t) list;
      (** Easter-derived days: (expected slug, date) *)
  rules : ('s, 'r) Precedence.rules;
  season_runs : 's list;
      (** the expected run-length-compressed season sequence over one liturgical
          year. NOT necessarily [vocab.seasons]: a rite may have one season
          appear in two separate runs (the modern form's Ordinary Time does). *)
}