aboutsummaryrefslogtreecommitdiffstats
path: root/src/document_tree/elements.rs
diff options
context:
space:
mode:
authorPhil Schaf2015-11-15 00:29:26 +0100
committerPhil Schaf2015-11-15 00:29:26 +0100
commit087afdbd9b439a5fd37965b71df99038b28b7872 (patch)
tree77ddaa786718082243b6f82801cad1ec390649cf /src/document_tree/elements.rs
parent154165495d0db0227d0dc45f368f6dce1123a038 (diff)
downloadrust-rst-087afdbd9b439a5fd37965b71df99038b28b7872.tar.bz2
added some constructors
Diffstat (limited to 'src/document_tree/elements.rs')
-rw-r--r--src/document_tree/elements.rs17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/document_tree/elements.rs b/src/document_tree/elements.rs
index 024a25a..4928cee 100644
--- a/src/document_tree/elements.rs
+++ b/src/document_tree/elements.rs
@@ -47,6 +47,7 @@ macro_rules! impl_element(($name: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 }
}
@@ -54,6 +55,7 @@ macro_rules! impl_children(($name:ident, $childtype: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 }
}
@@ -63,26 +65,41 @@ 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_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_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_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_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_element!($name); impl_extra!($name); impl_children!($name, $childtype);
};
);