Cargo.toml 🔗
@@ -14,3 +14,4 @@ license = "LGPL-3.0+"
gitlab = { repository = "lumi/jid-rs" }
[dependencies]
+minidom = { version = "0.4.4", optional = true }
Emmanuel Gil Peyrot created
Cargo.toml | 1 +
src/lib.rs | 21 +++++++++++++++++++++
2 files changed, 22 insertions(+)
@@ -14,3 +14,4 @@ license = "LGPL-3.0+"
gitlab = { repository = "lumi/jid-rs" }
[dependencies]
+minidom = { version = "0.4.4", optional = true }
@@ -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"));
+ }
}