예제 #1
0
    def write(self, data):
        if self.closed:
            return

        if not data:
            return

        self.out.write(data)

        data = hint_to_text(data)
        if not self.stream:
            data += '\n'

        now = time.time()
        delay = (now - self.last) if self.last else 0
        duration = now - self.start
        self.last = now

        if self.unicode:
            if type(data) != unicode:
                data = data.decode('utf-8', errors='ignore')

        if self.rec == 'ttyrec':
            usec, sec = math.modf(now)
            usec = int(usec * 10**6)
            sec = int(sec)
            self.log.write(struct.pack('<III', sec, usec, len(data)) + data)

        elif self.rec == 'asciinema':
            self.log.write(json.dumps([duration, 'o', data]))
            self.log.write('\n')

        elif self.rec == 'asciinema1':
            if delay:
                self.log.write(',')

            self.log.write(json.dumps([duration, data]))

        else:
            seqs = set()
            for seqgroups in self.cleaner.finditer(data):
                seqs.add(seqgroups.groups()[0])

            for seq in seqs:
                data = data.replace(seq, '')

            self.log.write(data)
            self.log.flush()
예제 #2
0
 def display(data):
     print hint_to_text(data)