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"
for todo_item in value:
@@ -273,18 +270,33 @@ def convert_to_markdown_v2(output_data: dict,
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: