optionally implement minidom::IntoAttributeValue

Emmanuel Gil Peyrot created

Change summary

Cargo.toml |  1 +
src/lib.rs | 21 +++++++++++++++++++++
2 files changed, 22 insertions(+)

Detailed changes

Cargo.toml 🔗

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

src/lib.rs 🔗

@@ -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)]
 mod tests {
     use super::*;
@@ -380,4 +393,12 @@ mod tests {
     fn serialise() {
         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"));
+    }
 }