aboutsummaryrefslogtreecommitdiffstats
path: root/src/document_tree/elements.rs
diff options
context:
space:
mode:
authorPhilipp A2018-11-27 00:45:22 +0100
committerPhilipp A2018-11-27 00:45:22 +0100
commit71d26fbdc4825b4c2a2db125dde388dc5c5a196c (patch)
tree15e485c6324bf2a5e6997a0a766345d44d0c4d50 /src/document_tree/elements.rs
parent70667b529fcf24815819636b9a105d17ae38e796 (diff)
downloadrust-rst-71d26fbdc4825b4c2a2db125dde388dc5c5a196c.tar.bz2
Support inline Images
Diffstat (limited to 'src/document_tree/elements.rs')
-rw-r--r--src/document_tree/elements.rs15
1 files changed, 5 insertions, 10 deletions
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<S>(url_opt: &Option<Url>, serializer: S) -> Result<S::Ok, S::Error> 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<extra_attributes::$name> 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);
};
}