handle single and double chars seperatly

This commit is contained in:
fabolous005 2023-11-18 18:15:57 +01:00
parent 56174b08a9
commit 1e99cbbb85

View File

@ -1,5 +1,7 @@
#![allow(clippy::unnecessary_unwrap)]
use std::env; use std::env;
use periodic_table::{periodic_table, Element}; use periodic_table::Element;
fn main() { fn main() {
let mut args = vec![]; let mut args = vec![];
@ -8,131 +10,162 @@ fn main() {
} }
println!("{:?}", args); println!("{:?}", args);
let elements = args[1].to_string().to_uppercase(); let mut char_before: Option<char> = None;
let element = elements.as_str(); let mut element: Option<&Element> = None;
let mut element_line: Vec<&Element> = vec![]; // TODO: this should also include the number of atoms
println!("{element}"); let input = args[1].to_string();
for char in input.chars() {
let element_info = match element { println!("{:?}", element);
"AC" => &periodic_table::elements::AC, if element.is_some() {
"AG" => &periodic_table::elements::AG, println!("element is some");
"AL" => &periodic_table::elements::AL, element_line.push(element.unwrap());
"AM" => &periodic_table::elements::AM, }
"AR" => &periodic_table::elements::AR, if char.is_ascii_alphabetic() {
"AS" => &periodic_table::elements::AS, println!("matched alphabetic");
"AT" => &periodic_table::elements::AT, if char_before.is_some() {
"AU" => &periodic_table::elements::AU, println!("char_before is some");
"B" => &periodic_table::elements::B, let mut short = char_before.unwrap().to_uppercase().next().unwrap().to_string();
"BA" => &periodic_table::elements::BA, short.push(char.to_uppercase().next().unwrap());
"BE" => &periodic_table::elements::BE, element = match short.as_str() {
"BH" => &periodic_table::elements::BH, "AC" => Some(&periodic_table::elements::AC),
"BI" => &periodic_table::elements::BI, "AG" => Some(&periodic_table::elements::AG),
"BK" => &periodic_table::elements::BK, "AL" => Some(&periodic_table::elements::AL),
"BR" => &periodic_table::elements::BR, "AM" => Some(&periodic_table::elements::AM),
"C" => &periodic_table::elements::C, "AR" => Some(&periodic_table::elements::AR),
"CA" => &periodic_table::elements::CA, "AS" => Some(&periodic_table::elements::AS),
"CD" => &periodic_table::elements::CD, "AT" => Some(&periodic_table::elements::AT),
"CE" => &periodic_table::elements::CE, "AU" => Some(&periodic_table::elements::AU),
"CF" => &periodic_table::elements::CF, "BA" => Some(&periodic_table::elements::BA),
"CL" => &periodic_table::elements::CL, "BE" => Some(&periodic_table::elements::BE),
"CM" => &periodic_table::elements::CM, "BH" => Some(&periodic_table::elements::BH),
"CN" => &periodic_table::elements::CN, "BI" => Some(&periodic_table::elements::BI),
"CO" => &periodic_table::elements::CO, "BK" => Some(&periodic_table::elements::BK),
"CR" => &periodic_table::elements::CR, "BR" => Some(&periodic_table::elements::BR),
"CS" => &periodic_table::elements::CS, "CA" => Some(&periodic_table::elements::CA),
"CU" => &periodic_table::elements::CU, "CD" => Some(&periodic_table::elements::CD),
"DB" => &periodic_table::elements::DB, "CE" => Some(&periodic_table::elements::CE),
"DS" => &periodic_table::elements::DS, "CF" => Some(&periodic_table::elements::CF),
"DY" => &periodic_table::elements::DY, "CL" => Some(&periodic_table::elements::CL),
"ER" => &periodic_table::elements::ER, "CM" => Some(&periodic_table::elements::CM),
"ES" => &periodic_table::elements::ES, "CN" => Some(&periodic_table::elements::CN),
"EU" => &periodic_table::elements::EU, "CO" => Some(&periodic_table::elements::CO),
"F" => &periodic_table::elements::F, "CR" => Some(&periodic_table::elements::CR),
"FE" => &periodic_table::elements::FE, "CS" => Some(&periodic_table::elements::CS),
"FL" => &periodic_table::elements::FL, "CU" => Some(&periodic_table::elements::CU),
"FM" => &periodic_table::elements::FM, "DB" => Some(&periodic_table::elements::DB),
"FR" => &periodic_table::elements::FR, "DS" => Some(&periodic_table::elements::DS),
"GA" => &periodic_table::elements::GA, "DY" => Some(&periodic_table::elements::DY),
"GD" => &periodic_table::elements::GD, "ER" => Some(&periodic_table::elements::ER),
"GE" => &periodic_table::elements::GE, "ES" => Some(&periodic_table::elements::ES),
"H" => &periodic_table::elements::H, "EU" => Some(&periodic_table::elements::EU),
"HE" => &periodic_table::elements::HE, "FE" => Some(&periodic_table::elements::FE),
"HF" => &periodic_table::elements::HF, "FL" => Some(&periodic_table::elements::FL),
"HG" => &periodic_table::elements::HG, "FM" => Some(&periodic_table::elements::FM),
"HO" => &periodic_table::elements::HO, "FR" => Some(&periodic_table::elements::FR),
"HS" => &periodic_table::elements::HS, "GA" => Some(&periodic_table::elements::GA),
"I" => &periodic_table::elements::I, "GD" => Some(&periodic_table::elements::GD),
"IN" => &periodic_table::elements::IN, "GE" => Some(&periodic_table::elements::GE),
"IR" => &periodic_table::elements::IR, "HE" => Some(&periodic_table::elements::HE),
"K" => &periodic_table::elements::K, "HF" => Some(&periodic_table::elements::HF),
"KR" => &periodic_table::elements::KR, "HG" => Some(&periodic_table::elements::HG),
"LA" => &periodic_table::elements::LA, "HO" => Some(&periodic_table::elements::HO),
"LI" => &periodic_table::elements::LI, "HS" => Some(&periodic_table::elements::HS),
"LR" => &periodic_table::elements::LR, "IN" => Some(&periodic_table::elements::IN),
"LU" => &periodic_table::elements::LU, "IR" => Some(&periodic_table::elements::IR),
"LV" => &periodic_table::elements::LV, "KR" => Some(&periodic_table::elements::KR),
"MC" => &periodic_table::elements::MC, "LA" => Some(&periodic_table::elements::LA),
"MD" => &periodic_table::elements::MD, "LI" => Some(&periodic_table::elements::LI),
"MG" => &periodic_table::elements::MG, "LR" => Some(&periodic_table::elements::LR),
"MN" => &periodic_table::elements::MN, "LU" => Some(&periodic_table::elements::LU),
"MO" => &periodic_table::elements::MO, "LV" => Some(&periodic_table::elements::LV),
"MT" => &periodic_table::elements::MT, "MC" => Some(&periodic_table::elements::MC),
"N" => &periodic_table::elements::N, "MD" => Some(&periodic_table::elements::MD),
"NA" => &periodic_table::elements::NA, "MG" => Some(&periodic_table::elements::MG),
"NB" => &periodic_table::elements::NB, "MN" => Some(&periodic_table::elements::MN),
"ND" => &periodic_table::elements::ND, "MO" => Some(&periodic_table::elements::MO),
"NE" => &periodic_table::elements::NE, "MT" => Some(&periodic_table::elements::MT),
"NH" => &periodic_table::elements::NH, "NA" => Some(&periodic_table::elements::NA),
"NI" => &periodic_table::elements::NI, "NB" => Some(&periodic_table::elements::NB),
"NO" => &periodic_table::elements::NO, "ND" => Some(&periodic_table::elements::ND),
"NP" => &periodic_table::elements::NP, "NE" => Some(&periodic_table::elements::NE),
"O" => &periodic_table::elements::O, "NH" => Some(&periodic_table::elements::NH),
"OG" => &periodic_table::elements::OG, "NI" => Some(&periodic_table::elements::NI),
"OS" => &periodic_table::elements::OS, "NO" => Some(&periodic_table::elements::NO),
"P" => &periodic_table::elements::P, "NP" => Some(&periodic_table::elements::NP),
"PA" => &periodic_table::elements::PA, "OG" => Some(&periodic_table::elements::OG),
"PB" => &periodic_table::elements::PB, "OS" => Some(&periodic_table::elements::OS),
"PD" => &periodic_table::elements::PD, "PA" => Some(&periodic_table::elements::PA),
"PM" => &periodic_table::elements::PM, "PB" => Some(&periodic_table::elements::PB),
"PO" => &periodic_table::elements::PO, "PD" => Some(&periodic_table::elements::PD),
"PR" => &periodic_table::elements::PR, "PM" => Some(&periodic_table::elements::PM),
"PT" => &periodic_table::elements::PT, "PO" => Some(&periodic_table::elements::PO),
"PU" => &periodic_table::elements::PU, "PR" => Some(&periodic_table::elements::PR),
"RA" => &periodic_table::elements::RA, "PT" => Some(&periodic_table::elements::PT),
"RB" => &periodic_table::elements::RB, "PU" => Some(&periodic_table::elements::PU),
"RE" => &periodic_table::elements::RE, "RA" => Some(&periodic_table::elements::RA),
"RF" => &periodic_table::elements::RF, "RB" => Some(&periodic_table::elements::RB),
"RG" => &periodic_table::elements::RG, "RE" => Some(&periodic_table::elements::RE),
"RH" => &periodic_table::elements::RH, "RF" => Some(&periodic_table::elements::RF),
"RN" => &periodic_table::elements::RN, "RG" => Some(&periodic_table::elements::RG),
"RU" => &periodic_table::elements::RU, "RH" => Some(&periodic_table::elements::RH),
"S" => &periodic_table::elements::S, "RN" => Some(&periodic_table::elements::RN),
"SB" => &periodic_table::elements::SB, "RU" => Some(&periodic_table::elements::RU),
"SC" => &periodic_table::elements::SC, "SB" => Some(&periodic_table::elements::SB),
"SE" => &periodic_table::elements::SE, "SC" => Some(&periodic_table::elements::SC),
"SG" => &periodic_table::elements::SG, "SE" => Some(&periodic_table::elements::SE),
"SI" => &periodic_table::elements::SI, "SG" => Some(&periodic_table::elements::SG),
"SM" => &periodic_table::elements::SM, "SI" => Some(&periodic_table::elements::SI),
"SN" => &periodic_table::elements::SN, "SM" => Some(&periodic_table::elements::SM),
"SR" => &periodic_table::elements::SR, "SN" => Some(&periodic_table::elements::SN),
"TA" => &periodic_table::elements::TA, "SR" => Some(&periodic_table::elements::SR),
"TB" => &periodic_table::elements::TB, "TA" => Some(&periodic_table::elements::TA),
"TC" => &periodic_table::elements::TC, "TB" => Some(&periodic_table::elements::TB),
"TE" => &periodic_table::elements::TE, "TC" => Some(&periodic_table::elements::TC),
"TH" => &periodic_table::elements::TH, "TE" => Some(&periodic_table::elements::TE),
"TI" => &periodic_table::elements::TI, "TH" => Some(&periodic_table::elements::TH),
"TL" => &periodic_table::elements::TL, "TI" => Some(&periodic_table::elements::TI),
"TM" => &periodic_table::elements::TM, "TL" => Some(&periodic_table::elements::TL),
"TS" => &periodic_table::elements::TS, "TM" => Some(&periodic_table::elements::TM),
"U" => &periodic_table::elements::U, "TS" => Some(&periodic_table::elements::TS),
"V" => &periodic_table::elements::V, "XE" => Some(&periodic_table::elements::XE),
"W" => &periodic_table::elements::W, "YB" => Some(&periodic_table::elements::YB),
"XE" => &periodic_table::elements::XE, "ZN" => Some(&periodic_table::elements::ZN),
"Y" => &periodic_table::elements::Y, "ZR" => Some(&periodic_table::elements::ZR),
"YB" => &periodic_table::elements::YB, _ => panic!("Could not find element")
"ZN" => &periodic_table::elements::ZN,
"ZR" => &periodic_table::elements::ZR,
_ => { panic!("element not matched") }
}; };
println!("{:?}", element_info); char_before = None;
} else {
println!("char_before is none");
element = match char.to_uppercase().next().unwrap() {
'B' => Some(&periodic_table::elements::B),
'C' => Some(&periodic_table::elements::C),
'F' => Some(&periodic_table::elements::F),
'H' => Some(&periodic_table::elements::H),
'I' => Some(&periodic_table::elements::I),
'K' => Some(&periodic_table::elements::K),
'N' => Some(&periodic_table::elements::N),
'O' => Some(&periodic_table::elements::O),
'P' => Some(&periodic_table::elements::P),
'S' => Some(&periodic_table::elements::S),
'U' => Some(&periodic_table::elements::U),
'V' => Some(&periodic_table::elements::V),
'W' => Some(&periodic_table::elements::W),
'Y' => Some(&periodic_table::elements::Y),
_ => None
};
if element.is_none() {
char_before = Some(char);
}
}
} else if char.is_ascii_digit() {
println!("matched ascii digit");
todo!();
}
}
if element.is_some() {
element_line.push(element.unwrap());
}
println!("{:#?}", element_line);
} }