optionally implement minidom::IntoAttributeValue

This commit is contained in:
Emmanuel Gil Peyrot 2017-07-29 05:11:30 +01:00
parent 3882a3ba96
commit 5bd0feb178
2 changed files with 22 additions and 0 deletions

View file

@ -14,3 +14,4 @@ license = "LGPL-3.0+"
gitlab = { repository = "lumi/jid-rs" } gitlab = { repository = "lumi/jid-rs" }
[dependencies] [dependencies]
minidom = { version = "0.4.4", optional = true }

View file

@ -359,6 +359,19 @@ impl Jid {
} }
#[cfg(feature = "minidom")]
extern crate minidom;
#[cfg(feature = "minidom")]
use minidom::IntoAttributeValue;
#[cfg(feature = "minidom")]
impl IntoAttributeValue for Jid {
fn into_attribute_value(self) -> Option<String> {
Some(String::from(self))
}
}
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use super::*; use super::*;
@ -380,4 +393,12 @@ mod tests {
fn serialise() { fn serialise() {
assert_eq!(String::from(Jid::full("a", "b", "c")), String::from("a@b/c")); assert_eq!(String::from(Jid::full("a", "b", "c")), String::from("a@b/c"));
} }
#[cfg(feature = "minidom")]
#[test]
fn minidom() {
let elem: minidom::Element = "<message from='a@b/c'/>".parse().unwrap();
let to: Jid = elem.attr("from").unwrap().parse().unwrap();
assert_eq!(to, Jid::full("a", "b", "c"));
}
} }