def _pre_processing(self, output_iter): cur_time = time.time() old_lines = dict(self._old_lines) for line_idx, cur_line in enumerate(output_iter): (old_line_raw, old_line_age) = old_lines.pop(line_idx, (None, None)) cur_line_raw = ANSI.strip_fmt(cur_line) if old_line_raw and not cur_line_raw: yield self._format_old_line(cur_time, line_idx, old_line_raw, old_line_age) else: yield cur_line self._old_lines[line_idx] = (cur_line_raw, cur_time) for old_line_idx in sorted(old_lines): yield self._format_old_line(cur_time, old_line_idx, *old_lines.pop(old_line_idx))
def _trim_width(self, output_iter): for line in output_iter: line = line.rstrip()[:self._layout_width + len(line) - len(ANSI.strip_fmt(line))] yield line.rstrip(ANSI.esc) + ANSI.reset + ANSI.erase_line