Cleaned up eval error messages

pull/2/head
Mark 2023-07-31 16:05:48 -07:00
parent b072ff3691
commit 97b64e6bef
Signed by: Mark
GPG Key ID: AD62BB059C2AAEE4
2 changed files with 27 additions and 84 deletions

View File

@ -16,7 +16,6 @@ use super::promptbuffer::PromptBuffer;
use crate::parser;
use crate::command;
use crate::evaluate::evaluate;
use crate::evaluate::EvalError;
use crate::context::Context;
@ -91,7 +90,7 @@ fn do_expression(
match g_evaluated {
Ok(_) => unreachable!(),
Err((l, EvalError::TooBig)) => {
Err((l, e)) => {
write!(
stdout, "{}{}{}{}{}{}\r\n",
color::Fg(color::Red),
@ -103,90 +102,11 @@ fn do_expression(
).unwrap();
write!(
stdout, " {}{}Mathematical Error: {}Number too big{}\r\n\n",
style::Bold,
color::Fg(color::Red),
style::Reset,
color::Fg(color::Reset),
).unwrap();
},
Err((l, EvalError::ZeroDivision)) => {
write!(
stdout, "{}{}{}{}{}{}\r\n",
color::Fg(color::Red),
style::Bold,
" ".repeat(l.pos + 4),
"^".repeat(l.len),
color::Fg(color::Reset),
style::Reset,
).unwrap();
write!(
stdout, " {}{}Mathematical Error: {}Division by zero{}\r\n\n",
style::Bold,
color::Fg(color::Red),
style::Reset,
color::Fg(color::Reset),
).unwrap();
},
Err((l, EvalError::BadMath)) => {
write!(
stdout, "{}{}{}{}{}{}\r\n",
color::Fg(color::Red),
style::Bold,
" ".repeat(l.pos + 4),
"^".repeat(l.len),
color::Fg(color::Reset),
style::Reset,
).unwrap();
write!(
stdout, " {}{}Mathematical Error: {}Failed to evaluate expression{}\r\n\n",
style::Bold,
color::Fg(color::Red),
style::Reset,
color::Fg(color::Reset),
).unwrap();
},
Err((l, EvalError::IncompatibleUnit)) => {
write!(
stdout, "{}{}{}{}{}{}\r\n",
color::Fg(color::Red),
style::Bold,
" ".repeat(l.pos + 4),
"^".repeat(l.len),
color::Fg(color::Reset),
style::Reset,
).unwrap();
write!(
stdout, " {}{}Evaluation Error: {}Incompatible units{}\r\n\n",
style::Bold,
color::Fg(color::Red),
style::Reset,
color::Fg(color::Reset),
).unwrap();
},
Err((l, EvalError::BadDefineName)) => {
write!(
stdout, "{}{}{}{}{}{}\r\n",
color::Fg(color::Red),
style::Bold,
" ".repeat(l.pos + 4),
"^".repeat(l.len),
color::Fg(color::Reset),
style::Reset,
).unwrap();
write!(
stdout, " {}{}Evaluation Error: {}Invalid variable name{}\r\n\n",
stdout, " {}{}Evaluation Error: {}{}{}\r\n\n",
style::Bold,
color::Fg(color::Red),
style::Reset,
e.to_string(),
color::Fg(color::Reset),
).unwrap();
}

View File

@ -11,4 +11,27 @@ pub enum EvalError {
ZeroDivision,
IncompatibleUnit,
BadDefineName
}
}
impl ToString for EvalError {
fn to_string(&self) -> String {
match self {
EvalError::BadMath => {
String::from("Failed to evaluate expression")
},
EvalError::TooBig => {
String::from("Number too big")
},
EvalError::ZeroDivision => {
String::from("Division by zero")
},
EvalError::IncompatibleUnit => {
String::from("Incompatible units")
},
EvalError::BadDefineName => {
String::from("Invalid variable name")
}
}
}
}