Sogne is a Haskell framework for building generators that turn Doxygen XML output into other formats, such as Typst or custom markup. It is meant for developers who want to write their own documentation generator on top of a shared intermediate representation, not for end users looking for a ready-made documentation tool.
- GHC 9.10 or later
- cabal-install 3.16 or later
- Library dependencies (resolved automatically by cabal):
text,containers,xml-conduit,directory,filepath,hspec
Sogne is a Cabal monorepo. All packages are listed in cabal.project at the
repository root.
cabal build all
cabal test all
sogne-core: format-agnostic intermediate representation (IR) for the entities Doxygen documents (compounds, members, parameters, descriptions, visibility, cross-references). No parsing or rendering logic.sogne-doxygen: parses Doxygen's generated XML (index.xmland the per-compound XML files) intosogne-coreIR values.sogne-render: the generator abstraction. Defines theGeneratortypeclass a third-party generator implements, plus IR traversal and text/file-writing helpers.sogne-markdown: a reference generator built onsogne-coreandsogne-renderthat emits plain Markdown. Included to demonstrate how to use the framework, not as the main deliverable.
The sogne-markdown executable takes a Doxygen XML output directory and an
output directory:
cabal run sogne-markdown -- <doxygen-xml-dir> <output-dir>
Sogne reads XML produced by Doxygen.
See CONTRIBUTING.md for how to contribute.
Sogne is licensed under the Mozilla Public License 2.0. See LICENSE for the full text.