| Commit message (Collapse) | Author | Age | Files | Lines |
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Lookup now detects a verse-tail range that crosses a chapter boundary
("M-P:Q", e.g. "30-28:7" in "Sirach 27:30-28:7") and fetches chapter N
from verse M to its end, any whole chapters between, and chapter P from
verse 1 through Q, instead of misreading the tail as a plain from-to
range and coming up empty. SplitRef expands the same pattern inside a
comma list so a trailing group after the jump (e.g. the ",8-10" in
"Malachi 1:14-2:2,8-10") resolves against the new current chapter.
FormatRef renders the range intact as "<sigla> N:M-P:Q" instead of
splitting off a fake new-chapter marker from the embedded "P:" and
mangling the display (previously "Sir 27:7").
No sentinel value is ever stored in a ref string; it only bounds an
internal verse-filter loop in Lookup.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Task 2. scripts/genlect-of.go harvests niedziela over the PAST cycle-equivalent
years 2023(A)/2024(B)/2025(C) -- niedziela only publishes ~6 weeks ahead, so the
future 2025-2027 span was unfetchable; the 3-year cycle repeats, so a liturgical
position's cycle-A readings are identical whether they fall in 2023 or 2026.
Produces internal/caldata/of-lectionary.ini: 254 entries (A=86, B=87, C=81),
keyed <slug>-<cycle>, citations English-canonical via ToEnglishRef.
Also: books.ini [en] Matthew gains "Mat" (ToEnglishRef maps Polish Mt->Mat; now
resolves and displays as Matt). of_test.go assertion relaxed to accept either
spelling.
KNOWN GAP: 8 cross-chapter range citations (e.g. Sirach 27:30-28:7, John
18:1-19:42) don't yet resolve -- the bible ref parser handles semicolon groups
but not a dash-range spanning a chapter boundary. Fix next.
|
| | |
|
| |
|
|
|
|
|
| |
3 TDD tasks: OF resolver + embedded table (seed), niedziela generator
(2025-2027, All:true harvest), render verification + coverage sweep. Keyed by
<slug>-<cycle>. Verified caldata.Universal(), readings.Options.All (gospel-only
default), and the OF slugs against current code.
|
| |
|
|
|
|
|
|
|
| |
Offline OF Sunday/solemnity lectionary keyed by <computed-slug>-<SundayCycle>,
generated once from niedziela over 2025-2027 (covers A/B/C), citations
normalized English-canonical via ToEnglishRef, rendered from public-domain
corpora (Polish->Latin fallback, EF pattern). Extends caldata.Readings with an
OF branch; flows into -L + the API. Weekdays/sanctoral deferred. Verified
SundayCycle is populated on non-Sunday solemnities.
|
| | |
|
| |
|
|
| |
validated)
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
| |
5 TDD tasks: calfeed JSON renderer, RFC-5545 iCal renderer w/ injection-safe
escaping (security test first), shared day builder + reusable reading resolver,
CLI --format json|ical + range flags, web endpoints (capped/nosniff/validated).
Security controls each mapped to a test. Code grounded in real calendar types
+ Go 1.22 web mux.
|
| |
|
|
|
|
|
|
|
| |
Two surfaces, one engine: CLI --format json|ical (offline/pipeable) + thin
lectio-web /api/calendar.json + /calendar.ics endpoints. Pure internal/calfeed
renderer. Identity + reading citations (no full text). Security section:
range-cap DoS control (1830d web), RFC-5545 iCal injection escaping (custom
calendar names are untrusted), strict input validation, nosniff content types,
no file/layer injection over HTTP, GET-only.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Task 3 of national-bibles. Adds reading_lang (any language code) and
reading_version (explicit corpus code) config fields, setField cases,
renderConfigINI lines + self-documenting header, and Config.ReadingCorpus():
reading_version > reading_lang match > ui_language match > "" (Latin fallback
applied by the caller).
Also adds an `autoselect` corpus-metadata flag (default true), surfaced during
this task: the built-in wuj declares lang=pl, so lang-auto would have
re-selected the incomplete Wujek for Polish users and defeated the wuj-drop.
wuj.ini now sets autoselect=false, so it is reachable only via an explicit
reading_version or --ref; the resolver's language auto-match skips
non-autoselectable corpora. A corrected Wujek drop-in (autoselect defaults
true) auto-serves Polish with zero config.
|
| | |
|
| | |
|
| |
|
|
|
|
|
| |
6 TDD tasks: sidecars+meta parser, user-dir discovery+override registry,
reading_lang/reading_version config+resolver, --corpus-check validator,
wire resolver into rendering + surface user corpora, scripts+Makefile.
Code verified against internal/ini ([]Section) and configPath() helper.
|
| |
|
|
|
|
|
| |
psalm_system becomes stored+validated metadata only; per-corpus psalm
numbering application is deferred to the future psalm-readings work (offline
lectionary has no psalm parts yet, so wiring now would be dead code). Testing
updated for reading_lang + the deferred psalter.
|
| |
|
|
|
|
| |
reading_lang (any language code) drives corpus auto-selection; empty follows
ui_language. Resolver: reading_version > reading_lang match > ui_language match
> Latin vul. traditional_lang dropped from selection entirely (scraper-only).
|
| |
|
|
|
|
|
|
|
| |
A corpus = <code>.tsv (6-col verse text) + <code>.ini (metadata) pair,
serving both compile-in (glob go:embed + Makefile validate/embed) and
runtime drop-in (~/.config/lectio/corpora/, overrides built-ins). Offline
reading selection becomes config-driven (reading_version > lang-auto > Latin
fallback); traditional_lang stays deprecated/scraper-only. Adds
lectio --corpus-check validator with a coverage report vs the Latin vul.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The Wujek (wuj) corpus is missing the deuterocanonical Daniel 3:24-90 (Song
of the Three), Daniel 13-14, and Esther 10:4-16:24, plus ~400 verses its
builder (parse_bwujek.py) dropped or mis-numbered (e.g. Matthew 5:13/39 are
in the source HTML but absent from wuj.tsv). Rendering computed readings from
it silently produced gaps.
vernacularVersion() now renders Polish from the complete Latin Vulgate (vul)
instead of wuj; English stays on Douay-Rheims (complete after the deuterocanon
backfill). wuj remains embedded for explicit `--ref -b wuj` and version
comparison -- it just isn't auto-selected for computed reading text. A properly
formatted Polish Bible can later be dropped in as a user corpus (the
national-bibles feature) to restore native Polish rendering.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| | |
|
| |
|
|
|
|
| |
dayReadings() falls back, for an EF weekday with no proper Mass, to the
preceding Sunday's temporal lectionary (the 1962 green-season rule). Lenten/
Advent proper ferias show the Sunday's readings pending their own data.
|
| | |
|
| |
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
| |
normalizeSigla treats ';' as a group separator so SplitRef resolves each
chapter; FormatRef renders multi-chapter refs per chapter in the dialect's
sigla. Restored the full Assumption (Judith 13:22-25; 15:10) and St Lucy
(2 Cor 10:17-18; 11:1-2) epistles.
|
| | |
|
| |
|
|
|
|
|
|
|
|
| |
config-scoped citation display
books.ini with [en]/[pl]/[la]; parseBooks reads INI (bible drops go-toml).
Latin dialect resolves EF citations (Eccli->Sirach, Apoc->Revelation, Luc...);
sigla_style gains 'latin'. Reading citations now DISPLAY in the configured
sigla (FormatRef(SiglaLang)), not raw English. One-shot books.toml->books.ini
user migration (go-toml now config-only). Web settings editor -> books.ini.
|
| |
|
|
|
|
|
| |
Added 1962 Epistle+Gospel citations (from missalemeum) to the 15 EF feasts;
--liturgy now resolves + renders the reading text via the corpora (drb/wuj),
incl. deuterocanon (Assumption's Judith epistle). Cross-chapter citations use
their primary range pending multi-chapter parser support.
|
| | |
|
| |
|
|
|
|
|
|
| |
Added Tobit, Judith, Wisdom, Sirach, Baruch to vul (5) and those + 1-2
Maccabees to drb (7), from get.bible's public-domain Clementine Vulgate /
Douay-Rheims (Clementine versification = the EF citation basis). EF and OF
deuterocanonical citations (e.g. the Assumption's Judith epistle) now resolve
against the corpora. Flipped the gap-documenting test to assert resolution.
|
| | |
|
| |
|
|
|
|
| |
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).
|
| |
|
|
|
|
|
|
| |
computes EF
caldata.Tridentine()/Base(form); Stack(form,dir,use); runLiturgy drops the EF
guard and uses the form's base; rankLabel shows I-IV class; display omits OF
cycles + strips ef- slug prefix for EF.
|
| | |
|
| |
|
|
| |
temporal-before-sanctoral)
|
| |
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
| |
oracle 0 mismatches)
Adds EF rank constants (class-1..4, commemoration); ofRankOrder() for the two
ordered comparisons; buildCelebration defaults missing rank to ferial.
|
| | |
|
| |
|
|
|
|
|
|
| |
Form-aware single engine (sel.Form 'old' -> EF): shared Computus/merge/INI/
result + custom layers; new temporalEF (1962 seasons incl. Time after
Pentecost, Septuagesima, octaves), precedenceEF (1960 rubrics, I-IV class),
embedded 1962 sanctoral. Rank int enum -> unified string token. Validated vs
the missalemeum per-date API. EF day-identity now; propers later.
|
| | |
|
| | |
|