def write_overflow(row): overflow = [''] * len(self.columns) column_idx = 0 for (col, value) in zip(self.columns, row): if column_idx > 0: fp.write(' ' * self.spacing) if isinstance(value, str): pass else: value = str(value) if(ansi_len(value) <= col.width): fp.write(ansi_ljust(value, col.width)) else: wrapped_line = [ line for line in wrap_line(value, col.width) ] if len(wrapped_line) > 1: overflow[column_idx] = ' '.join(wrapped_line[1:]) fp.write(wrapped_line[0]) # Move to next column column_idx += 1 fp.write('\n') # deal with overflowed data if ''.join(overflow): write_overflow(overflow)
def write_overflow(row): overflow = [''] * len(self.columns) column_idx = 0 for (col, value) in zip(self.columns, row): if column_idx > 0: fp.write(' ' * self.spacing) if isinstance(value, str): pass else: value = str(value) if (ansi_len(value) <= col.width): fp.write(ansi_ljust(value, col.width)) else: wrapped_line = [ line for line in wrap_line(value, col.width) ] if len(wrapped_line) > 1: overflow[column_idx] = ' '.join(wrapped_line[1:]) fp.write(wrapped_line[0]) # Move to next column column_idx += 1 fp.write('\n') # deal with overflowed data if ''.join(overflow): write_overflow(overflow)
def __init__(self, text='', mode=0): ''' :param str text: the column name :param int mode: the column size mode ''' self.text = text self.mode = mode self.width = ansi_len(text)
def append(self, *args): ''' Add a row to the table. :param list args: the column values ''' self.rows.append(args) for (col, value) in zip(self.columns, args): col.width = max(col.width, ansi_len(str(value))) return self