aboutsummaryrefslogtreecommitdiff
path: root/internal/calendar/temporal_ef.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/calendar/temporal_ef.go')
-rw-r--r--internal/calendar/temporal_ef.go26
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)
}