-
Notifications
You must be signed in to change notification settings - Fork 0
/
modifySvgApp.py
105 lines (87 loc) · 3.33 KB
/
modifySvgApp.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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
import re
import json
def modifySvg():
print("ciao")
svg_url = "./output.svg"
svg_url_file = open(svg_url, "r")
svgLines = svg_url_file.readlines()
svg_url_file.close()
newSvgContent = ""
edgesDict = {}
lastNode = -1
lastEdge = "E-1"
lookingForEllipse = False
lookingForPolygon = False
lookingForPath = False
lookingForText = 0
for line in svgLines:
if re.search(r'^<!-- ([1-9]\d*|0) -->\n$', line):
lastNode = line.split(" ")[1]
lookingForEllipse = True
elif (lookingForEllipse) and (re.search(r'^<ellipse .', line)):
line = line.replace("<ellipse ", '<ellipse id="svg_node_id_'+ str(lastNode) +'" ')
lookingForEllipse = False
elif re.search(r'^<!-- E([1-9]\d*|0) -->\n$', line):
if not (line.split(" ")[1] in edgesDict):
edgesDict[line.split(" ")[1]] = {
"from_node": 0,
"to_node": 0,
"event": "",
"xpath": ""
}
lastEdge = line.split(" ")[1]
lookingForText = 2
lookingForPolygon = True
lookingForPath = True
elif (lookingForPolygon) and (re.search(r'^<polygon .', line)):
print("polygon")
line = line.replace("<polygon ", '<polygon id="svg_edge_id_'+ str(lastEdge) +'" ')
lookingForPolygon = False
elif (lookingForPath) and (re.search(r'^<path .', line)):
print("path")
line = line.replace("<path ", '<path id="svg_real_edge_id_'+ str(lastEdge) +'" ')
lookingForPath = False
elif (lookingForText > 0) and (re.search(r'^<text .', line)):
splittedText = line.split(">")
if "'" in splittedText[1]:
edgesDict[lastEdge]["event"] = (splittedText[1].split("'"))[1]
elif ")" in splittedText[1]:
edgesDict[lastEdge]["xpath"] = (splittedText[1].split(")"))[0][1:]
lookingForText -= 1
elif re.search(r'^<!-- ([1-9]\d*|0)->E([1-9]\d*|0) -->\n$', line):
ids = line.split(" ")[1].split("->")
node = int(ids[0])
edge = ids[1]
if edge in edgesDict:
edgesDict[edge]["from_node"] = node
else:
edgesDict[edge] = {
"from_node": node,
"to_node": 0,
"event": "",
"xpath": ""
}
elif re.search(r'^<!-- E([1-9]\d*|0)->([1-9]\d*|0) -->\n$', line):
ids = line.split(" ")[1].split("->")
node = int(ids[1])
edge = ids[0]
if edge in edgesDict:
edgesDict[edge]["to_node"] = node
else:
edgesDict[edge] = {
"from_node": 0,
"to_node": node,
"event": "",
"xpath": ""
}
newSvgContent += line
svg_url_file = open(svg_url, "w")
svg_url_file.write(newSvgContent)
svg_url_file.close()
#print(edgesDict)
json_url = "output.json"
json_url_file = open(json_url, "w")
json_url_file.write( json.dumps(edgesDict) )
json_url_file.close()
if __name__ == "__main__":
modifySvg()