| 18 | |
| 19 | |
| 20 | def process_glossary_nodes( |
| 21 | app: Sphinx, |
| 22 | doctree: nodes.document, |
| 23 | _docname: str, |
| 24 | ) -> None: |
| 25 | if app.builder.format != 'html' or app.builder.embedded: |
| 26 | return |
| 27 | |
| 28 | if hasattr(app.env, 'glossary_terms'): |
| 29 | terms = app.env.glossary_terms |
| 30 | else: |
| 31 | terms = app.env.glossary_terms = {} |
| 32 | |
| 33 | for node in doctree.findall(glossary): |
| 34 | for glossary_item in node.findall(nodes.definition_list_item): |
| 35 | term = glossary_item[0].astext() |
| 36 | definition = glossary_item[-1] |
| 37 | |
| 38 | rendered = app.builder.render_partial(definition) |
| 39 | terms[term.lower()] = { |
| 40 | 'title': term, |
| 41 | 'body': rendered['fragment'], |
| 42 | } |
| 43 | |
| 44 | |
| 45 | def write_glossary_json(app: Sphinx, _exc: Exception) -> None: |