diff options
| author | Phil Schaf | 2015-11-14 23:24:56 +0100 | 
|---|---|---|
| committer | Phil Schaf | 2015-11-14 23:24:56 +0100 | 
| commit | 154165495d0db0227d0dc45f368f6dce1123a038 (patch) | |
| tree | 78ef11b3d0946b5b1a3c98ab3126f3a6a2a6bf15 /src | |
| parent | 11d453f354c3bfd8f2c2f755c0246f3c2f526179 (diff) | |
| download | rust-rst-154165495d0db0227d0dc45f368f6dce1123a038.tar.bz2 | |
added some convenience conversions
Diffstat (limited to 'src')
| -rw-r--r-- | src/document_tree/element_categories.rs | 17 | ||||
| -rw-r--r-- | src/document_tree/elements.rs | 25 | ||||
| -rw-r--r-- | src/document_tree/mod.rs | 3 | 
3 files changed, 29 insertions, 16 deletions
| diff --git a/src/document_tree/element_categories.rs b/src/document_tree/element_categories.rs index d8024ad..e9d07a6 100644 --- a/src/document_tree/element_categories.rs +++ b/src/document_tree/element_categories.rs @@ -1,3 +1,5 @@ +use std::fmt::{self,Debug,Formatter}; +  use super::elements::*;  pub trait HasChildren<C> { @@ -16,11 +18,16 @@ pub trait HasChildren<C> {  }  macro_rules! synonymous_enum {( $name:ident { $( $entry:ident ),* } ) => ( -	#[derive(Debug)]  	pub enum $name { -		$( -			$entry($entry), -		)* +		$( $entry($entry), )* +	} +	 +	impl Debug for $name { +		fn fmt(&self, fmt: &mut Formatter) -> Result<(), fmt::Error> { +			match self { +				$( &$name::$entry(ref inner) => inner.fmt(fmt), )* +			} +		}  	}  	$( @@ -46,7 +53,7 @@ synonymous_enum!(BodyElement {  synonymous_enum!(BibliographicElement { Author, Authors, Organization, Address, Contact, Version, Revision, Status, Date, Copyright, Field });  synonymous_enum!(TextOrInlineElement { -	TextElement, Emphasis, Strong, Literal, Reference, FootnoteReference, CitationReference, SubstitutionReference, TitleReference, Abbreviation, Acronym, Superscript, Subscript, Inline, Problematic, Generated, Math, +	String, Emphasis, Strong, Literal, Reference, FootnoteReference, CitationReference, SubstitutionReference, TitleReference, Abbreviation, Acronym, Superscript, Subscript, Inline, Problematic, Generated, Math,  	//also have non-inline versions. Inline image is no figure child, inline target has content  	TargetInline, RawInline, ImageInline  }); diff --git a/src/document_tree/elements.rs b/src/document_tree/elements.rs index f1a9b43..024a25a 100644 --- a/src/document_tree/elements.rs +++ b/src/document_tree/elements.rs @@ -130,14 +130,14 @@ impl_elems!(  	(Paragraph,              TextOrInlineElement)  	(LiteralBlock,           TextOrInlineElement; +)  	(DoctestBlock,           TextOrInlineElement; +) -	(MathBlock) +	(MathBlock,              String)  	(Rubric,                 TextOrInlineElement)  	(SubstitutionDefinition, TextOrInlineElement; +)  	(Comment,                TextOrInlineElement; +)  	(Pending)  	(Target; +) -	(Raw;    +) -	(Image;  *) +	(Raw, String; +) +	(Image; *)  	//compound body elements  	(Compound,  BodyElement) @@ -182,8 +182,8 @@ impl_elems!(  	(OptionGroup,    Option_)  	(Description,    BodyElement)  	(Option_,        SubOption) -	(OptionString,   TextOrInlineElement) -	(OptionArgument, TextOrInlineElement; +) +	(OptionString,   String) +	(OptionArgument, String; +)  	(Line,        TextOrInlineElement)  	(Attribution, TextOrInlineElement) @@ -208,13 +208,18 @@ impl_elems!(  	(Inline,                TextOrInlineElement)  	(Problematic,           TextOrInlineElement; +)  	(Generated,             TextOrInlineElement) -	(Math) +	(Math,                  String)  	//also have non-inline versions. Inline image is no figure child, inline target has content -	(TargetInline, TextOrInlineElement; +) -	(RawInline;   +) +	(TargetInline, String; +) +	(RawInline,    String; +)  	(ImageInline; *) -	//text element -	(TextElement) +	//text element = String  ); + +impl<'a> From<&'a str> for TextOrInlineElement { +	fn from(s: &'a str) -> TextOrInlineElement { +		s.to_owned().into() +	} +} diff --git a/src/document_tree/mod.rs b/src/document_tree/mod.rs index cb54eb5..a9c4760 100644 --- a/src/document_tree/mod.rs +++ b/src/document_tree/mod.rs @@ -16,7 +16,8 @@ fn test() {  	use document_tree::HasChildren;  	let mut doc = dt::Document::default(); -	let title = dt::Title::default(); +	let mut title = dt::Title::default(); +	title.append_child("Hi");  	doc.append_child(title);  	println!("{:?}", doc); | 
