libutils_terminal/
argument.rs1pub enum Argument {
7 File(String),
8 Alias(Vec<char>),
9 Flag(String),
10 Setting(String, String),
11 Target(String),
12 Unknown(String)
13} impl From<String> for Argument {
14 fn from(value: String) -> Self {return match value {
15 ref setting if let Some(setting) = setting.strip_prefix("--") && let Some((key, value)) = setting.split_once('=') => Argument::Setting(key.to_string(), value.to_string()),
16 ref flag if let Some(flag) = flag.strip_prefix("--") => Argument::Flag(flag.to_string()),
17 ref alias if let Some(alias) = alias.strip_prefix('-') => Argument::Alias(alias.chars().collect()),
18 other => {
19 let mut file = Some(false);
20 for character in other.chars() {file = match character {
21 num if num.is_numeric() => Some(true),
22 '/' | '\\' | '.' => Some(true),
23 letter if letter.is_alphabetic() => file,
24 _ => None
25 }};
26 match file {
27 None => Argument::Unknown(other),
28 Some(true) => Argument::File(other),
29 Some(false) => Argument::Target(other)
30 }
31 }
32 }}
33}