natter/src/context/element.rs

157 lines
5.8 KiB
Rust
Raw Normal View History

2023-10-24 00:04:44 -04:00
use serde::Serialize;
use super::render_context::RenderContext;
2023-10-27 15:32:24 -04:00
use crate::error::CustomError;
use crate::intermediate::IElement;
2023-10-27 17:08:58 -04:00
use super::babel_call::RenderBabelCall;
use super::center_block::RenderCenterBlock;
use super::clock::RenderClock;
2023-10-27 16:13:23 -04:00
use super::comment::RenderComment;
2023-10-27 17:08:58 -04:00
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;
2023-10-27 16:09:44 -04:00
use super::keyword::RenderKeyword;
2023-10-27 17:08:58 -04:00
use super::latex_environment::RenderLatexEnvironment;
use super::macros::render;
2023-10-27 15:46:16 -04:00
use super::paragraph::RenderParagraph;
2023-10-27 17:08:58 -04:00
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;
2023-10-27 15:46:16 -04:00
2023-10-24 00:04:44 -04:00
#[derive(Debug, Serialize)]
#[serde(untagged)]
2023-10-27 15:46:16 -04:00
pub(crate) enum RenderElement {
Paragraph(RenderParagraph),
2023-10-27 17:08:58 -04:00
PlainList(RenderPlainList),
CenterBlock(RenderCenterBlock),
QuoteBlock(RenderQuoteBlock),
SpecialBlock(RenderSpecialBlock),
DynamicBlock(RenderDynamicBlock),
FootnoteDefinition(RenderFootnoteDefinition),
2023-10-27 16:13:23 -04:00
Comment(RenderComment),
2023-10-27 17:08:58 -04:00
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),
2023-10-27 15:46:16 -04:00
}
2023-10-27 15:32:24 -04:00
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)?,
)),
2023-10-27 15:32:24 -04:00
}
});