157 lines
5.8 KiB
Rust
157 lines
5.8 KiB
Rust
use serde::Serialize;
|
|
|
|
use super::render_context::RenderContext;
|
|
use crate::error::CustomError;
|
|
use crate::intermediate::IElement;
|
|
|
|
use super::babel_call::RenderBabelCall;
|
|
use super::center_block::RenderCenterBlock;
|
|
use super::clock::RenderClock;
|
|
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::example_block::RenderExampleBlock;
|
|
use super::export_block::RenderExportBlock;
|
|
use super::fixed_width_area::RenderFixedWidthArea;
|
|
use super::footnote_definition::RenderFootnoteDefinition;
|
|
use super::horizontal_rule::RenderHorizontalRule;
|
|
use super::keyword::RenderKeyword;
|
|
use super::latex_environment::RenderLatexEnvironment;
|
|
use super::macros::render;
|
|
use super::paragraph::RenderParagraph;
|
|
use super::plain_list::RenderPlainList;
|
|
use super::planning::RenderPlanning;
|
|
use super::property_drawer::RenderPropertyDrawer;
|
|
use super::quote_block::RenderQuoteBlock;
|
|
use super::special_block::RenderSpecialBlock;
|
|
use super::src_block::RenderSrcBlock;
|
|
use super::table::RenderTable;
|
|
use super::verse_block::RenderVerseBlock;
|
|
|
|
#[derive(Debug, Serialize)]
|
|
#[serde(untagged)]
|
|
pub(crate) enum RenderElement {
|
|
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),
|
|
}
|
|
|
|
render!(RenderElement, IElement, original, render_context, {
|
|
match original {
|
|
IElement::Paragraph(inner) => Ok(RenderElement::Paragraph(RenderParagraph::new(
|
|
render_context.clone(),
|
|
inner,
|
|
)?)),
|
|
IElement::PlainList(inner) => Ok(RenderElement::PlainList(RenderPlainList::new(
|
|
render_context.clone(),
|
|
inner,
|
|
)?)),
|
|
IElement::CenterBlock(inner) => Ok(RenderElement::CenterBlock(RenderCenterBlock::new(
|
|
render_context.clone(),
|
|
inner,
|
|
)?)),
|
|
IElement::QuoteBlock(inner) => Ok(RenderElement::QuoteBlock(RenderQuoteBlock::new(
|
|
render_context.clone(),
|
|
inner,
|
|
)?)),
|
|
IElement::SpecialBlock(inner) => Ok(RenderElement::SpecialBlock(RenderSpecialBlock::new(
|
|
render_context.clone(),
|
|
inner,
|
|
)?)),
|
|
IElement::DynamicBlock(inner) => Ok(RenderElement::DynamicBlock(RenderDynamicBlock::new(
|
|
render_context.clone(),
|
|
inner,
|
|
)?)),
|
|
IElement::FootnoteDefinition(inner) => Ok(RenderElement::FootnoteDefinition(
|
|
RenderFootnoteDefinition::new(render_context.clone(), inner)?,
|
|
)),
|
|
IElement::Comment(inner) => Ok(RenderElement::Comment(RenderComment::new(
|
|
render_context.clone(),
|
|
inner,
|
|
)?)),
|
|
IElement::Drawer(inner) => Ok(RenderElement::Drawer(RenderDrawer::new(
|
|
render_context.clone(),
|
|
inner,
|
|
)?)),
|
|
IElement::PropertyDrawer(inner) => Ok(RenderElement::PropertyDrawer(
|
|
RenderPropertyDrawer::new(render_context.clone(), inner)?,
|
|
)),
|
|
IElement::Table(inner) => Ok(RenderElement::Table(RenderTable::new(
|
|
render_context.clone(),
|
|
inner,
|
|
)?)),
|
|
IElement::VerseBlock(inner) => Ok(RenderElement::VerseBlock(RenderVerseBlock::new(
|
|
render_context.clone(),
|
|
inner,
|
|
)?)),
|
|
IElement::CommentBlock(inner) => Ok(RenderElement::CommentBlock(RenderCommentBlock::new(
|
|
render_context.clone(),
|
|
inner,
|
|
)?)),
|
|
IElement::ExampleBlock(inner) => Ok(RenderElement::ExampleBlock(RenderExampleBlock::new(
|
|
render_context.clone(),
|
|
inner,
|
|
)?)),
|
|
IElement::ExportBlock(inner) => Ok(RenderElement::ExportBlock(RenderExportBlock::new(
|
|
render_context.clone(),
|
|
inner,
|
|
)?)),
|
|
IElement::SrcBlock(inner) => Ok(RenderElement::SrcBlock(RenderSrcBlock::new(
|
|
render_context.clone(),
|
|
inner,
|
|
)?)),
|
|
IElement::Clock(inner) => Ok(RenderElement::Clock(RenderClock::new(
|
|
render_context.clone(),
|
|
inner,
|
|
)?)),
|
|
IElement::DiarySexp(inner) => Ok(RenderElement::DiarySexp(RenderDiarySexp::new(
|
|
render_context.clone(),
|
|
inner,
|
|
)?)),
|
|
IElement::Planning(inner) => Ok(RenderElement::Planning(RenderPlanning::new(
|
|
render_context.clone(),
|
|
inner,
|
|
)?)),
|
|
IElement::FixedWidthArea(inner) => Ok(RenderElement::FixedWidthArea(
|
|
RenderFixedWidthArea::new(render_context.clone(), inner)?,
|
|
)),
|
|
IElement::HorizontalRule(inner) => Ok(RenderElement::HorizontalRule(
|
|
RenderHorizontalRule::new(render_context.clone(), inner)?,
|
|
)),
|
|
IElement::Keyword(inner) => Ok(RenderElement::Keyword(RenderKeyword::new(
|
|
render_context.clone(),
|
|
inner,
|
|
)?)),
|
|
IElement::BabelCall(inner) => Ok(RenderElement::BabelCall(RenderBabelCall::new(
|
|
render_context.clone(),
|
|
inner,
|
|
)?)),
|
|
IElement::LatexEnvironment(inner) => Ok(RenderElement::LatexEnvironment(
|
|
RenderLatexEnvironment::new(render_context.clone(), inner)?,
|
|
)),
|
|
}
|
|
});
|