use std::fmt;
use svgparser::{
Error as ParseError,
ErrorPos,
};
use simplecss::Error as CssParseError;
#[derive(PartialEq)]
pub enum Error {
ElementMustHaveAnId,
ElementCrosslink,
ParseError(ParseError),
CssParseError(CssParseError),
NoSvgElement,
EmptyDocument,
UnsupportedCSS(ErrorPos),
InvalidCSS(ErrorPos),
UnsupportedEntity(ErrorPos),
UnsupportedPaintFallback(String), BrokenFuncIri(String), InvalidEncoding,
MissingAttribute(String, String), }
impl fmt::Display for Error {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match *self {
Error::ElementMustHaveAnId =>
write!(f, "Element must have an id"),
Error::ElementCrosslink =>
write!(f, "Element crosslink"),
Error::ParseError(e) =>
write!(f, "{}", e),
Error::CssParseError(e) =>
write!(f, "{:?}", e),
Error::NoSvgElement =>
write!(f, "Document didn't have an SVG element"),
Error::EmptyDocument =>
write!(f, "Document didn't have any nodes"),
Error::UnsupportedCSS(ref pos) =>
write!(f, "Unsupported CSS at {}", pos),
Error::InvalidCSS(ref pos) =>
write!(f, "Invalid CSS at {}", pos),
Error::UnsupportedEntity(ref pos) =>
write!(f, "Unsupported ENTITY data at {}", pos),
Error::UnsupportedPaintFallback(ref iri) =>
write!(f, "Valid FuncIRI(#{}) with fallback value is not supported", iri),
Error::BrokenFuncIri(ref iri) =>
write!(f, "The 'use' element with a broken filter attribute('#{}') \
is not supported", iri),
Error::InvalidEncoding =>
write!(f, "The input data is not a valid UTF-8 string"),
Error::MissingAttribute(ref tag_name, ref attr_name) =>
write!(f, "The attribute '{}' is missing in the '{}' element", attr_name, tag_name),
}
}
}
impl fmt::Debug for Error {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{}", &self)
}
}
impl From<ParseError> for Error {
fn from(value: ParseError) -> Error {
Error::ParseError(value)
}
}
impl From<CssParseError> for Error {
fn from(value: CssParseError) -> Error {
Error::CssParseError(value)
}
}