From 5828571fa31a0480838d1ede210002ab50768c64 Mon Sep 17 00:00:00 2001 From: Lukasz Kasprzak Date: Wed, 19 Aug 2026 08:27:22 +0200 Subject: feat(render): the view model Shapes a civil year of resolved days into the value a template renders against. This layer is why the engine can stay logic-less: a month grid needs leading blank cells, week bucketing and an in-month test, and a logic-less template can compute none of it. Both weeks and days are offered at every level -- the booklet walks days, the grid walks weeks -- so the two artefacts cannot drift. Colours are six booleans, not hex: hex bakes a presentation policy into the engine, and LaTeX, groff and HTML each want a different colour expression. Asserted: exactly one of the six is true on every day of a whole year, so a template keying off them can never get none or two. Padding cells carry every field a real day carries, empty, so a template never hits a missing key mid-grid. --- test/test_colitur.ml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'test/test_colitur.ml') diff --git a/test/test_colitur.ml b/test/test_colitur.ml index f12dab5..dadc77d 100644 --- a/test/test_colitur.ml +++ b/test/test_colitur.ml @@ -9,4 +9,5 @@ let () = ("lectionary-ef", Test_lectionary_ef.suite); Test_escape.suite; Test_template.suite; - Test_template.render_suite ] + Test_template.render_suite; + Test_view.suite ] -- cgit v1.3