use std::fmt;
pub type ParseResult<T> = Result<T, CssValueParseError>;
#[derive(Debug, Clone, PartialEq)]
pub enum CssValueParseError {
EmptyInput,
InvalidUnit(String),
InvalidNumber(String),
InvalidExpression(String),
UnterminatedFunction(String),
UnexpectedToken(String),
MissingArgument(String),
ParseError(String),
ParseErrorWithoutMessage,
}
impl fmt::Display for CssValueParseError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::EmptyInput => write!(f, "Input is empty"),
Self::InvalidUnit(unit) => write!(f, "Invalid CSS unit: {}", unit),
Self::InvalidNumber(num) => write!(f, "Invalid number format: {}", num),
Self::InvalidExpression(expr) => write!(f, "Invalid expression: {}", expr),
Self::UnterminatedFunction(func) => write!(f, "Unterminated function: {}", func),
Self::UnexpectedToken(token) => write!(f, "Unexpected token: {}", token),
Self::MissingArgument(arg) => write!(f, "Missing required argument: {}", arg),
Self::ParseError(msg) => write!(f, "Parse error: {}", msg),
Self::ParseErrorWithoutMessage => write!(f, "Parse error"),
}
}
}
impl std::error::Error for CssValueParseError {}