diff options
| author | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-08-20 19:05:13 +0200 |
|---|---|---|
| committer | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-08-20 19:05:13 +0200 |
| commit | 7dbd16cdf5880c0006dffacd09214ee607050b64 (patch) | |
| tree | 01e1ee37a2be97a0b06fad70de975d8007beb702 /lib/render/view.ml | |
| parent | 1aeca948c2a2a82bffaaec65077140aa05f7b3f4 (diff) | |
| parent | 1da70dc7ac03fe33fb92b172a0e26932764170d6 (diff) | |
| download | colitur-7dbd16cdf5880c0006dffacd09214ee607050b64.tar.gz colitur-7dbd16cdf5880c0006dffacd09214ee607050b64.zip | |
Merge branch 'citations-and-sigla'
Citations are parsed into structure and re-rendered, so book names,
abbreviations, punctuation style and numbering tradition become files a
user edits rather than strings frozen in the data.
New lib/citation (Book, Parse, Render, Sigla); [bible] and [sigla]
sections in language files; lang/traditions.ini for numbering; three
config keys and CLI flags. --raw emits every citation byte-for-byte as
stored, bypassing the whole pipeline, so output stays diffable against
lectio and the raw view does not depend on the parser being correct.
Diffstat (limited to 'lib/render/view.ml')
| -rw-r--r-- | lib/render/view.ml | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/lib/render/view.ml b/lib/render/view.ml index 9f489aa..0691ffb 100644 --- a/lib/render/view.ml +++ b/lib/render/view.ml @@ -1,6 +1,7 @@ module K = Colitur_kernel module T = Template module Lang = Colitur_naming.Lang +module Sigla = Colitur_citation.Sigla let str s = T.Str s let bool b = T.Bool b @@ -43,11 +44,14 @@ let dow_int = function | K.Date.Sun -> 0 | K.Date.Mon -> 1 | K.Date.Tue -> 2 | K.Date.Wed -> 3 | K.Date.Thu -> 4 | K.Date.Fri -> 5 | K.Date.Sat -> 6 -let citation_ref cits part = +(* [sigla] renders the stored reference in the caller's chosen style + (Task 9) -- under [Sigla.verbatim] this is the identity, so [--raw]'s + own byte-exact contract is unaffected. *) +let citation_ref ~sigla cits part = match List.find_opt (fun (c : K.Citation.t) -> c.K.Citation.part = part) cits with - | Some c -> c.K.Citation.reference + | Some c -> Sigla.format sigla c.K.Citation.reference | None -> "" (* A commemoration's own name resolves through the SAME [lang.celebration] @@ -85,7 +89,7 @@ let padding_cell dow = ("transferred_in", T.List []); ("transferred_out", T.List []); ("first", str ""); ("gospel", str ""); ("last", bool false) ] -let day_value ~lang ~vocab (d : ('s, 'r) K.Liturgical_day.t) = +let day_value ~lang ~sigla ~vocab (d : ('s, 'r) K.Liturgical_day.t) = let date = d.K.Liturgical_day.date in let tmp = d.K.Liturgical_day.temporal in let cel = d.K.Liturgical_day.observed in @@ -135,8 +139,8 @@ let day_value ~lang ~vocab (d : ('s, 'r) K.Liturgical_day.t) = [ ("slug", str (K.Slug.to_string c.K.Celebration.slug)); ("to", str (K.Date.to_iso8601 dest)) ]) d.K.Liturgical_day.transferred_out) ); - ("first", str (citation_ref d.K.Liturgical_day.citations K.Citation.First)); - ("gospel", str (citation_ref d.K.Liturgical_day.citations K.Citation.Gospel)); + ("first", str (citation_ref ~sigla d.K.Liturgical_day.citations K.Citation.First)); + ("gospel", str (citation_ref ~sigla d.K.Liturgical_day.citations K.Citation.Gospel)); (* overwritten per grid row by [set_last]; false in the flat [days] list *) ("last", bool false) ] @@ -245,8 +249,8 @@ let weekday_headings lang = T.List (List.init 7 (fun i -> T.Obj [ ("name", str (Lang.weekday lang i)); ("last", bool (i = 6)) ])) -let of_days ~lang ~vocab ~rite ~year days = - let dvs = List.map (fun d -> (d, day_value ~lang ~vocab d)) days in +let of_days ~lang ~sigla ~vocab ~rite ~year days = + let dvs = List.map (fun d -> (d, day_value ~lang ~sigla ~vocab d)) days in let months = List.init 12 (fun i -> let m = i + 1 in |
