use std::fmt;
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct ScriptError {
pub message: String,
pub source_name: Option<String>,
pub line: Option<u32>,
pub column: Option<u32>,
pub stack: Option<String>,
}
impl fmt::Display for ScriptError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.write_str(&self.message)
}
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum MacroError {
Script(ScriptError),
InvalidResult { type_name: String },
Internal(String),
}
impl fmt::Display for MacroError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
MacroError::Script(e) => e.fmt(f),
MacroError::InvalidResult { type_name } => write!(
f,
"JavaScript macro returned value with type of {type_name}, expected string. Try using .toString()"
),
MacroError::Internal(message) => f.write_str(message),
}
}
}
impl std::error::Error for MacroError {}