#[allow(unused_imports)]
use xml::writer::XmlEvent;
#[macro_export]
macro_rules! emit_xml {
($target:expr; $text:expr) => {
{
$target.write(XmlEvent::from(XmlEvent::characters($text)))?;
$crate::Result::Ok(())
}
};
($target:expr, $tag:ident; $text:expr) => {
{
$target.write(XmlEvent::from(XmlEvent::start_element(stringify!($tag))))?;
$target.write(XmlEvent::from(XmlEvent::characters($text)))?;
$target.write(XmlEvent::from(XmlEvent::end_element().name(stringify!($tag))))?;
$crate::Result::Ok(())
}
};
($target:expr, $tag:ident, $($attr:ident: $val:expr),+; $text:expr) => {
{
$target.write(XmlEvent::from(XmlEvent::start_element(stringify!($tag))
$(
.attr(stringify!($attr), $val)
)+
))?;
$target.write(XmlEvent::from(XmlEvent::characters($text)))?;
$target.write(XmlEvent::from(XmlEvent::end_element().name(stringify!($tag))))?;
$crate::Result::Ok(())
}
};
($target:expr, $tag:ident => $block:block) => {
{
$target.write(XmlEvent::from(XmlEvent::start_element(stringify!($tag))))?;
$block?;
$target.write(XmlEvent::from(XmlEvent::end_element().name(stringify!($tag))))?;
$crate::Result::Ok(())
}
};
($target:expr, $tag:ident, $($attr:ident: $val:expr),+ => $block:block) => {
{
$target.write(XmlEvent::from(XmlEvent::start_element(stringify!($tag))
$(
.attr(stringify!($attr), $val)
)+
))?;
let result: $crate::Result<()> = $block;
result?;
$target.write(XmlEvent::from(XmlEvent::end_element().name(stringify!($tag))))?;
$crate::Result::Ok(())
}
};
($target:expr, $tag:ident) => {
{
$target.write(XmlEvent::from(XmlEvent::start_element(stringify!($tag))))?;
$target.write(XmlEvent::from(XmlEvent::end_element().name(stringify!($tag))))?;
$crate::Result::Ok(())
}
};
($target:expr, $tag:ident, $($attr:ident: $val:expr),+) => {
{
$target.write(XmlEvent::from(XmlEvent::start_element(stringify!($tag))
$(
.attr(stringify!($attr), $val)
)+
))?;
$target.write(XmlEvent::from(XmlEvent::end_element().name(stringify!($tag))))?;
$crate::Result::Ok(())
}
};
}