Top-level compile options threaded through every phase. Build with
Options::default() and override fields with the struct-update syntax —
future versions may add knobs.
Compile to SVG and collect the routing diagnostics in a single layout
pass. The CLI’s default path needs both (the SVG to emit, the diagnostics
to warn); routing through here runs the link router once instead of twice.
Lower a source file’s sugar to primitives + .lini-* classes and print canonical
.lini — what lini desugar shows: every typed instance becomes a |primitive|
wearing its .lini-* chain, defines and templates collapse into generated
.lini-* class defs, scene/link defaults fill the global block, and labels /
along: become explicit. Comments are dropped. The lowered form re-renders
identically and is a fixed point of desugar.
Extract (name_without_lini_prefix, raw_value_string) pairs from CSS-like
text. Names without the --lini- prefix are skipped — those are not
Lini’s to own.
Lex, parse, resolve, lay out, route, then validate the routing against the
contract in ROUTING.md. Returns the violations found (empty = clean). Parse
and resolve errors surface as Err.