Skip to content

Instantly share code, notes, and snippets.

@natduca
Created June 24, 2020 23:04
Show Gist options
  • Save natduca/18bb4a8ef3b802eda6cda054c2f2111e to your computer and use it in GitHub Desktop.
Save natduca/18bb4a8ef3b802eda6cda054c2f2111e to your computer and use it in GitHub Desktop.
#!/usr/bin/env python
# git clone https://github.com/catapult-project/catapult.git
# hb.py > foo
# $catapult/tracing/bin/trace2html foo
# gives you foo.html
text = """
HHHHHHHHH HHHHHHHHH BBBBBBBBBBBBBBBBB iiii tttt hhhhhhh d::::::d JJJJJJJJJJJ iiii !!!
H:::::::H H:::::::H B::::::::::::::::B i::::i ttt:::t h:::::h d::::::d J:::::::::J i::::i !!:!!
H:::::::H H:::::::H B::::::BBBBBB:::::B iiii t:::::t h:::::h d::::::d J:::::::::J iiii !:::!
HH::::::H H::::::HH BB:::::B B:::::B t:::::t h:::::h d:::::d JJ:::::::JJ !:::!
H:::::H H:::::H aaaaaaaaaaaaa ppppp ppppppppp ppppp pppppppppyyyyyyy yyyyyyy B::::B B:::::Biiiiiiirrrrr rrrrrrrrr ttttttt:::::ttttttt h::::h hhhhh ddddddddd:::::d aaaaaaaaaaaaayyyyyyy yyyyyyy J:::::J ooooooooooo rrrrr rrrrrrrrr iiiiiii mmmmmmm mmmmmmm !:::!
H:::::H H:::::H a::::::::::::a p::::ppp:::::::::p p::::ppp:::::::::py:::::y y:::::y B::::B B:::::Bi:::::ir::::rrr:::::::::r t:::::::::::::::::t h::::hh:::::hhh dd::::::::::::::d a::::::::::::ay:::::y y:::::y J:::::J oo:::::::::::oo r::::rrr:::::::::r i:::::i mm:::::::m m:::::::mm !:::!
H::::::HHHHH::::::H aaaaaaaaa:::::ap:::::::::::::::::p p:::::::::::::::::py:::::y y:::::y B::::BBBBBB:::::B i::::ir:::::::::::::::::r t:::::::::::::::::t h::::::::::::::hh d::::::::::::::::d aaaaaaaaa:::::ay:::::y y:::::y J:::::Jo:::::::::::::::or:::::::::::::::::r i::::i m::::::::::mm::::::::::m!:::!
H:::::::::::::::::H a::::app::::::ppppp::::::ppp::::::ppppp::::::py:::::y y:::::y B:::::::::::::BB i::::irr::::::rrrrr::::::rtttttt:::::::tttttt h:::::::hhh::::::h d:::::::ddddd:::::d a::::a y:::::y y:::::y J:::::jo:::::ooooo:::::orr::::::rrrrr::::::ri::::i m::::::::::::::::::::::m!:::!
H:::::::::::::::::H aaaaaaa:::::a p:::::p p:::::p p:::::p p:::::p y:::::y y:::::y B::::BBBBBB:::::B i::::i r:::::r r:::::r t:::::t h::::::h h::::::hd::::::d d:::::d aaaaaaa:::::a y:::::y y:::::y J:::::Jo::::o o::::o r:::::r r:::::ri::::i m:::::mmm::::::mmm:::::m!:::!
H::::::HHHHH::::::H aa::::::::::::a p:::::p p:::::p p:::::p p:::::p y:::::y y:::::y B::::B B:::::B i::::i r:::::r rrrrrrr t:::::t h:::::h h:::::hd:::::d d:::::d aa::::::::::::a y:::::y y:::::y JJJJJJJ J:::::Jo::::o o::::o r:::::r rrrrrrri::::i m::::m m::::m m::::m!:::!
H:::::H H:::::H a::::aaaa::::::a p:::::p p:::::p p:::::p p:::::p y:::::y:::::y B::::B B:::::B i::::i r:::::r t:::::t h:::::h h:::::hd:::::d d:::::d a::::aaaa::::::a y:::::y:::::y J:::::J J:::::Jo::::o o::::o r:::::r i::::i m::::m m::::m m::::m!!:!!
H:::::H H:::::H a::::a a:::::a p:::::p p::::::p p:::::p p::::::p y:::::::::y B::::B B:::::B i::::i r:::::r t:::::t tttttth:::::h h:::::hd:::::d d:::::d a::::a a:::::a y:::::::::y J::::::J J::::::Jo::::o o::::o r:::::r i::::i m::::m m::::m m::::m !!!
HH::::::H H::::::HHa::::a a:::::a p:::::ppppp:::::::p p:::::ppppp:::::::p y:::::::y BB:::::BBBBBB::::::Bi::::::ir:::::r t::::::tttt:::::th:::::h h:::::hd::::::ddddd::::::dda::::a a:::::a y:::::::y J:::::::JJJ:::::::Jo:::::ooooo:::::o r:::::r i::::::im::::m m::::m m::::m
H:::::::H H:::::::Ha:::::aaaa::::::a p::::::::::::::::p p::::::::::::::::p y:::::y B:::::::::::::::::B i::::::ir:::::r tt::::::::::::::th:::::h h:::::h d:::::::::::::::::da:::::aaaa::::::a y:::::y JJ:::::::::::::JJ o:::::::::::::::o r:::::r i::::::im::::m m::::m m::::m !!!
H:::::::H H:::::::H a::::::::::aa:::ap::::::::::::::pp p::::::::::::::pp y:::::y B::::::::::::::::B i::::::ir:::::r tt:::::::::::tth:::::h h:::::h d:::::::::ddd::::d a::::::::::aa:::a y:::::y JJ:::::::::JJ oo:::::::::::oo r:::::r i::::::im::::m m::::m m::::m!!:!!
HHHHHHHHH HHHHHHHHH aaaaaaaaaa aaaap::::::pppppppp p::::::pppppppp y:::::y BBBBBBBBBBBBBBBBB iiiiiiiirrrrrrr ttttttttttt hhhhhhh hhhhhhh ddddddddd ddddd aaaaaaaaaa aaaa y:::::y JJJJJJJJJ ooooooooooo rrrrrrr iiiiiiiimmmmmm mmmmmm mmmmmm !!!
p:::::p p:::::p y:::::y y:::::y
p:::::p p:::::p y:::::y y:::::y
p:::::::p p:::::::p y:::::y y:::::y
p:::::::p p:::::::p y:::::y y:::::y
p:::::::p p:::::::p yyyyyyy yyyyyyy
ppppppppp ppppppppp
"""
import json
class Run:
def __init__(self, char, length):
self.char = char
self.length = length
def __repr__(self):
return "['%s', %i]" % (self.char, self.length)
def toSlice(self, pid, tid, startTs):
x = {
"pid": pid,
"tid": tid,
"ph": "X",
"name": self.char,
"cat": "cat",
"ts": startTs,
"dur": self.length
}
return json.dumps(x)
def getRuns(line):
if len(line) < 1:
return []
if len(line) < 2:
return [Run(line[0], 1)]
runs = []
i = 0
startChar = None
startIdx = 0
while i < len(line):
if startChar == None:
startChar = line[i]
startIdx = i
curChar = line[i]
if curChar == startChar:
i += 1
continue
runs.append(Run(startChar, i - startIdx))
startChar = None
if startChar != None:
runs.append(Run(startChar, i - startIdx))
return runs
if False:
print getRuns("a")
import pdb; pdb.set_trace()
print getRuns("a a")
print getRuns("a a ")
print getRuns("a aa aaa ")
print """{"traceEvents": ["""
lines = list(text.splitlines())
slices = []
for tid, line in enumerate(lines):
runs = getRuns(line)
ts = 0
for run in runs:
if run.char != ' ':
slices.append(run.toSlice(1, tid, ts))
ts += run.length
print ",\n".join(slices)
print """]}\n"""
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment