use super::greater_element::DynamicBlock; use super::greater_element::FootnoteDefinition; use super::greater_element::GreaterBlock; use super::greater_element::PlainList; use super::greater_element::PropertyDrawer; use super::greater_element::Table; use super::lesser_element::Clock; use super::lesser_element::Comment; use super::lesser_element::CommentBlock; use super::lesser_element::DiarySexp; use super::lesser_element::ExampleBlock; use super::lesser_element::ExportBlock; use super::lesser_element::FixedWidthArea; use super::lesser_element::HorizontalRule; use super::lesser_element::Paragraph; use super::lesser_element::Planning; use super::lesser_element::SrcBlock; use super::lesser_element::VerseBlock; use super::source::Source; use super::Drawer; #[derive(Debug)] pub enum Element<'s> { Paragraph(Paragraph<'s>), PlainList(PlainList<'s>), GreaterBlock(GreaterBlock<'s>), DynamicBlock(DynamicBlock<'s>), FootnoteDefinition(FootnoteDefinition<'s>), Comment(Comment<'s>), Drawer(Drawer<'s>), PropertyDrawer(PropertyDrawer<'s>), Table(Table<'s>), VerseBlock(VerseBlock<'s>), CommentBlock(CommentBlock<'s>), ExampleBlock(ExampleBlock<'s>), ExportBlock(ExportBlock<'s>), SrcBlock(SrcBlock<'s>), Clock(Clock<'s>), DiarySexp(DiarySexp<'s>), Planning(Planning<'s>), FixedWidthArea(FixedWidthArea<'s>), HorizontalRule(HorizontalRule<'s>), } impl<'s> Source<'s> for Element<'s> { fn get_source(&'s self) -> &'s str { match self { Element::Paragraph(obj) => obj.source, Element::PlainList(obj) => obj.source, Element::GreaterBlock(obj) => obj.source, Element::DynamicBlock(obj) => obj.source, Element::FootnoteDefinition(obj) => obj.source, Element::Comment(obj) => obj.source, Element::Drawer(obj) => obj.source, Element::PropertyDrawer(obj) => obj.source, Element::Table(obj) => obj.source, Element::VerseBlock(obj) => obj.source, Element::CommentBlock(obj) => obj.source, Element::ExampleBlock(obj) => obj.source, Element::ExportBlock(obj) => obj.source, Element::SrcBlock(obj) => obj.source, Element::Clock(obj) => obj.source, Element::DiarySexp(obj) => obj.source, Element::Planning(obj) => obj.source, Element::FixedWidthArea(obj) => obj.source, Element::HorizontalRule(obj) => obj.source, } } }