Source code for tablate.library.renderers.console.frames.render_console_frame_table

from tablate.library.ascii.chars.line_v import v_line
from tablate.library.checkers.is_last_element import is_last_element
from tablate.library.formatters.console.cell_string import cell_string_single_line, cell_string_multi_line
from tablate.library.formatters.console.row_line_color import row_colors
from tablate.library.renderers.console.frames.render_console_columns import column_console_multiline
from tablate.library.formatters.console.row_line_divider import row_line_divider
from tablate.library.formatters.console.row_outer_border import row_outer_border
from tablate.type.type_store import TableBodyFrameStore
from tablate.type.type_global import Globals


[docs] def render_console_table_frame(table_frame_store: TableBodyFrameStore, global_options: Globals) -> str: return_string = "" line_divider_string = None if table_frame_store.row_styles.row_line_divider != "none": line_divider_row_string = row_line_divider(divider=table_frame_store.row_styles.row_line_divider, column_list_top=table_frame_store.column_list, column_list_bottom=table_frame_store.column_list) line_divider_string = row_outer_border(row_string=line_divider_row_string, global_options=global_options, row_divider=table_frame_store.row_styles.row_line_divider) for row_index, row_item in enumerate(table_frame_store.row_list): if table_frame_store.frame_styles.multiline is False or table_frame_store.frame_styles.max_lines == 1: row_line_string = "" for column_index, column_item in enumerate(table_frame_store.column_list): row_column_item = row_colors(column_item=column_item, row_index=row_index, table_frame_store=table_frame_store) row_line_string += cell_string_single_line(string=row_item[column_item["key"]], column_item=row_column_item, column_styles=table_frame_store.column_styles, trunc_value=table_frame_store.frame_styles.trunc_value) if not is_last_element(column_index, table_frame_store.column_list): row_line_string += v_line[column_item["divider"]] return_string += row_outer_border(row_string=row_line_string, global_options=global_options) else: formatted_columns_array = [] for column_item in table_frame_store.column_list: row_column_item = row_colors(column_item=column_item, row_index=row_index, table_frame_store=table_frame_store) column_string_array = cell_string_multi_line(string=row_item[row_column_item["key"]], column_item=row_column_item, column_styles=table_frame_store.column_styles, trunc_value=table_frame_store.frame_styles.trunc_value, max_lines=table_frame_store.frame_styles.max_lines) formatted_columns_array.append(column_string_array) return_string += column_console_multiline(formatted_columns_array=formatted_columns_array, frame_dict=table_frame_store, global_options=global_options) if not is_last_element(row_index, table_frame_store.row_list) and line_divider_string: return_string += line_divider_string # todo: if background maybe blank doesn't add first and last line spacing (maybe remove even if no background) if table_frame_store.row_styles.row_line_divider == "blank": return_string = f"{line_divider_string}{return_string}{line_divider_string}" return return_string