diff options
| author | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-08-15 00:16:35 +0200 |
|---|---|---|
| committer | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-08-15 00:16:35 +0200 |
| commit | 124d7e2261c721c4a49f7203efc276088c7cb217 (patch) | |
| tree | 9aa82ff189c924e9327236d77acd6891114108cb /lib/kernel | |
| parent | f1d90a83ece4d8301061e8247e23ec2af8293ab4 (diff) | |
| download | colitur-124d7e2261c721c4a49f7203efc276088c7cb217.tar.gz colitur-124d7e2261c721c4a49f7203efc276088c7cb217.zip | |
kernel+ef: resolve readings, chain steps 1 and 2
Liturgical_day.citations has read "always empty until Plan 4" since Plan 3;
it is now filled. Rite.t gains a readings function, rite-supplied for the
same reason transfer_target is: what a day with no proper falls back to is a
rubric, not a universal. Calendar calls it and passes its own temporal
function as the callback the rite needs to reach another date.
Steps 1 and 2 only: the observed celebration's own proper, else the day's own
temporal slug. Nothing encodes "Lent has daily propers" -- the presence of an
entry is the discriminator.
Diffstat (limited to 'lib/kernel')
| -rw-r--r-- | lib/kernel/calendar.ml | 4 | ||||
| -rw-r--r-- | lib/kernel/rite.ml | 6 | ||||
| -rw-r--r-- | lib/kernel/rite.mli | 14 |
3 files changed, 23 insertions, 1 deletions
diff --git a/lib/kernel/calendar.ml b/lib/kernel/calendar.ml index cffdf69..724641d 100644 --- a/lib/kernel/calendar.ml +++ b/lib/kernel/calendar.ml @@ -435,7 +435,9 @@ let build_day (rite : ('s, 'r) Rite.t) (idx : 'r Layer.by_date) transferred_in; transferred_out; omitted; - citations = []; + citations = + rite.Rite.readings ~observed:resolution.Precedence.observed.Precedence.cel ~temporal ~date + ~temporal_at:rite.Rite.temporal; } let year (rite : ('s, 'r) Rite.t) (layer : 'r Layer.t) (y : int) : diff --git a/lib/kernel/rite.ml b/lib/kernel/rite.ml index 89fceb6..91326a6 100644 --- a/lib/kernel/rite.ml +++ b/lib/kernel/rite.ml @@ -11,4 +11,10 @@ type ('s, 'r) t = { season_runs : 's list; transfer_target : 'r Precedence.candidate -> Date.t -> (Date.t -> 'r Celebration.t) -> Date.t; + readings : + observed:'r Celebration.t -> + temporal:('s, 'r) Temporal.t -> + date:Date.t -> + temporal_at:(Date.t -> ('s, 'r) Temporal.t) -> + Citation.t list; } diff --git a/lib/kernel/rite.mli b/lib/kernel/rite.mli index ffe9471..a41e034 100644 --- a/lib/kernel/rite.mli +++ b/lib/kernel/rite.mli @@ -59,4 +59,18 @@ type ('s, 'r) t = { [transfer_target] for a concrete termination argument (a structural step bound, not an appeal to the real calendar's own structure). *) + readings : + observed:'r Celebration.t -> + temporal:('s, 'r) Temporal.t -> + date:Date.t -> + temporal_at:(Date.t -> ('s, 'r) Temporal.t) -> + Citation.t list; + (** The day's Epistle and Gospel citations, or []. Rite-supplied for the + same reason [transfer_target] is: what a day with no proper of its + own falls back to is a rubric of a particular rite, not a universal. + + [temporal_at] is a callback so the rite can reach another date's + temporal identity (the preceding Sunday's, for the ferial rule) + without re-implementing the temporal cycle -- the same shape + [transfer_target]'s own [occupant] callback established. *) } |
