Skip to content
Snippets Groups Projects

Draft: Add sphinx documentation

Closed Tammo Jan Dijkema requested to merge add-sphinx into main
1 file
+ 64
0
Compare changes
  • Side-by-side
  • Inline
+ 64
0
#!/usr/bin/env python3
"""Convert doxygen XML output to docstrings that can be used in pybind11"""
from xml.etree import ElementTree
import copy
import sys
def make_text(node):
"""Convert node to plain text"""
text = ElementTree.tostring(node, method="text").decode("utf-8")
text = text.strip()
text = text.rstrip("&").strip() # No references in python
if text.startswith("const "): # No const in python
text = text[7:]
return text
def get_description_nodes(node):
"""Extract the relevant description nodes"""
brief_description_node = node.find('briefdescription')
detailed_description_node = node.find("detaileddescription")
new_parameterlist = None
paras = detailed_description_node.findall("para")
for para in paras:
parameterlist = para.find('parameterlist')
if parameterlist:
new_parameterlist = copy.deepcopy(parameterlist)
new_parameterlist.tail = ""
if para.text:
para.text += parameterlist.tail
else:
para.text = parameterlist.tail
para.remove(parameterlist)
return brief_description_node, detailed_description_node, new_parameterlist
def main(filename):
root = ElementTree.parse(filename).getroot()
public_functions = [el for el in root[0].findall('sectiondef')
if el.attrib['kind']=='public-func'][0]
for f in public_functions:
brief, detailed, params = get_description_nodes(f)
print('---------hieronder nieuwe-')
print(make_text(f.find('definition')))
print('---------dit was de definitie-')
if brief:
print(make_text(brief))
else:
print("No brief")
if detailed:
print(make_text(detailed))
else:
print("No detailed")
if params:
print(make_text(params))
else:
print("No parameterlist")
if __name__ == "__main__":
filename = sys.argv[1]
main(filename)
Loading