use convert_case::Casing;
#[derive(
Copy,
Clone,
Debug,
PartialEq,
Eq,
PartialOrd,
Ord,
Default,
Hash,
serde::Deserialize,
serde::Serialize,
derive_more::Display,
derive_more::FromStr,
strum::EnumIter,
)]
pub enum PostalCommunity {
#[default]
GrantsPass,
Medford,
Merlin,
}
impl PostalCommunity {
#[tracing::instrument]
pub fn label(&self) -> String {
let title = self.to_string().to_case(convert_case::Case::Title);
title.to_uppercase()
}
#[tracing::instrument]
pub fn match_mixed(input: &str) -> Option<Self> {
match input.to_lowercase().as_str() {
"grants pass" => Some(Self::GrantsPass),
"gp" => Some(Self::GrantsPass),
"medford" => Some(Self::Medford),
"merlin" => Some(Self::Merlin),
_ => None,
}
}
}