use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "lowercase")]
pub enum IssueClass {
#[default]
Missing,
Invalid,
Weak,
Risk,
Opportunity,
Informational,
}
impl IssueClass {
pub fn affects_score(&self) -> bool {
!matches!(self, IssueClass::Opportunity | IssueClass::Informational)
}
pub fn label(&self, en: bool) -> &'static str {
if en {
match self {
IssueClass::Missing => "Missing",
IssueClass::Invalid => "Invalid",
IssueClass::Weak => "Weak",
IssueClass::Risk => "Risk",
IssueClass::Opportunity => "Opportunity",
IssueClass::Informational => "Informational",
}
} else {
match self {
IssueClass::Missing => "Fehlend",
IssueClass::Invalid => "Ungültig",
IssueClass::Weak => "Schwach",
IssueClass::Risk => "Risiko",
IssueClass::Opportunity => "Optimierungspotenzial",
IssueClass::Informational => "Hinweis",
}
}
}
}
impl std::fmt::Display for IssueClass {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "{}", self.label(false))
}
}