Commit Graph

75 Commits

Author SHA1 Message Date
pennae
09411102f6 nixos-render-docs: add option block separators
this will be necessary for manpages, which separate option declarations
not with external tags but by interspersing mandoc spacing instructions.
2023-02-08 15:23:34 +01:00
pennae
32136b1b01 nixos-render-docs: don't render empty descriptions at all 2023-02-08 15:23:34 +01:00
pennae
11daebd2d9 nixos-render-docs: add block and inline joiners
these work together with render and renderInline to produce an output
from either of the two. rendering manpages will need both: to join
blocks with newlines, and to run some postprocessing and the rendered inlines.
2023-02-08 15:23:34 +01:00
pennae
5a5255983b nixos-render-docs: calculate list end indices
that'll be useful to calculate the width of list item heads, which we'll
ned to render manpages.
2023-02-08 15:23:34 +01:00
pennae
edccae739a nixos-render-docs: add a test for running mypy
pulling mypy into the build closure is unfortunately not reasonable, the
closure for mypy is rather large and takes a long time to build. if we
have the type checks hooked into CI we'll get most of the benefit though.
2023-02-08 15:23:34 +01:00
pennae
9711de7b7e nixos-render-docs: improve error messages for multi-title manual chapters 2023-02-03 00:20:59 +01:00
pennae
8b8670db10 nixos-render-docs: add manual chapter rendering support
this is not yet able to produce manual-combined.xml, but the intention
is to add that support before too long. for now we'll concentrate on
getting the basics working: concatenating a list of chapters into a
manual-combined fragment, which will be rendered via docbook.
2023-01-27 20:07:34 +01:00
pennae
4e2e950ab1 nixos-render-docs: compact lists support
previously we did not detect whether lists were supposed to be compact
or not. this will make a difference for manual chapters, so let's stop
not doing that.
2023-01-27 20:07:34 +01:00
pennae
8e3b2a4eaa nixos-render-docs: add heading id support
as with inline spans we support only ids being set for heading, not
arbitrary attributes or classes.
2023-01-27 20:07:34 +01:00
pennae
82d5698e22 nixos-render-docs: add headings and ordered lists
headings are not supported in options docs (since it's unclear what that
would be in the final manual, and the docbook stylesheets already have
trouble rendering all docbook constructs correctly). ordered lists
should be supported, but obviously nothing uses them yet.
2023-01-27 20:07:34 +01:00
pennae
00a1b41c3b nixos-render-docs: add html comment plugins
options do not use comments, but a number of manual chapters do. since
we don't want to enable html just so we can then inspect the html and
figure out whether it's a comment we'll instead add a plugin that
detects comments natively.
2023-01-27 20:07:34 +01:00
pennae
6829c6c335 nixos-render-docs: add inline anchor plugin
supports the […]{#id} inline anchor syntax. other features of bracketed
spans are intentionally not supported.
2023-01-27 20:07:34 +01:00
pennae
41a5c3a93d nixos-render-docs: prepare for plugins
we will soon add plugins to this tool to support nixos markdown features
that aren't readily supported with markdown-it plugins. since we will
have to test these plugin we'll need access to the parser, and since
we'll also want to add functions that require postprocessing of a parsed
token stream we also add the necessary hooks now.
2023-01-27 20:07:34 +01:00
pennae
c2e638391e nixos-render-docs: use only one container plugin instance
with some fiddling and custom validation logic we can avoid needing
multiple instances of this plugin. originally this wasn't done because
it does need a type stack to emit correct docbook, but since we can
easily do that now we may as well.
2023-01-27 20:07:34 +01:00
pennae
7605068000 nixos-render-docs: add tip and caution admonitions 2023-01-27 20:07:34 +01:00
pennae
e8c5618b67 nixos-render-docs: add some better CLI infrastructure
using environment variables isn't great once multiple input or output
formats get involved (which will happen soon). now is a good time to set
a pattern for future converters.
2023-01-27 20:07:34 +01:00
pennae
e0596e0940 nixos-render-docs: generalize option converter
while we won't have other converters (with other output formats) for a
while yet it still seems like a good idea to generalize *now* so we have
a pattern to follow.
2023-01-27 20:07:34 +01:00
pennae
ccb586299d nixos-render-docs: move options conversion to options module 2023-01-27 20:07:34 +01:00
pennae
aa3fd2865b nixos-render-docs: move some options helpers to new module 2023-01-27 20:07:33 +01:00
pennae
c63a550e7b nixos-render-docs: don't use env for renderer state
since we keep the renderer around for a long time we don't need to stick
renderer state into env, we can use the renderer instance itself instead.
2023-01-27 20:07:33 +01:00
pennae
1016b727a8 nixos-render-docs: add Renderer base class 2023-01-27 20:07:33 +01:00
pennae
5e37d9f29e nixos-render-docs: improve type annotations in docbook 2023-01-27 20:07:33 +01:00
pennae
a4ec68a777 nixos-render-docs: move docbook renderer to docbook module 2023-01-27 20:07:33 +01:00
pennae
986e48ca22 nixos-render-docs: move escaping functions to new modules
these modules will be extended with more functionality. md will
ultimately contain MD-related code such as parsers and converter base
classes. docbook will contain renderers.
2023-01-27 20:07:33 +01:00
pennae
be6a25368f nixos-render-docs: init from optionsToDocbook.py
this new package shall eventually contain the rendering code necessary
to produce the entirety of the nixos (not nixpkgs) manual, in all of its
various output formats.
2023-01-27 20:07:33 +01:00