aboutsummaryrefslogtreecommitdiff
path: root/lib/rites/rite_ef/lectionary_ef.mli
blob: 65fbfe56ddc296720002bafd87c4bb94f639ecb8 (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
open Colitur_kernel

(** The EF lectionary resolution chain. All rubric knowledge about what a day
    with no proper falls back to lives here, not in the kernel.

    [lectionary] is caller-supplied, not loaded by this module -- the same
    reasoning rite_ef.mli's own [context] doc comment already gives for why
    the sanctoral {!Colitur_kernel.Layer.t} stays a separate argument rather
    than an embedded field: it lets a caller load data/ef/lectionary.sexp
    however suits it, and leaves room for a future diocesan/proper
    lectionary overlay to attach without this module changing at all.

    An eager filesystem read at module initialisation was tried first and
    reverted (fix round 1, coordinator review): [readings] used to close
    over a [lectionary] value loaded as a side effect of this module being
    LINKED, so `colitur easter <year>` -- which touches no lectionary data
    at all -- died at startup the moment data/ef/lectionary.sexp was
    missing from a bare `dune build`'s own default target (it was only
    present because test/dune's own deps happened to materialise it,
    masking the gap in every test run). See the task report for the
    reproduction.

    Steps 1 and 2 only (Task 4): the observed celebration's own proper, else
    the day's own temporal slug in the lectionary. A day matching neither
    gets [] for now -- the ferial fallback to the preceding Sunday (Task 5)
    and the Commons (Task 6) are not built here. *)
val readings :
  lectionary:Lectionary.t ->
  observed:Vocab_ef.rank Celebration.t ->
  temporal:(Vocab_ef.season, Vocab_ef.rank) Temporal.t ->
  date:Date.t ->
  temporal_at:(Date.t -> (Vocab_ef.season, Vocab_ef.rank) Temporal.t) ->
  Citation.t list