docs: translate admonitions into bootstrap alerts
authorErik Faye-Lund <erik.faye-lund@collabora.com>
Fri, 17 Mar 2023 14:02:46 +0000 (15:02 +0100)
committerMarge Bot <emma+marge@anholt.net>
Wed, 26 Apr 2023 22:45:41 +0000 (22:45 +0000)
Sphinx and Bootstraps disagree on what these are called. Let's try to
bridge that gap, by rewriting things a bit.

Reviewed-by: Eric Engestrom <eric@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8399>

docs/_exts/bootstrap.py

index 555bd6b..9050d54 100644 (file)
@@ -36,6 +36,7 @@ from docutils import nodes
 
 import sphinx
 from sphinx.ext.autosummary import autosummary_table
+from sphinx.locale import admonitionlabels
 
 import types
 
@@ -50,6 +51,28 @@ class BootstrapHTML5TranslatorMixin:
             kwargs["ARIA-LEVEL"] = "2"
         return super().starttag(*args, **kwargs)
 
+    def visit_admonition(self, node, name: str = '') -> None:
+        admonitionclasses = {
+            'attention': 'alert-primary',
+            'caution':   'alert-secondary',
+            'danger':    'alert-danger',
+            'error':     'alert-danger',
+            'hint':      'alert-secondary',
+            'important': 'alert-primary',
+            'note':      'alert-info',
+            'seealso':   'alert-info',
+            'tip':       'alert-info',
+            'warning':   'alert-warning',
+        }
+
+        self.body.append(self.starttag(
+            node, 'div', CLASS=('alert ' + admonitionclasses[name])))
+        if name:
+            self.body.append(
+                  self.starttag(node, 'div', '', CLASS='h5'))
+            self.body.append(str(admonitionlabels[name]))
+            self.body.append('</div>')
+
     def visit_table(self, node):
         # init the attributes
         atts = {}