#[derive(Debug)]
pub(crate) enum ArgType<'a> {
DoubleDash,
LongFlag(&'a str),
ShortFlag(&'a str),
Positional,
None,
}
impl<'a> ArgType<'a> {
pub(crate) fn parse(arg: &'a str) -> Self {
if let Some(key) = arg.strip_prefix("--") {
if key.is_empty() {
ArgType::DoubleDash
} else {
ArgType::LongFlag(key)
}
} else if let Some(key) = arg.strip_prefix('-') {
if key.is_empty() {
ArgType::Positional
} else {
ArgType::ShortFlag(key)
}
} else if !arg.is_empty() {
ArgType::Positional
} else {
ArgType::None
}
}
}