-
Notifications
You must be signed in to change notification settings - Fork 18
/
Copy pathxmlg2md.py
executable file
·41 lines (29 loc) · 1.23 KB
/
xmlg2md.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#!/usr/bin/env python3
import argparse
import materials as mt
from xmlgraph import Roadmap
def walk(roadmap, nodeid, level, materials):
node = roadmap.nodes[nodeid]
if level > 6:
level = 6
print('#'*level + ' ' + node.label + '\n')
node_mat = materials[nodeid]
for m in node_mat:
print("- {}: [{}]({})".format(m.type, m.title, m.url) +
('' if m.translate_url == '' else
"[[{}]({})]".format(m.translate_lang, m.translate_url)))
if len(node_mat) > 0:
print('\n')
for childid in node.childrenids:
walk(roadmap, childid, level+1, materials)
def convert_md(graphml, xmlmaterials, rootid):
roadmap = Roadmap(graphml)
materials = mt.parsexml(xmlmaterials)
walk(roadmap, rootid, 1, materials)
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Combining GraphML and materials into markdown')
parser.add_argument('--xmlg', default='roadmap.xml', help='XML Graph filename')
parser.add_argument('--materials', default='materials.xml', help='Materials XML filename')
parser.add_argument('--root', default='backend', help='Root element id')
args = parser.parse_args()
convert_md(args.xmlg, args.materials, args.root)