From 71d26fbdc4825b4c2a2db125dde388dc5c5a196c Mon Sep 17 00:00:00 2001 From: Philipp A Date: Tue, 27 Nov 2018 00:45:22 +0100 Subject: Support inline Images --- src/document_tree/elements.rs | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) (limited to 'src/document_tree/elements.rs') diff --git a/src/document_tree/elements.rs b/src/document_tree/elements.rs index 99772b2..2b99d97 100644 --- a/src/document_tree/elements.rs +++ b/src/document_tree/elements.rs @@ -1,15 +1,10 @@ use serde_derive::Serialize; use url::Url; +use super::serde_util::serialize_opt_url; use super::extra_attributes::{self,ExtraAttributes}; use super::element_categories::*; -fn serialize_opt_url(url_opt: &Option, serializer: S) -> Result where S: serde::ser::Serializer { - match url_opt { - Some(ref url) => serializer.serialize_some(url.as_str()), - None => serializer.serialize_none(), - } -} //-----------------\\ //Element hierarchy\\ @@ -61,9 +56,9 @@ macro_rules! impl_children { ($name:ident, $childtype:ident) => ( } )} -macro_rules! impl_extra { ($name:ident) => ( +macro_rules! impl_extra { ($name:ident $($more:tt)*) => ( impl ExtraAttributes for $name { -// fn with_extra(extra: extra_attributes::$name) -> $name { $name { extra: extra, ..Default::default() } } + fn with_extra(extra: extra_attributes::$name) -> $name { $name { common: Default::default(), extra: extra $($more)* } } fn extra (& self) -> & extra_attributes::$name { & self.extra } fn extra_mut(&mut self) -> &mut extra_attributes::$name { &mut self.extra } } @@ -98,7 +93,7 @@ macro_rules! impl_elem { #[serde(flatten)] common: CommonAttributes, #[serde(flatten)] extra: extra_attributes::$name, }); - impl_element!($name); impl_extra!($name); + impl_element!($name); impl_extra!($name, ..Default::default()); }; ($name:ident; *) => { //same as above with no default impl_new!(pub struct $name { @@ -120,7 +115,7 @@ macro_rules! impl_elem { #[serde(flatten)] extra: extra_attributes::$name, children: Vec<$childtype>, }); - impl_element!($name); impl_extra!($name); impl_children!($name, $childtype); + impl_element!($name); impl_extra!($name, ..Default::default()); impl_children!($name, $childtype); }; } -- cgit v1.2.3