diff options
| author | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-08-12 00:05:57 +0200 |
|---|---|---|
| committer | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-08-12 00:05:57 +0200 |
| commit | 4624441d0bc9c1f28dea54606ab7999041d4b323 (patch) | |
| tree | af9b9308c70fb5df6888990e7780e6e951d76644 /test/dune | |
| parent | 21dab521d6bfe8e4e7d04f761c11754059339ba2 (diff) | |
| download | colitur-4624441d0bc9c1f28dea54606ab7999041d4b323.tar.gz colitur-4624441d0bc9c1f28dea54606ab7999041d4b323.zip | |
data(ef): bootstrap the 1962 sanctoral from lectio
Convert lectio's tridentine-calendar.ini (322 entries) into
data/ef/sanctoral.sexp via a validating OCaml converter, tools/
bootstrap_sanctoral.ml, rather than a hand-written script: every field is
built through Slug.of_string, Colour.of_string and Vocab_ef.rank_of_string,
so the emitted sexp is valid by construction.
Two conversion decisions, both documented rather than buried:
- subject defaults to Subject.Saint, overriding Celebration.make's kernel
default of Subject.Temporal, for the 316 entries with no explicit class;
- rank = commemoration maps to status = Commemoration_only with an inferred
Class3 (not a citation -- it is what the 1960 reform reduced most simple
feasts from), recorded as an open item in the rules register for the
oracle to adjudicate.
Every celebration is tagged layer = Precedence_ef.universal_layer, the
provenance id RG 91's band classifier reads to tell the universal calendar
from proper/indult data.
The generated file carries a provenance header: source path, its SHA-256,
and the UTC conversion date, so re-bootstrapping against a newer lectio is
reproducible and diffable. Output is byte-identical across runs.
test/test_sanctoral_ef.ml loads the file through Layer.load and checks the
counts independently derived from the source INI (322 entries, 114
Commemoration_only, 12 Class1, no Subject.Temporal, every date resolves in
a leap year), plus two named spot-checks against the INI's own text -- one
entry with an explicit class field, one commemoration -- so a passing count
cannot hide the wrong 322 entries having been converted.
Diffstat (limited to 'test/dune')
| -rw-r--r-- | test/dune | 1 |
1 files changed, 1 insertions, 0 deletions
@@ -1,6 +1,7 @@ (test (name test_colitur) (libraries colitur_kernel rite_ef alcotest qcheck qcheck-alcotest sexplib) + (deps ../data/ef/sanctoral.sexp) (preprocess (pps ppx_sexp_conv))) |
