sandwich/src/eval.rs

36 lines
989 B
Rust
Raw Normal View History

pub fn do_math(arguments: String, operator: char) -> u32 {
2021-02-04 19:47:55 +00:00
let split_args = arguments.split("-").collect::<Vec<&str>>();
let num1: u32 = match split_args[0].parse() {
Ok(num) => num,
2021-02-08 14:52:12 +00:00
Err(_e) => panic!("ArgumentError: Not a number: {}", split_args[0]),
2021-02-04 19:47:55 +00:00
};
let num2: u32 = match split_args[1].parse() {
Ok(num) => num,
2021-02-08 14:52:12 +00:00
Err(_e) => panic!("ArgumentError: Not a number: {}", split_args[1]),
2021-02-04 19:47:55 +00:00
};
2021-02-08 14:52:12 +00:00
2021-02-04 19:47:55 +00:00
match operator {
'+' => num1 + num2,
'-' => num1 - num2,
'*' => num1 * num2,
'/' => num1 / num2,
2021-02-08 14:52:12 +00:00
_ => panic!("SyntaxError: Unknown operator {}", operator),
2021-02-04 19:47:55 +00:00
}
2021-02-08 14:52:12 +00:00
}
2021-02-16 18:23:40 +00:00
pub fn args_or_comments(arguments: &str) -> String {
let argument_vec: Vec<char> = 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
}