use crate::SH_DEBUG_STR;
use crate::SH_TRACE_STR;
use crate::shacl_vocab::SH_INFO_STR;
use crate::shacl_vocab::SH_VIOLATION_STR;
use crate::shacl_vocab::SH_WARNING_STR;
use iri_s::IriS;
use prefixmap::IriRef;
use std::fmt::Display;
#[derive(Debug, Clone, PartialEq)]
pub enum Severity {
Trace,
Debug,
Info,
Warning,
Violation,
Generic(IriRef),
}
impl From<Severity> for IriS {
fn from(value: Severity) -> Self {
match value {
Severity::Trace => IriS::new_unchecked(SH_TRACE_STR),
Severity::Debug => IriS::new_unchecked(SH_DEBUG_STR),
Severity::Info => IriS::new_unchecked(SH_INFO_STR),
Severity::Warning => IriS::new_unchecked(SH_WARNING_STR),
Severity::Violation => IriS::new_unchecked(SH_VIOLATION_STR),
Severity::Generic(iri_ref) => iri_ref.get_iri().unwrap(),
}
}
}
impl Display for Severity {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Severity::Trace => write!(f, "Trace"),
Severity::Debug => write!(f, "Debug"),
Severity::Violation => write!(f, "Violation"),
Severity::Warning => write!(f, "Warning"),
Severity::Info => write!(f, "Info"),
Severity::Generic(iri_ref) => write!(f, "Severity({})", iri_ref),
}
}
}