Read markdown as typed data
Each example builds on the one before it — read the group in order, or jump to the one you need. Every shipped artifact is regression-checked against the real CLI and library output.
- One contract, two doors — The contract that validates a document also types it:
validate()returns findings as data,read()returns the typed model or throws. - Tables as typed rows — A
tableleaf with cell schemas reads back as an iterable of typed rows — no cell parsing in the consumer. - Anchors make blocks addressable — A line-terminal
^block-idnames a block; a contract can require it, and a consumer can resolve it to the block’s typed view. - Navigate without a contract —
parse()alone projects a document into a positioned section tree — navigation helpers and verbatim table cells, no contract required.
Or browse all examples, or open the Typed model reference for the underlying spec.