diff options
| author | Philipp A | 2016-06-19 18:06:55 +0200 | 
|---|---|---|
| committer | Philipp A | 2016-06-19 18:06:55 +0200 | 
| commit | a53ddfe2c6c6736348b78565a8334c1b217e128f (patch) | |
| tree | f0c31ad2c595623f691f63464e5a579f8a63abcb /src/document_tree | |
| parent | 087afdbd9b439a5fd37965b71df99038b28b7872 (diff) | |
| download | rust-rst-a53ddfe2c6c6736348b78565a8334c1b217e128f.tar.bz2 | |
some cleanups, parser module files (empty)
Diffstat (limited to 'src/document_tree')
| -rw-r--r-- | src/document_tree/elements.rs | 61 | 
1 files changed, 26 insertions, 35 deletions
| diff --git a/src/document_tree/elements.rs b/src/document_tree/elements.rs index 4928cee..ba5d78e 100644 --- a/src/document_tree/elements.rs +++ b/src/document_tree/elements.rs @@ -32,7 +32,7 @@ pub struct CommonAttributes {  //impl\\  //----\\ -macro_rules! impl_element(($name:ident) => { +macro_rules! impl_element { ($name:ident) => (  	impl Element for $name {  		fn     ids    (&    self) -> &    Vec<String> { &    self.common.ids     }  		fn     ids_mut(&mut self) -> &mut Vec<String> { &mut self.common.ids     } @@ -43,70 +43,61 @@ macro_rules! impl_element(($name:ident) => {  		fn classes    (&    self) -> &    Vec<String> { &    self.common.classes }  		fn classes_mut(&mut self) -> &mut Vec<String> { &mut self.common.classes }  	} -}); +)} -macro_rules! impl_children(($name:ident, $childtype:ident) => { +macro_rules! impl_children { ($name:ident, $childtype:ident) => (  	impl HasChildren<$childtype> for $name {  		fn with_children(children: Vec<$childtype>) -> $name { $name { children: children, ..Default::default() } }  		fn children    (&    self) -> &    Vec<$childtype> { &    self.children }  		fn children_mut(&mut self) -> &mut Vec<$childtype> { &mut self.children }  	} -}); +)} -macro_rules! impl_extra(($name:ident) => { +macro_rules! impl_extra { ($name:ident) => (  	impl ExtraAttributes<extra_attributes::$name> for $name {  //		fn with_extra(extra: extra_attributes::$name) -> $name { $name { extra: extra, ..Default::default() } }  		fn extra    (&    self) -> &    extra_attributes::$name { &    self.extra }  		fn extra_mut(&mut self) -> &mut extra_attributes::$name { &mut self.extra }  	} -}); +)} -macro_rules! impl_elem( +macro_rules! impl_new {( +	$(#[$attr:meta])* +	pub struct $name:ident { $( $field:ident : $typ:path ),* +}) => ( +	$(#[$attr])* +	pub struct $name { $( $field: $typ, )* } +	impl $name { +		pub fn new( $( $field: $typ, )* ) -> $name { $name { $( $field: $field, )* } } +	} +)} + +macro_rules! impl_elem {  	($name:ident) => { -		#[derive(Default,Debug)] -		pub struct $name { common: CommonAttributes } -		impl $name { -			pub fn new(common: CommonAttributes) -> $name { $name { common: common } } -		} +		impl_new!(#[derive(Default,Debug)] pub struct $name { common: CommonAttributes });  		impl_element!($name);  	};  	($name:ident; +) => { -		#[derive(Default,Debug)] -		pub struct $name { common: CommonAttributes, extra: extra_attributes::$name } -		impl $name { -			pub fn new(common: CommonAttributes, extra: extra_attributes::$name ) -> $name { $name { common: common, extra: extra } } -		} +		impl_new!(#[derive(Default,Debug)] pub struct $name { common: CommonAttributes, extra: extra_attributes::$name });  		impl_element!($name); impl_extra!($name);  	};  	($name:ident; *) => { //same as above with no default -		#[derive(Debug)] -		pub struct $name { common: CommonAttributes, extra: extra_attributes::$name } -		impl $name { -			pub fn new(common: CommonAttributes, extra: extra_attributes::$name ) -> $name { $name { common: common, extra: extra } } -		} +		impl_new!(#[derive(Debug)] pub struct $name { common: CommonAttributes, extra: extra_attributes::$name });  		impl_element!($name); impl_extra!($name);  	};  	($name:ident, $childtype:ident) => { -		#[derive(Default,Debug)] -		pub struct $name { common: CommonAttributes, children: Vec<$childtype> } -		impl $name { -			pub fn new(common: CommonAttributes, children: Vec<$childtype> ) -> $name { $name { common: common, children: children } } -		} +		impl_new!(#[derive(Default,Debug)] pub struct $name { common: CommonAttributes, children: Vec<$childtype> });  		impl_element!($name); impl_children!($name, $childtype);  	};  	($name:ident, $childtype:ident; +) => { -		#[derive(Default,Debug)] -		pub struct $name { common: CommonAttributes, extra: extra_attributes::$name, children: Vec<$childtype> } -		impl $name { -			pub fn new(common: CommonAttributes, extra: extra_attributes::$name, children: Vec<$childtype> ) -> $name { $name { common: common, extra: extra, children: children } } -		} +		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);  	}; -); +} -macro_rules! impl_elems(( $( ($($args:tt)*) )* ) => { +macro_rules! impl_elems { ( $( ($($args:tt)*) )* ) => (  	$( impl_elem!($($args)*); )* -}); +)}  #[derive(Default,Debug)] | 
