Source code for tablate.classes.helpers.list_frame

from tablate.library.ascii.chars.line_h import h_line
from tablate.library.ascii.chars.line_v import v_line
from tablate.library.ascii.chars.matrix_cross import cross_matrix
from tablate.library.checkers.set_key_resolver import set_key_resolver
from tablate.library.formatters.console.ascii_styler import ascii_text_styler, ascii_terminator
from tablate.library.formatters.console.concat_string import concat_string
from tablate.type.type_store import FrameDictList


[docs] def list_frames(frame_list: FrameDictList): print() # top_index = f"{' '}{h_line['thin'] * ((len(frame_list) // 10) + 3)}{cross_matrix['blank']['thin']['thin']}" # top_name = f"{h_line['thin'] * 22}{cross_matrix['blank']['thin']['thin']}" # top_type = f"{h_line['thin'] * 8}{cross_matrix['blank']['thin']['thin']}" # top_cols = f"{h_line['thin'] * 7}{cross_matrix['blank']['thin']['thin']}" # top_rows = f"{h_line['thin'] * 7}{cross_matrix['blank']['thin']['thin']}" # top_globals = f"{h_line['thin'] * 42}" # print(f"{top_index}{top_name}{top_type}{top_cols}{top_rows}{top_globals}") divider = v_line["thin"] padding = " " header_string = f"{padding} {' ' * ((len(frame_list) // 10) + 1)}{padding}" frame_name, name_ws = concat_string(string="Name", width=20, padding=0, trunc_value="") frame_name = ascii_text_styler(string=frame_name, column_dict={"text_style": "bold"}) + ascii_terminator() header_string += f"{divider}{padding}{frame_name}{' ' * name_ws}{padding}" frame_type, type_ws = concat_string(string="Type", width=6, padding=0, trunc_value="") frame_type = ascii_text_styler(string=frame_type, column_dict={"text_style": "bold"}) + ascii_terminator() header_string += f"{divider}{padding}{frame_type}{' ' * type_ws}{padding}" frame_cols, cols_ws = concat_string(string="Cols.", width=5, padding=0, trunc_value="") frame_cols = ascii_text_styler(string=frame_cols, column_dict={"text_style": "bold"}) + ascii_terminator() header_string += f"{divider}{padding}{frame_cols}{' ' * cols_ws}{padding}" frame_rows, rows_ws = concat_string(string="Rows", width=5, padding=0, trunc_value="") frame_rows = ascii_text_styler(string=frame_rows, column_dict={"text_style": "bold"}) + ascii_terminator() header_string += f"{divider}{padding}{' ' * rows_ws}{frame_rows}{padding}" frame_options = ascii_text_styler(string="Options", column_dict={"text_style": "bold"}) + ascii_terminator() header_string += f"{divider}{padding}{frame_options}{padding}" default_options = ascii_text_styler(string="[defaults]", column_dict={"text_style": "bold"}) + ascii_terminator() header_string += default_options print(header_string) divider_index = f"{padding}{h_line['thin'] * ((len(frame_list) // 10) + 3)}{cross_matrix['thin']['thin']['thin']}" divider_name = f"{h_line['thin'] * 22}{cross_matrix['thin']['thin']['thin']}" divider_type = f"{h_line['thin'] * 8}{cross_matrix['thin']['thin']['thin']}" divider_cols = f"{h_line['thin'] * 7}{cross_matrix['thin']['thin']['thin']}" divider_rows = f"{h_line['thin'] * 7}{cross_matrix['thin']['thin']['thin']}" divider_globals = f"{h_line['thin'] * 42}" print(f"{divider_index}{divider_name}{divider_type}{divider_cols}{divider_rows}{divider_globals}") #################################################################################################################### # global_options = globals_init(**global_options) processed_frame_list = [] for _, frame_item in frame_list.items(): if frame_item.type == "table": if frame_item.args["hide_header"] is not True: processed_frame_list.append(frame_item.store[0]) processed_frame_list.append(frame_item.store[1]) else: processed_frame_list.append(frame_item.store) processed_frame_index = 0 #################################################################################################################### for frame_index, (frame_key, frame_item) in enumerate(frame_list.items()): item_string = f"{padding}" index, index_ws = concat_string(string=frame_index, width=(len(frame_list) // 10) + 1, padding=0, trunc_value="") item_string += f"{padding}{' ' * index_ws}{index}{padding}" item_name, name_ws = concat_string(string=frame_item.name, width=20, padding=0, trunc_value="...") item_string += f"{divider}{padding}{item_name}{' ' * name_ws}{padding}" item_type = frame_item.type.capitalize() if frame_item.type != "table_body" else "Table" item_type, type_ws = concat_string(string=item_type, width=6, padding=0, trunc_value="") item_string += f"{divider}{padding}{item_type}{' ' * type_ws}{padding}" item_cols, cols_ws = concat_string(string=len(frame_item.args["columns"]), width=5, padding=0, trunc_value="") item_cols = item_cols if frame_item.type != "text" else "-" item_string += f"{divider}{padding}{' ' * cols_ws}{item_cols}{padding}" item_rows_list = set_key_resolver(instance=frame_item.args, key="row_list", default=[]) item_rows, rows_ws = concat_string(string=len(item_rows_list), width=5, padding=0, trunc_value="") item_rows = item_rows if frame_item.type == "table" else "-" item_string += f"{divider}{padding}{' ' * rows_ws}{item_rows}{padding}" item_options_list = [] default_options_list = [] item_options_list.append("hide_header") if "hide_header" in frame_item.args and frame_item.args["hide_header"] is True else None default_options_list.append("hide_header") if hasattr(processed_frame_list[processed_frame_index].frame_styles, "hide_header") and processed_frame_list[processed_frame_index].frame_styles.hide_header is True else None item_options_list.append("multiline") if frame_item.args["multiline"] is True else None default_options_list.append("multiline") if processed_frame_list[processed_frame_index].frame_styles.multiline is True else None item_options_list.append(f"max_lines: {frame_item.args['max_lines']}") if frame_item.args["max_lines"] is not None else None default_options_list.append("max_lines") if processed_frame_list[processed_frame_index].frame_styles.max_lines is not None else None duplicate_options_list = [] for default_option_index, default_option_item in enumerate(default_options_list): if default_option_item in item_options_list: duplicate_options_list.append(default_option_index) duplicate_options_list.reverse() for duplicate_option in duplicate_options_list: default_options_list.pop(duplicate_option) item_options_string = f"{', '.join(item_options_list)}{padding}" if len(item_options_list) > 0 else "" duplicate_option_string = f"[{', '.join(default_options_list)}]" if len(default_options_list) > 0 else "" item_string += f"{divider}{padding}{item_options_string}{duplicate_option_string}" print(item_string) processed_frame_index += 1 if processed_frame_list[processed_frame_index].type != "table_header" else 2 print()
# todo: please fix this!!!