Formatters factory
This commit is contained in:
25
redmine_reporter/formatters/markdown.py
Normal file
25
redmine_reporter/formatters/markdown.py
Normal file
@@ -0,0 +1,25 @@
|
||||
from typing import List
|
||||
from .base import Formatter
|
||||
from ..types import ReportRow
|
||||
|
||||
|
||||
class MarkdownFormatter(Formatter):
|
||||
"""Форматтер для экспорта в Markdown."""
|
||||
|
||||
def format(self, rows: List[ReportRow]) -> str:
|
||||
lines = [
|
||||
"| Проект | Версия | Задача | Статус | Затрачено |",
|
||||
"|--------|--------|--------|--------|-----------|"
|
||||
]
|
||||
for r in rows:
|
||||
task_cell = f"{r['issue_id']}. {r['subject']}"
|
||||
lines.append(
|
||||
f"| {r['display_project']} | {r['display_version']} "
|
||||
f"| {task_cell} | {r['status_ru']} | {r['time_text']} |"
|
||||
)
|
||||
return "\n".join(lines)
|
||||
|
||||
def save(self, rows: List[ReportRow], output_path: str) -> None:
|
||||
content = self.format(rows)
|
||||
with open(output_path, "w", encoding="utf-8") as f:
|
||||
f.write(content)
|
||||
Reference in New Issue
Block a user