From 41a5c3a93db9be764934d23157c303aadc94f72e Mon Sep 17 00:00:00 2001 From: pennae Date: Sat, 21 Jan 2023 23:04:34 +0100 Subject: [PATCH] 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. --- .../nix/nixos-render-docs/src/nixos_render_docs/md.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/md.py b/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/md.py index e11165ba9007..4bb42c5a8f77 100644 --- a/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/md.py +++ b/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/md.py @@ -239,5 +239,14 @@ class Converter(ABC): self._md.use(myst_role_plugin) self._md.enable(["smartquotes", "replacements"]) + def _post_parse(self, tokens: list[Token]) -> list[Token]: + return tokens + + def _parse(self, src: str, env: Optional[MutableMapping[str, Any]] = None) -> list[Token]: + tokens = self._md.parse(src, env if env is not None else {}) + return self._post_parse(tokens) + def _render(self, src: str) -> str: - return self._md.render(src) # type: ignore[no-any-return] + env: dict[str, Any] = {} + tokens = self._parse(src, env) + return self._md.renderer.render(tokens, self._md.options, env) # type: ignore[no-any-return]