layout/generic/frame-graph.py

changeset 0
6474c204b198
equal deleted inserted replaced
-1:000000000000 0:72925985ba07
1 # This Source Code Form is subject to the terms of the Mozilla Public
2 # License, v. 2.0. If a copy of the MPL was not distributed with this
3 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
4
5 """
6 Take the *.framedata files from graph-frameclasses.js and combine them
7 into a single graphviz file.
8
9 stdin: a list of .framedata file names (e.g. from xargs)
10 stdout: a graphviz file
11
12 e.g. `find <objdir> -name "*.framedata" | python aggregate-frameclasses.py |
13 dot -Tpng -o frameclasses-graph.png -`
14 """
15
16 import sys
17
18 classdict = {}
19
20 for line in sys.stdin:
21 file = line.strip()
22 fd = open(file)
23
24 output = None
25 for line in fd:
26 if line.startswith('CLASS-DEF: '):
27 cname = line[11:-1]
28 if cname not in classdict:
29 output = classdict[cname] = []
30 else:
31 output = None
32 elif output is not None:
33 output.append(line)
34
35 sys.stdout.write('digraph g {\n')
36
37 for olist in classdict.itervalues():
38 for line in olist:
39 sys.stdout.write(line)
40
41 sys.stdout.write('}\n')

mercurial