use std::io; use std::io::Write; pub fn do_math(arguments: String, operator: char) -> u32 { let split_args = arguments.split("-").collect::>(); let num1: u32 = match split_args[0].parse() { Ok(num) => num, Err(_e) => panic!("ArgumentError: Not a number: {}", split_args[0]), }; let num2: u32 = match split_args[1].parse() { Ok(num) => num, Err(_e) => panic!("ArgumentError: Not a number: {}", split_args[1]), }; match operator { '+' => num1 + num2, '-' => num1 - num2, '*' => num1 * num2, '/' => num1 / num2, _ => panic!("SyntaxError: Unknown operator {}", operator), } } pub fn args_or_comments(arguments: &str) -> String { let argument_vec: Vec = arguments.chars().collect(); let mut builder: String = String::from(""); for char in argument_vec { if char == '#' { break; } else { builder.push_str(&char.to_string()); } } builder } pub fn read_stdin(prompt: &str) -> String { print!("{}", prompt); io::stdout().flush().unwrap(); let mut result = String::new(); io::stdin().read_line(&mut result).expect("Expected a string!"); result.trim().to_string() } pub fn inp_or_normal(value: &str) -> String { let value_vec: Vec = value.chars().collect(); if value_vec[0] == '<' { let prompt: String = value_vec[1..].into_iter().collect(); return read_stdin(&prompt); } else { return value.to_string(); } }