aboutsummaryrefslogtreecommitdiff
path: root/internal/calendar/temporal_ef.go
diff options
context:
space:
mode:
authorLukasz Kasprzak <lukas@labunix.xyz>2026-08-18 16:35:41 +0200
committerLukasz Kasprzak <lukas@labunix.xyz>2026-08-18 16:35:41 +0200
commit25aa1fa687ec714e145a998714c29a5f5728a603 (patch)
tree7dde727167a0fc50ba79f1ffd8e7500af02cd653 /internal/calendar/temporal_ef.go
parent5ee75098e1c86fdce195df2e37784c18a2b081a5 (diff)
downloadlectio-25aa1fa687ec714e145a998714c29a5f5728a603.tar.gz
lectio-25aa1fa687ec714e145a998714c29a5f5728a603.zip
feat(ef): Rogation Monday and Tuesday (RG 87)
RG 87: "Litaniae minores seu Rogationes, per se, assignantur feriis II, III et IV ante festum Ascensionis Domini." Easter+36 and +37 are that Monday and Tuesday. RG 128(d) gives them violet -- "for the procession and Mass of the Greater and Lesser Litanies" -- a penitential note inside white Paschaltide. lectio computed no Rogation days at all and showed a plain paschaltide feria. The WEDNESDAY is deliberately not built, and the test asserts its absence. Easter+38 is by construction the Vigil of the Ascension, II class, which wins the day outright; what the rubric asks for there is a COMMEMORATION, and this function returns one office per day. colitur reaches it through a movable-date entry in its sanctoral overlay. Extending the Rogation branch to +38 to "complete" the rubric would silently displace the Vigil, so the test pins the Vigil rather than leaving the omission to a comment. Rank is left as the feria's: these are IV-class days and any III-class saint displaces them, which is what makes the office rare. In 2026 all three are impeded and none appears; 2027 has the Monday unimpeded, and lectio and colitur are byte-identical across 2-5 May that year. One oracle allow-list entry: missalemeum builds no Rogation days either and shows a white feria, so it is the outlier here rather than lectio.
Diffstat (limited to 'internal/calendar/temporal_ef.go')
-rw-r--r--internal/calendar/temporal_ef.go25
1 files changed, 25 insertions, 0 deletions
diff --git a/internal/calendar/temporal_ef.go b/internal/calendar/temporal_ef.go
index 7d31b8b..a043179 100644
--- a/internal/calendar/temporal_ef.go
+++ b/internal/calendar/temporal_ef.go
@@ -276,6 +276,31 @@ 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 87: "Litaniae minores seu Rogationes, per se, assignantur feriis II,
+ // III et IV ante festum Ascensionis Domini" -- the Minor Litanies are
+ // assigned to the Monday, Tuesday and Wednesday before the Ascension.
+ // Easter+36 and +37 are that Monday and Tuesday; their colour is violet,
+ // RG 128(d) giving violet "for the procession and Mass of the Greater and
+ // Lesser Litanies", a penitential note inside white Paschaltide.
+ //
+ // The WEDNESDAY is deliberately absent. Easter+38 is by construction the
+ // Vigil of the Ascension, which is II class and wins the day outright, so
+ // there is no Rogation OFFICE to build there -- what the rubric asks for on
+ // that day is a commemoration, and that needs a channel this function does
+ // not have (it returns one office per day). colitur reaches it through a
+ // movable-date entry in its own sanctoral overlay; here it stays unbuilt
+ // rather than half-built, which is why this comment says so.
+ //
+ // The rank is left as the feria's: these are IV-class days per annum and
+ // any III-class saint displaces them, which is what makes the office rare
+ // -- in 2026 all three are impeded and none appears at all.
+ if rog := daysBetween(easter, date); rog == 36 || rog == 37 {
+ slug := "ef-rogation-monday"
+ if rog == 37 {
+ slug = "ef-rogation-tuesday"
+ }
+ return efCel(season, slug, Violet, rank, week)
+ }
// 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