mirror of
https://github.com/asciinema/asciinema.git
synced 2025-12-16 11:48:13 +01:00
47 lines
958 B
Python
47 lines
958 B
Python
import time
|
|
import StringIO
|
|
|
|
|
|
class StdoutTiming(object):
|
|
|
|
def __init__(self):
|
|
self._items = []
|
|
|
|
def append(self, item):
|
|
self._items.append(item)
|
|
|
|
def __str__(self):
|
|
lines = ["%f %d" % (item[0], item[1]) for item in self._items]
|
|
return "\n".join(lines)
|
|
|
|
|
|
class Stdout(object):
|
|
|
|
def __init__(self, timing=None):
|
|
self._data = StringIO.StringIO()
|
|
self._timing = timing if timing is not None else StdoutTiming()
|
|
|
|
self._start_timing()
|
|
|
|
@property
|
|
def data(self):
|
|
return self._data.getvalue()
|
|
|
|
@property
|
|
def timing(self):
|
|
return self._timing
|
|
|
|
def write(self, data):
|
|
now = time.time()
|
|
delta = now - self._prev_time
|
|
self._prev_time = now
|
|
|
|
self._data.write(data)
|
|
self._timing.append([delta, len(data)])
|
|
|
|
def close(self):
|
|
self._data.close()
|
|
|
|
def _start_timing(self):
|
|
self._prev_time = time.time()
|