Source code for tablate.library.renderers.console.frames.render_console_columns
from typing import List
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
from tablate.library.formatters.console.row_outer_border import row_outer_border
from tablate.type.type_store import FrameStoreUnion
from tablate.type.type_global import Globals
[docs]
def column_console_multiline(formatted_columns_array: List[List[str]], frame_dict: FrameStoreUnion, global_options: Globals):
total_line_count = 0
for column_item in formatted_columns_array:
total_line_count = len(column_item) if len(column_item) > total_line_count else total_line_count
total_line_count = total_line_count if frame_dict.frame_styles.max_lines is None \
or frame_dict.frame_styles.max_lines > total_line_count else frame_dict.frame_styles.max_lines
return_string = ""
for line_index in range(total_line_count):
grid_line_string = ""
for column_index, column_item in enumerate(frame_dict.column_list):
if line_index < len(formatted_columns_array[column_index]):
grid_line_string += formatted_columns_array[column_index][line_index]
else:
grid_line_string += cell_string_single_line(string="",
column_item=column_item,
column_styles=frame_dict.column_styles,
trunc_value=frame_dict.frame_styles.trunc_value)
if not is_last_element(column_index, frame_dict.column_list):
grid_line_string += v_line[column_item["divider"]]
return_string += row_outer_border(row_string=grid_line_string, global_options=global_options)
return return_string