diff options
Diffstat (limited to 'internal/calendar/temporal_ef.go')
| -rw-r--r-- | internal/calendar/temporal_ef.go | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/internal/calendar/temporal_ef.go b/internal/calendar/temporal_ef.go index 26ad930..7d31b8b 100644 --- a/internal/calendar/temporal_ef.go +++ b/internal/calendar/temporal_ef.go @@ -276,6 +276,32 @@ func temporalEF(date time.Time) temporalDay { // Unique ferial slug (season-week-weekday) so proper ferias (Lent, Advent, // Holy Week, Ember days) can key their own readings; green-season ferias // simply have no lectionary entry and fall back to the Sunday. + // RG 78 (Caput IX, "De sancta Maria in sabbato"): "In sabbatis, in quibus + // occurrit Officium de feria IV classis, fit de sancta Maria in sabbato." + // On a Saturday whose office would otherwise be a IV-class feria, the + // office is the votive Office of Our Lady, and it is white -- RG 431(e) + // classes that Mass as "Missa votiva IV classis ... de B. Maria Virg.", + // RG 121(a) gives a votive Mass the colour of the feast-type it answers + // to, and RG 120(b) makes feasts of the BVM white. + // + // The protasis is "a IV-class feria", which by this point in the function + // is exactly what rank still being RankClass4 means: every branch above + // has already promoted Advent, Lent, Passiontide, the Ember days, the + // privileged ferias and the Christmas octave out of it. Nothing further + // needs testing. + // + // The SLUG IS DELIBERATELY UNCHANGED. colitur, which has built this office + // since its v0.3.0, does the same and for a reason worth repeating: a + // bespoke slug would recur many times a year and break the "one slug per + // liturgical year" invariant, and the day's readings are selected by the + // Mass formulary rather than by the slug. Only the colour moves here. + // + // This is the temporal office only. If a sanctoral feast outranks the + // IV-class Saturday it wins as before and brings its own colour, exactly + // as it did when this day was a plain green feria. + if rank == RankClass4 && date.Weekday() == time.Saturday { + col = White + } return efCel(season, "ef-"+string(slugSeason)+"-"+strconv.Itoa(week)+"-"+weekdayLower(date), col, rank, week) } |
