From bb184822fc281e9fbfcd706a091be2e9d3ac38f4 Mon Sep 17 00:00:00 2001 From: Philipp A Date: Tue, 20 Nov 2018 10:30:53 +0100 Subject: prettified macro --- src/document_tree/elements.rs | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) (limited to 'src/document_tree') diff --git a/src/document_tree/elements.rs b/src/document_tree/elements.rs index 900d1d4..a5519ce 100644 --- a/src/document_tree/elements.rs +++ b/src/document_tree/elements.rs @@ -79,7 +79,7 @@ macro_rules! impl_new {( )} macro_rules! impl_serialize { - ($name: ident, $extra: ident, $childtype: ident) => { + ($name: ident, $extra: ident, $children: ident) => { impl Serialize for $name { fn serialize(&self, serializer: S) -> Result where S: Serializer { let mut state = serializer.serialize_struct(stringify!($name), 6)?; @@ -87,44 +87,44 @@ macro_rules! impl_serialize { state.serialize_field("names", self.names())?; state.serialize_field("source", &self.source().as_ref().map(|uri| uri.to_string()))?; state.serialize_field("classes", self.classes())?; - state.serialize_field("extra", &impl_cond__!($extra ? self.extra()))?; - state.serialize_field("children", &impl_cond__!($childtype ? self.children()))?; + state.serialize_field("extra", &impl_cond!($extra ? self.extra() ))?; + state.serialize_field("children", &impl_cond!($children ? self.children()))?; state.end() } } }; } -macro_rules! impl_cond__ { - (__ ? $($b:tt)*) => { None::> }; - ($thing: ident ? $($b:tt)*) => { $($b)* }; +macro_rules! impl_cond { + (false ? $($b:tt)*) => { () }; + (true ? $($b:tt)*) => { $($b)* }; } macro_rules! impl_elem { ($name:ident) => { impl_new!(#[derive(Default,Debug)] pub struct $name { common: CommonAttributes }); impl_element!($name); - impl_serialize!($name, __, __); + impl_serialize!($name, false, false); }; ($name:ident; +) => { impl_new!(#[derive(Default,Debug)] pub struct $name { common: CommonAttributes, extra: extra_attributes::$name }); impl_element!($name); impl_extra!($name); - impl_serialize!($name, $name, __); + impl_serialize!($name, true, false); }; ($name:ident; *) => { //same as above with no default impl_new!(#[derive(Debug)] pub struct $name { common: CommonAttributes, extra: extra_attributes::$name }); impl_element!($name); impl_extra!($name); - impl_serialize!($name, $name, __); + impl_serialize!($name, true, false); }; ($name:ident, $childtype:ident) => { impl_new!(#[derive(Default,Debug)] pub struct $name { common: CommonAttributes, children: Vec<$childtype> }); impl_element!($name); impl_children!($name, $childtype); - impl_serialize!($name, __, $childtype); + impl_serialize!($name, false, true); }; ($name:ident, $childtype:ident; +) => { impl_new!(#[derive(Default,Debug)] pub struct $name { common: CommonAttributes, extra: extra_attributes::$name, children: Vec<$childtype> }); impl_element!($name); impl_extra!($name); impl_children!($name, $childtype); - impl_serialize!($name, $name, $childtype); + impl_serialize!($name, true, true); }; } -- cgit v1.2.3