use crate::audit::normalized::NormalizedReport;
use crate::audit::AuditReport;
use crate::error::Result;
pub trait ReportRenderer: Send + Sync {
fn render_single_report(
&self,
normalized: &NormalizedReport,
raw: &AuditReport,
) -> Result<String>;
}
pub struct JsonRenderer {
pub pretty: bool,
}
impl ReportRenderer for JsonRenderer {
fn render_single_report(
&self,
normalized: &NormalizedReport,
_raw: &AuditReport,
) -> Result<String> {
use crate::output::json::UnifiedReport;
UnifiedReport::single_from_normalized(normalized).to_json(self.pretty)
}
}
pub struct SummaryRenderer;
impl ReportRenderer for SummaryRenderer {
fn render_single_report(
&self,
normalized: &NormalizedReport,
_raw: &AuditReport,
) -> Result<String> {
crate::output::summary::format_summary(normalized)
.map_err(|e| crate::error::AuditError::ConfigError(e.to_string()))
}
}