aboutsummaryrefslogtreecommitdiffstats
path: root/src/xml
diff options
context:
space:
mode:
authorEdward Barnard2015-12-30 17:21:28 +0100
committerEdward Barnard2015-12-30 17:21:28 +0100
commitbca7a4a2335a10c6fb86702593fb8ebbdd5d6c40 (patch)
tree787fd7b846a83e641c3e2cd2fcc7aad2ca008b81 /src/xml
parent240d0ceeb7fa6d961dcae0cd3fe1682bb3bed891 (diff)
downloadrust-plist-bca7a4a2335a10c6fb86702593fb8ebbdd5d6c40.tar.bz2
Improve error handling
Diffstat (limited to 'src/xml')
-rw-r--r--src/xml/reader.rs7
-rw-r--r--src/xml/writer.rs11
2 files changed, 17 insertions, 1 deletions
diff --git a/src/xml/reader.rs b/src/xml/reader.rs
index 9f57ab4..82d1be5 100644
--- a/src/xml/reader.rs
+++ b/src/xml/reader.rs
@@ -1,4 +1,5 @@
use chrono::{DateTime, UTC};
+use chrono::format::ParseError as ChronoParseError;
use rustc_serialize::base64::FromBase64;
use std::io::Read;
use std::str::FromStr;
@@ -6,6 +7,12 @@ use xml_rs::reader::{EventReader as XmlEventReader, ParserConfig, XmlEvent};
use {Error, Result, PlistEvent};
+impl From<ChronoParseError> for Error {
+ fn from(_: ChronoParseError) -> Error {
+ Error::InvalidData
+ }
+}
+
pub struct EventReader<R: Read> {
xml_reader: XmlEventReader<R>,
queued_event: Option<XmlEvent>,
diff --git a/src/xml/writer.rs b/src/xml/writer.rs
index 2442658..d165f2c 100644
--- a/src/xml/writer.rs
+++ b/src/xml/writer.rs
@@ -4,11 +4,20 @@ use std::io::Write;
use xml_rs::attribute::Attribute;
use xml_rs::name::Name;
use xml_rs::namespace::Namespace;
-use xml_rs::writer::{EventWriter as XmlEventWriter, EmitterConfig};
+use xml_rs::writer::{Error as XmlWriterError, EventWriter as XmlEventWriter, EmitterConfig};
use xml_rs::writer::events::XmlEvent as WriteXmlEvent;
use {Error, EventWriter as PlistEventWriter, PlistEvent, Result};
+impl From<XmlWriterError> for Error {
+ fn from(err: XmlWriterError) -> Error {
+ match err {
+ XmlWriterError::Io(err) => Error::Io(err),
+ _ => Error::InvalidData,
+ }
+ }
+}
+
enum Element {
Dictionary(DictionaryState),
Array,