Detailed changes
@@ -15,8 +15,8 @@
use crate::convert::IntoAttributeValue;
use crate::error::{Error, Result};
use crate::namespaces::NSChoice;
-use crate::prefixes::{Prefix, Namespace, Prefixes};
use crate::node::Node;
+use crate::prefixes::{Namespace, Prefix, Prefixes};
use std::collections::{btree_map, BTreeMap};
use std::io::Write;
@@ -178,7 +178,7 @@ impl Element {
None,
None,
BTreeMap::new(),
- Vec::new()
+ Vec::new(),
),
}
}
@@ -456,7 +456,11 @@ impl Element {
}
/// Like `write_to()` but without the `<?xml?>` prelude
- pub fn write_to_inner<W: Write>(&self, writer: &mut EventWriter<W>, all_prefixes: &mut BTreeMap<Prefix, Namespace>) -> Result<()> {
+ pub fn write_to_inner<W: Write>(
+ &self,
+ writer: &mut EventWriter<W>,
+ all_prefixes: &mut BTreeMap<Prefix, Namespace>,
+ ) -> Result<()> {
let local_prefixes: &BTreeMap<Option<String>, String> = self.prefixes.declared_prefixes();
// Element namespace
@@ -485,7 +489,7 @@ impl Element {
}
(Some(format!("ns{}", prefix_n)), true)
}
- },
+ }
// Some prefix has already been declared (or is going to be) for our namespace. We
// don't need to declare a new one. We do however need to remember which one to use in
// the tag name.
@@ -509,7 +513,7 @@ impl Element {
let key = format!("xmlns");
start.push_attribute((key.as_bytes(), self.namespace.as_bytes()));
all_prefixes.insert(self_prefix.0, self.namespace.clone());
- },
+ }
_ => (),
};
@@ -525,7 +529,7 @@ impl Element {
start.push_attribute((key.as_bytes(), ns.as_ref()));
all_prefixes.insert(prefix.clone(), ns.clone());
- },
+ }
}
}
@@ -834,7 +838,11 @@ fn split_element_name<S: AsRef<str>>(s: S) -> Result<(Option<String>, String)> {
}
}
-fn build_element<R: BufRead>(reader: &EventReader<R>, event: &BytesStart, prefixes: &mut BTreeMap<Prefix, Namespace>) -> Result<Element> {
+fn build_element<R: BufRead>(
+ reader: &EventReader<R>,
+ event: &BytesStart,
+ prefixes: &mut BTreeMap<Prefix, Namespace>,
+) -> Result<Element> {
let (prefix, name) = split_element_name(str::from_utf8(event.name())?)?;
let mut local_prefixes = BTreeMap::new();
@@ -879,7 +887,7 @@ fn build_element<R: BufRead>(reader: &EventReader<R>, event: &BytesStart, prefix
Some(prefix),
local_prefixes,
attributes,
- Vec::new()
+ Vec::new(),
))
}
@@ -994,7 +1002,11 @@ pub struct ElementBuilder {
impl ElementBuilder {
/// Sets a custom prefix. It is not possible to set the same prefix twice.
- pub fn prefix<S: Into<Namespace>>(mut self, prefix: Prefix, namespace: S) -> Result<ElementBuilder> {
+ pub fn prefix<S: Into<Namespace>>(
+ mut self,
+ prefix: Prefix,
+ namespace: S,
+ ) -> Result<ElementBuilder> {
if let Some(_) = self.root.prefixes.get(&prefix) {
return Err(Error::DuplicatePrefix);
}
@@ -1102,7 +1114,10 @@ mod tests {
assert_eq!(elem.name(), String::from("bar"));
assert_eq!(elem.ns(), String::from("ns1"));
// Ensure the prefix is properly added to the store
- assert_eq!(elem.prefixes.get(&Some(String::from("foo"))), Some(&String::from("ns1")));
+ assert_eq!(
+ elem.prefixes.get(&Some(String::from("foo"))),
+ Some(&String::from("ns1"))
+ );
}
#[test]
@@ -80,10 +80,7 @@ impl std::fmt::Display for Error {
}
Error::InvalidElement => write!(fmt, "the XML element is invalid"),
Error::InvalidPrefix => write!(fmt, "the prefix is invalid"),
- Error::MissingNamespace => write!(
- fmt,
- "the XML element is missing a namespace",
- ),
+ Error::MissingNamespace => write!(fmt, "the XML element is missing a namespace",),
Error::NoComments => write!(
fmt,
"a comment has been found even though comments are forbidden"
@@ -80,8 +80,8 @@ pub mod convert;
pub mod element;
pub mod error;
mod namespaces;
-mod prefixes;
pub mod node;
+mod prefixes;
#[cfg(test)]
mod tests;
@@ -11,8 +11,8 @@
use crate::element::{Element, ElementBuilder};
use crate::error::Result;
-use std::io::Write;
use std::collections::BTreeMap;
+use std::io::Write;
use quick_xml::events::{BytesText, Event};
use quick_xml::Writer as EventWriter;
@@ -160,7 +160,11 @@ impl Node {
}
#[doc(hidden)]
- pub(crate) fn write_to_inner<W: Write>(&self, writer: &mut EventWriter<W>, prefixes: &mut BTreeMap<Option<String>, String>) -> Result<()> {
+ pub(crate) fn write_to_inner<W: Write>(
+ &self,
+ writer: &mut EventWriter<W>,
+ prefixes: &mut BTreeMap<Option<String>, String>,
+ ) -> Result<()> {
match *self {
Node::Element(ref elmt) => elmt.write_to_inner(writer, prefixes)?,
Node::Text(ref s) => {
@@ -49,12 +49,17 @@ fn reader_deduplicate_prefixes() {
// parent ns with the same prefix.
let _: Element = r#"<root xmlns="ns1"><child/></root>"#.parse().unwrap();
let _: Element = r#"<p1:root xmlns:p1="ns1"><p1:child/></p1:root>"#.parse().unwrap();
- let _: Element = r#"<root xmlns="ns1"><child xmlns:p1="ns2"><p1:grandchild/></child></root>"#.parse().unwrap();
+ let _: Element = r#"<root xmlns="ns1"><child xmlns:p1="ns2"><p1:grandchild/></child></root>"#
+ .parse()
+ .unwrap();
match r#"<p1:root xmlns:p1="ns1"><child/></p1:root>"#.parse::<Element>() {
Err(Error::MissingNamespace) => (),
Err(err) => panic!("No or wrong error: {:?}", err),
- Ok(elem) => panic!("Got Element: {}; was expecting Error::MissingNamespace", String::from(&elem)),
+ Ok(elem) => panic!(
+ "Got Element: {}; was expecting Error::MissingNamespace",
+ String::from(&elem)
+ ),
}
}
@@ -64,7 +69,11 @@ fn reader_no_deduplicate_sibling_prefixes() {
match r#"<root xmlns="ns1"><p1:child1 xmlns:p1="ns2"/><p1:child2/></root>"#.parse::<Element>() {
Err(Error::MissingNamespace) => (),
Err(err) => panic!("No or wrong error: {:?}", err),
- Ok(elem) => panic!("Got Element:\n{:?}\n{}\n; was expecting Error::MissingNamespace", elem, String::from(&elem)),
+ Ok(elem) => panic!(
+ "Got Element:\n{:?}\n{}\n; was expecting Error::MissingNamespace",
+ elem,
+ String::from(&elem)
+ ),
}
}
@@ -156,7 +165,8 @@ fn writer_with_prefix() {
.prefix(None, "ns2")
.unwrap()
.build();
- assert_eq!(String::from(&root),
+ assert_eq!(
+ String::from(&root),
r#"<p1:root xmlns="ns2" xmlns:p1="ns1"/>"#,
);
}
@@ -183,7 +193,10 @@ fn writer_no_prefix_namespace_child() {
.build();
let root = Element::builder("root", "ns1").append(child).build();
// TODO: Same remark as `writer_no_prefix_namespace`.
- assert_eq!(String::from(&root), r#"<root xmlns="ns1"><ns0:child xmlns:ns0="ns2" xmlns="ns3"/></root>"#);
+ assert_eq!(
+ String::from(&root),
+ r#"<root xmlns="ns1"><ns0:child xmlns:ns0="ns2" xmlns="ns3"/></root>"#
+ );
}
#[test]
@@ -194,7 +207,10 @@ fn writer_prefix_namespace_child() {
.unwrap()
.append(child)
.build();
- assert_eq!(String::from(&root), r#"<p1:root xmlns:p1="ns1"><p1:child/></p1:root>"#);
+ assert_eq!(
+ String::from(&root),
+ r#"<p1:root xmlns:p1="ns1"><p1:child/></p1:root>"#
+ );
}
#[test]
@@ -209,7 +225,8 @@ fn writer_with_prefix_deduplicate() {
.unwrap()
.append(child)
.build();
- assert_eq!(String::from(&root),
+ assert_eq!(
+ String::from(&root),
r#"<p1:root xmlns="ns2" xmlns:p1="ns1"><p1:child/></p1:root>"#,
);
@@ -245,7 +262,10 @@ fn writer_escapes_text() {
{
root.write_to(&mut writer).unwrap();
}
- assert_eq!(String::from_utf8(writer).unwrap(), r#"<root xmlns="ns1"><3</root>"#);
+ assert_eq!(
+ String::from_utf8(writer).unwrap(),
+ r#"<root xmlns="ns1"><3</root>"#
+ );
}
#[test]
@@ -363,10 +383,7 @@ fn namespace_prefixed() {
.parse()
.unwrap();
assert_eq!(elem.name(), "features");
- assert_eq!(
- elem.ns(),
- "http://etherx.jabber.org/streams".to_owned(),
- );
+ assert_eq!(elem.ns(), "http://etherx.jabber.org/streams".to_owned(),);
}
#[test]
@@ -386,10 +403,7 @@ fn namespace_inherited_prefixed1() {
let elem: Element = "<stream:features xmlns:stream='http://etherx.jabber.org/streams' xmlns='jabber:client'><message xmlns='jabber:client' /></stream:features>"
.parse().unwrap();
assert_eq!(elem.name(), "features");
- assert_eq!(
- elem.ns(),
- "http://etherx.jabber.org/streams".to_owned(),
- );
+ assert_eq!(elem.ns(), "http://etherx.jabber.org/streams".to_owned(),);
let child = elem.children().next().unwrap();
assert_eq!(child.name(), "message");
assert_eq!(child.ns(), "jabber:client".to_owned());
@@ -400,10 +414,7 @@ fn namespace_inherited_prefixed2() {
let elem: Element = "<stream xmlns='http://etherx.jabber.org/streams' xmlns:jabber='jabber:client'><jabber:message xmlns:jabber='jabber:client' /></stream>"
.parse().unwrap();
assert_eq!(elem.name(), "stream");
- assert_eq!(
- elem.ns(),
- "http://etherx.jabber.org/streams".to_owned(),
- );
+ assert_eq!(elem.ns(), "http://etherx.jabber.org/streams".to_owned(),);
let child = elem.children().next().unwrap();
assert_eq!(child.name(), "message");
assert_eq!(child.ns(), "jabber:client".to_owned());