#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum Mode {
Numeric,
Alphanumeric,
Byte,
Kanji,
}
impl Mode {
pub fn detect(data: &str) -> Mode {
if data.chars().all(|c| c.is_ascii_digit()) {
Mode::Numeric
} else if data.chars().all(|c| {
c.is_ascii_digit()
|| c.is_ascii_uppercase()
|| matches!(c, ' ' | '$' | '%' | '*' | '+' | '-' | '.' | '/' | ':')
}) {
Mode::Alphanumeric
} else {
Mode::Byte
}
}
}