Source code for flexicon.sync.export
"""
Report Exporter - Generate diff reports in various formats
This module provides export functionality for diff results.
Author: FlexTools Development Team
Date: 2025-11-26
"""
import logging
from typing import Optional
from .diff import DiffResult
logger = logging.getLogger(__name__)
[docs]
class ReportExporter:
"""
Export diff reports in various formats.
Phase 1: Console and Markdown
Phase 4: HTML and CSV
Usage:
>>> exporter = ReportExporter()
>>> exporter.export_console(diff, verbose=True)
>>> exporter.export_markdown(diff, filename="report.md")
"""
[docs]
def export_console(self, diff: DiffResult, verbose: bool = False) -> str:
"""
Generate console-formatted report.
Args:
diff: DiffResult to export
verbose: Include unchanged items
Returns:
Formatted console text
"""
return diff.to_report(format="console", verbose=verbose)
[docs]
def export_markdown(self, diff: DiffResult, filename: Optional[str] = None, verbose: bool = False) -> str:
"""
Generate markdown-formatted report.
Args:
diff: DiffResult to export
filename: Optional file to write to
verbose: Include unchanged items
Returns:
Formatted markdown text
"""
content = diff.to_report(format="markdown", verbose=verbose)
if filename:
with open(filename, "w", encoding="utf-8") as f:
f.write(content)
logger.info(f"Exported markdown report to {filename}")
return content
[docs]
def export_html(self, diff: DiffResult, filename: str, verbose: bool = False) -> None:
"""
Generate HTML report with interactive features.
Note:
Full implementation in Phase 4.
Args:
diff: DiffResult to export
filename: Output HTML file
verbose: Include unchanged items
Raises:
NotImplementedError: Phase 1 - implemented in Phase 4
"""
raise NotImplementedError("HTML export not yet implemented (Phase 4). " "Use export_markdown() for now.")
[docs]
def export_csv(self, diff: DiffResult, filename: str, verbose: bool = False) -> None:
"""
Generate CSV report for spreadsheet analysis.
Note:
Full implementation in Phase 4.
Args:
diff: DiffResult to export
filename: Output CSV file
verbose: Include unchanged items
Raises:
NotImplementedError: Phase 1 - implemented in Phase 4
"""
raise NotImplementedError("CSV export not yet implemented (Phase 4). " "Use export_markdown() for now.")