diff options
| author | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-08-20 09:53:33 +0200 |
|---|---|---|
| committer | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-08-20 09:53:49 +0200 |
| commit | 66543815ae6cbf6e576a889c9291678744243953 (patch) | |
| tree | c3bc567ee53163abc3cf24bd7cba8038ee14e521 /data | |
| parent | 99dbddb2106f8a3ca31c7e0c43b7dc1a81652786 (diff) | |
| download | colitur-66543815ae6cbf6e576a889c9291678744243953.tar.gz colitur-66543815ae6cbf6e576a889c9291678744243953.zip | |
feat(render): Typst as a seventh escaping flavour
Adds Escape.Typst: type, all, to_string ("typst"), of_string,
of_extension (.typ), and a per-character expand function, structured
identically to the existing latex escaper (one pass, no re-scan, so
double-escaping stays impossible by construction).
The metacharacter set was verified against the installed typst 0.14.2
binary, not assumed: a probe document escaping each of #, *, _, $, @,
<, >, `, \, ~ and - was compiled and pdftotext'd back to confirm the
literal character survives, and each was separately confirmed to do
something else when left bare (# opens code mode, */_ toggle
strong/emph, $ opens math, @ opens a reference -- a bare unresolved
@word is a hard compile error, not merely mangled output -- </> can
close around a bare word into label syntax that swallows it whole, `
opens raw, ~ is a non-breaking space, and a run of two or three '-'
becomes an en/em dash). All ten are backslash-escapable; none needed a
non-backslash workaround. '-' is escaped unconditionally rather than
only inside a detected run, since this escaper has no lookahead -- a
probe confirmed escaping every hyphen independently still typesets as
literal hyphens for a run of any length, so the single per-character
rule is sufficient.
test_escape.ml's new Typst cases were written first and shown to fail
against a stubbed identity apply before the real escaper landed, per
this project's own regression-test discipline. Comments in both files
mark which new tests are genuine regression tests (the per-character
escaping, including a real shipped citation and a synthetic
markdown-habit overlay name) versus characterisation (to_string/
of_string/of_extension are flat table lookups with no logic to have
been wrong).
Diffstat (limited to 'data')
0 files changed, 0 insertions, 0 deletions
