summaryrefslogtreecommitdiff
path: root/test/test_colitur.ml
diff options
context:
space:
mode:
authorLukasz Kasprzak <lukas@labunix.xyz>2026-08-19 08:41:23 +0200
committerLukasz Kasprzak <lukas@labunix.xyz>2026-08-19 08:41:23 +0200
commit063d4058346f7dc03eb0aa5ba394b9a872d3f1e3 (patch)
tree93d1ff06c91affc6586c64dc0326460b675f9e9b /test/test_colitur.ml
parent5828571fa31a0480838d1ede210002ab50768c64 (diff)
downloadcolitur-063d4058346f7dc03eb0aa5ba394b9a872d3f1e3.tar.gz
colitur-063d4058346f7dc03eb0aa5ba394b9a872d3f1e3.zip
feat(render): CSV and JSON emitters, and the published contract
Both consume the VIEW, not the kernel, so every emitter and every template describe exactly the same fields -- there is one vocabulary, not five. CSV is RFC 4180: a field with a comma is quoted. That is live on real data, not hypothetical -- 'St. Joseph, Spouse of the Bl. Virgin Mary' would otherwise split into two columns. JSON is hand-rolled because the dependency list is frozen and escaping is the only subtlety. Control characters below 0x20 are \u-escaped per RFC 8259 section 7. There are no numbers in the view, deliberately: a consumer never has to guess whether week is 2 or "2". schema/day-v1.json pins the shape. Once a phone subscribes or a site fetches this, it is a promise to strangers -- adding a field is minor, renaming one means /v2/.
Diffstat (limited to 'test/test_colitur.ml')
-rw-r--r--test/test_colitur.ml3
1 files changed, 2 insertions, 1 deletions
diff --git a/test/test_colitur.ml b/test/test_colitur.ml
index dadc77d..b61eed6 100644
--- a/test/test_colitur.ml
+++ b/test/test_colitur.ml
@@ -10,4 +10,5 @@ let () =
Test_escape.suite;
Test_template.suite;
Test_template.render_suite;
- Test_view.suite ]
+ Test_view.suite;
+ Test_emit.suite ]