minor improvements to rustical_xml errors

This commit is contained in:
Lennart
2025-01-04 20:03:56 +01:00
parent fd4ed57775
commit a304714de8
7 changed files with 38 additions and 17 deletions

View File

@@ -31,7 +31,7 @@ impl Enum {
) -> Result<Self, rustical_xml::XmlDeError> {
#(#variant_branches);*
Err(rustical_xml::XmlDeError::UnknownError)
Err(rustical_xml::XmlDeError::InvalidVariant("could not match".to_owned()))
}
}
}
@@ -162,12 +162,30 @@ impl Enum {
let empty = matches!(event, Event::Empty(_));
match event {
Event::Decl(_) => { /* <?xml ... ?> ignore this */ }
Event::Comment(_) => { /* ignore this */ }
Event::Start(start) | Event::Empty(start) => {
return <Self as ::rustical_xml::XmlDeserialize>::deserialize(&mut reader, &start, empty);
}
_ => return Err(::rustical_xml::XmlDeError::UnknownError),
Event::Eof => return Err(::rustical_xml::XmlDeError::Eof),
Event::Text(bytes_text) => {
return Err(::rustical_xml::XmlDeError::UnsupportedEvent("Text"));
}
Event::CData(cdata) => {
return Err(::rustical_xml::XmlDeError::UnsupportedEvent("CDATA"));
}
Event::Comment(_) => { /* ignore */ }
Event::Decl(_) => {
return Err(::rustical_xml::XmlDeError::UnsupportedEvent("Declaration"));
}
Event::PI(_) => {
return Err(::rustical_xml::XmlDeError::UnsupportedEvent("Processing instruction"));
}
Event::DocType(doctype) => {
return Err(::rustical_xml::XmlDeError::UnsupportedEvent("Doctype in the middle of the document"));
}
Event::End(end) => {
return Err(::rustical_xml::XmlDeError::UnsupportedEvent("Premature end"));
}
};
}
}

View File

@@ -1,11 +1,9 @@
use quick_xml::name::Namespace;
use quick_xml::events::{BytesStart, Event};
use quick_xml::name::ResolveResult;
use std::io::BufRead;
pub use xml_derive::XmlDeserialize;
pub use xml_derive::XmlDocument;
use quick_xml::events::{BytesStart, Event};
use crate::XmlDeError;
use crate::XmlRootTag;
@@ -69,7 +67,7 @@ impl<T: XmlRootTag + XmlDeserialize> XmlDocument for T {
return Self::deserialize(&mut reader, &start, empty);
}
_ => return Err(XmlDeError::UnknownError),
_ => return Err(XmlDeError::UnsupportedEvent("unknown, todo")),
};
}
}

View File

@@ -6,8 +6,6 @@ pub enum XmlDeError {
QuickXmlError(#[from] quick_xml::Error),
#[error(transparent)]
QuickXmlAttrError(#[from] quick_xml::events::attributes::AttrError),
#[error("Unknown error")]
UnknownError,
#[error("Invalid tag [{0}]{1}. Expected [{2}]{3}")]
InvalidTag(String, String, String, String),
#[error("Missing field {0}")]

View File

@@ -57,7 +57,7 @@ impl Value for &str {
self.to_string()
}
fn deserialize(val: &str) -> Result<Self, XmlDeError> {
fn deserialize(_val: &str) -> Result<Self, XmlDeError> {
Err(XmlDeError::Other("TODO: Handle this error".to_owned()))
}
}