diff options
| author | Kevin Ballard | 2018-05-16 14:28:31 -0700 | 
|---|---|---|
| committer | Ed Barnard | 2018-05-16 23:07:03 +0100 | 
| commit | 45ab6d492c1a031485962e17d2af932d8af069d8 (patch) | |
| tree | 98025c990f618acd8aeee4eba3915d802750b4db | |
| parent | ccb313c54e9b9422a1827a0da83ab742fdc1cb7d (diff) | |
| download | rust-plist-45ab6d492c1a031485962e17d2af932d8af069d8.tar.bz2 | |
Update xml-rs to 0.8.0, reimplement plist prologue
xml-rs 0.8.0 has an `inner_mut()` method we can use instead of turning
off character escaping.
| -rw-r--r-- | Cargo.toml | 2 | ||||
| -rw-r--r-- | src/xml/writer.rs | 17 | 
2 files changed, 7 insertions, 12 deletions
| @@ -16,7 +16,7 @@ default = ["serde"]  base64 = "0.9.0"  byteorder = "1.1.0"  humantime = "1.1.1" -xml-rs = "0.7.0" +xml-rs = "0.8.0"  serde = { version = "1.0.2", optional = true }  [dev-dependencies] diff --git a/src/xml/writer.rs b/src/xml/writer.rs index e168128..4facfd2 100644 --- a/src/xml/writer.rs +++ b/src/xml/writer.rs @@ -1,7 +1,6 @@  use base64;  use std::borrow::Cow;  use std::io::Write; -use xml_rs::escape::escape_str_pcdata;  use xml_rs::name::Name;  use xml_rs::namespace::Namespace;  use xml_rs::writer::events::XmlEvent as WriteXmlEvent; @@ -38,7 +37,7 @@ pub struct EventWriter<W: Write> {  impl<W: Write> EventWriter<W> {      pub fn new(writer: W) -> EventWriter<W> { -        let mut config = EmitterConfig::new() +        let config = EmitterConfig::new()              .line_separator("\n")              .indent_string("\t")              .perform_indent(true) @@ -47,7 +46,6 @@ impl<W: Write> EventWriter<W> {              .cdata_to_characters(true)              .keep_element_names_stack(false)              .autopad_comments(true); -        config.perform_escaping = false;          EventWriter {              xml_writer: XmlEventWriter::new_with_config(writer, config), @@ -80,19 +78,16 @@ impl<W: Write> EventWriter<W> {      }      fn write_value(&mut self, value: &str) -> Result<()> { -        self.xml_writer -            .write(WriteXmlEvent::Characters(&escape_str_pcdata(value)))?; +        self.xml_writer.write(WriteXmlEvent::Characters(value))?;          Ok(())      }      fn maybe_end_plist(&mut self) -> Result<()> {          // If there are no more open tags then write the </plist> element          if self.stack.len() == 1 { -            // We didn't tell the xml_writer about the <plist> tag so it thinks we're already at -            // the root. As such, it's not going to prettify our output, so we need to include -            // the newline ourselves. -            self.xml_writer.write(WriteXmlEvent::Characters("\n"))?; -            self.end_element("plist")?; +            // We didn't tell the xml_writer about the <plist> tag so we'll skip telling it +            // about the </plist> tag as well. +            self.xml_writer.inner_mut().write(b"\n</plist>")?;              if let Some(Element::Root) = self.stack.pop() {              } else {                  return Err(Error::InvalidData); @@ -134,7 +129,7 @@ impl<W: Write> PlistEventWriter for EventWriter<W> {  <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">  <plist version="1.0">  "#; -                self.xml_writer.write(WriteXmlEvent::Characters(prologue))?; +                self.xml_writer.inner_mut().write(prologue.as_bytes())?;                  self.stack.push(Element::Root);              } | 
