summaryrefslogtreecommitdiff
path: root/lib/rites/rite_ef/rite_ef.ml
blob: ded960bff6f76c66a8178fec8998869a46e600ac (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
32
33
34
35
(* This module's name matches the library's own name ("rite_ef"), so dune
   treats it as the library's top-level module instead of generating one
   automatically -- every sibling module this library defines must be
   re-exported here explicitly, or external references to e.g.
   [Rite_ef.Temporal_ef] (bin/main.ml, every test/ file that opens this
   rite) stop resolving. *)
module Vocab_ef = Vocab_ef
module Temporal_ef = Temporal_ef
module Precedence_ef = Precedence_ef
module Lectionary_ef = Lectionary_ef

open Colitur_kernel

(* [~lectionary], not a value closed over an internal load: fix round 1
   (coordinator review) found the previous version -- [context] as a plain
   value, [Lectionary_ef] loading data/ef/lectionary.sexp as a side effect
   of being linked -- made `colitur easter <year>` (no lectionary data
   touched at all) die at startup the moment that file was absent from a
   bare `dune build`'s own default target. A function mirrors how the
   sanctoral [Layer.t] already travels: caller-supplied, not embedded (see
   this module's own .mli doc comment on [context] for the fuller
   rationale, shared with data/ef/sanctoral.sexp). *)
let context ~lectionary : (Vocab_ef.season, Vocab_ef.rank) Rite.t =
  { Rite.id = Temporal_ef.id;
    vocab = Vocab_ef.vocab;
    year_start = Temporal_ef.year_start;
    temporal = Temporal_ef.temporal;
    anchors = Temporal_ef.anchors;
    rules =
      { Precedence.band = Precedence_ef.band;
        disposition = Precedence_ef.disposition;
        admit = Precedence_ef.admit };
    season_runs = Vocab_ef.seasons;
    transfer_target = Precedence_ef.transfer_target;
    readings = Lectionary_ef.readings ~lectionary }