use super::comment::IComment; use super::keyword::IKeyword; use super::macros::iselector; use super::registry::Registry; use super::IBabelCall; use super::ICenterBlock; use super::IClock; use super::ICommentBlock; use super::IDiarySexp; use super::IDrawer; use super::IDynamicBlock; use super::IExampleBlock; use super::IExportBlock; use super::IFixedWidthArea; use super::IFootnoteDefinition; use super::IHorizontalRule; use super::ILatexEnvironment; use super::IParagraph; use super::IPlainList; use super::IPlanning; use super::IPropertyDrawer; use super::IQuoteBlock; use super::ISpecialBlock; use super::ISrcBlock; use super::ITable; use super::IVerseBlock; use crate::error::CustomError; use crate::intermediate::macros::iitem; use futures::future::{BoxFuture, FutureExt}; #[derive(Debug, Clone)] pub(crate) enum IElement { Paragraph(IParagraph), PlainList(IPlainList), CenterBlock(ICenterBlock), QuoteBlock(IQuoteBlock), SpecialBlock(ISpecialBlock), DynamicBlock(IDynamicBlock), FootnoteDefinition(IFootnoteDefinition), Comment(IComment), Drawer(IDrawer), PropertyDrawer(IPropertyDrawer), Table(ITable), VerseBlock(IVerseBlock), CommentBlock(ICommentBlock), ExampleBlock(IExampleBlock), ExportBlock(IExportBlock), SrcBlock(ISrcBlock), Clock(IClock), DiarySexp(IDiarySexp), Planning(IPlanning), FixedWidthArea(IFixedWidthArea), HorizontalRule(IHorizontalRule), Keyword(IKeyword), BabelCall(IBabelCall), LatexEnvironment(ILatexEnvironment), } iselector!(IElement, Element, |registry, original| async { iitem!( registry, original, ( organic::types::Element::Paragraph, IElement::Paragraph, IParagraph ), ( organic::types::Element::PlainList, IElement::PlainList, IPlainList ), ( organic::types::Element::CenterBlock, IElement::CenterBlock, ICenterBlock ), ( organic::types::Element::QuoteBlock, IElement::QuoteBlock, IQuoteBlock ), ( organic::types::Element::SpecialBlock, IElement::SpecialBlock, ISpecialBlock ), ( organic::types::Element::DynamicBlock, IElement::DynamicBlock, IDynamicBlock ), ( organic::types::Element::FootnoteDefinition, IElement::FootnoteDefinition, IFootnoteDefinition ), ( organic::types::Element::Comment, IElement::Comment, IComment ), (organic::types::Element::Drawer, IElement::Drawer, IDrawer), ( organic::types::Element::PropertyDrawer, IElement::PropertyDrawer, IPropertyDrawer ), (organic::types::Element::Table, IElement::Table, ITable), ( organic::types::Element::VerseBlock, IElement::VerseBlock, IVerseBlock ), ( organic::types::Element::CommentBlock, IElement::CommentBlock, ICommentBlock ), ( organic::types::Element::ExampleBlock, IElement::ExampleBlock, IExampleBlock ), ( organic::types::Element::ExportBlock, IElement::ExportBlock, IExportBlock ), ( organic::types::Element::SrcBlock, IElement::SrcBlock, ISrcBlock ), (organic::types::Element::Clock, IElement::Clock, IClock), ( organic::types::Element::DiarySexp, IElement::DiarySexp, IDiarySexp ), ( organic::types::Element::Planning, IElement::Planning, IPlanning ), ( organic::types::Element::FixedWidthArea, IElement::FixedWidthArea, IFixedWidthArea ), ( organic::types::Element::HorizontalRule, IElement::HorizontalRule, IHorizontalRule ), ( organic::types::Element::Keyword, IElement::Keyword, IKeyword ), ( organic::types::Element::BabelCall, IElement::BabelCall, IBabelCall ), ( organic::types::Element::LatexEnvironment, IElement::LatexEnvironment, ILatexEnvironment ), ) });