Implement basic error handling

This commit is contained in:
ConnorSkees 2020-01-06 18:26:07 -05:00
parent d2f9fc8e78
commit 26ae7f38b4

View File

@ -1 +1,38 @@
use crate::common::Pos;
use std::error::Error;
use std::fmt::{self, Display};
use std::io;
#[derive(Debug)]
pub struct SassError {
message: String,
pos: Pos
}
impl SassError {
pub fn new<S: Into<String>>(message: S, pos: Pos) -> Self {
SassError { message: message.into(), pos }
}
pub fn unexpected_eof(pos: Pos) -> Self {
SassError { message: String::from("unexpected eof"), pos }
}
}
impl Display for SassError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "error: {} at {}", self.message, self.pos)
}
}
impl From<io::Error> for SassError {
fn from(error: io::Error) -> Self {
SassError{ pos: Pos::new(), message: format!("{}", error) }
}
}
impl Error for SassError {
fn description(&self) -> &'static str {
"SASS parsing error"
}
}