organic/src/parser/element.rs
2023-04-21 22:33:10 -04:00

73 lines
2.6 KiB
Rust

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::Keyword;
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>),
Keyword(Keyword<'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,
Element::Keyword(obj) => obj.source,
}
}
}