tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

frame-graph.py (1070B)


      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")