use serde::{Deserialize, Serialize};
use crate::scoring::Scorecard;
use crate::types::Diagnostic;
pub mod json;
pub mod sarif;
pub mod tty;
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "lowercase")]
pub enum Format {
#[default]
Tty,
Json,
Sarif,
}
impl Format {
#[must_use]
pub fn render(self, diagnostics: &[Diagnostic], scorecard: &Scorecard) -> String {
match self {
Self::Tty => tty::render(
diagnostics,
scorecard,
tty::TtyOptions::new(tty::ColorMode::Auto),
),
Self::Json => json::render(diagnostics, scorecard),
Self::Sarif => sarif::render(diagnostics, scorecard),
}
}
}