"m_enum_values_as_keywords="
With ``@m_class`` it's possible to add CSS classes to the immediately following
-paragraph, image, table, list or math formula block. When used inline, it
-affects the immediately following emphasis, strong text, link or inline math
-formula. Example usage:
+paragraph, image, table, list or math formula block. When used before a block
+such as ``@par``, ``@note``, ``@see`` or ``@xrefitem``, the CSS class fully
+overrides the block styling. By default :css:`.m-note` with some color and
+:html:`<h4>` is used, with ``@m_class`` before it get :html:`<h3>` for the
+title and you can turn it into a block, for example:
+
+.. code-figure::
+
+ .. code:: c++
+
+ /**
+ @m_class{m-block m-success}
+
+ @par Third-party license info
+ This utility depends on the [Magnum engine](https://magnum.graphics).
+ It's licensed under MIT, so all you need to do is mention it in the
+ credits of your commercial app.
+ */
+
+ .. block-success:: Third-party license info
+
+ This utility depends on the `Magnum engine <https://magnum.graphics>`_.
+ It's licensed under MIT, so all you need to do is mention it in the
+ credits of your commercial app.
+
+When used inline, it affects the immediately following emphasis, strong text,
+link or inline math formula. Example usage:
.. code-figure::
# Not continuing with a section from before, put a header in
if not previous_section or (i.attrib['kind'] != 'par' and previous_section != i.attrib['kind']) or (i.attrib['kind'] == 'par' and i.find('title').text):
if i.attrib['kind'] == 'see':
- out.parsed += '<aside class="m-note m-default"><h4>See also</h4>'
+ title = 'See also'
+ css_class = 'm-default'
elif i.attrib['kind'] == 'note':
- out.parsed += '<aside class="m-note m-info"><h4>Note</h4>'
+ title = 'Note'
+ css_class = 'm-info'
elif i.attrib['kind'] == 'attention':
- out.parsed += '<aside class="m-note m-warning"><h4>Attention</h4>'
+ title = 'Attention'
+ css_class = 'm-warning'
elif i.attrib['kind'] == 'warning':
- out.parsed += '<aside class="m-note m-danger"><h4>Warning</h4>'
+ title = 'Warning'
+ css_class = 'm-danger'
elif i.attrib['kind'] == 'author':
- out.parsed += '<aside class="m-note m-default"><h4>Author</h4>'
+ title = 'Author'
+ css_class = 'm-default'
elif i.attrib['kind'] == 'authors':
- out.parsed += '<aside class="m-note m-default"><h4>Authors</h4>'
+ title = 'Authors'
+ css_class = 'm-default'
elif i.attrib['kind'] == 'copyright':
- out.parsed += '<aside class="m-note m-default"><h4>Copyright</h4>'
+ title = 'Copyright'
+ css_class = 'm-default'
elif i.attrib['kind'] == 'version':
- out.parsed += '<aside class="m-note m-default"><h4>Version</h4>'
+ title = 'Version'
+ css_class = 'm-default'
elif i.attrib['kind'] == 'since':
- out.parsed += '<aside class="m-note m-default"><h4>Since</h4>'
+ title = 'Since'
+ css_class = 'm-default'
elif i.attrib['kind'] == 'date':
- out.parsed += '<aside class="m-note m-default"><h4>Date</h4>'
+ title = 'Date'
+ css_class = 'm-default'
elif i.attrib['kind'] == 'pre':
- out.parsed += '<aside class="m-note m-success"><h4>Precondition</h4>'
+ title = 'Precondition'
+ css_class = 'm-success'
elif i.attrib['kind'] == 'post':
- out.parsed += '<aside class="m-note m-success"><h4>Postcondition</h4>'
+ title = 'Postcondition'
+ css_class = 'm-success'
elif i.attrib['kind'] == 'invariant':
- out.parsed += '<aside class="m-note m-success"><h4>Invariant</h4>'
+ title = 'Invariant'
+ css_class = 'm-success'
elif i.attrib['kind'] == 'remark':
- out.parsed += '<aside class="m-note m-default"><h4>Remark</h4>'
+ title = 'Remark'
+ css_class = 'm-default'
elif i.attrib['kind'] == 'par':
- if add_css_class:
- out.parsed += '<aside class="{}"><h3>{}</h3>'.format(add_css_class, html.escape(i.findtext('title', '')))
- else:
- out.parsed += '<aside class="m-note m-default"><h4>{}</h4>'.format(html.escape(i.findtext('title', '')))
+ title = html.escape(i.findtext('title', ''))
+ css_class = 'm-default'
elif i.attrib['kind'] == 'rcs':
- out.parsed += '<aside class="m-note m-default"><h4>{}</h4>'.format(html.escape(i.findtext('title', '')))
+ title = html.escape(i.findtext('title', ''))
+ css_class = 'm-default'
else: # pragma: no cover
- out.parsed += '<aside class="m-note">'
+ title = ''
+ css_class = ''
logging.warning("{}: ignoring {} kind of <simplesect>".format(state.current, i.attrib['kind']))
+ if add_css_class:
+ css_class = add_css_class
+ heading = 'h3'
+ else:
+ css_class = 'm-note ' + css_class
+ heading = 'h4'
+
+ if title:
+ out.parsed += '<aside class="{css_class}"><{heading}>{title}</{heading}>'.format(
+ css_class=css_class,
+ heading=heading,
+ title=title)
+ else:
+ out.parsed += '<aside class="{}">'.format(css_class)
+
# Parse the section contents and bubble important stuff up
parsed, search_keywords, search_enum_values_as_keywords = parse_desc_keywords(state, i)
out.parsed += parsed
id = i.attrib['id']
match = xref_id_rx.match(id)
file = match.group(1)
- if file.startswith('deprecated'):
- color = 'm-danger'
- out.is_deprecated = True
- elif file.startswith('bug'):
- color = 'm-danger'
- elif file.startswith('todo'):
- color = 'm-dim'
+ if add_css_class:
+ css_class = add_css_class
+ heading = 'h3'
else:
- color = 'm-default'
- out.parsed += '<aside class="m-note {}"><h4><a href="{}.html#{}" class="m-dox">{}</a></h4>{}</aside>'.format(
- color, file, match.group(2), i.find('xreftitle').text, parse_desc(state, i.find('xrefdescription')))
+ heading = 'h4'
+ css_class = 'm-note '
+ if file.startswith('deprecated'):
+ css_class += 'm-danger'
+ out.is_deprecated = True
+ elif file.startswith('bug'):
+ css_class += 'm-danger'
+ elif file.startswith('todo'):
+ css_class += 'm-dim'
+ else:
+ css_class += 'm-default'
+ out.parsed += '<aside class="{css_class}"><{heading}><a href="{file}.html#{anchor}" class="m-dox">{title}</a></{heading}>{description}</aside>'.format(
+ css_class=css_class,
+ heading=heading,
+ file=file,
+ anchor=match.group(2),
+ title=i.find('xreftitle').text,
+ description=parse_desc(state, i.find('xrefdescription')))
elif i.tag == 'parameterlist':
assert element.tag == 'para' # is inside a paragraph :/