2024-11-10 14:31:43 +00:00
|
|
|
use std::{num::ParseIntError, str::Utf8Error};
|
|
|
|
|
2024-11-19 14:52:14 +00:00
|
|
|
use crate::element::{Name, NamespaceDeclaration};
|
2024-06-27 20:22:16 +01:00
|
|
|
|
2024-11-10 17:57:05 +00:00
|
|
|
#[derive(Debug)]
|
2024-06-27 20:22:16 +01:00
|
|
|
pub enum Error {
|
|
|
|
ReadError(std::io::Error),
|
|
|
|
Utf8Error(Utf8Error),
|
|
|
|
ParseError(String),
|
2024-11-10 14:31:43 +00:00
|
|
|
EntityProcessError(String),
|
|
|
|
// TODO: better choice for failures than string
|
|
|
|
InvalidCharRef(String),
|
2024-11-19 14:52:14 +00:00
|
|
|
DuplicateNameSpaceDeclaration(NamespaceDeclaration),
|
2024-11-10 14:31:43 +00:00
|
|
|
DuplicateAttribute(String),
|
|
|
|
UnqualifiedNamespace(String),
|
|
|
|
MismatchedEndTag(String, String),
|
2024-11-10 22:28:55 +00:00
|
|
|
NotInElement(String),
|
2024-11-19 14:52:14 +00:00
|
|
|
ExtraData(String),
|
2024-06-27 20:22:16 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
impl From<std::io::Error> for Error {
|
|
|
|
fn from(e: std::io::Error) -> Self {
|
|
|
|
Self::ReadError(e)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
impl From<Utf8Error> for Error {
|
|
|
|
fn from(e: Utf8Error) -> Self {
|
|
|
|
Self::Utf8Error(e)
|
|
|
|
}
|
|
|
|
}
|
2024-11-10 14:31:43 +00:00
|
|
|
|
|
|
|
impl From<ParseIntError> for Error {
|
|
|
|
fn from(e: ParseIntError) -> Self {
|
|
|
|
Self::InvalidCharRef(e.to_string())
|
|
|
|
}
|
|
|
|
}
|