From fb69eb7f5c1a6def947b4c5110a14742d386ef24 Mon Sep 17 00:00:00 2001 From: Matthias Bisping Date: Wed, 1 Feb 2023 10:09:31 +0100 Subject: [PATCH] Refactoring Break up conditional tree in cell building function --- test/fixtures/page_generation/page.py | 99 +++++++++++++++------------ 1 file changed, 54 insertions(+), 45 deletions(-) diff --git a/test/fixtures/page_generation/page.py b/test/fixtures/page_generation/page.py index d929588..cc7d291 100644 --- a/test/fixtures/page_generation/page.py +++ b/test/fixtures/page_generation/page.py @@ -881,58 +881,67 @@ class RecursiveRandomTable(RandomContentRectangle): assert self.content.mode == "RGBA" def fill_cells_with_content(self, cells): + for cell in cells: - def inner(cell): - - size = get_size(cell) - - if size <= Size.SMALL.value: - words = generate_random_words(1, 3) - return generate_text_block(cell, " ".join(words)) - - elif size <= Size.MEDIUM.value: - - choice = rnd.choice(["plot", "recurse"]) - - if choice == "plot": - return generate_random_plot(cell) - - elif choice == "recurse": - return generate_recursive_random_table( - cell, - border_width=1, - layout=random.choice(["open", "horizontal", "vertical"]), - double_rule=False, - ) - - else: - return generate_text_block(cell, f"{choice} {size:.0f} {get_size_class(cell).name}") - - else: - - choice = rnd.choice(["plot", "recurse"]) - - logger.debug(f"Generating {choice} {size:.0f} {get_size_class(cell).name}") - - if choice == "plot" and is_square_like(cell): - return generate_random_plot(cell) - - else: - logger.debug(f"recurse {size:.0f} {get_size_class(cell).name}") - return generate_recursive_random_table( - cell, - border_width=1, - layout=random.choice(["open", "horizontal", "vertical"]), - double_rule=False, - ) - - cell = inner(cell) + cell = self.build_cell(cell) assert cell.content.mode == "RGBA" yield cell + def build_cell(self, cell): + + size = get_size(cell) + + if size <= Size.SMALL.value: + return self.build_small_cell(cell) + + elif size <= Size.MEDIUM.value: + return self.build_medium_sized_cell(cell) + + else: + return self.build_large_cell(cell) + + def build_small_cell(self, cell): + words = generate_random_words(1, 3) + return generate_text_block(cell, " ".join(words)) + + def build_medium_sized_cell(self, cell): + + choice = rnd.choice(["plot", "recurse"]) + + if choice == "plot": + return generate_random_plot(cell) + + elif choice == "recurse": + return generate_recursive_random_table( + cell, + border_width=1, + layout=random.choice(["open", "horizontal", "vertical"]), + double_rule=False, + ) + + else: + return generate_text_block(cell, f"{choice} {get_size(cell):.0f} {get_size_class(cell).name}") + + def build_large_cell(self, cell): + choice = rnd.choice(["plot", "recurse"]) + + logger.debug(f"Generating {choice} {get_size(cell):.0f} {get_size_class(cell).name}") + + if choice == "plot" and is_square_like(cell): + return generate_random_plot(cell) + + else: + logger.debug(f"recurse {get_size(cell):.0f} {get_size_class(cell).name}") + return generate_recursive_random_table( + cell, + border_width=1, + layout=random.choice(["open", "horizontal", "vertical"]), + double_rule=False, + ) + def draw_cell_borders(self, cells: List[ContentRectangle]): def draw_edges_based_on_position(cell: Cell, col_idx, row_index): # Draw the borders of the cell based on its position in the table