From 829417ce6e0be0cf5d5fc0fc21091a7dca9be197 Mon Sep 17 00:00:00 2001 From: dst03106 Date: Fri, 6 Jun 2025 20:12:58 +0900 Subject: [PATCH] feat: toggle open or closed based on line count for todo section --- pr_agent/algo/utils.py | 36 ++++++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/pr_agent/algo/utils.py b/pr_agent/algo/utils.py index b967a0be..a106a7f3 100644 --- a/pr_agent/algo/utils.py +++ b/pr_agent/algo/utils.py @@ -260,12 +260,9 @@ def convert_to_markdown_v2(output_data: dict, else: return file_ref - if gfm_supported: - markdown_text += f"" - if is_value_no(value): - markdown_text += f"{emoji} No TODO sections" - else: - markdown_text += f"{emoji} TODO sections ({len(value)} items)\n
{todos_summary}\n\n" + def format_todo_items(value: list[TodoItem] | TodoItem) -> str: + markdown_text = "" + if gfm_supported: if isinstance(value, list): markdown_text += "\n" else: markdown_text += f"

{format_todo_item(value)}

\n" - markdown_text += "\n
\n" - markdown_text += f"\n" - else: - if is_value_no(value): - markdown_text += f"### {emoji} No TODO sections\n\n" else: - markdown_text += f"### {emoji} TODO sections ({len(value)} items)\n
{todos_summary}\n\n" if isinstance(value, list): for todo_item in value: markdown_text += f"- {format_todo_item(todo_item)}\n" else: markdown_text += f"- {format_todo_item(value)}\n" + return markdown_text + + markdown_todo_items = format_todo_items(value) + EXPAND_LINE_THRESHOLD = 10 + details_open_attr = " open" if markdown_todo_items.count("\n") + 1 <= EXPAND_LINE_THRESHOLD else "" + if gfm_supported: + markdown_text += "" + if is_value_no(value): + markdown_text += f"{emoji} No TODO sections" + else: + markdown_text += f"{emoji} TODO sections ({len(value)} items)\n" + markdown_text += f"{todos_summary}\n\n" + markdown_text += markdown_todo_items + markdown_text += "\n
\n" + markdown_text += "\n" + else: + if is_value_no(value): + markdown_text += f"### {emoji} No TODO sections\n\n" + else: + markdown_text += f"### {emoji} TODO sections ({len(value)} items)\n{todos_summary}\n\n" + markdown_text += markdown_todo_items markdown_text += "\n\n\n" elif 'can be split' in key_nice.lower(): if gfm_supported: