This commit is contained in:
Costa Shulyupin 2020-08-09 12:51:23 +03:00
parent 487ae51b5c
commit bd390038c0
1 changed files with 42 additions and 0 deletions

View File

@ -39,6 +39,7 @@ import types
from xml.dom.minidom import parse from xml.dom.minidom import parse
import xml.dom.minidom import xml.dom.minidom
import ast import ast
import xml.etree.ElementTree as ET
default_root = 'starts' default_root = 'starts'
ignores = ('aligned unlikely typeof u32 ' ignores = ('aligned unlikely typeof u32 '
@ -1307,6 +1308,47 @@ def doxygen_length(a):
return g return g
def svg_xml(svg=None) -> nx.DiGraph:
'''
extracts call graph from svg
Ex2: \"write_dot(svg_xml('LKM.svg'), 'LKM.dot')\"
'''
if not svg:
return doc()
g = my_graph(svg)
s = xml.dom.minidom.parse(svg)
'''
for p in s.getElementsByTagName("path"):
print(p.getAttribute('inkscape:connection-end'))
print(p.getAttribute('inkscape:connection-start'))
'''
et = ET.parse(svg)
root = et.getroot()
print(svg)
print(et)
print(root)
# for e in root.iter():
# print(e.tag)
def text(c):
for t in root.findall('.//ns0:text[@id="' + c + '"]', ns):
return t.find('.//ns0:tspan', ns).text
ns = {'ns0': 'http://www.w3.org/2000/svg',
'ns1': 'http://www.inkscape.org/namespaces/inkscape'}
# for t in root.findall('.//ns0:text', ns):
# print(t.find('.//ns0:tspan', ns).text)
for p in root.findall('.//ns0:path', ns):
try:
c = (p.get("{"+ns['ns1'] + "}connection-start")[1:],
p.get("{"+ns['ns1'] + "}connection-end")[1:])
print(text(c[0]), text(c[1]))
g.add_edge(text(c[0]), text(c[1]))
except (TypeError):
pass
return g
def doc(m=None): def doc(m=None):
full = False full = False
if not m: if not m: