aboutsummaryrefslogtreecommitdiff
path: root/internal/caldata
diff options
context:
space:
mode:
authorLukasz Kasprzak <lukas@labunix.xyz>2026-07-28 09:46:54 +0200
committerLukasz Kasprzak <lukas@labunix.xyz>2026-07-28 09:46:54 +0200
commit97f704b659ea6c72c4aa354378b347283ecc5cac (patch)
tree2606730c373ba97ebec6bcf3b38ebb00f13c0a29 /internal/caldata
parent6641ce335de522e6d51c47ad9d14f69726650592 (diff)
downloadlectio-97f704b659ea6c72c4aa354378b347283ecc5cac.tar.gz
lectio-97f704b659ea6c72c4aa354378b347283ecc5cac.zip
feat(of): proper Mass readings for the sanctoral (from catholic-resources.org)
OF feasts, solemnities, and proper-reading memorials had no readings of their own and fell back to the day's ferial (Barnabas showed the ferial instead of Acts 11; Our Lady of Sorrows / the Guardian Angels showed the ferial instead of their proper gospel). scripts/gen-of-sanctoral-readings.py scrapes catholic-resources.org's Proper of Saints table and inlines reading.first/psalm/second/gospel into roman-calendar.ini for the 41 universal-calendar celebrations marked PROPER (plus every feast/solemnity); memorials that draw on a Common keep the ferial, which is the OF default. Handles the source quirks: 'or' alternatives (takes the first), cycle-specific A:/B:/C: gospels (takes A), lectionary # refs, and vigil-vs-day (keeps the day Mass). All 41 render; citations only. Adds TestUniversalSanctoralReadings, credits the source in NOTICE, bumps to 0.41.0.
Diffstat (limited to 'internal/caldata')
-rw-r--r--internal/caldata/caldata_test.go26
-rw-r--r--internal/caldata/roman-calendar.ini134
2 files changed, 160 insertions, 0 deletions
diff --git a/internal/caldata/caldata_test.go b/internal/caldata/caldata_test.go
index 5ffa57e..0d6616e 100644
--- a/internal/caldata/caldata_test.go
+++ b/internal/caldata/caldata_test.go
@@ -1,6 +1,7 @@
package caldata
import (
+ "strings"
"testing"
"github.com/lukaszkasprzak/lectio/internal/calendar"
@@ -30,6 +31,31 @@ func TestUniversalLoads(t *testing.T) {
}
}
+func TestUniversalSanctoralReadings(t *testing.T) {
+ l := Universal()
+ // A feast/solemnity or a PROPER-reading memorial carries its own inline Mass
+ // (imported from catholic-resources.org) rather than falling back to the ferial.
+ want := map[string][2]string{ // slug -> {reading.first substr, reading.gospel substr}
+ "barnabas-the-apostle": {"Acts 11", "Matthew 10:7-13"},
+ "assumption-of-the-blessed-virgin-mary": {"Revelation 11", "Luke 1:39-56"},
+ "our-lady-of-sorrows": {"Hebrews 5", "John 19:25-27"},
+ "all-saints": {"Revelation 7", "Matthew 5:1-12"},
+ }
+ for slug, w := range want {
+ rc, ok := l.Cels[slug]
+ if !ok {
+ t.Errorf("missing %q", slug)
+ continue
+ }
+ if got := rc.Fields["reading.first"]; !strings.Contains(got, w[0]) {
+ t.Errorf("%s: reading.first = %q, want containing %q", slug, got, w[0])
+ }
+ if got := rc.Fields["reading.gospel"]; !strings.Contains(got, w[1]) {
+ t.Errorf("%s: reading.gospel = %q, want containing %q", slug, got, w[1])
+ }
+ }
+}
+
func TestTridentineLoads(t *testing.T) {
l := Tridentine()
if l.ID != "tridentine" {
diff --git a/internal/caldata/roman-calendar.ini b/internal/caldata/roman-calendar.ini
index 63fd703..ccffa64 100644
--- a/internal/caldata/roman-calendar.ini
+++ b/internal/caldata/roman-calendar.ini
@@ -35,6 +35,9 @@ class = lord
colour = white
name.en = The Most Holy Name of Jesus
name.la = Ss.mi Nominis Iesu
+reading.first = Philippians 2:1-11
+reading.psalm = Psalms 8:4-5,6-7,8-9
+reading.gospel = Luke 2:21-24
[raymond-of-penyafort-priest]
date = 01-07
@@ -111,6 +114,9 @@ colour = white
name.en = The Conversion of Saint Paul, apostle
name.pl = Nawrócenia św. Pawła Apostoła
name.la = In conversione S. Pauli, apostoli
+reading.first = The Acts 22:3-16
+reading.psalm = Psalms 117:1bc,2
+reading.gospel = Mark 16:15-18
[saints-timothy-and-titus-bishops]
date = 01-26
@@ -119,6 +125,9 @@ class = saint
colour = white
name.en = Saints Timothy and Titus, bishops
name.la = Ss. Timothei et Titi, episcoporum
+reading.first = 2 Timothy 1:1-8
+reading.psalm = Psalms 96:1-2a,2b-3,7-8a,10
+reading.gospel = Luke 10:1-9
[angela-merici-virgin]
date = 01-27
@@ -153,6 +162,10 @@ class = lord
colour = white
name.en = Presentation of the Lord
name.la = IN PRAESENTATIONE DOMINI
+reading.first = Malachi 3:1-4
+reading.psalm = Psalms 24:7,8,9,10
+reading.second = Hebrews 2:14-18
+reading.gospel = Luke 2:22-40
[ansgar-bishop]
date = 02-03
@@ -254,6 +267,9 @@ colour = white
name.en = Chair of Saint Peter, apostle
name.pl = katedry św. Piotra Apostoła
name.la = Cathedrae S. Petri, apostoli
+reading.first = 1 Peter 5:1-4
+reading.psalm = Psalms 23:1-3a,4,5,6
+reading.gospel = Matthew 16:13-19
[polycarp-bishop-and-martyr]
date = 02-23
@@ -319,6 +335,10 @@ colour = white
name.en = Saint Joseph Husband of the Blessed Virgin Mary
name.pl = św. Józefa, Oblubieńca Najświętszej Maryi Panny
name.la = S. IOSEPH, SPONSI B. M. V.
+reading.first = 2 Samuel 7:4-5a,12-14a,16
+reading.psalm = Psalms 89:2-3,4-5,27+29
+reading.second = Romans 4:13,16-18,22
+reading.gospel = Matthew 1:16,18-21,24a
[turibius-of-mogrovejo-bishop]
date = 03-23
@@ -336,6 +356,10 @@ colour = white
name.en = Annunciation of the Lord
name.pl = Zwiastowania Pańskiego
name.la = IN ANNUNTIATIONE DOMINI
+reading.first = Isaiah 7:10-14;8:10
+reading.psalm = Psalms 40:7-8a,8b-9,10,11
+reading.second = Hebrews 10:4-10
+reading.gospel = Luke 1:26-38
[francis-of-paola-hermit]
date = 04-02
@@ -424,6 +448,9 @@ class = saint
colour = red
name.en = Saint Mark the Evangelist
name.la = S. Marci, evangelistae
+reading.first = 1 Peter 5:5b-14
+reading.psalm = Psalms 89:2-3,6-7,16-17
+reading.gospel = Mark 16:15-20
[louis-grignon-de-montfort-priest]
date = 04-28
@@ -465,6 +492,9 @@ class = saint
colour = white
name.en = Saint Joseph the Worker
name.la = S. Ioseph Opificis
+reading.first = Genesis 1:26-2:3
+reading.psalm = Psalms 90:2,3-4,12-13,14+16
+reading.gospel = Matthew 13:54-58
[athanasius-bishop-and-doctor]
date = 05-02
@@ -483,6 +513,9 @@ colour = red
name.en = Saints Philip and James, Apostles
name.pl = Najświętszej Maryi Panny, Królowej Polski
name.la = Ss. Philippi et Iacobi, apostolorum
+reading.first = 1 Corinthians 15:1-8
+reading.psalm = Psalms 19:2-3,4-5
+reading.gospel = John 14:6-14
[saints-nereus-and-achilleus-martyrs]
date = 05-12
@@ -516,6 +549,9 @@ colour = red
name.en = Saint Matthias the Apostle
name.pl = św. Macieja, apostoła
name.la = S. Matthiae, apostoli
+reading.first = The Acts 1:15-17,20-26
+reading.psalm = Psalms 113:1-2,3-4,5-6,7-8
+reading.gospel = John 15:9-17
[john-i-pope-and-martyr]
date = 05-18
@@ -598,6 +634,9 @@ colour = white
name.en = Visitation of the Blessed Virgin Mary
name.pl = Nawiedzenia Najświętszej Maryi Panny
name.la = In Visitatione B. Mariae Virginis
+reading.first = Zephaniah 3:14-18a
+reading.psalm = Isaiah 12:2-3,4bcd,5-6
+reading.gospel = Luke 1:39-56
[justin-martyr]
date = 06-01
@@ -657,6 +696,9 @@ colour = red
name.en = Saint Barnabas the Apostle
name.pl = św. Barnaby, apostoła
name.la = S. Barnabae, apostoli
+reading.first = The Acts 11:21b-26;13:1-3
+reading.psalm = Psalms 98:1,2-3ab,3cd-4,5-6
+reading.gospel = Matthew 10:7-13
[anthony-of-padua-priest-and-doctor]
date = 06-13
@@ -708,6 +750,10 @@ colour = white
name.en = Birth of Saint John the Baptist
name.pl = narodzenia św. Jana Chrzciciela
name.la = IN NATIVITATE S. IOANNIS BAPTISTAE
+reading.first = Isaiah 49:1-6
+reading.psalm = Psalms 139:1b-3,13-14ab,14c-15
+reading.second = The Acts 13:22-26
+reading.gospel = Luke 1:57-66,80
[cyril-of-alexandria-bishop-and-doctor]
date = 06-27
@@ -732,6 +778,10 @@ class = saint
colour = red
name.en = Saints Peter and Paul, Apostles
name.la = Ss. PETRI ET PAULI, APOSTOLORUM
+reading.first = The Acts 12:1-11
+reading.psalm = Psalms 34:2-3,4-5,6-7,8-9
+reading.second = 2 Timothy 4:6-8,17-18
+reading.gospel = Matthew 16:13-19
[first-martyrs-of-the-church-of-rome]
date = 06-30
@@ -749,6 +799,9 @@ colour = red
name.en = Saint Thomas the Apostle
name.pl = św. Tomasza, apostoła
name.la = S. Thomae, apostoli
+reading.first = Ephesians 2:19-22
+reading.psalm = Psalms 117:1bc,2
+reading.gospel = John 20:24-29
[elizabeth-of-portugal]
date = 07-04
@@ -848,6 +901,9 @@ colour = white
name.en = Saint Mary Magdalene
name.pl = św. Marii Magdaleny
name.la = S. Mariae Magdalenae
+reading.first = Song of Solomon 3:1-4b
+reading.psalm = Psalms 63:2,3-4,5-6,8-9
+reading.gospel = John 20:1-2,11-18
[birgitta-religious]
date = 07-23
@@ -873,6 +929,9 @@ colour = red
name.en = Saint James, apostle
name.pl = św. Jakuba, apostoła
name.la = S. Iacobi, apostoli
+reading.first = 2 Corinthians 4:7-15
+reading.psalm = Psalms 126:1bc-2ab,2cd-3,4-5,6
+reading.gospel = Matthew 20:20-28
[saints-joachim-and-anne]
date = 07-26
@@ -882,6 +941,9 @@ colour = white
name.en = Saints Joachim and Anne
name.pl = św. Joachima i Anny, rodziców Najświętszej Maryi Panny
name.la = Ss. Ioachim et Annae, parentum B. Mariae Virginis
+reading.first = Sirach 44:1,10-15
+reading.psalm = Psalms 132:11,13-14,17-18
+reading.gospel = Matthew 13:16-17
[martha]
date = 07-29
@@ -891,6 +953,9 @@ colour = red
name.en = Saint Martha
name.pl = św. Marty, Marii i Łazarza
name.la = S. Marthae
+reading.first = 1 John 4:7-16
+reading.psalm = Psalms 34:2-3,4-5,6-7,8-9,10-11
+reading.gospel = John 11:19-27
[peter-chrysologus-bishop-and-doctor]
date = 07-30
@@ -959,6 +1024,10 @@ colour = white
name.en = Transfiguration of the Lord
name.pl = Przemienienia Pańskiego
name.la = IN TRANSFIGURATIONE DOMINI
+reading.first = Daniel 7:9-10,13-14
+reading.psalm = Psalms 97:1-2,5-6,9
+reading.second = 2 Peter 1:16-19
+reading.gospel = Matthew 17:1-9
[sixtus-ii-pope-and-companions-martyrs]
date = 08-07
@@ -1000,6 +1069,9 @@ class = saint
colour = red
name.en = Saint Lawrence, deacon and martyr
name.la = S. Laurentii, diaconi et martyris
+reading.first = 2 Corinthians 9:6-10
+reading.psalm = Psalms 112:1-2,5-6,7-8,9
+reading.gospel = John 12:24-26
[clare-virgin]
date = 08-11
@@ -1043,6 +1115,10 @@ colour = white
name.en = Assumption of the Blessed Virgin Mary
name.pl = Wniebowzięcia Najświętszej Maryi Panny
name.la = IN ASSUMPTIONE B. MARIAE VIRGINIS
+reading.first = Revelation 11:19a;12:1-6a,10ab
+reading.psalm = Psalms 45:10,11,12,16
+reading.second = 1 Corinthians 15:20-27
+reading.gospel = Luke 1:39-56
[stephen-of-hungary]
date = 08-16
@@ -1102,6 +1178,9 @@ class = saint
colour = red
name.en = Saint Bartholomew the Apostle
name.la = S. Bartholomaei, apostoli
+reading.first = Revelation 21:9b-14
+reading.psalm = Psalms 145:10-11,12-13,17-18
+reading.gospel = John 1:45-51
[joseph-of-calasanz-priest]
date = 08-25
@@ -1145,6 +1224,9 @@ colour = red
name.en = The Beheading of Saint John the Baptist, martyr
name.pl = męczeństwa św. Jana Chrzciciela
name.la = In Passione S. Ioannis Baptistae, martyris
+reading.first = Jeremiah 1:17-19
+reading.psalm = Psalms 71:1-2,3-4a,5-6ab,15ab+17
+reading.gospel = Mark 6:17-29
[gregory-the-great-pope-and-doctor]
date = 09-03
@@ -1163,6 +1245,9 @@ colour = white
name.en = Birth of the Blessed Virgin Mary
name.pl = Narodzenia Najświętszej Maryi Panny
name.la = In Nativitate B. Mariae Virginis
+reading.first = Micah 5:1-4a
+reading.psalm = Psalms 13:6ab,6c
+reading.gospel = Matthew 1:1-16,18-23
[peter-claver-priest]
date = 09-09
@@ -1196,6 +1281,10 @@ class = lord
colour = red
name.en = Triumph of the Holy Cross
name.la = IN EXALTATIONE SANCTAE CRUCIS
+reading.first = Numbers 21:4b-9
+reading.psalm = Psalms 78:1bc-2,34-35,36-37,38
+reading.second = Philippians 2:6-11
+reading.gospel = John 3:13-17
[our-lady-of-sorrows]
date = 09-15
@@ -1205,6 +1294,9 @@ colour = white
name.en = Our Lady of Sorrows
name.pl = Najświętszej Maryi Panny Bolesnej
name.la = B. Mariae Virginis Perdolentis
+reading.first = Hebrews 5:7-9
+reading.psalm = Psalms 31:2-3b,3cd-4,5-6,15-16,20
+reading.gospel = John 19:25-27
[saints-cornelius-pope-and-cyprian-bishop-martyrs]
date = 09-16
@@ -1247,6 +1339,9 @@ class = saint
colour = red
name.en = Saint Matthew the Evangelist, Apostle, Evangelist
name.la = S. Matthaei, apostoli et evangelistae
+reading.first = Ephesians 4:1-7,11-13
+reading.psalm = Psalms 19:2-3,4-5
+reading.gospel = Matthew 9:9-13
[pio-of-pietrelcina-padre-pio-priest]
date = 09-23
@@ -1298,6 +1393,9 @@ colour = white
name.en = Saints Michael, Gabriel and Raphael, Archangels
name.pl = świętych Archaniołów Michała, Gabriela i Rafała
name.la = Ss. Michaelis, Gabrielis et Raphaelis, archangelorum
+reading.first = Daniel 7:9-10,13-14
+reading.psalm = Psalms 138:1-2ab,2cde-3,4-5
+reading.gospel = John 1:47-51
[jerome-priest-and-doctor]
date = 09-30
@@ -1325,6 +1423,9 @@ colour = white
name.en = Guardian Angels
name.pl = świętych Aniołów Stróżów
name.la = Ss. Angelorum Custodum
+reading.first = Exodus 23:20-23
+reading.psalm = Psalms 91:1-2,3-4ab,4c-6,10-11
+reading.gospel = Matthew 18:1-5,10
[francis-of-assisi]
date = 10-04
@@ -1426,6 +1527,9 @@ colour = red
name.en = Saint Luke the Evangelist
name.pl = św. Łukasza, ewangelisty
name.la = S. Lucae, evangelistae
+reading.first = 2 Timothy 4:10-17b
+reading.psalm = Psalms 145:10-11,12-13,17-18
+reading.gospel = Luke 10:1-9
[paul-of-the-cross-priest]
date = 10-19
@@ -1475,6 +1579,9 @@ colour = red
name.en = Saint Simon and Saint Jude, apostles
name.pl = świętych Apostołów Szymona i Judy Tadeusza
name.la = Ss. Simonis et Iudae, apostolorum
+reading.first = Ephesians 2:19-22
+reading.psalm = Psalms 19:2-3,4-5
+reading.gospel = Luke 6:12-19
[all-saints]
date = 11-01
@@ -1484,6 +1591,10 @@ colour = white
name.en = All Saints
name.pl = Wszystkich Świętych
name.la = OMNIUM SANCTORUM
+reading.first = Revelation 7:2-4,9-14
+reading.psalm = Psalms 24:1bc-2,3-4ab,5-6
+reading.second = 1 John 3:1-3
+reading.gospel = Matthew 5:1-12a
[all-souls]
date = 11-02
@@ -1517,6 +1628,10 @@ class = lord
colour = white
name.en = Dedication of the Lateran basilica
name.la = IN DEDICATIONE BASILICAE LATERANENSIS
+reading.first = Ezekiel 47:1-2,8-9,12
+reading.psalm = Psalms 46:2-3,5-6,8-9
+reading.second = 1 Corinthians 3:9c-11,16-17
+reading.gospel = John 2:13-22
[leo-the-great-pope-and-doctor]
date = 11-10
@@ -1585,6 +1700,9 @@ class = saint
colour = white
name.en = Dedication of the basilicas of Saints Peter and Paul, Apostles
name.la = In Dedicatione basilicarum Ss. Petri et Pauli, apostolorum
+reading.first = The Acts 28:11-16,30-31
+reading.psalm = Psalms 98:1,2-3ab,3cd-4,5-6
+reading.gospel = Matthew 14:22-33
[presentation-of-the-blessed-virgin-mary]
date = 11-21
@@ -1644,6 +1762,9 @@ class = saint
colour = red
name.en = Saint Andrew the Apostle
name.la = S. Andreae, apostoli
+reading.first = Romans 10:9-18
+reading.psalm = Psalms 19:8,9,10,11
+reading.gospel = Matthew 4:18-22
[francis-xavier-priest]
date = 12-03
@@ -1686,6 +1807,10 @@ colour = white
name.en = Immaculate Conception of the Blessed Virgin Mary
name.pl = Niepokalanego Poczęcia Najświętszej Maryi Panny
name.la = IN CONCEPTIONE IMMACULATA BEATAE MARIAE VIRGINIS
+reading.first = Genesis 3:9-15,20
+reading.psalm = Psalms 98:1,2-3ab,3cd-4
+reading.second = Ephesians 1:3-6,11-12
+reading.gospel = Luke 1:26-38
[juan-diego]
date = 12-09
@@ -1752,6 +1877,9 @@ colour = red
name.en = Saint Stephen, the first martyr
name.pl = św. Szczepana, pierwszego męczennika
name.la = S. Stephani, protomartyris
+reading.first = The Acts 6:8-10;7:54-59
+reading.psalm = Psalms 31:3cd-4,6+8ab,16bc+17
+reading.gospel = Matthew 10:17-22
[john-the-apostle-and-evangelist]
date = 12-27
@@ -1761,6 +1889,9 @@ colour = white
name.en = Saint John the Apostle and evangelist
name.pl = św. Jana, apostoła i ewangelisty
name.la = S. Ioannis, apostoli et evangelistae
+reading.first = 1 John 1:1-4
+reading.psalm = Psalms 97:1-2,5-6,11-12
+reading.gospel = John 20:1a+2-8
[holy-innocents-martyrs]
date = 12-28
@@ -1769,6 +1900,9 @@ class = saint
colour = red
name.en = Holy Innocents, martyrs
name.la = Ss. Innocentium, martyrum
+reading.first = 1 John 1:5-2:2
+reading.psalm = Psalms 124:2-3,4-5,7b-8
+reading.gospel = Matthew 2:13-18
[thomas-becket-bishop-and-martyr]
date = 12-29