use serde::Serialize; use crate::error::CustomError; use crate::intermediate::IAstNode; use super::angle_link::RenderAngleLink; use super::babel_call::RenderBabelCall; use super::bold::RenderBold; use super::center_block::RenderCenterBlock; use super::citation::RenderCitation; use super::citation_reference::RenderCitationReference; use super::clock::RenderClock; use super::code::RenderCode; use super::comment::RenderComment; use super::comment_block::RenderCommentBlock; use super::diary_sexp::RenderDiarySexp; use super::drawer::RenderDrawer; use super::dynamic_block::RenderDynamicBlock; use super::entity::RenderEntity; use super::example_block::RenderExampleBlock; use super::export_block::RenderExportBlock; use super::export_snippet::RenderExportSnippet; use super::fixed_width_area::RenderFixedWidthArea; use super::footnote_definition::RenderFootnoteDefinition; use super::footnote_reference::RenderFootnoteReference; use super::horizontal_rule::RenderHorizontalRule; use super::inline_babel_call::RenderInlineBabelCall; use super::inline_source_block::RenderInlineSourceBlock; use super::italic::RenderItalic; use super::keyword::RenderKeyword; use super::latex_environment::RenderLatexEnvironment; use super::latex_fragment::RenderLatexFragment; use super::line_break::RenderLineBreak; use super::org_macro::RenderOrgMacro; use super::paragraph::RenderParagraph; use super::plain_link::RenderPlainLink; use super::plain_list::RenderPlainList; use super::plain_text::RenderPlainText; use super::planning::RenderPlanning; use super::property_drawer::RenderPropertyDrawer; use super::quote_block::RenderQuoteBlock; use super::radio_link::RenderRadioLink; use super::radio_target::RenderRadioTarget; use super::regular_link::RenderRegularLink; use super::render_context::RenderContext; use super::special_block::RenderSpecialBlock; use super::src_block::RenderSrcBlock; use super::statistics_cookie::RenderStatisticsCookie; use super::strike_through::RenderStrikeThrough; use super::subscript::RenderSubscript; use super::superscript::RenderSuperscript; use super::table::RenderTable; use super::target::RenderTarget; use super::timestamp::RenderTimestamp; use super::underline::RenderUnderline; use super::verbatim::RenderVerbatim; use super::verse_block::RenderVerseBlock; use super::RenderHeading; use super::RenderSection; #[derive(Debug, Serialize)] #[serde(untagged)] pub(crate) enum RenderAstNode { Heading(RenderHeading), Section(RenderSection), Paragraph(RenderParagraph), PlainList(RenderPlainList), CenterBlock(RenderCenterBlock), QuoteBlock(RenderQuoteBlock), SpecialBlock(RenderSpecialBlock), DynamicBlock(RenderDynamicBlock), FootnoteDefinition(RenderFootnoteDefinition), Comment(RenderComment), Drawer(RenderDrawer), PropertyDrawer(RenderPropertyDrawer), Table(RenderTable), VerseBlock(RenderVerseBlock), CommentBlock(RenderCommentBlock), ExampleBlock(RenderExampleBlock), ExportBlock(RenderExportBlock), SrcBlock(RenderSrcBlock), Clock(RenderClock), DiarySexp(RenderDiarySexp), Planning(RenderPlanning), FixedWidthArea(RenderFixedWidthArea), HorizontalRule(RenderHorizontalRule), Keyword(RenderKeyword), BabelCall(RenderBabelCall), LatexEnvironment(RenderLatexEnvironment), Bold(RenderBold), Italic(RenderItalic), Underline(RenderUnderline), StrikeThrough(RenderStrikeThrough), Code(RenderCode), Verbatim(RenderVerbatim), PlainText(RenderPlainText), RegularLink(RenderRegularLink), RadioLink(RenderRadioLink), RadioTarget(RenderRadioTarget), PlainLink(RenderPlainLink), AngleLink(RenderAngleLink), OrgMacro(RenderOrgMacro), Entity(RenderEntity), LatexFragment(RenderLatexFragment), ExportSnippet(RenderExportSnippet), FootnoteReference(RenderFootnoteReference), Citation(RenderCitation), CitationReference(RenderCitationReference), InlineBabelCall(RenderInlineBabelCall), InlineSourceBlock(RenderInlineSourceBlock), LineBreak(RenderLineBreak), Target(RenderTarget), StatisticsCookie(RenderStatisticsCookie), Subscript(RenderSubscript), Superscript(RenderSuperscript), Timestamp(RenderTimestamp), } pub(crate) trait IntoRenderAstNode { fn into_render_ast_node( &self, render_context: RenderContext<'_>, ) -> Result; } impl IntoRenderAstNode for IAstNode { fn into_render_ast_node( &self, render_context: RenderContext<'_>, ) -> Result { match self { IAstNode::Heading(inner) => Ok(RenderAstNode::Heading(RenderHeading::new( render_context, inner, )?)), IAstNode::Section(inner) => Ok(RenderAstNode::Section(RenderSection::new( render_context, inner, )?)), IAstNode::Paragraph(inner) => Ok(RenderAstNode::Paragraph(RenderParagraph::new( render_context, inner, )?)), IAstNode::PlainList(inner) => Ok(RenderAstNode::PlainList(RenderPlainList::new( render_context, inner, )?)), IAstNode::CenterBlock(inner) => Ok(RenderAstNode::CenterBlock(RenderCenterBlock::new( render_context, inner, )?)), IAstNode::QuoteBlock(inner) => Ok(RenderAstNode::QuoteBlock(RenderQuoteBlock::new( render_context, inner, )?)), IAstNode::SpecialBlock(inner) => Ok(RenderAstNode::SpecialBlock( RenderSpecialBlock::new(render_context, inner)?, )), IAstNode::DynamicBlock(inner) => Ok(RenderAstNode::DynamicBlock( RenderDynamicBlock::new(render_context, inner)?, )), IAstNode::FootnoteDefinition(inner) => Ok(RenderAstNode::FootnoteDefinition( RenderFootnoteDefinition::new(render_context, inner)?, )), IAstNode::Comment(inner) => Ok(RenderAstNode::Comment(RenderComment::new( render_context, inner, )?)), IAstNode::Drawer(inner) => Ok(RenderAstNode::Drawer(RenderDrawer::new( render_context, inner, )?)), IAstNode::PropertyDrawer(inner) => Ok(RenderAstNode::PropertyDrawer( RenderPropertyDrawer::new(render_context, inner)?, )), IAstNode::Table(inner) => Ok(RenderAstNode::Table(RenderTable::new( render_context, inner, )?)), IAstNode::VerseBlock(inner) => Ok(RenderAstNode::VerseBlock(RenderVerseBlock::new( render_context, inner, )?)), IAstNode::CommentBlock(inner) => Ok(RenderAstNode::CommentBlock( RenderCommentBlock::new(render_context, inner)?, )), IAstNode::ExampleBlock(inner) => Ok(RenderAstNode::ExampleBlock( RenderExampleBlock::new(render_context, inner)?, )), IAstNode::ExportBlock(inner) => Ok(RenderAstNode::ExportBlock(RenderExportBlock::new( render_context, inner, )?)), IAstNode::SrcBlock(inner) => Ok(RenderAstNode::SrcBlock(RenderSrcBlock::new( render_context, inner, )?)), IAstNode::Clock(inner) => Ok(RenderAstNode::Clock(RenderClock::new( render_context, inner, )?)), IAstNode::DiarySexp(inner) => Ok(RenderAstNode::DiarySexp(RenderDiarySexp::new( render_context, inner, )?)), IAstNode::Planning(inner) => Ok(RenderAstNode::Planning(RenderPlanning::new( render_context, inner, )?)), IAstNode::FixedWidthArea(inner) => Ok(RenderAstNode::FixedWidthArea( RenderFixedWidthArea::new(render_context, inner)?, )), IAstNode::HorizontalRule(inner) => Ok(RenderAstNode::HorizontalRule( RenderHorizontalRule::new(render_context, inner)?, )), IAstNode::Keyword(inner) => Ok(RenderAstNode::Keyword(RenderKeyword::new( render_context, inner, )?)), IAstNode::BabelCall(inner) => Ok(RenderAstNode::BabelCall(RenderBabelCall::new( render_context, inner, )?)), IAstNode::LatexEnvironment(inner) => Ok(RenderAstNode::LatexEnvironment( RenderLatexEnvironment::new(render_context, inner)?, )), IAstNode::Bold(inner) => { Ok(RenderAstNode::Bold(RenderBold::new(render_context, inner)?)) } IAstNode::Italic(inner) => Ok(RenderAstNode::Italic(RenderItalic::new( render_context, inner, )?)), IAstNode::Underline(inner) => Ok(RenderAstNode::Underline(RenderUnderline::new( render_context, inner, )?)), IAstNode::StrikeThrough(inner) => Ok(RenderAstNode::StrikeThrough( RenderStrikeThrough::new(render_context, inner)?, )), IAstNode::Code(inner) => { Ok(RenderAstNode::Code(RenderCode::new(render_context, inner)?)) } IAstNode::Verbatim(inner) => Ok(RenderAstNode::Verbatim(RenderVerbatim::new( render_context, inner, )?)), IAstNode::PlainText(inner) => Ok(RenderAstNode::PlainText(RenderPlainText::new( render_context, inner, )?)), IAstNode::RegularLink(inner) => Ok(RenderAstNode::RegularLink(RenderRegularLink::new( render_context, inner, )?)), IAstNode::RadioLink(inner) => Ok(RenderAstNode::RadioLink(RenderRadioLink::new( render_context, inner, )?)), IAstNode::RadioTarget(inner) => Ok(RenderAstNode::RadioTarget(RenderRadioTarget::new( render_context, inner, )?)), IAstNode::PlainLink(inner) => Ok(RenderAstNode::PlainLink(RenderPlainLink::new( render_context, inner, )?)), IAstNode::AngleLink(inner) => Ok(RenderAstNode::AngleLink(RenderAngleLink::new( render_context, inner, )?)), IAstNode::OrgMacro(inner) => Ok(RenderAstNode::OrgMacro(RenderOrgMacro::new( render_context, inner, )?)), IAstNode::Entity(inner) => Ok(RenderAstNode::Entity(RenderEntity::new( render_context, inner, )?)), IAstNode::LatexFragment(inner) => Ok(RenderAstNode::LatexFragment( RenderLatexFragment::new(render_context, inner)?, )), IAstNode::ExportSnippet(inner) => Ok(RenderAstNode::ExportSnippet( RenderExportSnippet::new(render_context, inner)?, )), IAstNode::FootnoteReference(inner) => Ok(RenderAstNode::FootnoteReference( RenderFootnoteReference::new(render_context, inner)?, )), IAstNode::Citation(inner) => Ok(RenderAstNode::Citation(RenderCitation::new( render_context, inner, )?)), IAstNode::CitationReference(inner) => Ok(RenderAstNode::CitationReference( RenderCitationReference::new(render_context, inner)?, )), IAstNode::InlineBabelCall(inner) => Ok(RenderAstNode::InlineBabelCall( RenderInlineBabelCall::new(render_context, inner)?, )), IAstNode::InlineSourceBlock(inner) => Ok(RenderAstNode::InlineSourceBlock( RenderInlineSourceBlock::new(render_context, inner)?, )), IAstNode::LineBreak(inner) => Ok(RenderAstNode::LineBreak(RenderLineBreak::new( render_context, inner, )?)), IAstNode::Target(inner) => Ok(RenderAstNode::Target(RenderTarget::new( render_context, inner, )?)), IAstNode::StatisticsCookie(inner) => Ok(RenderAstNode::StatisticsCookie( RenderStatisticsCookie::new(render_context, inner)?, )), IAstNode::Subscript(inner) => Ok(RenderAstNode::Subscript(RenderSubscript::new( render_context, inner, )?)), IAstNode::Superscript(inner) => Ok(RenderAstNode::Superscript(RenderSuperscript::new( render_context, inner, )?)), IAstNode::Timestamp(inner) => Ok(RenderAstNode::Timestamp(RenderTimestamp::new( render_context, inner, )?)), } } }