about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--nixos/lib/make-options-doc/optionsToDocbook.py20
1 files changed, 18 insertions, 2 deletions
diff --git a/nixos/lib/make-options-doc/optionsToDocbook.py b/nixos/lib/make-options-doc/optionsToDocbook.py
index 4fedf9edbe192..f9b7dd7f2c496 100644
--- a/nixos/lib/make-options-doc/optionsToDocbook.py
+++ b/nixos/lib/make-options-doc/optionsToDocbook.py
@@ -263,6 +263,10 @@ def convertMD(options: Dict[str, Any]) -> str:
             convertCode(name, option, 'example')
             convertCode(name, option, 'default')
 
+            if typ := option.get('type'):
+                ro = " *(read only)*" if option.get('readOnly', False) else ""
+                option['type'] = md.render(f'*Type:* {md_escape(typ)}{ro}')
+
             if 'relatedPackages' in option:
                 option['relatedPackages'] = md.render(option['relatedPackages'])
         except Exception as e:
@@ -281,6 +285,19 @@ id_translate_table = {
     ord('"'): ord('_'),
 }
 
+md_escape_table = {
+    ord('*'): '\\*',
+    ord('<'): '\\<',
+    ord('['): '\\[',
+    ord('`'): '\\`',
+    ord('.'): '\\.',
+    ord('#'): '\\#',
+    ord('&'): '\\&',
+    ord('\\'): '\\\\',
+}
+def md_escape(s: str) -> str:
+    return s.translate(md_escape_table)
+
 def need_env(n):
     if n not in os.environ:
         raise RuntimeError("required environment variable not set", n)
@@ -358,8 +375,7 @@ for name in keys:
     print(f"""<listitem>""")
     print(opt['description'])
     if typ := opt.get('type'):
-        ro = " <emphasis>(read only)</emphasis>" if opt.get('readOnly', False) else ""
-        print(f"""<para><emphasis>Type:</emphasis> {escape(typ)}{ro}</para>""")
+        print(typ)
     if default := opt.get('default'):
         print(default)
     if example := opt.get('example'):