diff options
| author | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-07-27 21:30:56 +0200 |
|---|---|---|
| committer | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-07-27 21:30:56 +0200 |
| commit | bec7c034aca15537900d74a7063d85c0f4deacae (patch) | |
| tree | baf4cac4e3a38507b8a0f9de80ac251a5df82908 /internal/caldata | |
| parent | 2901c73fde7ff19e8cdea00f933dc628d11c6ec6 (diff) | |
| download | lectio-bec7c034aca15537900d74a7063d85c0f4deacae.tar.gz lectio-bec7c034aca15537900d74a7063d85c0f4deacae.zip | |
feat(calfeed): shared day builder + reusable reading resolver
Diffstat (limited to 'internal/caldata')
| -rw-r--r-- | internal/caldata/readings.go | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/internal/caldata/readings.go b/internal/caldata/readings.go new file mode 100644 index 0000000..a11235d --- /dev/null +++ b/internal/caldata/readings.go @@ -0,0 +1,31 @@ +package caldata + +import ( + "time" + + "github.com/lukaszkasprzak/lectio/internal/calendar" +) + +// Readings resolves a day's Mass readings: the observed celebration's inline +// propers, else the temporal lectionary for its slug, else -- for an EF +// weekday with no proper Mass -- the preceding Sunday's Mass (the 1962 rule +// that green-season ferias repeat the Sunday). Shared by the CLI (cli.dayReadings +// delegates here) and calfeed.Build (injected as its readings func). +func Readings(sel calendar.Selection, layers []calendar.Layer, date time.Time, day calendar.LiturgicalDay) []calendar.Reading { + var rs []calendar.Reading + for _, m := range day.Observed.Masses { + rs = append(rs, m.Readings...) + } + if len(rs) > 0 { + return rs + } + if r := TemporalReadings(sel.Form, day.Observed.Slug); len(r) > 0 { + return r + } + if sel.Form == "old" && day.Observed.Layer == "temporal" && date.Weekday() != time.Sunday { + sun := date.AddDate(0, 0, -int(date.Weekday())) // preceding Sunday (Sunday = 0) + sd := calendar.Compute(sun, sel, layers) + return TemporalReadings(sel.Form, sd.Observed.Slug) + } + return nil +} |
