From 45619b3c4a4475696ff0f07912cd0aee0bd65a48 Mon Sep 17 00:00:00 2001 From: pennae Date: Fri, 10 Feb 2023 07:22:53 +0100 Subject: [PATCH] nixos-render-docs: extend md_make_code add the ability to set the info string for a newly created fenced code block, and a flag to always emit a fenced block. the commonmark converter will need this to faithfully recreate fenced and indented code blocks. --- .../tools/nix/nixos-render-docs/src/nixos_render_docs/md.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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 a8d9cf91d077..96cc8af69bce 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 @@ -27,10 +27,10 @@ _md_escape_table = { def md_escape(s: str) -> str: return s.translate(_md_escape_table) -def md_make_code(code: str) -> str: +def md_make_code(code: str, info: str = "", multiline: Optional[bool] = None) -> str: # for multi-line code blocks we only have to count ` runs at the beginning # of a line, but this is much easier. - multiline = '\n' in code + multiline = multiline or info != "" or '\n' in code longest, current = (0, 0) for c in code: current = current + 1 if c == '`' else 0 @@ -38,7 +38,7 @@ def md_make_code(code: str) -> str: # inline literals need a space to separate ticks from content, code blocks # need newlines. inline literals need one extra tick, code blocks need three. ticks, sep = ('`' * (longest + (3 if multiline else 1)), '\n' if multiline else ' ') - return f"{ticks}{sep}{code}{sep}{ticks}" + return f"{ticks}{info}{sep}{code}{sep}{ticks}" AttrBlockKind = Literal['admonition', 'example']