diff --git a/src/de.rs b/src/de.rs index 44ce83e..dce7e2c 100644 --- a/src/de.rs +++ b/src/de.rs @@ -428,6 +428,13 @@ pub fn from_reader(reader: R) -> Result de::Deserialize::deserialize(&mut de) } +/// Deserializes an instance of type `T` from a byte stream containing an ASCII encoded plist. +pub fn from_reader_ascii(reader: R) -> Result { + let reader = stream::AsciiReader::new(reader); + let mut de = Deserializer::new(reader); + de::Deserialize::deserialize(&mut de) +} + /// Deserializes an instance of type `T` from a byte stream containing an XML encoded plist. pub fn from_reader_xml(reader: R) -> Result { let reader = stream::XmlReader::new(reader); diff --git a/src/lib.rs b/src/lib.rs index 9322d8e..9ea40b4 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -118,7 +118,7 @@ mod ser; pub use self::{de::Deserializer, ser::Serializer}; #[cfg(feature = "serde")] pub use self::{ - de::{from_bytes, from_file, from_reader, from_reader_xml, from_value}, + de::{from_bytes, from_file, from_reader, from_reader_ascii, from_reader_xml, from_value}, ser::{ to_file_binary, to_file_xml, to_value, to_writer_binary, to_writer_xml, to_writer_xml_with_options, diff --git a/src/value.rs b/src/value.rs index f7d21d4..6def913 100644 --- a/src/value.rs +++ b/src/value.rs @@ -8,7 +8,8 @@ use std::{ use crate::{ error::{self, Error, ErrorKind, EventKind}, stream::{ - private, BinaryWriter, Event, Events, Reader, Writer, XmlReader, XmlWriteOptions, XmlWriter, + private, AsciiReader, BinaryWriter, Event, Events, Reader, Writer, XmlReader, + XmlWriteOptions, XmlWriter, }, u64_to_usize, Date, Dictionary, Integer, Uid, }; @@ -41,7 +42,13 @@ impl Value { Value::from_events(reader) } - /// Reads a `Value` from a seekable byte stream containing an XML encoded plist. + /// Reads a `Value` from a byte stream containing an ASCII encoded plist. + pub fn from_reader_ascii(reader: R) -> Result { + let reader = AsciiReader::new(reader); + Value::from_events(reader) + } + + /// Reads a `Value` from a byte stream containing an XML encoded plist. pub fn from_reader_xml(reader: R) -> Result { let reader = XmlReader::new(reader); Value::from_events(reader)