handle single and double chars seperatly
This commit is contained in:
parent
56174b08a9
commit
1e99cbbb85
287
src/main.rs
287
src/main.rs
@ -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,
|
char_before = None;
|
||||||
_ => { panic!("element not matched") }
|
} else {
|
||||||
};
|
println!("char_before is none");
|
||||||
println!("{:?}", element_info);
|
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);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user