diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/rites/rite_of/temporal_of.ml | 28 | ||||
| -rw-r--r-- | lib/rites/rite_of/temporal_of.mli | 11 |
2 files changed, 37 insertions, 2 deletions
diff --git a/lib/rites/rite_of/temporal_of.ml b/lib/rites/rite_of/temporal_of.ml index 9aa898e..e375350 100644 --- a/lib/rites/rite_of/temporal_of.ml +++ b/lib/rites/rite_of/temporal_of.ml @@ -238,7 +238,33 @@ let named d = let easter = Computus.gregorian_easter y in let off n = Date.add_days easter n in let m = Date.month d and dd = Date.day d in - if m = 12 && dd = 24 then Some (Advent, "of-nativity-vigil", Colour.White, Sollemnitas) + if m = 12 && dd = 24 && Date.weekday d <> Date.Sun then + Some (Advent, "of-nativity-vigil", Colour.White, Sollemnitas) + (* NOT unconditional. Tabula I.2 ("Dominicae Adventus, Quadragesimae et + Paschae") outranks Tabula I.3 (solemnities generally, where the Vigil + Mass of the Nativity itself bands, per Precedence_of.band's own entry-3 + branch) -- Normae n. 5 states it directly for exactly this class of + day: a Sunday of Advent/Lent/Easter yields to nothing but a still + higher-banked day. The Fourth Sunday of Advent is one of those + privileged Sundays every time 24 December falls on one. + + The Vigil Mass is an evening Mass of the FOLLOWING solemnity (the + Nativity, 25 December), not an office belonging to 24 December's own + civil day -- the identical granularity reasoning + Precedence_of.band's own entry-1 comment already applies to Holy + Thursday (the Triduum opens with an evening Mass inside Holy + Thursday's civil day, so the day itself stays at entry 2, not entry + 1) and that data/of/expected-divergences-litcal.sexp's L1 entry + applies on the season axis. At colitur's one-office-per-civil-day + granularity, only one identity can hold 24 December, and on a Sunday + that identity is the Fourth Sunday of Advent, not the Vigil -- so + [named] must return [None] here and let [temporal]'s dispatch fall + through to [sunday_slug], exactly as it already does for every other + Sunday [named] does not claim. + + Every non-Sunday 24 December is unaffected: the Vigil still wins + there, as a plain late-Advent feria (Tabula II.9) is never privileged + against it. *) else if m = 12 && dd = 25 then Some (Christmas, "of-nativity", Colour.White, Sollemnitas) else if m = 1 && dd = 1 then Some (Christmas, "of-mary-mother-of-god", Colour.White, Sollemnitas) else if m = 1 && dd = 6 then Some (Christmas, "of-epiphany", Colour.White, Sollemnitas) diff --git a/lib/rites/rite_of/temporal_of.mli b/lib/rites/rite_of/temporal_of.mli index 982ff05..d2acadd 100644 --- a/lib/rites/rite_of/temporal_of.mli +++ b/lib/rites/rite_of/temporal_of.mli @@ -103,7 +103,16 @@ val christ_the_king : int -> Date.t threading extra state through every other branch too -- the exact reason EF's own [named] excludes its structurally identical Holy Family/Holy Name. {!temporal} applies all three as its own targeted - dispatch instead. *) + dispatch instead. + + 24 December is ALSO conditional, not unconditional like the rest of this + function's fixed dates: it yields [of-nativity-vigil] only when that date + is not itself a Sunday. On a Sunday, [None] is returned so {!temporal}'s + dispatch falls through to {!sunday_slug}'s own [of-advent-sunday-4] -- + Tabula I.2/Normae n. 5's Sundays of Advent outrank the Vigil (Tabula + I.3), the same evening-Mass-inside-the-civil-day reasoning already + applied to Holy Thursday (see [named]'s own implementation comment for + the full argument). *) val named : Date.t -> (Vocab_of.season * string * Colour.t * Vocab_of.rank) option (** Week within the season, 1-indexed, Sunday-aligned (constant across a |
