use serde::{Deserialize, Serialize};
use std::fmt::Display;
#[derive(
Serialize, Deserialize, Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default,
)]
pub enum Rating {
Safe,
Questionable,
Explicit,
#[default]
Unknown,
}
impl Display for Rating {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Self::Safe => write!(f, "Safe"),
Self::Questionable => write!(f, "Questionable"),
Self::Explicit => write!(f, "Explicit"),
Self::Unknown => write!(f, "Unknown"),
}
}
}
impl Rating {
pub fn from_rating_str(s: &str) -> Self {
match s {
"s" | "g" | "safe" | "sensitive" | "general" => Self::Safe,
"q" | "questionable" => Self::Questionable,
"e" | "explicit" => Self::Explicit,
_ => Self::Unknown,
}
}
}