aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src/conventionalrp/renderers/markdown_renderer.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/conventionalrp/renderers/markdown_renderer.py')
-rw-r--r--src/conventionalrp/renderers/markdown_renderer.py37
1 files changed, 35 insertions, 2 deletions
diff --git a/src/conventionalrp/renderers/markdown_renderer.py b/src/conventionalrp/renderers/markdown_renderer.py
index fab429f..9df59a2 100644
--- a/src/conventionalrp/renderers/markdown_renderer.py
+++ b/src/conventionalrp/renderers/markdown_renderer.py
@@ -1,17 +1,50 @@
from .base import BaseRenderer
+from typing import List, Dict, Any, Union
class MarkdownRenderer(BaseRenderer):
- def render(self, data):
+ def render(self, data: Union[List[Dict[str, Any]], Dict[str, Any]]) -> str:
"""
Renders the given data in Markdown format.
Args:
- data (dict): The data to render.
+ data: The data to render (can be list or dict).
Returns:
str: The rendered Markdown string.
"""
+ if isinstance(data, list):
+ return self._render_list(data)
+ elif isinstance(data, dict):
+ return self._render_dict(data)
+ else:
+ return str(data)
+
+ def _render_list(self, data: List[Dict[str, Any]]) -> str:
+ """渲染列表数据为 Markdown"""
+ markdown_output = "# TRPG Log\n\n"
+
+ for i, entry in enumerate(data, 1):
+ if entry.get("type") == "metadata":
+ markdown_output += f"## Entry {i}\n\n"
+ markdown_output += f"**Timestamp**: {entry.get('timestamp', 'N/A')} \n"
+ markdown_output += f"**Speaker**: {entry.get('speaker', 'N/A')} \n\n"
+
+ content_items = entry.get("content", [])
+ if content_items:
+ markdown_output += "**Content**:\n\n"
+ for content in content_items:
+ content_type = content.get("type", "unknown")
+ content_text = content.get("content", "")
+ markdown_output += f"- [{content_type}] {content_text}\n"
+ markdown_output += "\n"
+ else:
+ markdown_output += f"- {entry}\n"
+
+ return markdown_output
+
+ def _render_dict(self, data: Dict[str, Any]) -> str:
+ """渲染字典数据为 Markdown"""
markdown_output = ""
for key, value in data.items():
markdown_output += f"## {key}\n\n{value}\n\n"