aboutsummaryrefslogtreecommitdiff
path: root/cmd/clectio-gen/main.go
Commit message (Collapse)AuthorAgeFilesLines
* fix(clectio-gen): write the verse keys gzipped as well as plainLukasz Kasprzak2026-08-181-1/+25
| | | | | | | | | | | | | | | | clectio's Makefile unpacks gen/verses_<form>.keys from the COMMITTED .gz, and its clean target deletes the plain file. clectio-gen wrote only the plain one, so regenerating the tables without separately re-gzipping the keys left gen/liturgy_<form>.h indexing verses the packed text did not hold. clectio then dereferenced a NULL verse pointer. That shipped: 1246 of the 10957 EF dates in the 2025-2054 range segfaulted, 11% of the calendar. OF was unaffected -- its tables had not been regenerated since the keys were last packed. The two artefacts are generated together, so they are now written together and cannot drift. OF's keys are byte-different after this (Go's gzip, not gzip(1)) but content-identical, verified.
* feat(clectio-gen): apply a calendar layer/sanctorale when generatingLukasz Kasprzak2026-07-291-11/+40
| | | | | | | | | | | | | | | | | | | Add opt-in flags so clectio's tables can be regenerated from a customized calendar instead of only the embedded universal one: clectio-gen -caldir DIR -use a,b [-sanctorale DIR] <new|old> y0 y1 out/ - -caldir + -use stack calendar layers (rank, colour, name, reading.*) over the calendar; -sanctorale DIR applies a full of.ini/ef.ini replacement. - The BOOK table stays hermetic (LECTIO_CONFIG still points nowhere), so the generator can't read a stale user books.ini -- calendar customization and the book aliases are kept separate concerns. - config.SetCalendarsDir lets CalendarsDir be pointed at an explicit layer dir without a full config tree (and without an unrelated books.ini there). Verified end to end: a layer adding a feast with a proper gospel regenerates into liturgy_of.h + verses_of.keys, and the rebuilt clectio shows it. Default (no flags) output is byte-identical to before. make test green.
* bible: add Douay book aliases Osee->Hosea, 2 Esdras->Nehemiah; clectio-gen ↵Lukasz Kasprzak2026-07-281-0/+8
| | | | | | | | | | | | | | | | hermetic Two EF Ember-day lessons ("Osee 14:2-10", "2 Esd. 8:1-10") rendered as "(not in vul)" because the lookup path (ResolveBook, English dialect) lacked these Douay-Rheims book forms -- they existed only in the Latin dialect, which ResolveBook does not consult. Add them to the [en] dialect so both lectio and clectio resolve them (the text is present in vul: Hosea 14, Nehemiah 8). Also make clectio-gen hermetic: it now points LECTIO_CONFIG at a nonexistent path so it always uses the EMBEDDED calendar/lectionary/book table, never the running user's ~/.config/lectio (whose stale books.ini was silently dropping ~30 EF readings from the generated data). It warns on any reading it cannot resolve. Full range 2025-2054 now generates with 0 dropped readings.
* cmd/clectio-gen: generator for the tiny C build; bible.LookupKeyedLukasz Kasprzak2026-07-281-0/+335
clectio (~/git/projects/clectio) is a tiny suckless-C daily-readings build that compiles the calendar, citations and scripture text in. clectio-gen is its data compiler: it reuses this engine to compute, for a year range, each day's name/colour/readings and emits corpus-independent C tables plus the verse KEYS, so the C side is a dumb lookup and the hard liturgical logic stays here (oracle-validated). - bible.LookupKeyed(version, ref) returns each resolved verse's (book, chapter, verse) key, mirroring Lookup's splitting/versification. clectio-gen uses it to record the exact pericopes a lectionary cites. - Verified: clectio's output is byte-identical to lectio's readings, day names 157/157 over a 3-year sample.