def branch(obj, indent): for idx, i in enumerate(obj): subtree = resolve_cell(i, children) char = '+' if subtree else ('`' if idx == len(obj) - 1 else '|') six.print_('{0} {1}-- {2}'.format(' ' * indent, char, resolve_cell(i, label)), file=file) if subtree: branch(subtree, indent + 1)
def output_table_list(tables): terminal_size = get_terminal_size()[1] widths = [] for tab in tables: for i in range(0, len(tab.columns)): current_width = len(tab.columns[i].label) if len(widths) < i + 1: widths.insert(i, current_width) elif widths[i] < current_width: widths[i] = current_width for row in tab.data: current_width = len(resolve_cell(row, tab.columns[i].accessor)) if current_width > widths[i]: widths[i] = current_width if sum(widths) != terminal_size: widths[-1] = terminal_size - sum(widths[:-1]) - len(widths) * 3 for tab in tables: table = Texttable(max_width=terminal_size) table.set_cols_width(widths) table.set_deco(0) table.header([i.label for i in tab.columns]) table.add_rows([[AsciiOutputFormatter.format_value(resolve_cell(row, i.accessor), i.vt) for i in tab.columns] for row in tab.data], False) six.print_(table.draw() + "\n")
def output_table(tab): max_width = get_terminal_size()[1] table = Texttable(max_width=max_width) table.set_deco(0) table.header([i.label for i in tab.columns]) widths = [] number_columns = len(tab.columns) remaining_space = max_width # set maximum column width based on the amount of terminal space minus the 3 pixel borders max_col_width = (remaining_space - number_columns * 3) / number_columns for i in range(0, number_columns): current_width = len(tab.columns[i].label) tab_cols_acc = tab.columns[i].accessor max_row_width = max( [len(str(resolve_cell(row, tab_cols_acc))) for row in tab.data ] ) current_width = max_row_width if max_row_width > current_width else current_width if current_width < max_col_width: widths.insert(i, current_width) # reclaim space not used remaining_columns = number_columns - i - 1 remaining_space = remaining_space - current_width - 3 if remaining_columns != 0: max_col_width = (remaining_space - remaining_columns * 3)/ remaining_columns else: widths.insert(i, max_col_width) remaining_space = remaining_space - max_col_width - 3 table.set_cols_width(widths) table.add_rows([[AsciiOutputFormatter.format_value(resolve_cell(row, i.accessor), i.vt) for i in tab.columns] for row in tab.data], False) print(table.draw())
def format_table(tab, conv2ascii=False): def _try_conv2ascii(s): return ascii(s) if not _is_ascii(s) and isinstance(s, str) else s max_width = get_terminal_size()[1] table = Texttable(max_width=max_width) table.set_deco(0) table.header([i.label for i in tab.columns]) widths = [] ideal_widths = [] number_columns = len(tab.columns) remaining_space = max_width # set maximum column width based on the amount of terminal space minus the 3 pixel borders max_col_width = (remaining_space - number_columns * 3) / number_columns for i in range(0, number_columns): current_width = len(tab.columns[i].label) tab_cols_acc = tab.columns[i].accessor if len(tab.data) > 0: max_row_width = max( [len(str(resolve_cell(row, tab_cols_acc))) for row in tab.data ] ) ideal_widths.insert(i, max_row_width) current_width = max_row_width if max_row_width > current_width else current_width if current_width < max_col_width: widths.insert(i, current_width) # reclaim space not used remaining_columns = number_columns - i - 1 remaining_space = remaining_space - current_width - 3 if remaining_columns != 0: max_col_width = (remaining_space - remaining_columns * 3)/ remaining_columns else: widths.insert(i, max_col_width) remaining_space = remaining_space - max_col_width - 3 if remaining_space > 0 and len(ideal_widths) > 0: for i in range(0, number_columns): if remaining_space == 0: break if ideal_widths[i] > widths[i]: needed_space = ideal_widths[i] - widths[i] if needed_space <= remaining_space: widths[i] = ideal_widths[i] remaining_space = remaining_space - needed_space elif needed_space > remaining_space: widths[i] = widths[i] + remaining_space remaining_space = 0 table.set_cols_width(widths) table.set_cols_dtype(['t'] * len(tab.columns)) if conv2ascii: table.add_rows([[AsciiOutputFormatter.format_value( _try_conv2ascii(resolve_cell(row, i.accessor)), i.vt) for i in tab.columns] for row in tab.data], False) else: table.add_rows([[AsciiOutputFormatter.format_value( resolve_cell(row, i.accessor), i.vt) for i in tab.columns] for row in tab.data], False) return table
def output_table(table): output = [] for row in table.data: rowdata = {} for col in table.columns: rowdata[col.label] = JsonOutputFormatter.format_value(resolve_cell(row, col.accessor), col.vt) output.append(rowdata) six.print_(dumps(output, indent=4))
def output_table(data, columns): table = Texttable(max_width=get_terminal_size()[1]) table.set_deco(Texttable.BORDER | Texttable.VLINES | Texttable.HEADER) table.header([i.label for i in columns]) table.add_rows([[ TableOutputFormatter.format_value(resolve_cell(row, i.accessor), i.vt) for i in columns ] for row in data], False) six.print_(table.draw())
def output_table(data, columns): table = Texttable(max_width=get_terminal_size()[1]) table.set_deco(Texttable.BORDER | Texttable.VLINES | Texttable.HEADER) table.header([i.label for i in columns]) table.add_rows([[TableOutputFormatter.format_value(resolve_cell(row, i.accessor), i.vt) for i in columns] for row in data], False) six.print_(table.draw())