aboutsummaryrefslogtreecommitdiff
path: root/internal/calendar
Commit message (Collapse)AuthorAgeFilesLines
* feat(ef): complete offline EF readings — proper ferias, deuterocanon, ↵Lukasz Kasprzak2026-07-271-1/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Latin fallback Finish the Extraordinary Form (1962) offline Mass readings so every day of the year resolves in both English and Polish. Temporal engine (temporal_ef.go): - Unique ferial slugs "ef-<season>-<week>-<weekday>" so penitential-season weekdays (Lent, Advent, Passiontide, Easter octave) can key their own proper Masses; green-season ferias have no entry and fall back to the preceding Sunday (the 1962 rule). - Special "ef-lent-after-ashes-<weekday>" case for the days between Ash Wednesday and Lent I, which have their own propers. Lectionary (tridentine-lectionary.ini, 55 -> 143 entries) via genlect.go: - Generator now fetches proper-season weekdays and stores a feria only when its Mass differs from the preceding Sunday's. - cleanCite() normalises two missalemeum data glitches: a stray comma between book and chapter ("4 Kings, 5:1" -> "4 Kings 5:1") and a period-as-separator ("John 20. 19-31" -> "John 20:19-31"), both guarded so legitimate multi-chapter citations are untouched. Citations & corpora: - books.ini: Douay abbreviations in the [en] dialect (Ex, Ezech, Jonas, and 3/4 Kings -> canonical 1/2 Kings), so the EF Lenten epistles resolve while the display keeps modern sigla. - drb.tsv: +205 rows backfilling the deuterocanonical Daniel 13-14 (Susanna, Bel) and Esther 11-16 (Greek additions) from get.bible douayrheims, which the base corpus omitted; scripts/gen-deutero.py documents the fetch. Rendering (liturgy.go): - readingLine() falls back to the Latin Vulgate (complete) when the vernacular corpus lacks a passage, with a clear note. Covers the Polish Wujek deuterocanon gap (no clean public-domain source exists) and any future vernacular gap; faithful to the EF as a Latin rite. Result: 730/730 days resolve for both EN (native) and PL (native + Latin fallback for 3 deuterocanon days). Version 0.32.0 -> 0.33.0.
* feat: EF temporal Sunday lectionary (offline Sunday Mass readings)Lukasz Kasprzak2026-07-271-2/+10
| | | | | | | | | Unique temporal-day slugs (season-sunday-week); scripts/genlect.go generates tridentine-lectionary.ini from missalemeum keyed by slug (55 entries: the Sundays of the whole EF year). caldata.TemporalReadings(form,slug) lookup; --liturgy resolves proper-of-feast else the temporal cycle and renders the text. bible.ParseRef strips abbreviation dots (1 Cor. -> 1 Cor). 52/53 Sundays fully resolve offline.
* test(calendar): EF oracle vs missalemeum 2025-2026 (0 season mismatches)Lukasz Kasprzak2026-07-272-0/+4498
| | | | | | temporalEF validated against Divinum Officium data. Season-mapping handles the Whit octave (Paschaltide), the Christmas vigil (Advent), and the resumed Epiphany Sundays (within Time after Pentecost).
* feat(calendar): Compute branches on Form (computeEF via temporalEF/precedenceEF)Lukasz Kasprzak2026-07-272-3/+65
|
* feat(calendar): precedenceEF (1960 occurrence by class + ↵Lukasz Kasprzak2026-07-272-0/+78
| | | | temporal-before-sanctoral)
* feat(calendar): EF (1962) temporal cycle temporalEF + EF seasonsLukasz Kasprzak2026-07-273-9/+192
| | | | | | 8 EF seasons by date boundary (Septuagesima, Passiontide, Time after Epiphany/ Pentecost + shared); major feasts of the Lord; Christ the King = last Sun of October. ParseRank accepts EF ranks.
* refactor(calendar): Rank int enum -> unified string token (OF unchanged, ↵Lukasz Kasprzak2026-07-272-8/+39
| | | | | | | oracle 0 mismatches) Adds EF rank constants (class-1..4, commemoration); ofRankOrder() for the two ordered comparisons; buildCelebration defaults missing rank to ferial.
* feat(cli): --cal-new scaffold + --cal-check lint for custom calendar layersLukasz Kasprzak2026-07-271-1/+8
| | | | Also: reject out-of-range MM-DD in resolveDate (strict validation for user data).
* fix(ini,calendar): full-line-only comments (preserve ';' in citations); drop ↵Lukasz Kasprzak2026-07-271-0/+3
| | | | superseded ferial from Others
* style: gofmt temporal.goLukasz Kasprzak2026-07-271-1/+1
|
* test(calendar): regression oracle vs calapi 2020-2040 (0 season mismatches)Lukasz Kasprzak2026-07-275-5/+7775
| | | | | | Caught + fixed an Advent-start bug: anchor on Christmas Eve, not Dec 25, so years where Dec 25 is a Sunday don't lose the first week of Advent. Rank-class diffs (324) are informational — the initial sanctoral dataset is partial.
* fix(calendar): Christmas solemnity in temporal; feasts of the Lord band 5; ↵Lukasz Kasprzak2026-07-273-4/+40
| | | | Sunday band before solemnity-rank fallback
* feat(calendar): Compute — build celebrations, apply precedence + transfer, ↵Lukasz Kasprzak2026-07-273-2/+216
| | | | | | cycles Also: deterministic pick tiebreak by slug.
* feat(calendar): Universal Norms precedence bands + pickLukasz Kasprzak2026-07-272-0/+107
|
* feat(calendar): ordered-stack layer merge (override/suppress/add)Lukasz Kasprzak2026-07-272-0/+86
|
* feat(calendar): temporal cycle (seasons, Sundays, movable solemnities)Lukasz Kasprzak2026-07-272-0/+294
|
* feat(calendar): DateSpec resolution (fixed + easter/christmas offsets + ↵Lukasz Kasprzak2026-07-272-0/+76
| | | | sunday-after)
* feat(calendar): core types + Gregorian ComputusLukasz Kasprzak2026-07-274-0/+204