Switch over to using the render context in render calls.

This commit is contained in:
Tom Alexander 2023-12-19 15:42:37 -05:00
parent cb3278aba5
commit add267d616
Signed by: talexander
GPG Key ID: D3A179C9A53C0EDE
67 changed files with 699 additions and 1197 deletions

View File

@ -5,9 +5,12 @@ use include_dir::include_dir;
use include_dir::Dir; use include_dir::Dir;
use crate::config::Config; use crate::config::Config;
use crate::context::RenderBlogPostPage;
use crate::context::RenderBlogPostPageInput;
use crate::context::RenderBlogStream; use crate::context::RenderBlogStream;
use crate::context::RenderBlogStreamInput;
use crate::context::RenderContext;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::convert_blog_post_page_to_render_context;
use crate::intermediate::get_web_path; use crate::intermediate::get_web_path;
use crate::intermediate::BlogPost; use crate::intermediate::BlogPost;
use crate::render::DusterRenderer; use crate::render::DusterRenderer;
@ -78,13 +81,13 @@ impl SiteRenderer {
.join(&blog_post.id) .join(&blog_post.id)
.join(blog_post_page.get_output_path()); .join(blog_post_page.get_output_path());
let render_context = convert_blog_post_page_to_render_context( let convert_input = RenderBlogPostPageInput::new(blog_post, blog_post_page);
let render_context = RenderContext::new(
config, config,
&self.output_directory, self.output_directory.as_path(),
&output_path, output_path.as_path(),
blog_post,
blog_post_page,
)?; )?;
let render_context = RenderBlogPostPage::new(render_context, &convert_input)?;
let rendered_output = renderer_integration.render(render_context)?; let rendered_output = renderer_integration.render(render_context)?;
let parent_directory = output_path let parent_directory = output_path
.parent() .parent()
@ -158,14 +161,13 @@ impl SiteRenderer {
)?) )?)
}; };
let blog_stream = RenderBlogStream::new( let convert_input = RenderBlogStreamInput::new(chunk, older_link, newer_link);
let render_context = RenderContext::new(
config, config,
self.output_directory.as_path(), self.output_directory.as_path(),
output_file.as_path(), output_file.as_path(),
chunk,
older_link,
newer_link,
)?; )?;
let blog_stream = RenderBlogStream::new(render_context, &convert_input)?;
// Pass each RenderBlogStream to dust as the context to render index.html and any additional stream pages. // Pass each RenderBlogStream to dust as the context to render index.html and any additional stream pages.
let rendered_output = renderer_integration.render(blog_stream)?; let rendered_output = renderer_integration.render(blog_stream)?;

View File

@ -1,8 +1,6 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config; use super::render_context::RenderContext;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::IAngleLink; use crate::intermediate::IAngleLink;

View File

@ -1,8 +1,5 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::IAstNode; use crate::intermediate::IAstNode;
@ -45,6 +42,7 @@ use super::quote_block::RenderQuoteBlock;
use super::radio_link::RenderRadioLink; use super::radio_link::RenderRadioLink;
use super::radio_target::RenderRadioTarget; use super::radio_target::RenderRadioTarget;
use super::regular_link::RenderRegularLink; use super::regular_link::RenderRegularLink;
use super::render_context::RenderContext;
use super::special_block::RenderSpecialBlock; use super::special_block::RenderSpecialBlock;
use super::src_block::RenderSrcBlock; use super::src_block::RenderSrcBlock;
use super::statistics_cookie::RenderStatisticsCookie; use super::statistics_cookie::RenderStatisticsCookie;
@ -121,285 +119,207 @@ pub(crate) enum RenderAstNode {
pub(crate) trait IntoRenderAstNode { pub(crate) trait IntoRenderAstNode {
fn into_render_ast_node( fn into_render_ast_node(
&self, &self,
config: &Config, render_context: RenderContext<'_>,
output_directory: &Path,
output_file: &Path,
) -> Result<RenderAstNode, CustomError>; ) -> Result<RenderAstNode, CustomError>;
} }
impl IntoRenderAstNode for IAstNode { impl IntoRenderAstNode for IAstNode {
fn into_render_ast_node( fn into_render_ast_node(
&self, &self,
config: &Config, render_context: RenderContext<'_>,
output_directory: &Path,
output_file: &Path,
) -> Result<RenderAstNode, CustomError> { ) -> Result<RenderAstNode, CustomError> {
match self { match self {
IAstNode::Heading(inner) => Ok(RenderAstNode::Heading(RenderHeading::new( IAstNode::Heading(inner) => Ok(RenderAstNode::Heading(RenderHeading::new(
config, render_context,
output_directory,
output_file,
inner, inner,
)?)), )?)),
IAstNode::Section(inner) => Ok(RenderAstNode::Section(RenderSection::new( IAstNode::Section(inner) => Ok(RenderAstNode::Section(RenderSection::new(
config, render_context,
output_directory,
output_file,
inner, inner,
)?)), )?)),
IAstNode::Paragraph(inner) => Ok(RenderAstNode::Paragraph(RenderParagraph::new( IAstNode::Paragraph(inner) => Ok(RenderAstNode::Paragraph(RenderParagraph::new(
config, render_context,
output_directory,
output_file,
inner, inner,
)?)), )?)),
IAstNode::PlainList(inner) => Ok(RenderAstNode::PlainList(RenderPlainList::new( IAstNode::PlainList(inner) => Ok(RenderAstNode::PlainList(RenderPlainList::new(
config, render_context,
output_directory,
output_file,
inner, inner,
)?)), )?)),
IAstNode::CenterBlock(inner) => Ok(RenderAstNode::CenterBlock(RenderCenterBlock::new( IAstNode::CenterBlock(inner) => Ok(RenderAstNode::CenterBlock(RenderCenterBlock::new(
config, render_context,
output_directory,
output_file,
inner, inner,
)?)), )?)),
IAstNode::QuoteBlock(inner) => Ok(RenderAstNode::QuoteBlock(RenderQuoteBlock::new( IAstNode::QuoteBlock(inner) => Ok(RenderAstNode::QuoteBlock(RenderQuoteBlock::new(
config, render_context,
output_directory,
output_file,
inner, inner,
)?)), )?)),
IAstNode::SpecialBlock(inner) => Ok(RenderAstNode::SpecialBlock( IAstNode::SpecialBlock(inner) => Ok(RenderAstNode::SpecialBlock(
RenderSpecialBlock::new(config, output_directory, output_file, inner)?, RenderSpecialBlock::new(render_context, inner)?,
)), )),
IAstNode::DynamicBlock(inner) => Ok(RenderAstNode::DynamicBlock( IAstNode::DynamicBlock(inner) => Ok(RenderAstNode::DynamicBlock(
RenderDynamicBlock::new(config, output_directory, output_file, inner)?, RenderDynamicBlock::new(render_context, inner)?,
)), )),
IAstNode::FootnoteDefinition(inner) => Ok(RenderAstNode::FootnoteDefinition( IAstNode::FootnoteDefinition(inner) => Ok(RenderAstNode::FootnoteDefinition(
RenderFootnoteDefinition::new(config, output_directory, output_file, inner)?, RenderFootnoteDefinition::new(render_context, inner)?,
)), )),
IAstNode::Comment(inner) => Ok(RenderAstNode::Comment(RenderComment::new( IAstNode::Comment(inner) => Ok(RenderAstNode::Comment(RenderComment::new(
config, render_context,
output_directory,
output_file,
inner, inner,
)?)), )?)),
IAstNode::Drawer(inner) => Ok(RenderAstNode::Drawer(RenderDrawer::new( IAstNode::Drawer(inner) => Ok(RenderAstNode::Drawer(RenderDrawer::new(
config, render_context,
output_directory,
output_file,
inner, inner,
)?)), )?)),
IAstNode::PropertyDrawer(inner) => Ok(RenderAstNode::PropertyDrawer( IAstNode::PropertyDrawer(inner) => Ok(RenderAstNode::PropertyDrawer(
RenderPropertyDrawer::new(config, output_directory, output_file, inner)?, RenderPropertyDrawer::new(render_context, inner)?,
)), )),
IAstNode::Table(inner) => Ok(RenderAstNode::Table(RenderTable::new( IAstNode::Table(inner) => Ok(RenderAstNode::Table(RenderTable::new(
config, render_context,
output_directory,
output_file,
inner, inner,
)?)), )?)),
IAstNode::VerseBlock(inner) => Ok(RenderAstNode::VerseBlock(RenderVerseBlock::new( IAstNode::VerseBlock(inner) => Ok(RenderAstNode::VerseBlock(RenderVerseBlock::new(
config, render_context,
output_directory,
output_file,
inner, inner,
)?)), )?)),
IAstNode::CommentBlock(inner) => Ok(RenderAstNode::CommentBlock( IAstNode::CommentBlock(inner) => Ok(RenderAstNode::CommentBlock(
RenderCommentBlock::new(config, output_directory, output_file, inner)?, RenderCommentBlock::new(render_context, inner)?,
)), )),
IAstNode::ExampleBlock(inner) => Ok(RenderAstNode::ExampleBlock( IAstNode::ExampleBlock(inner) => Ok(RenderAstNode::ExampleBlock(
RenderExampleBlock::new(config, output_directory, output_file, inner)?, RenderExampleBlock::new(render_context, inner)?,
)), )),
IAstNode::ExportBlock(inner) => Ok(RenderAstNode::ExportBlock(RenderExportBlock::new( IAstNode::ExportBlock(inner) => Ok(RenderAstNode::ExportBlock(RenderExportBlock::new(
config, render_context,
output_directory,
output_file,
inner, inner,
)?)), )?)),
IAstNode::SrcBlock(inner) => Ok(RenderAstNode::SrcBlock(RenderSrcBlock::new( IAstNode::SrcBlock(inner) => Ok(RenderAstNode::SrcBlock(RenderSrcBlock::new(
config, render_context,
output_directory,
output_file,
inner, inner,
)?)), )?)),
IAstNode::Clock(inner) => Ok(RenderAstNode::Clock(RenderClock::new( IAstNode::Clock(inner) => Ok(RenderAstNode::Clock(RenderClock::new(
config, render_context,
output_directory,
output_file,
inner, inner,
)?)), )?)),
IAstNode::DiarySexp(inner) => Ok(RenderAstNode::DiarySexp(RenderDiarySexp::new( IAstNode::DiarySexp(inner) => Ok(RenderAstNode::DiarySexp(RenderDiarySexp::new(
config, render_context,
output_directory,
output_file,
inner, inner,
)?)), )?)),
IAstNode::Planning(inner) => Ok(RenderAstNode::Planning(RenderPlanning::new( IAstNode::Planning(inner) => Ok(RenderAstNode::Planning(RenderPlanning::new(
config, render_context,
output_directory,
output_file,
inner, inner,
)?)), )?)),
IAstNode::FixedWidthArea(inner) => Ok(RenderAstNode::FixedWidthArea( IAstNode::FixedWidthArea(inner) => Ok(RenderAstNode::FixedWidthArea(
RenderFixedWidthArea::new(config, output_directory, output_file, inner)?, RenderFixedWidthArea::new(render_context, inner)?,
)), )),
IAstNode::HorizontalRule(inner) => Ok(RenderAstNode::HorizontalRule( IAstNode::HorizontalRule(inner) => Ok(RenderAstNode::HorizontalRule(
RenderHorizontalRule::new(config, output_directory, output_file, inner)?, RenderHorizontalRule::new(render_context, inner)?,
)), )),
IAstNode::Keyword(inner) => Ok(RenderAstNode::Keyword(RenderKeyword::new( IAstNode::Keyword(inner) => Ok(RenderAstNode::Keyword(RenderKeyword::new(
config, render_context,
output_directory,
output_file,
inner, inner,
)?)), )?)),
IAstNode::BabelCall(inner) => Ok(RenderAstNode::BabelCall(RenderBabelCall::new( IAstNode::BabelCall(inner) => Ok(RenderAstNode::BabelCall(RenderBabelCall::new(
config, render_context,
output_directory,
output_file,
inner, inner,
)?)), )?)),
IAstNode::LatexEnvironment(inner) => Ok(RenderAstNode::LatexEnvironment( IAstNode::LatexEnvironment(inner) => Ok(RenderAstNode::LatexEnvironment(
RenderLatexEnvironment::new(config, output_directory, output_file, inner)?, RenderLatexEnvironment::new(render_context, inner)?,
)), )),
IAstNode::Bold(inner) => Ok(RenderAstNode::Bold(RenderBold::new( IAstNode::Bold(inner) => {
config, Ok(RenderAstNode::Bold(RenderBold::new(render_context, inner)?))
output_directory, }
output_file,
inner,
)?)),
IAstNode::Italic(inner) => Ok(RenderAstNode::Italic(RenderItalic::new( IAstNode::Italic(inner) => Ok(RenderAstNode::Italic(RenderItalic::new(
config, render_context,
output_directory,
output_file,
inner, inner,
)?)), )?)),
IAstNode::Underline(inner) => Ok(RenderAstNode::Underline(RenderUnderline::new( IAstNode::Underline(inner) => Ok(RenderAstNode::Underline(RenderUnderline::new(
config, render_context,
output_directory,
output_file,
inner, inner,
)?)), )?)),
IAstNode::StrikeThrough(inner) => Ok(RenderAstNode::StrikeThrough( IAstNode::StrikeThrough(inner) => Ok(RenderAstNode::StrikeThrough(
RenderStrikeThrough::new(config, output_directory, output_file, inner)?, RenderStrikeThrough::new(render_context, inner)?,
)), )),
IAstNode::Code(inner) => Ok(RenderAstNode::Code(RenderCode::new( IAstNode::Code(inner) => {
config, Ok(RenderAstNode::Code(RenderCode::new(render_context, inner)?))
output_directory, }
output_file,
inner,
)?)),
IAstNode::Verbatim(inner) => Ok(RenderAstNode::Verbatim(RenderVerbatim::new( IAstNode::Verbatim(inner) => Ok(RenderAstNode::Verbatim(RenderVerbatim::new(
config, render_context,
output_directory,
output_file,
inner, inner,
)?)), )?)),
IAstNode::PlainText(inner) => Ok(RenderAstNode::PlainText(RenderPlainText::new( IAstNode::PlainText(inner) => Ok(RenderAstNode::PlainText(RenderPlainText::new(
config, render_context,
output_directory,
output_file,
inner, inner,
)?)), )?)),
IAstNode::RegularLink(inner) => Ok(RenderAstNode::RegularLink(RenderRegularLink::new( IAstNode::RegularLink(inner) => Ok(RenderAstNode::RegularLink(RenderRegularLink::new(
config, render_context,
output_directory,
output_file,
inner, inner,
)?)), )?)),
IAstNode::RadioLink(inner) => Ok(RenderAstNode::RadioLink(RenderRadioLink::new( IAstNode::RadioLink(inner) => Ok(RenderAstNode::RadioLink(RenderRadioLink::new(
config, render_context,
output_directory,
output_file,
inner, inner,
)?)), )?)),
IAstNode::RadioTarget(inner) => Ok(RenderAstNode::RadioTarget(RenderRadioTarget::new( IAstNode::RadioTarget(inner) => Ok(RenderAstNode::RadioTarget(RenderRadioTarget::new(
config, render_context,
output_directory,
output_file,
inner, inner,
)?)), )?)),
IAstNode::PlainLink(inner) => Ok(RenderAstNode::PlainLink(RenderPlainLink::new( IAstNode::PlainLink(inner) => Ok(RenderAstNode::PlainLink(RenderPlainLink::new(
config, render_context,
output_directory,
output_file,
inner, inner,
)?)), )?)),
IAstNode::AngleLink(inner) => Ok(RenderAstNode::AngleLink(RenderAngleLink::new( IAstNode::AngleLink(inner) => Ok(RenderAstNode::AngleLink(RenderAngleLink::new(
config, render_context,
output_directory,
output_file,
inner, inner,
)?)), )?)),
IAstNode::OrgMacro(inner) => Ok(RenderAstNode::OrgMacro(RenderOrgMacro::new( IAstNode::OrgMacro(inner) => Ok(RenderAstNode::OrgMacro(RenderOrgMacro::new(
config, render_context,
output_directory,
output_file,
inner, inner,
)?)), )?)),
IAstNode::Entity(inner) => Ok(RenderAstNode::Entity(RenderEntity::new( IAstNode::Entity(inner) => Ok(RenderAstNode::Entity(RenderEntity::new(
config, render_context,
output_directory,
output_file,
inner, inner,
)?)), )?)),
IAstNode::LatexFragment(inner) => Ok(RenderAstNode::LatexFragment( IAstNode::LatexFragment(inner) => Ok(RenderAstNode::LatexFragment(
RenderLatexFragment::new(config, output_directory, output_file, inner)?, RenderLatexFragment::new(render_context, inner)?,
)), )),
IAstNode::ExportSnippet(inner) => Ok(RenderAstNode::ExportSnippet( IAstNode::ExportSnippet(inner) => Ok(RenderAstNode::ExportSnippet(
RenderExportSnippet::new(config, output_directory, output_file, inner)?, RenderExportSnippet::new(render_context, inner)?,
)), )),
IAstNode::FootnoteReference(inner) => Ok(RenderAstNode::FootnoteReference( IAstNode::FootnoteReference(inner) => Ok(RenderAstNode::FootnoteReference(
RenderFootnoteReference::new(config, output_directory, output_file, inner)?, RenderFootnoteReference::new(render_context, inner)?,
)), )),
IAstNode::Citation(inner) => Ok(RenderAstNode::Citation(RenderCitation::new( IAstNode::Citation(inner) => Ok(RenderAstNode::Citation(RenderCitation::new(
config, render_context,
output_directory,
output_file,
inner, inner,
)?)), )?)),
IAstNode::CitationReference(inner) => Ok(RenderAstNode::CitationReference( IAstNode::CitationReference(inner) => Ok(RenderAstNode::CitationReference(
RenderCitationReference::new(config, output_directory, output_file, inner)?, RenderCitationReference::new(render_context, inner)?,
)), )),
IAstNode::InlineBabelCall(inner) => Ok(RenderAstNode::InlineBabelCall( IAstNode::InlineBabelCall(inner) => Ok(RenderAstNode::InlineBabelCall(
RenderInlineBabelCall::new(config, output_directory, output_file, inner)?, RenderInlineBabelCall::new(render_context, inner)?,
)), )),
IAstNode::InlineSourceBlock(inner) => Ok(RenderAstNode::InlineSourceBlock( IAstNode::InlineSourceBlock(inner) => Ok(RenderAstNode::InlineSourceBlock(
RenderInlineSourceBlock::new(config, output_directory, output_file, inner)?, RenderInlineSourceBlock::new(render_context, inner)?,
)), )),
IAstNode::LineBreak(inner) => Ok(RenderAstNode::LineBreak(RenderLineBreak::new( IAstNode::LineBreak(inner) => Ok(RenderAstNode::LineBreak(RenderLineBreak::new(
config, render_context,
output_directory,
output_file,
inner, inner,
)?)), )?)),
IAstNode::Target(inner) => Ok(RenderAstNode::Target(RenderTarget::new( IAstNode::Target(inner) => Ok(RenderAstNode::Target(RenderTarget::new(
config, render_context,
output_directory,
output_file,
inner, inner,
)?)), )?)),
IAstNode::StatisticsCookie(inner) => Ok(RenderAstNode::StatisticsCookie( IAstNode::StatisticsCookie(inner) => Ok(RenderAstNode::StatisticsCookie(
RenderStatisticsCookie::new(config, output_directory, output_file, inner)?, RenderStatisticsCookie::new(render_context, inner)?,
)), )),
IAstNode::Subscript(inner) => Ok(RenderAstNode::Subscript(RenderSubscript::new( IAstNode::Subscript(inner) => Ok(RenderAstNode::Subscript(RenderSubscript::new(
config, render_context,
output_directory,
output_file,
inner, inner,
)?)), )?)),
IAstNode::Superscript(inner) => Ok(RenderAstNode::Superscript(RenderSuperscript::new( IAstNode::Superscript(inner) => Ok(RenderAstNode::Superscript(RenderSuperscript::new(
config, render_context,
output_directory,
output_file,
inner, inner,
)?)), )?)),
IAstNode::Timestamp(inner) => Ok(RenderAstNode::Timestamp(RenderTimestamp::new( IAstNode::Timestamp(inner) => Ok(RenderAstNode::Timestamp(RenderTimestamp::new(
config, render_context,
output_directory,
output_file,
inner, inner,
)?)), )?)),
} }

View File

@ -1,8 +1,6 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config; use super::render_context::RenderContext;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::IBabelCall; use crate::intermediate::IBabelCall;

View File

@ -1,10 +1,29 @@
use serde::Serialize; use serde::Serialize;
use super::render_context::RenderContext;
use crate::error::CustomError;
use crate::intermediate::get_web_path;
use crate::intermediate::BlogPost;
use crate::intermediate::BlogPostPage;
use super::footnote_definition::RenderRealFootnoteDefinition; use super::footnote_definition::RenderRealFootnoteDefinition;
use super::macros::render;
use super::GlobalSettings; use super::GlobalSettings;
use super::PageHeader; use super::PageHeader;
use super::RenderDocumentElement; use super::RenderDocumentElement;
#[derive(Debug)]
pub(crate) struct RenderBlogPostPageInput<'a> {
post: &'a BlogPost,
page: &'a BlogPostPage,
}
impl<'a> RenderBlogPostPageInput<'a> {
pub(crate) fn new(post: &'a BlogPost, page: &'a BlogPostPage) -> RenderBlogPostPageInput<'a> {
RenderBlogPostPageInput { post, page }
}
}
#[derive(Debug, Serialize)] #[derive(Debug, Serialize)]
#[serde(tag = "type")] #[serde(tag = "type")]
#[serde(rename = "blog_post_page")] #[serde(rename = "blog_post_page")]
@ -23,23 +42,82 @@ pub(crate) struct RenderBlogPostPage {
footnotes: Vec<RenderRealFootnoteDefinition>, footnotes: Vec<RenderRealFootnoteDefinition>,
} }
impl RenderBlogPostPage { render!(
// TODO: Maybe these settings should be moved into a common struct so this can have the same type signature as the others. RenderBlogPostPage,
pub(crate) fn new( RenderBlogPostPageInput,
global_settings: GlobalSettings, original,
page_header: Option<PageHeader>, render_context,
title: Option<String>, {
self_link: Option<String>, let css_files = vec![
children: Vec<RenderDocumentElement>, // get_web_path(
footnotes: Vec<RenderRealFootnoteDefinition>, // config,
) -> RenderBlogPostPage { // output_directory,
RenderBlogPostPage { // output_file,
// "stylesheet/reset.css",
// )?,
get_web_path(
render_context.config,
render_context.output_directory,
render_context.output_file,
"stylesheet/main.css",
)?,
];
let js_files = vec![get_web_path(
render_context.config,
render_context.output_directory,
render_context.output_file,
"blog_post.js",
)?];
let global_settings = GlobalSettings::new(original.page.title.clone(), css_files, js_files);
let page_header = PageHeader::new(
render_context.config.get_site_title().map(str::to_string),
Some(get_web_path(
render_context.config,
render_context.output_directory,
render_context.output_file,
"",
)?),
);
let link_to_blog_post = get_web_path(
render_context.config,
render_context.output_directory,
render_context.output_file,
render_context
.output_file
.strip_prefix(render_context.output_directory)?,
)?;
let children = {
let mut children = Vec::new();
for child in original.page.children.iter() {
children.push(RenderDocumentElement::new(render_context.clone(), child)?);
}
children
};
let footnotes = {
let mut ret = Vec::new();
for footnote in original.page.footnotes.iter() {
ret.push(RenderRealFootnoteDefinition::new(
render_context.clone(),
footnote,
)?);
}
ret
};
let ret = RenderBlogPostPage {
global_settings, global_settings,
page_header, page_header: Some(page_header),
title, title: original.page.title.clone(),
self_link, self_link: Some(link_to_blog_post),
children, children,
footnotes, footnotes,
} };
Ok(ret)
} }
} );

View File

@ -1,8 +1,7 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config; use super::macros::render;
use super::render_context::RenderContext;
use crate::context::RenderDocumentElement; use crate::context::RenderDocumentElement;
use crate::context::RenderRealFootnoteDefinition; use crate::context::RenderRealFootnoteDefinition;
use crate::error::CustomError; use crate::error::CustomError;
@ -12,6 +11,27 @@ use crate::intermediate::BlogPost;
use super::GlobalSettings; use super::GlobalSettings;
use super::PageHeader; use super::PageHeader;
#[derive(Debug)]
pub(crate) struct RenderBlogStreamInput<'a, 'b> {
original: &'a [&'b BlogPost],
older_link: Option<String>,
newer_link: Option<String>,
}
impl<'a, 'b> RenderBlogStreamInput<'a, 'b> {
pub(crate) fn new(
original: &'a [&'b BlogPost],
older_link: Option<String>,
newer_link: Option<String>,
) -> RenderBlogStreamInput<'a, 'b> {
RenderBlogStreamInput {
original,
older_link,
newer_link,
}
}
}
#[derive(Debug, Serialize)] #[derive(Debug, Serialize)]
#[serde(tag = "type")] #[serde(tag = "type")]
#[serde(rename = "blog_stream")] #[serde(rename = "blog_stream")]
@ -22,15 +42,12 @@ pub(crate) struct RenderBlogStream {
stream_pagination: Option<RenderBlogStreamPagination>, stream_pagination: Option<RenderBlogStreamPagination>,
} }
impl RenderBlogStream { render!(
pub(crate) fn new( RenderBlogStream,
config: &Config, RenderBlogStreamInput,
output_directory: &Path, original,
output_file: &Path, render_context,
original: &[&BlogPost], {
older_link: Option<String>,
newer_link: Option<String>,
) -> Result<RenderBlogStream, CustomError> {
let css_files = vec![ let css_files = vec![
// get_web_path( // get_web_path(
// config, // config,
@ -38,33 +55,45 @@ impl RenderBlogStream {
// output_file, // output_file,
// "stylesheet/reset.css", // "stylesheet/reset.css",
// )?, // )?,
get_web_path(config, output_directory, output_file, "stylesheet/main.css")?, get_web_path(
render_context.config,
render_context.output_directory,
render_context.output_file,
"stylesheet/main.css",
)?,
]; ];
let js_files = vec![get_web_path( let js_files = vec![get_web_path(
config, render_context.config,
output_directory, render_context.output_directory,
output_file, render_context.output_file,
"blog_post.js", "blog_post.js",
)?]; )?];
let global_settings = GlobalSettings::new( let global_settings = GlobalSettings::new(
config.get_site_title().map(str::to_string), render_context.config.get_site_title().map(str::to_string),
css_files, css_files,
js_files, js_files,
); );
let page_header = PageHeader::new( let page_header = PageHeader::new(
config.get_site_title().map(str::to_string), render_context.config.get_site_title().map(str::to_string),
Some(get_web_path(config, output_directory, output_file, "")?), Some(get_web_path(
render_context.config,
render_context.output_directory,
render_context.output_file,
"",
)?),
); );
let children = original let children = original
.original
.into_iter() .into_iter()
.map(|blog_post| { .map(|blog_post| RenderBlogStreamEntry::new(render_context.clone(), blog_post))
RenderBlogStreamEntry::new(config, output_directory, output_file, blog_post)
})
.collect::<Result<Vec<_>, _>>()?; .collect::<Result<Vec<_>, _>>()?;
let stream_pagination = if older_link.is_some() || newer_link.is_some() { let stream_pagination = if original.older_link.is_some() || original.newer_link.is_some() {
Some(RenderBlogStreamPagination::new(older_link, newer_link)?) Some(RenderBlogStreamPagination::new(
original.older_link.clone(),
original.newer_link.clone(),
)?)
} else { } else {
None None
}; };
@ -76,7 +105,7 @@ impl RenderBlogStream {
stream_pagination, stream_pagination,
}) })
} }
} );
#[derive(Debug, Serialize)] #[derive(Debug, Serialize)]
pub(crate) struct RenderBlogStreamEntry { pub(crate) struct RenderBlogStreamEntry {
@ -90,43 +119,38 @@ pub(crate) struct RenderBlogStreamEntry {
footnotes: Vec<RenderRealFootnoteDefinition>, footnotes: Vec<RenderRealFootnoteDefinition>,
} }
impl RenderBlogStreamEntry { render!(RenderBlogStreamEntry, BlogPost, original, render_context, {
fn new( // TODO: This link is probably wrong.
config: &Config, let link_to_blog_post = get_web_path(
output_directory: &Path, render_context.config,
output_file: &Path, render_context.output_directory,
original: &BlogPost, render_context.output_file,
) -> Result<RenderBlogStreamEntry, CustomError> { render_context
// TODO: This link is probably wrong. .output_file
let link_to_blog_post = get_web_path( .strip_prefix(render_context.output_directory)?,
config, )?;
output_directory,
output_file,
output_file.strip_prefix(output_directory)?,
)?;
// TODO: Should I guess an index page instead of erroring out? // TODO: Should I guess an index page instead of erroring out?
let index_page = original let index_page = original
.get_index_page() .get_index_page()
.ok_or_else(|| format!("Blog post {} needs an index page.", original.id))?; .ok_or_else(|| format!("Blog post {} needs an index page.", original.id))?;
let title = index_page.title.clone(); let title = index_page.title.clone();
// TODO: Handle footnotes. // TODO: Handle footnotes.
let children = index_page let children = index_page
.children .children
.iter() .iter()
.map(|child| RenderDocumentElement::new(config, output_directory, output_file, child)) .map(|child| RenderDocumentElement::new(render_context.clone(), child))
.collect::<Result<Vec<_>, _>>()?; .collect::<Result<Vec<_>, _>>()?;
Ok(RenderBlogStreamEntry { Ok(RenderBlogStreamEntry {
title, title,
self_link: Some(link_to_blog_post), self_link: Some(link_to_blog_post),
children, children,
footnotes: Vec::new(), footnotes: Vec::new(),
}) })
} });
}
#[derive(Debug, Serialize)] #[derive(Debug, Serialize)]
pub(crate) struct RenderBlogStreamPagination { pub(crate) struct RenderBlogStreamPagination {

View File

@ -1,12 +1,10 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::IBold; use crate::intermediate::IBold;
use super::macros::render; use super::macros::render;
use super::render_context::RenderContext;
use super::RenderObject; use super::RenderObject;
#[derive(Debug, Serialize)] #[derive(Debug, Serialize)]
@ -16,27 +14,14 @@ pub(crate) struct RenderBold {
children: Vec<RenderObject>, children: Vec<RenderObject>,
} }
render!( render!(RenderBold, IBold, original, render_context, {
RenderBold, let children = {
IBold, let mut ret = Vec::new();
original, for obj in original.children.iter() {
config, ret.push(RenderObject::new(render_context.clone(), obj)?);
output_directory, }
output_file, ret
{ };
let children = {
let mut ret = Vec::new();
for obj in original.children.iter() {
ret.push(RenderObject::new(
config,
output_directory,
output_file,
obj,
)?);
}
ret
};
Ok(RenderBold { children }) Ok(RenderBold { children })
} });
);

View File

@ -1,8 +1,6 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config; use super::render_context::RenderContext;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::ICenterBlock; use crate::intermediate::ICenterBlock;

View File

@ -1,8 +1,6 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config; use super::render_context::RenderContext;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::ICitation; use crate::intermediate::ICitation;

View File

@ -1,8 +1,6 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config; use super::render_context::RenderContext;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::ICitationReference; use crate::intermediate::ICitationReference;

View File

@ -1,8 +1,6 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config; use super::render_context::RenderContext;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::IClock; use crate::intermediate::IClock;

View File

@ -1,8 +1,6 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config; use super::render_context::RenderContext;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::ICode; use crate::intermediate::ICode;
@ -15,16 +13,8 @@ pub(crate) struct RenderCode {
contents: String, contents: String,
} }
render!( render!(RenderCode, ICode, original, _render_context, {
RenderCode, Ok(RenderCode {
ICode, contents: original.contents.clone(),
original, })
_config, });
_output_directory,
_output_file,
{
Ok(RenderCode {
contents: original.contents.clone(),
})
}
);

View File

@ -1,8 +1,6 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config; use super::render_context::RenderContext;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::IComment; use crate::intermediate::IComment;

View File

@ -1,8 +1,6 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config; use super::render_context::RenderContext;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::ICommentBlock; use crate::intermediate::ICommentBlock;

View File

@ -1,8 +1,6 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config; use super::render_context::RenderContext;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::IDiarySexp; use crate::intermediate::IDiarySexp;

View File

@ -1,8 +1,6 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config; use super::render_context::RenderContext;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::IDocumentElement; use crate::intermediate::IDocumentElement;
@ -21,16 +19,14 @@ render!(
RenderDocumentElement, RenderDocumentElement,
IDocumentElement, IDocumentElement,
original, original,
config, render_context,
output_directory,
output_file,
{ {
match original { match original {
IDocumentElement::Heading(inner) => Ok(RenderDocumentElement::Heading( IDocumentElement::Heading(inner) => Ok(RenderDocumentElement::Heading(
RenderHeading::new(config, output_directory, output_file, inner)?, RenderHeading::new(render_context.clone(), inner)?,
)), )),
IDocumentElement::Section(inner) => Ok(RenderDocumentElement::Section( IDocumentElement::Section(inner) => Ok(RenderDocumentElement::Section(
RenderSection::new(config, output_directory, output_file, inner)?, RenderSection::new(render_context.clone(), inner)?,
)), )),
} }
} }

View File

@ -1,8 +1,6 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config; use super::render_context::RenderContext;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::IDrawer; use crate::intermediate::IDrawer;

View File

@ -1,8 +1,6 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config; use super::render_context::RenderContext;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::IDynamicBlock; use crate::intermediate::IDynamicBlock;

View File

@ -1,8 +1,6 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config; use super::render_context::RenderContext;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::IElement; use crate::intermediate::IElement;
@ -61,132 +59,98 @@ pub(crate) enum RenderElement {
LatexEnvironment(RenderLatexEnvironment), LatexEnvironment(RenderLatexEnvironment),
} }
render!( render!(RenderElement, IElement, original, render_context, {
RenderElement, match original {
IElement, IElement::Paragraph(inner) => Ok(RenderElement::Paragraph(RenderParagraph::new(
original, render_context.clone(),
config, inner,
output_directory, )?)),
output_file, IElement::PlainList(inner) => Ok(RenderElement::PlainList(RenderPlainList::new(
{ render_context.clone(),
match original { inner,
IElement::Paragraph(inner) => Ok(RenderElement::Paragraph(RenderParagraph::new( )?)),
config, IElement::CenterBlock(inner) => Ok(RenderElement::CenterBlock(RenderCenterBlock::new(
output_directory, render_context.clone(),
output_file, inner,
inner, )?)),
)?)), IElement::QuoteBlock(inner) => Ok(RenderElement::QuoteBlock(RenderQuoteBlock::new(
IElement::PlainList(inner) => Ok(RenderElement::PlainList(RenderPlainList::new( render_context.clone(),
config, inner,
output_directory, )?)),
output_file, IElement::SpecialBlock(inner) => Ok(RenderElement::SpecialBlock(RenderSpecialBlock::new(
inner, render_context.clone(),
)?)), inner,
IElement::CenterBlock(inner) => Ok(RenderElement::CenterBlock(RenderCenterBlock::new( )?)),
config, IElement::DynamicBlock(inner) => Ok(RenderElement::DynamicBlock(RenderDynamicBlock::new(
output_directory, render_context.clone(),
output_file, inner,
inner, )?)),
)?)), IElement::FootnoteDefinition(inner) => Ok(RenderElement::FootnoteDefinition(
IElement::QuoteBlock(inner) => Ok(RenderElement::QuoteBlock(RenderQuoteBlock::new( RenderFootnoteDefinition::new(render_context.clone(), inner)?,
config, )),
output_directory, IElement::Comment(inner) => Ok(RenderElement::Comment(RenderComment::new(
output_file, render_context.clone(),
inner, inner,
)?)), )?)),
IElement::SpecialBlock(inner) => Ok(RenderElement::SpecialBlock( IElement::Drawer(inner) => Ok(RenderElement::Drawer(RenderDrawer::new(
RenderSpecialBlock::new(config, output_directory, output_file, inner)?, render_context.clone(),
)), inner,
IElement::DynamicBlock(inner) => Ok(RenderElement::DynamicBlock( )?)),
RenderDynamicBlock::new(config, output_directory, output_file, inner)?, IElement::PropertyDrawer(inner) => Ok(RenderElement::PropertyDrawer(
)), RenderPropertyDrawer::new(render_context.clone(), inner)?,
IElement::FootnoteDefinition(inner) => Ok(RenderElement::FootnoteDefinition( )),
RenderFootnoteDefinition::new(config, output_directory, output_file, inner)?, IElement::Table(inner) => Ok(RenderElement::Table(RenderTable::new(
)), render_context.clone(),
IElement::Comment(inner) => Ok(RenderElement::Comment(RenderComment::new( inner,
config, )?)),
output_directory, IElement::VerseBlock(inner) => Ok(RenderElement::VerseBlock(RenderVerseBlock::new(
output_file, render_context.clone(),
inner, inner,
)?)), )?)),
IElement::Drawer(inner) => Ok(RenderElement::Drawer(RenderDrawer::new( IElement::CommentBlock(inner) => Ok(RenderElement::CommentBlock(RenderCommentBlock::new(
config, render_context.clone(),
output_directory, inner,
output_file, )?)),
inner, IElement::ExampleBlock(inner) => Ok(RenderElement::ExampleBlock(RenderExampleBlock::new(
)?)), render_context.clone(),
IElement::PropertyDrawer(inner) => Ok(RenderElement::PropertyDrawer( inner,
RenderPropertyDrawer::new(config, output_directory, output_file, inner)?, )?)),
)), IElement::ExportBlock(inner) => Ok(RenderElement::ExportBlock(RenderExportBlock::new(
IElement::Table(inner) => Ok(RenderElement::Table(RenderTable::new( render_context.clone(),
config, inner,
output_directory, )?)),
output_file, IElement::SrcBlock(inner) => Ok(RenderElement::SrcBlock(RenderSrcBlock::new(
inner, render_context.clone(),
)?)), inner,
IElement::VerseBlock(inner) => Ok(RenderElement::VerseBlock(RenderVerseBlock::new( )?)),
config, IElement::Clock(inner) => Ok(RenderElement::Clock(RenderClock::new(
output_directory, render_context.clone(),
output_file, inner,
inner, )?)),
)?)), IElement::DiarySexp(inner) => Ok(RenderElement::DiarySexp(RenderDiarySexp::new(
IElement::CommentBlock(inner) => Ok(RenderElement::CommentBlock( render_context.clone(),
RenderCommentBlock::new(config, output_directory, output_file, inner)?, inner,
)), )?)),
IElement::ExampleBlock(inner) => Ok(RenderElement::ExampleBlock( IElement::Planning(inner) => Ok(RenderElement::Planning(RenderPlanning::new(
RenderExampleBlock::new(config, output_directory, output_file, inner)?, render_context.clone(),
)), inner,
IElement::ExportBlock(inner) => Ok(RenderElement::ExportBlock(RenderExportBlock::new( )?)),
config, IElement::FixedWidthArea(inner) => Ok(RenderElement::FixedWidthArea(
output_directory, RenderFixedWidthArea::new(render_context.clone(), inner)?,
output_file, )),
inner, IElement::HorizontalRule(inner) => Ok(RenderElement::HorizontalRule(
)?)), RenderHorizontalRule::new(render_context.clone(), inner)?,
IElement::SrcBlock(inner) => Ok(RenderElement::SrcBlock(RenderSrcBlock::new( )),
config, IElement::Keyword(inner) => Ok(RenderElement::Keyword(RenderKeyword::new(
output_directory, render_context.clone(),
output_file, inner,
inner, )?)),
)?)), IElement::BabelCall(inner) => Ok(RenderElement::BabelCall(RenderBabelCall::new(
IElement::Clock(inner) => Ok(RenderElement::Clock(RenderClock::new( render_context.clone(),
config, inner,
output_directory, )?)),
output_file, IElement::LatexEnvironment(inner) => Ok(RenderElement::LatexEnvironment(
inner, RenderLatexEnvironment::new(render_context.clone(), inner)?,
)?)), )),
IElement::DiarySexp(inner) => Ok(RenderElement::DiarySexp(RenderDiarySexp::new(
config,
output_directory,
output_file,
inner,
)?)),
IElement::Planning(inner) => Ok(RenderElement::Planning(RenderPlanning::new(
config,
output_directory,
output_file,
inner,
)?)),
IElement::FixedWidthArea(inner) => Ok(RenderElement::FixedWidthArea(
RenderFixedWidthArea::new(config, output_directory, output_file, inner)?,
)),
IElement::HorizontalRule(inner) => Ok(RenderElement::HorizontalRule(
RenderHorizontalRule::new(config, output_directory, output_file, inner)?,
)),
IElement::Keyword(inner) => Ok(RenderElement::Keyword(RenderKeyword::new(
config,
output_directory,
output_file,
inner,
)?)),
IElement::BabelCall(inner) => Ok(RenderElement::BabelCall(RenderBabelCall::new(
config,
output_directory,
output_file,
inner,
)?)),
IElement::LatexEnvironment(inner) => Ok(RenderElement::LatexEnvironment(
RenderLatexEnvironment::new(config, output_directory, output_file, inner)?,
)),
}
} }
); });

View File

@ -1,8 +1,6 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config; use super::render_context::RenderContext;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::IEntity; use crate::intermediate::IEntity;
@ -15,16 +13,8 @@ pub(crate) struct RenderEntity {
html: String, html: String,
} }
render!( render!(RenderEntity, IEntity, original, _render_context, {
RenderEntity, Ok(RenderEntity {
IEntity, html: original.html.clone(),
original, })
_config, });
_output_directory,
_output_file,
{
Ok(RenderEntity {
html: original.html.clone(),
})
}
);

View File

@ -1,8 +1,6 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config; use super::render_context::RenderContext;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::IExampleBlock; use crate::intermediate::IExampleBlock;

View File

@ -1,8 +1,6 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config; use super::render_context::RenderContext;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::IExportBlock; use crate::intermediate::IExportBlock;

View File

@ -1,8 +1,6 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config; use super::render_context::RenderContext;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::IExportSnippet; use crate::intermediate::IExportSnippet;

View File

@ -1,8 +1,6 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config; use super::render_context::RenderContext;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::IFixedWidthArea; use crate::intermediate::IFixedWidthArea;

View File

@ -1,8 +1,6 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config; use super::render_context::RenderContext;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::IFootnoteDefinition; use crate::intermediate::IFootnoteDefinition;
use crate::intermediate::IRealFootnoteDefinition; use crate::intermediate::IRealFootnoteDefinition;
@ -33,14 +31,12 @@ render!(
RenderRealFootnoteDefinition, RenderRealFootnoteDefinition,
IRealFootnoteDefinition, IRealFootnoteDefinition,
original, original,
config, render_context,
output_directory,
output_file,
{ {
let contents = { let contents = {
let mut ret = Vec::new(); let mut ret = Vec::new();
for obj in original.contents.iter() { for obj in original.contents.iter() {
ret.push(obj.into_render_ast_node(config, output_directory, output_file)?); ret.push(obj.into_render_ast_node(render_context.clone())?);
} }
ret ret
}; };

View File

@ -1,8 +1,6 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config; use super::render_context::RenderContext;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::IFootnoteReference; use crate::intermediate::IFootnoteReference;
@ -21,9 +19,7 @@ render!(
RenderFootnoteReference, RenderFootnoteReference,
IFootnoteReference, IFootnoteReference,
original, original,
_config, _render_context,
_output_directory,
_output_file,
{ {
Ok(RenderFootnoteReference { Ok(RenderFootnoteReference {
reference_id: original.get_reference_id(), reference_id: original.get_reference_id(),

View File

@ -1,8 +1,6 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config; use super::render_context::RenderContext;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::IHeading; use crate::intermediate::IHeading;
@ -19,44 +17,26 @@ pub(crate) struct RenderHeading {
children: Vec<RenderDocumentElement>, children: Vec<RenderDocumentElement>,
} }
render!( render!(RenderHeading, IHeading, original, render_context, {
RenderHeading, let title = {
IHeading, let mut ret = Vec::new();
original, for obj in original.title.iter() {
config, ret.push(RenderObject::new(render_context.clone(), obj)?);
output_directory, }
output_file, ret
{ };
let title = {
let mut ret = Vec::new();
for obj in original.title.iter() {
ret.push(RenderObject::new(
config,
output_directory,
output_file,
obj,
)?);
}
ret
};
let children = { let children = {
let mut ret = Vec::new(); let mut ret = Vec::new();
for obj in original.children.iter() { for obj in original.children.iter() {
ret.push(RenderDocumentElement::new( ret.push(RenderDocumentElement::new(render_context.clone(), obj)?);
config, }
output_directory, ret
output_file, };
obj,
)?);
}
ret
};
Ok(RenderHeading { Ok(RenderHeading {
level: original.level + 1, // Adding 1 because the page title is going to be h1. level: original.level + 1, // Adding 1 because the page title is going to be h1.
title, title,
children, children,
}) })
} });
);

View File

@ -1,8 +1,6 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config; use super::render_context::RenderContext;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::IHorizontalRule; use crate::intermediate::IHorizontalRule;

View File

@ -1,8 +1,6 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config; use super::render_context::RenderContext;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::IInlineBabelCall; use crate::intermediate::IInlineBabelCall;

View File

@ -1,8 +1,6 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config; use super::render_context::RenderContext;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::IInlineSourceBlock; use crate::intermediate::IInlineSourceBlock;
@ -19,9 +17,7 @@ render!(
RenderInlineSourceBlock, RenderInlineSourceBlock,
IInlineSourceBlock, IInlineSourceBlock,
original, original,
_config, _render_context,
_output_directory,
_output_file,
{ {
Ok(RenderInlineSourceBlock { Ok(RenderInlineSourceBlock {
value: original.value.clone(), value: original.value.clone(),

View File

@ -1,8 +1,6 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config; use super::render_context::RenderContext;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::IItalic; use crate::intermediate::IItalic;
@ -16,27 +14,14 @@ pub(crate) struct RenderItalic {
children: Vec<RenderObject>, children: Vec<RenderObject>,
} }
render!( render!(RenderItalic, IItalic, original, render_context, {
RenderItalic, let children = {
IItalic, let mut ret = Vec::new();
original, for obj in original.children.iter() {
config, ret.push(RenderObject::new(render_context.clone(), obj)?);
output_directory, }
output_file, ret
{ };
let children = {
let mut ret = Vec::new();
for obj in original.children.iter() {
ret.push(RenderObject::new(
config,
output_directory,
output_file,
obj,
)?);
}
ret
};
Ok(RenderItalic { children }) Ok(RenderItalic { children })
} });
);

View File

@ -1,8 +1,6 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config; use super::render_context::RenderContext;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::IKeyword; use crate::intermediate::IKeyword;

View File

@ -1,8 +1,6 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config; use super::render_context::RenderContext;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::ILatexEnvironment; use crate::intermediate::ILatexEnvironment;

View File

@ -1,8 +1,6 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config; use super::render_context::RenderContext;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::ILatexFragment; use crate::intermediate::ILatexFragment;
@ -19,9 +17,7 @@ render!(
RenderLatexFragment, RenderLatexFragment,
ILatexFragment, ILatexFragment,
original, original,
_config, _render_context,
_output_directory,
_output_file,
{ {
Ok(RenderLatexFragment { Ok(RenderLatexFragment {
value: original.value.clone(), value: original.value.clone(),

View File

@ -1,8 +1,6 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config; use super::render_context::RenderContext;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::ILineBreak; use crate::intermediate::ILineBreak;

View File

@ -2,18 +2,14 @@
/// ///
/// This exists to make changing the type signature easier. /// This exists to make changing the type signature easier.
macro_rules! render { macro_rules! render {
($rstruct:ident, $istruct:ident, $original:ident, $config:ident, $output_directory:ident, $output_file:ident, $fnbody:tt) => { ($rstruct:ident, $istruct:ident, $original:ident, $render_context:ident, $fnbody:tt) => {
impl $rstruct { impl $rstruct {
pub(crate) fn new( pub(crate) fn new(
config: &Config, render_context: RenderContext<'_>,
output_directory: &Path,
output_file: &Path,
original: &$istruct, original: &$istruct,
) -> Result<$rstruct, CustomError> { ) -> Result<$rstruct, CustomError> {
let $original = original; let $original = original;
let $config = config; let $render_context = render_context;
let $output_directory = output_directory;
let $output_file = output_file;
$fnbody $fnbody
} }
} }
@ -29,9 +25,7 @@ macro_rules! rnoop {
($rstruct:ident, $istruct:ident) => { ($rstruct:ident, $istruct:ident) => {
impl $rstruct { impl $rstruct {
pub(crate) fn new( pub(crate) fn new(
_config: &Config, _render_context: RenderContext<'_>,
_output_directory: &Path,
_output_file: &Path,
_original: &$istruct, _original: &$istruct,
) -> Result<$rstruct, CustomError> { ) -> Result<$rstruct, CustomError> {
Ok($rstruct {}) Ok($rstruct {})

View File

@ -66,7 +66,9 @@ mod verbatim;
mod verse_block; mod verse_block;
pub(crate) use blog_post_page::RenderBlogPostPage; pub(crate) use blog_post_page::RenderBlogPostPage;
pub(crate) use blog_post_page::RenderBlogPostPageInput;
pub(crate) use blog_stream::RenderBlogStream; pub(crate) use blog_stream::RenderBlogStream;
pub(crate) use blog_stream::RenderBlogStreamInput;
pub(crate) use document_element::RenderDocumentElement; pub(crate) use document_element::RenderDocumentElement;
pub(crate) use element::RenderElement; pub(crate) use element::RenderElement;
pub(crate) use footnote_definition::RenderRealFootnoteDefinition; pub(crate) use footnote_definition::RenderRealFootnoteDefinition;
@ -74,4 +76,5 @@ pub(crate) use global_settings::GlobalSettings;
pub(crate) use heading::RenderHeading; pub(crate) use heading::RenderHeading;
pub(crate) use object::RenderObject; pub(crate) use object::RenderObject;
pub(crate) use page_header::PageHeader; pub(crate) use page_header::PageHeader;
pub(crate) use render_context::RenderContext;
pub(crate) use section::RenderSection; pub(crate) use section::RenderSection;

View File

@ -1,8 +1,6 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config; use super::render_context::RenderContext;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::IObject; use crate::intermediate::IObject;
@ -67,153 +65,110 @@ pub(crate) enum RenderObject {
Timestamp(RenderTimestamp), Timestamp(RenderTimestamp),
} }
render!( render!(RenderObject, IObject, original, render_context, {
RenderObject, match original {
IObject, IObject::Bold(inner) => Ok(RenderObject::Bold(RenderBold::new(
original, render_context.clone(),
config, inner,
output_directory, )?)),
output_file, IObject::Italic(inner) => Ok(RenderObject::Italic(RenderItalic::new(
{ render_context.clone(),
match original { inner,
IObject::Bold(inner) => Ok(RenderObject::Bold(RenderBold::new( )?)),
config, IObject::Underline(inner) => Ok(RenderObject::Underline(RenderUnderline::new(
output_directory, render_context.clone(),
output_file, inner,
inner, )?)),
)?)), IObject::StrikeThrough(inner) => Ok(RenderObject::StrikeThrough(RenderStrikeThrough::new(
IObject::Italic(inner) => Ok(RenderObject::Italic(RenderItalic::new( render_context.clone(),
config, inner,
output_directory, )?)),
output_file, IObject::Code(inner) => Ok(RenderObject::Code(RenderCode::new(
inner, render_context.clone(),
)?)), inner,
IObject::Underline(inner) => Ok(RenderObject::Underline(RenderUnderline::new( )?)),
config, IObject::Verbatim(inner) => Ok(RenderObject::Verbatim(RenderVerbatim::new(
output_directory, render_context.clone(),
output_file, inner,
inner, )?)),
)?)), IObject::PlainText(inner) => Ok(RenderObject::PlainText(RenderPlainText::new(
IObject::StrikeThrough(inner) => Ok(RenderObject::StrikeThrough( render_context.clone(),
RenderStrikeThrough::new(config, output_directory, output_file, inner)?, inner,
)), )?)),
IObject::Code(inner) => Ok(RenderObject::Code(RenderCode::new( IObject::RegularLink(inner) => Ok(RenderObject::RegularLink(RenderRegularLink::new(
config, render_context.clone(),
output_directory, inner,
output_file, )?)),
inner, IObject::RadioLink(inner) => Ok(RenderObject::RadioLink(RenderRadioLink::new(
)?)), render_context.clone(),
IObject::Verbatim(inner) => Ok(RenderObject::Verbatim(RenderVerbatim::new( inner,
config, )?)),
output_directory, IObject::RadioTarget(inner) => Ok(RenderObject::RadioTarget(RenderRadioTarget::new(
output_file, render_context.clone(),
inner, inner,
)?)), )?)),
IObject::PlainText(inner) => Ok(RenderObject::PlainText(RenderPlainText::new( IObject::PlainLink(inner) => Ok(RenderObject::PlainLink(RenderPlainLink::new(
config, render_context.clone(),
output_directory, inner,
output_file, )?)),
inner, IObject::AngleLink(inner) => Ok(RenderObject::AngleLink(RenderAngleLink::new(
)?)), render_context.clone(),
IObject::RegularLink(inner) => Ok(RenderObject::RegularLink(RenderRegularLink::new( inner,
config, )?)),
output_directory, IObject::OrgMacro(inner) => Ok(RenderObject::OrgMacro(RenderOrgMacro::new(
output_file, render_context.clone(),
inner, inner,
)?)), )?)),
IObject::RadioLink(inner) => Ok(RenderObject::RadioLink(RenderRadioLink::new( IObject::Entity(inner) => Ok(RenderObject::Entity(RenderEntity::new(
config, render_context.clone(),
output_directory, inner,
output_file, )?)),
inner, IObject::LatexFragment(inner) => Ok(RenderObject::LatexFragment(RenderLatexFragment::new(
)?)), render_context.clone(),
IObject::RadioTarget(inner) => Ok(RenderObject::RadioTarget(RenderRadioTarget::new( inner,
config, )?)),
output_directory, IObject::ExportSnippet(inner) => Ok(RenderObject::ExportSnippet(RenderExportSnippet::new(
output_file, render_context.clone(),
inner, inner,
)?)), )?)),
IObject::PlainLink(inner) => Ok(RenderObject::PlainLink(RenderPlainLink::new( IObject::FootnoteReference(inner) => Ok(RenderObject::FootnoteReference(
config, RenderFootnoteReference::new(render_context.clone(), inner)?,
output_directory, )),
output_file, IObject::Citation(inner) => Ok(RenderObject::Citation(RenderCitation::new(
inner, render_context.clone(),
)?)), inner,
IObject::AngleLink(inner) => Ok(RenderObject::AngleLink(RenderAngleLink::new( )?)),
config, IObject::CitationReference(inner) => Ok(RenderObject::CitationReference(
output_directory, RenderCitationReference::new(render_context.clone(), inner)?,
output_file, )),
inner, IObject::InlineBabelCall(inner) => Ok(RenderObject::InlineBabelCall(
)?)), RenderInlineBabelCall::new(render_context.clone(), inner)?,
IObject::OrgMacro(inner) => Ok(RenderObject::OrgMacro(RenderOrgMacro::new( )),
config, IObject::InlineSourceBlock(inner) => Ok(RenderObject::InlineSourceBlock(
output_directory, RenderInlineSourceBlock::new(render_context.clone(), inner)?,
output_file, )),
inner, IObject::LineBreak(inner) => Ok(RenderObject::LineBreak(RenderLineBreak::new(
)?)), render_context.clone(),
IObject::Entity(inner) => Ok(RenderObject::Entity(RenderEntity::new( inner,
config, )?)),
output_directory, IObject::Target(inner) => Ok(RenderObject::Target(RenderTarget::new(
output_file, render_context.clone(),
inner, inner,
)?)), )?)),
IObject::LatexFragment(inner) => Ok(RenderObject::LatexFragment( IObject::StatisticsCookie(inner) => Ok(RenderObject::StatisticsCookie(
RenderLatexFragment::new(config, output_directory, output_file, inner)?, RenderStatisticsCookie::new(render_context.clone(), inner)?,
)), )),
IObject::ExportSnippet(inner) => Ok(RenderObject::ExportSnippet( IObject::Subscript(inner) => Ok(RenderObject::Subscript(RenderSubscript::new(
RenderExportSnippet::new(config, output_directory, output_file, inner)?, render_context.clone(),
)), inner,
IObject::FootnoteReference(inner) => Ok(RenderObject::FootnoteReference( )?)),
RenderFootnoteReference::new(config, output_directory, output_file, inner)?, IObject::Superscript(inner) => Ok(RenderObject::Superscript(RenderSuperscript::new(
)), render_context.clone(),
IObject::Citation(inner) => Ok(RenderObject::Citation(RenderCitation::new( inner,
config, )?)),
output_directory, IObject::Timestamp(inner) => Ok(RenderObject::Timestamp(RenderTimestamp::new(
output_file, render_context.clone(),
inner, inner,
)?)), )?)),
IObject::CitationReference(inner) => Ok(RenderObject::CitationReference(
RenderCitationReference::new(config, output_directory, output_file, inner)?,
)),
IObject::InlineBabelCall(inner) => Ok(RenderObject::InlineBabelCall(
RenderInlineBabelCall::new(config, output_directory, output_file, inner)?,
)),
IObject::InlineSourceBlock(inner) => Ok(RenderObject::InlineSourceBlock(
RenderInlineSourceBlock::new(config, output_directory, output_file, inner)?,
)),
IObject::LineBreak(inner) => Ok(RenderObject::LineBreak(RenderLineBreak::new(
config,
output_directory,
output_file,
inner,
)?)),
IObject::Target(inner) => Ok(RenderObject::Target(RenderTarget::new(
config,
output_directory,
output_file,
inner,
)?)),
IObject::StatisticsCookie(inner) => Ok(RenderObject::StatisticsCookie(
RenderStatisticsCookie::new(config, output_directory, output_file, inner)?,
)),
IObject::Subscript(inner) => Ok(RenderObject::Subscript(RenderSubscript::new(
config,
output_directory,
output_file,
inner,
)?)),
IObject::Superscript(inner) => Ok(RenderObject::Superscript(RenderSuperscript::new(
config,
output_directory,
output_file,
inner,
)?)),
IObject::Timestamp(inner) => Ok(RenderObject::Timestamp(RenderTimestamp::new(
config,
output_directory,
output_file,
inner,
)?)),
}
} }
); });

View File

@ -1,8 +1,6 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config; use super::render_context::RenderContext;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::IOrgMacro; use crate::intermediate::IOrgMacro;

View File

@ -1,8 +1,6 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config; use super::render_context::RenderContext;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::IParagraph; use crate::intermediate::IParagraph;
@ -16,27 +14,14 @@ pub(crate) struct RenderParagraph {
children: Vec<RenderObject>, children: Vec<RenderObject>,
} }
render!( render!(RenderParagraph, IParagraph, original, render_context, {
RenderParagraph, let children = {
IParagraph, let mut ret = Vec::new();
original, for obj in original.children.iter() {
config, ret.push(RenderObject::new(render_context.clone(), obj)?);
output_directory, }
output_file, ret
{ };
let children = {
let mut ret = Vec::new();
for obj in original.children.iter() {
ret.push(RenderObject::new(
config,
output_directory,
output_file,
obj,
)?);
}
ret
};
Ok(RenderParagraph { children }) Ok(RenderParagraph { children })
} });
);

View File

@ -1,8 +1,6 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config; use super::render_context::RenderContext;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::IPlainLink; use crate::intermediate::IPlainLink;

View File

@ -1,8 +1,6 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config; use super::render_context::RenderContext;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::IPlainList; use crate::intermediate::IPlainList;
@ -17,35 +15,22 @@ pub(crate) struct RenderPlainList {
children: Vec<RenderPlainListItem>, children: Vec<RenderPlainListItem>,
} }
render!( render!(RenderPlainList, IPlainList, original, render_context, {
RenderPlainList, let list_type = match original.list_type {
IPlainList, organic::types::PlainListType::Unordered => "unordered".to_owned(),
original, organic::types::PlainListType::Ordered => "ordered".to_owned(),
config, organic::types::PlainListType::Descriptive => "descriptive".to_owned(),
output_directory, };
output_file, let children = {
{ let mut ret = Vec::new();
let list_type = match original.list_type { for obj in original.children.iter() {
organic::types::PlainListType::Unordered => "unordered".to_owned(), ret.push(RenderPlainListItem::new(render_context.clone(), obj)?);
organic::types::PlainListType::Ordered => "ordered".to_owned(), }
organic::types::PlainListType::Descriptive => "descriptive".to_owned(), ret
}; };
let children = {
let mut ret = Vec::new();
for obj in original.children.iter() {
ret.push(RenderPlainListItem::new(
config,
output_directory,
output_file,
obj,
)?);
}
ret
};
Ok(RenderPlainList { Ok(RenderPlainList {
list_type, list_type,
children, children,
}) })
} });
);

View File

@ -1,8 +1,6 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config; use super::render_context::RenderContext;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::IPlainListItem; use crate::intermediate::IPlainListItem;
@ -22,19 +20,12 @@ render!(
RenderPlainListItem, RenderPlainListItem,
IPlainListItem, IPlainListItem,
original, original,
config, render_context,
output_directory,
output_file,
{ {
let tag = { let tag = {
let mut ret = Vec::new(); let mut ret = Vec::new();
for obj in original.tag.iter() { for obj in original.tag.iter() {
ret.push(RenderObject::new( ret.push(RenderObject::new(render_context.clone(), obj)?);
config,
output_directory,
output_file,
obj,
)?);
} }
ret ret
}; };
@ -42,12 +33,7 @@ render!(
let children = { let children = {
let mut ret = Vec::new(); let mut ret = Vec::new();
for obj in original.children.iter() { for obj in original.children.iter() {
ret.push(RenderElement::new( ret.push(RenderElement::new(render_context.clone(), obj)?);
config,
output_directory,
output_file,
obj,
)?);
} }
ret ret
}; };

View File

@ -1,8 +1,6 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config; use super::render_context::RenderContext;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::IPlainText; use crate::intermediate::IPlainText;
@ -15,16 +13,8 @@ pub(crate) struct RenderPlainText {
source: String, source: String,
} }
render!( render!(RenderPlainText, IPlainText, original, _render_context, {
RenderPlainText, Ok(RenderPlainText {
IPlainText, source: original.source.clone(),
original, })
_config, });
_output_directory,
_output_file,
{
Ok(RenderPlainText {
source: original.source.clone(),
})
}
);

View File

@ -1,8 +1,6 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config; use super::render_context::RenderContext;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::IPlanning; use crate::intermediate::IPlanning;

View File

@ -1,8 +1,6 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config; use super::render_context::RenderContext;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::IPropertyDrawer; use crate::intermediate::IPropertyDrawer;

View File

@ -1,8 +1,6 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config; use super::render_context::RenderContext;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::IQuoteBlock; use crate::intermediate::IQuoteBlock;
@ -16,27 +14,14 @@ pub(crate) struct RenderQuoteBlock {
children: Vec<RenderElement>, children: Vec<RenderElement>,
} }
render!( render!(RenderQuoteBlock, IQuoteBlock, original, render_context, {
RenderQuoteBlock, let children = {
IQuoteBlock, let mut ret = Vec::new();
original, for obj in original.children.iter() {
config, ret.push(RenderElement::new(render_context.clone(), obj)?);
output_directory, }
output_file, ret
{ };
let children = {
let mut ret = Vec::new();
for obj in original.children.iter() {
ret.push(RenderElement::new(
config,
output_directory,
output_file,
obj,
)?);
}
ret
};
Ok(RenderQuoteBlock { children }) Ok(RenderQuoteBlock { children })
} });
);

View File

@ -1,8 +1,6 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config; use super::render_context::RenderContext;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::IRadioLink; use crate::intermediate::IRadioLink;

View File

@ -1,8 +1,6 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config; use super::render_context::RenderContext;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::IRadioTarget; use crate::intermediate::IRadioTarget;

View File

@ -1,8 +1,6 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config; use super::render_context::RenderContext;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::IRegularLink; use crate::intermediate::IRegularLink;
@ -17,30 +15,17 @@ pub(crate) struct RenderRegularLink {
children: Vec<RenderObject>, children: Vec<RenderObject>,
} }
render!( render!(RenderRegularLink, IRegularLink, original, render_context, {
RenderRegularLink, let children = {
IRegularLink, let mut ret = Vec::new();
original, for obj in original.children.iter() {
config, ret.push(RenderObject::new(render_context.clone(), obj)?);
output_directory, }
output_file, ret
{ };
let children = {
let mut ret = Vec::new();
for obj in original.children.iter() {
ret.push(RenderObject::new(
config,
output_directory,
output_file,
obj,
)?);
}
ret
};
Ok(RenderRegularLink { Ok(RenderRegularLink {
raw_link: original.raw_link.clone(), raw_link: original.raw_link.clone(),
children, children,
}) })
} });
);

View File

@ -1,8 +1,6 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config; use super::render_context::RenderContext;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::ISection; use crate::intermediate::ISection;
@ -16,27 +14,14 @@ pub(crate) struct RenderSection {
children: Vec<RenderElement>, children: Vec<RenderElement>,
} }
render!( render!(RenderSection, ISection, original, render_context, {
RenderSection, let children = {
ISection, let mut ret = Vec::new();
original, for obj in original.children.iter() {
config, ret.push(RenderElement::new(render_context.clone(), obj)?);
output_directory, }
output_file, ret
{ };
let children = {
let mut ret = Vec::new();
for obj in original.children.iter() {
ret.push(RenderElement::new(
config,
output_directory,
output_file,
obj,
)?);
}
ret
};
Ok(RenderSection { children }) Ok(RenderSection { children })
} });
);

View File

@ -1,8 +1,6 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config; use super::render_context::RenderContext;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::ISpecialBlock; use crate::intermediate::ISpecialBlock;

View File

@ -1,8 +1,6 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config; use super::render_context::RenderContext;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::ISrcBlock; use crate::intermediate::ISrcBlock;
@ -15,16 +13,8 @@ pub(crate) struct RenderSrcBlock {
lines: Vec<String>, lines: Vec<String>,
} }
render!( render!(RenderSrcBlock, ISrcBlock, original, _render_context, {
RenderSrcBlock, Ok(RenderSrcBlock {
ISrcBlock, lines: original.lines.clone(),
original, })
_config, });
_output_directory,
_output_file,
{
Ok(RenderSrcBlock {
lines: original.lines.clone(),
})
}
);

View File

@ -1,8 +1,6 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config; use super::render_context::RenderContext;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::IStatisticsCookie; use crate::intermediate::IStatisticsCookie;

View File

@ -1,8 +1,6 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config; use super::render_context::RenderContext;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::IStrikeThrough; use crate::intermediate::IStrikeThrough;
@ -20,19 +18,12 @@ render!(
RenderStrikeThrough, RenderStrikeThrough,
IStrikeThrough, IStrikeThrough,
original, original,
config, render_context,
output_directory,
output_file,
{ {
let children = { let children = {
let mut ret = Vec::new(); let mut ret = Vec::new();
for obj in original.children.iter() { for obj in original.children.iter() {
ret.push(RenderObject::new( ret.push(RenderObject::new(render_context.clone(), obj)?);
config,
output_directory,
output_file,
obj,
)?);
} }
ret ret
}; };

View File

@ -1,8 +1,6 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config; use super::render_context::RenderContext;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::ISubscript; use crate::intermediate::ISubscript;

View File

@ -1,8 +1,6 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config; use super::render_context::RenderContext;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::ISuperscript; use crate::intermediate::ISuperscript;

View File

@ -1,8 +1,6 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config; use super::render_context::RenderContext;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::ITable; use crate::intermediate::ITable;
@ -16,27 +14,14 @@ pub(crate) struct RenderTable {
children: Vec<RenderTableRow>, children: Vec<RenderTableRow>,
} }
render!( render!(RenderTable, ITable, original, render_context, {
RenderTable, let children = {
ITable, let mut ret = Vec::new();
original, for obj in original.children.iter() {
config, ret.push(RenderTableRow::new(render_context.clone(), obj)?);
output_directory, }
output_file, ret
{ };
let children = {
let mut ret = Vec::new();
for obj in original.children.iter() {
ret.push(RenderTableRow::new(
config,
output_directory,
output_file,
obj,
)?);
}
ret
};
Ok(RenderTable { children }) Ok(RenderTable { children })
} });
);

View File

@ -1,8 +1,6 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config; use super::render_context::RenderContext;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::ITableCell; use crate::intermediate::ITableCell;
@ -16,27 +14,14 @@ pub(crate) struct RenderTableCell {
children: Vec<RenderObject>, children: Vec<RenderObject>,
} }
render!( render!(RenderTableCell, ITableCell, original, render_context, {
RenderTableCell, let children = {
ITableCell, let mut ret = Vec::new();
original, for obj in original.children.iter() {
config, ret.push(RenderObject::new(render_context.clone(), obj)?);
output_directory, }
output_file, ret
{ };
let children = {
let mut ret = Vec::new();
for obj in original.children.iter() {
ret.push(RenderObject::new(
config,
output_directory,
output_file,
obj,
)?);
}
ret
};
Ok(RenderTableCell { children }) Ok(RenderTableCell { children })
} });
);

View File

@ -1,8 +1,6 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config; use super::render_context::RenderContext;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::ITableRow; use crate::intermediate::ITableRow;
@ -16,27 +14,14 @@ pub(crate) struct RenderTableRow {
children: Vec<RenderTableCell>, children: Vec<RenderTableCell>,
} }
render!( render!(RenderTableRow, ITableRow, original, render_context, {
RenderTableRow, let children = {
ITableRow, let mut ret = Vec::new();
original, for obj in original.children.iter() {
config, ret.push(RenderTableCell::new(render_context.clone(), obj)?);
output_directory, }
output_file, ret
{ };
let children = {
let mut ret = Vec::new();
for obj in original.children.iter() {
ret.push(RenderTableCell::new(
config,
output_directory,
output_file,
obj,
)?);
}
ret
};
Ok(RenderTableRow { children }) Ok(RenderTableRow { children })
} });
);

View File

@ -1,8 +1,6 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config; use super::render_context::RenderContext;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::ITarget; use crate::intermediate::ITarget;
@ -15,16 +13,8 @@ pub(crate) struct RenderTarget {
id: String, id: String,
} }
render!( render!(RenderTarget, ITarget, original, _render_context, {
RenderTarget, Ok(RenderTarget {
ITarget, id: original.id.clone(),
original, })
_config, });
_output_directory,
_output_file,
{
Ok(RenderTarget {
id: original.id.clone(),
})
}
);

View File

@ -1,8 +1,6 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config; use super::render_context::RenderContext;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::ITimestamp; use crate::intermediate::ITimestamp;

View File

@ -1,8 +1,6 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config; use super::render_context::RenderContext;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::IUnderline; use crate::intermediate::IUnderline;
@ -16,27 +14,14 @@ pub(crate) struct RenderUnderline {
children: Vec<RenderObject>, children: Vec<RenderObject>,
} }
render!( render!(RenderUnderline, IUnderline, original, render_context, {
RenderUnderline, let children = {
IUnderline, let mut ret = Vec::new();
original, for obj in original.children.iter() {
config, ret.push(RenderObject::new(render_context.clone(), obj)?);
output_directory, }
output_file, ret
{ };
let children = {
let mut ret = Vec::new();
for obj in original.children.iter() {
ret.push(RenderObject::new(
config,
output_directory,
output_file,
obj,
)?);
}
ret
};
Ok(RenderUnderline { children }) Ok(RenderUnderline { children })
} });
);

View File

@ -1,8 +1,6 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config; use super::render_context::RenderContext;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::IVerbatim; use crate::intermediate::IVerbatim;
@ -15,16 +13,8 @@ pub(crate) struct RenderVerbatim {
contents: String, contents: String,
} }
render!( render!(RenderVerbatim, IVerbatim, original, _render_context, {
RenderVerbatim, Ok(RenderVerbatim {
IVerbatim, contents: original.contents.clone(),
original, })
_config, });
_output_directory,
_output_file,
{
Ok(RenderVerbatim {
contents: original.contents.clone(),
})
}
);

View File

@ -1,8 +1,6 @@
use std::path::Path;
use serde::Serialize; use serde::Serialize;
use crate::config::Config; use super::render_context::RenderContext;
use crate::error::CustomError; use crate::error::CustomError;
use crate::intermediate::IVerseBlock; use crate::intermediate::IVerseBlock;

View File

@ -3,93 +3,8 @@ use std::path::Path;
use std::path::PathBuf; use std::path::PathBuf;
use crate::config::Config; use crate::config::Config;
use crate::context::GlobalSettings;
use crate::context::PageHeader;
use crate::context::RenderBlogPostPage;
use crate::context::RenderDocumentElement;
use crate::context::RenderRealFootnoteDefinition;
use crate::error::CustomError; use crate::error::CustomError;
use super::BlogPost;
use super::BlogPostPage;
pub(crate) fn convert_blog_post_page_to_render_context<D: AsRef<Path>, F: AsRef<Path>>(
config: &Config,
output_directory: D,
output_file: F,
_post: &BlogPost,
page: &BlogPostPage,
) -> Result<RenderBlogPostPage, CustomError> {
let output_directory = output_directory.as_ref();
let output_file = output_file.as_ref();
let css_files = vec![
// get_web_path(
// config,
// output_directory,
// output_file,
// "stylesheet/reset.css",
// )?,
get_web_path(config, output_directory, output_file, "stylesheet/main.css")?,
];
let js_files = vec![get_web_path(
config,
output_directory,
output_file,
"blog_post.js",
)?];
let global_settings = GlobalSettings::new(page.title.clone(), css_files, js_files);
let page_header = PageHeader::new(
config.get_site_title().map(str::to_string),
Some(get_web_path(config, output_directory, output_file, "")?),
);
let link_to_blog_post = get_web_path(
config,
output_directory,
output_file,
output_file.strip_prefix(output_directory)?,
)?;
let children = {
let mut children = Vec::new();
for child in page.children.iter() {
children.push(RenderDocumentElement::new(
config,
output_directory,
output_file,
child,
)?);
}
children
};
let footnotes = {
let mut ret = Vec::new();
for footnote in page.footnotes.iter() {
ret.push(RenderRealFootnoteDefinition::new(
config,
output_directory,
output_file,
footnote,
)?);
}
ret
};
let ret = RenderBlogPostPage::new(
global_settings,
Some(page_header),
page.title.clone(),
Some(link_to_blog_post),
children,
footnotes,
);
Ok(ret)
}
pub(crate) fn get_web_path<D: AsRef<Path>, F: AsRef<Path>, P: AsRef<Path>>( pub(crate) fn get_web_path<D: AsRef<Path>, F: AsRef<Path>, P: AsRef<Path>>(
config: &Config, config: &Config,
output_directory: D, output_directory: D,

View File

@ -76,7 +76,6 @@ pub(crate) use clock::IClock;
pub(crate) use code::ICode; pub(crate) use code::ICode;
pub(crate) use comment::IComment; pub(crate) use comment::IComment;
pub(crate) use comment_block::ICommentBlock; pub(crate) use comment_block::ICommentBlock;
pub(crate) use convert::convert_blog_post_page_to_render_context;
pub(crate) use convert::get_web_path; pub(crate) use convert::get_web_path;
pub(crate) use diary_sexp::IDiarySexp; pub(crate) use diary_sexp::IDiarySexp;
pub(crate) use document_element::IDocumentElement; pub(crate) use document_element::IDocumentElement;