$ account jgm
Pandoc is a universal document converter written in Haskell. It reads input in dozens of formats (Markdown, LaTeX, HTML, docx, EPUB, Org, RST, MediaWiki, etc.) into a common abstract syntax tree (AST), then writes to a wide range of output formats. The system is modular: readers parse source formats, writers produce target formats, and a template system controls output structure. It includes an integrated citation processor (citeproc), a Lua scripting engine for custom readers/writers/filters, and a server mode (HTTP API). The codebase is a monolith library with separate CLI, server, and Lua engine packages, plus a WebAssembly build for browser use. It is heavily tested with golden tests and property tests. The architecture demonstrates strong separation of concerns, with reusable parsing utilities, a well-defined AST, and a flexible extension mechanism via Lua. While the codebase is large and complex, it is actively maintained and exhibits high craftsmanship in its modular design and handling of diverse formats.