diff options
| -rw-r--r-- | internal/caldata/tridentine-lectionary.ini | 80 | ||||
| -rw-r--r-- | internal/calendar/temporal_ef.go | 9 | ||||
| -rw-r--r-- | internal/calendar/temporal_ef_test.go | 26 |
3 files changed, 97 insertions, 18 deletions
diff --git a/internal/caldata/tridentine-lectionary.ini b/internal/caldata/tridentine-lectionary.ini index a04dbe3..ff39604 100644 --- a/internal/caldata/tridentine-lectionary.ini +++ b/internal/caldata/tridentine-lectionary.ini @@ -304,29 +304,11 @@ gospel = Matt. 26:36-75; 27:1-60. first = Heb 9:11-15. gospel = John 8:46-59. -[ef-passiontide-0-friday] -first = Jer 17:13-18 -gospel = John 11:47-54 -[ef-passiontide-0-monday] -first = Jonas 3:1-10 -gospel = John 7:32-39 -[ef-passiontide-0-saturday] -first = Jer 18:18-23 -gospel = John 12:10-36 -[ef-passiontide-0-thursday] -first = Dan 3:25, 34-45. -gospel = Luke 7:36-50 -[ef-passiontide-0-tuesday] -first = Jer 11:18-20 -gospel = Mark 14:32-72; 15, 1-46 -[ef-passiontide-0-wednesday] -first = Lev 19:1-2, 11-19, 25 -gospel = John 10:22-38 [ef-pentecost] first = Acts 2:1-11. @@ -557,3 +539,65 @@ gospel = Luke 6:36-42 [ef-time-after-pentecost-1-saturday] first = 1 John 4:8-21 gospel = Luke 6:36-42 + +; --------------------------------------------------------------------------- +; Passion week and Holy Week, separated 2026-08-18. Both weeks previously +; shared one set of ef-passiontide-0-* sections, because efWeek numbered +; Passiontide 0 and the two weeks' days collided on the slug. Holy Week +; therefore read Passion week's Masses -- including on Good Friday. +; +; The six removed sections were not simply Passion week's, either: the Tuesday +; one carried HOLY Tuesday's Mass (Jer 11:18-20 with the Passion according to +; Mark), which is Passion Tuesday's only by the same collision. colitur +; documents that specific mix-up and its own correction; rather than untangle +; which of the six were which, all twelve are taken from colitur, where each +; was verified against both photographic scans. +; --------------------------------------------------------------------------- + +[ef-passiontide-1-monday] +first = Jonas 3:1-10 +gospel = John 7:32-39 + +[ef-passiontide-1-tuesday] +first = Dan 14:27, 28-42 +gospel = John 7:1-13 + +[ef-passiontide-1-wednesday] +first = Lev 19:1-2, 11-19, 25 +gospel = John 10:22-38 + +[ef-passiontide-1-thursday] +first = Dan 3:25, 34-45. +gospel = Luke 7:36-50 + +[ef-passiontide-1-friday] +first = Jer 17:13-18 +gospel = John 11:47-54 + +[ef-passiontide-1-saturday] +first = Jer 18:18-23 +gospel = John 12:10-36 + +[ef-passiontide-2-monday] +first = Isa 50:5-10 +gospel = John 12:1-9 + +[ef-passiontide-2-tuesday] +first = Jer 11:18-20 +gospel = Mark 14:32-72; 15, 1-46 + +[ef-passiontide-2-wednesday] +first = Isa 53:1-12 +gospel = Luke 22:39-71; 23:1-53 + +[ef-passiontide-2-thursday] +first = 1 Cor 11:20-32 +gospel = John 13:1-15 + +[ef-passiontide-2-friday] +first = Ex 12:1-11 +gospel = John 18:1-40; 19:1-42 + +[ef-passiontide-2-saturday] +first = Col 3:1-4 +gospel = Matt 28:1-7 diff --git a/internal/calendar/temporal_ef.go b/internal/calendar/temporal_ef.go index a043179..6828f35 100644 --- a/internal/calendar/temporal_ef.go +++ b/internal/calendar/temporal_ef.go @@ -422,6 +422,15 @@ func efWeek(date time.Time, season Season, y int, easter time.Time) int { // its ferias. Epiphany itself is a feast inside Christmas Time (RG 72), // not the head of a numbered week. return daysBetween(firstSundayAfterEpiphany(y), date)/7 + 1 + case Passiontide: + // Passiontide is TWO weeks and they are not interchangeable: Passion + // week (from Passion Sunday, Easter-14) and Holy Week (from Palm + // Sunday, Easter-7) have entirely different Masses. Numbering them + // both 0 -- which is what falling through to the default did -- gave + // every day of Holy Week the slug of its Passion-week namesake, so the + // two weeks shared one set of readings and Holy Week could not have + // its own. + return daysBetween(easter.AddDate(0, 0, -14), date)/7 + 1 case Septuagesima: return daysBetween(easter.AddDate(0, 0, -63), date)/7 + 1 case Easter_: diff --git a/internal/calendar/temporal_ef_test.go b/internal/calendar/temporal_ef_test.go index e8ef391..d930cc7 100644 --- a/internal/calendar/temporal_ef_test.go +++ b/internal/calendar/temporal_ef_test.go @@ -334,3 +334,29 @@ func TestTemporalEFRogationDays(t *testing.T) { "commemoration cannot be built here without displacing the Vigil", got.Cel.Slug) } } + +// TestTemporalEFPassiontideWeeks pins that Passion week and Holy Week are +// numbered apart. They are two weeks with entirely different Masses, and +// efWeek used to give both 0 -- so every day of Holy Week took the slug of its +// Passion-week namesake and the two shared one set of readings. +// +// Good Friday is the case that shows why it matters: it was reading Passion +// Friday's Mass. +func TestTemporalEFPassiontideWeeks(t *testing.T) { + easter := d("2026-04-05") + for _, c := range []struct { + off int + slug string + }{ + {-13, "ef-passiontide-1-monday"}, // Passion week + {-11, "ef-passiontide-1-wednesday"}, + {-6, "ef-passiontide-2-monday"}, // Holy Week + {-2, "ef-passiontide-2-friday"}, // Good Friday + } { + day := easter.AddDate(0, 0, c.off) + if got := temporalEF(day).Cel.Slug; got != c.slug { + t.Errorf("Easter%+d (%s): slug = %q, want %q -- Passion week and Holy Week "+ + "must not share a slug", c.off, day.Format("2006-01-02"), got, c.slug) + } + } +} |
