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.")