summaryrefslogtreecommitdiff
path: root/lib/rites/rite_of
diff options
context:
space:
mode:
authorLukasz Kasprzak <lukas@labunix.xyz>2026-08-25 19:24:29 +0200
committerLukasz Kasprzak <lukas@labunix.xyz>2026-08-25 19:24:29 +0200
commit4f3af5d6fdc3f5aafe955f88ee9a7788e420b62e (patch)
treea8f7b4266a5f5b831141f003540451fce693a518 /lib/rites/rite_of
parent8885c9af2f69b81b9aefcf3ab6c4da641338b71d (diff)
downloadcolitur-4f3af5d6fdc3f5aafe955f88ee9a7788e420b62e.tar.gz
colitur-4f3af5d6fdc3f5aafe955f88ee9a7788e420b62e.zip
feat(of): transcribe Tabula part III, completing the table
Entries 10-13. Entry 12 is one undivided row -- the Tabula draws no universal/proper split for optional memorials, unlike entries 3/4, 7/8 and 10/11 -- so it deliberately does not read the layer. Entry 13's four clauses need no date arithmetic of their own: every privileged feria is entries 2 and 9, tested earlier in the chain, so what reaches the final branch is exactly the residue those clauses name. Entry 10 uses [not (is_proper layer)], not the brief's original [is_universal layer]: is_universal was deleted as dead code in Task 2, because every temporal-origin candidate carries layer = "temporal", never universal_layer, so a positive is_universal test can never match one -- the same correction entries 3, 5 and 7 already apply.
Diffstat (limited to 'lib/rites/rite_of')
-rw-r--r--lib/rites/rite_of/precedence_of.ml18
1 files changed, 18 insertions, 0 deletions
diff --git a/lib/rites/rite_of/precedence_of.ml b/lib/rites/rite_of/precedence_of.ml
index d777f68..cb15d68 100644
--- a/lib/rites/rite_of/precedence_of.ml
+++ b/lib/rites/rite_of/precedence_of.ml
@@ -149,4 +149,22 @@ let band (ctx : Vocab_of.season Precedence.context)
temporal
&& (is_late_advent_feria ctx || is_nativity_octave_day ctx || is_lenten_feria ctx)
then 90 (* Tabula II.9 *)
+ else if c.cel.rank = Vocab_of.Memoria_obligatoria && not (is_proper layer) then
+ 100 (* Tabula III.10 -- universal or temporal-origin, never proper; see the
+ [is_proper] comment above for why this is not [is_universal] *)
+ else if c.cel.rank = Vocab_of.Memoria_obligatoria && is_proper layer then
+ 110 (* Tabula III.11 *)
+ else if c.cel.rank = Vocab_of.Memoria_ad_libitum then
+ (* Tabula III.12. ONE undivided row: unlike entries 10/11 (and 3/4, 7/8),
+ the Tabula draws no universal/proper split for optional memorials, so
+ [layer] is deliberately not read here. The asymmetry is the source's. *)
+ 120
+ else if temporal && c.cel.rank = Vocab_of.Feria then
+ (* Tabula III.13, four clauses -- ordinary Advent ferias to 16 December,
+ Christmas-time ferias from 2 January, paschal ferias after the Octave,
+ and ferias "per annum". Every privileged feria (entries 2 and 9) is
+ tested earlier in this chain, so what reaches here is exactly the
+ residue those four clauses name, and no clause needs its own date
+ arithmetic. *)
+ 130
else unclassified