Switch over to using the render context in render calls.
This commit is contained in:
parent
cb3278aba5
commit
add267d616
@ -5,9 +5,12 @@ use include_dir::include_dir;
|
||||
use include_dir::Dir;
|
||||
|
||||
use crate::config::Config;
|
||||
use crate::context::RenderBlogPostPage;
|
||||
use crate::context::RenderBlogPostPageInput;
|
||||
use crate::context::RenderBlogStream;
|
||||
use crate::context::RenderBlogStreamInput;
|
||||
use crate::context::RenderContext;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::convert_blog_post_page_to_render_context;
|
||||
use crate::intermediate::get_web_path;
|
||||
use crate::intermediate::BlogPost;
|
||||
use crate::render::DusterRenderer;
|
||||
@ -78,13 +81,13 @@ impl SiteRenderer {
|
||||
.join(&blog_post.id)
|
||||
.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,
|
||||
&self.output_directory,
|
||||
&output_path,
|
||||
blog_post,
|
||||
blog_post_page,
|
||||
self.output_directory.as_path(),
|
||||
output_path.as_path(),
|
||||
)?;
|
||||
let render_context = RenderBlogPostPage::new(render_context, &convert_input)?;
|
||||
let rendered_output = renderer_integration.render(render_context)?;
|
||||
let parent_directory = output_path
|
||||
.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,
|
||||
self.output_directory.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.
|
||||
let rendered_output = renderer_integration.render(blog_stream)?;
|
||||
|
@ -1,8 +1,6 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::IAngleLink;
|
||||
|
||||
|
@ -1,8 +1,5 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::IAstNode;
|
||||
|
||||
@ -45,6 +42,7 @@ 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;
|
||||
@ -121,285 +119,207 @@ pub(crate) enum RenderAstNode {
|
||||
pub(crate) trait IntoRenderAstNode {
|
||||
fn into_render_ast_node(
|
||||
&self,
|
||||
config: &Config,
|
||||
output_directory: &Path,
|
||||
output_file: &Path,
|
||||
render_context: RenderContext<'_>,
|
||||
) -> Result<RenderAstNode, CustomError>;
|
||||
}
|
||||
|
||||
impl IntoRenderAstNode for IAstNode {
|
||||
fn into_render_ast_node(
|
||||
&self,
|
||||
config: &Config,
|
||||
output_directory: &Path,
|
||||
output_file: &Path,
|
||||
render_context: RenderContext<'_>,
|
||||
) -> Result<RenderAstNode, CustomError> {
|
||||
match self {
|
||||
IAstNode::Heading(inner) => Ok(RenderAstNode::Heading(RenderHeading::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
render_context,
|
||||
inner,
|
||||
)?)),
|
||||
IAstNode::Section(inner) => Ok(RenderAstNode::Section(RenderSection::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
render_context,
|
||||
inner,
|
||||
)?)),
|
||||
IAstNode::Paragraph(inner) => Ok(RenderAstNode::Paragraph(RenderParagraph::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
render_context,
|
||||
inner,
|
||||
)?)),
|
||||
IAstNode::PlainList(inner) => Ok(RenderAstNode::PlainList(RenderPlainList::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
render_context,
|
||||
inner,
|
||||
)?)),
|
||||
IAstNode::CenterBlock(inner) => Ok(RenderAstNode::CenterBlock(RenderCenterBlock::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
render_context,
|
||||
inner,
|
||||
)?)),
|
||||
IAstNode::QuoteBlock(inner) => Ok(RenderAstNode::QuoteBlock(RenderQuoteBlock::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
render_context,
|
||||
inner,
|
||||
)?)),
|
||||
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(
|
||||
RenderDynamicBlock::new(config, output_directory, output_file, inner)?,
|
||||
RenderDynamicBlock::new(render_context, inner)?,
|
||||
)),
|
||||
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(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
render_context,
|
||||
inner,
|
||||
)?)),
|
||||
IAstNode::Drawer(inner) => Ok(RenderAstNode::Drawer(RenderDrawer::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
render_context,
|
||||
inner,
|
||||
)?)),
|
||||
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(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
render_context,
|
||||
inner,
|
||||
)?)),
|
||||
IAstNode::VerseBlock(inner) => Ok(RenderAstNode::VerseBlock(RenderVerseBlock::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
render_context,
|
||||
inner,
|
||||
)?)),
|
||||
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(
|
||||
RenderExampleBlock::new(config, output_directory, output_file, inner)?,
|
||||
RenderExampleBlock::new(render_context, inner)?,
|
||||
)),
|
||||
IAstNode::ExportBlock(inner) => Ok(RenderAstNode::ExportBlock(RenderExportBlock::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
render_context,
|
||||
inner,
|
||||
)?)),
|
||||
IAstNode::SrcBlock(inner) => Ok(RenderAstNode::SrcBlock(RenderSrcBlock::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
render_context,
|
||||
inner,
|
||||
)?)),
|
||||
IAstNode::Clock(inner) => Ok(RenderAstNode::Clock(RenderClock::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
render_context,
|
||||
inner,
|
||||
)?)),
|
||||
IAstNode::DiarySexp(inner) => Ok(RenderAstNode::DiarySexp(RenderDiarySexp::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
render_context,
|
||||
inner,
|
||||
)?)),
|
||||
IAstNode::Planning(inner) => Ok(RenderAstNode::Planning(RenderPlanning::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
render_context,
|
||||
inner,
|
||||
)?)),
|
||||
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(
|
||||
RenderHorizontalRule::new(config, output_directory, output_file, inner)?,
|
||||
RenderHorizontalRule::new(render_context, inner)?,
|
||||
)),
|
||||
IAstNode::Keyword(inner) => Ok(RenderAstNode::Keyword(RenderKeyword::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
render_context,
|
||||
inner,
|
||||
)?)),
|
||||
IAstNode::BabelCall(inner) => Ok(RenderAstNode::BabelCall(RenderBabelCall::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
render_context,
|
||||
inner,
|
||||
)?)),
|
||||
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(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
inner,
|
||||
)?)),
|
||||
IAstNode::Bold(inner) => {
|
||||
Ok(RenderAstNode::Bold(RenderBold::new(render_context, inner)?))
|
||||
}
|
||||
IAstNode::Italic(inner) => Ok(RenderAstNode::Italic(RenderItalic::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
render_context,
|
||||
inner,
|
||||
)?)),
|
||||
IAstNode::Underline(inner) => Ok(RenderAstNode::Underline(RenderUnderline::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
render_context,
|
||||
inner,
|
||||
)?)),
|
||||
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(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
inner,
|
||||
)?)),
|
||||
IAstNode::Code(inner) => {
|
||||
Ok(RenderAstNode::Code(RenderCode::new(render_context, inner)?))
|
||||
}
|
||||
IAstNode::Verbatim(inner) => Ok(RenderAstNode::Verbatim(RenderVerbatim::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
render_context,
|
||||
inner,
|
||||
)?)),
|
||||
IAstNode::PlainText(inner) => Ok(RenderAstNode::PlainText(RenderPlainText::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
render_context,
|
||||
inner,
|
||||
)?)),
|
||||
IAstNode::RegularLink(inner) => Ok(RenderAstNode::RegularLink(RenderRegularLink::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
render_context,
|
||||
inner,
|
||||
)?)),
|
||||
IAstNode::RadioLink(inner) => Ok(RenderAstNode::RadioLink(RenderRadioLink::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
render_context,
|
||||
inner,
|
||||
)?)),
|
||||
IAstNode::RadioTarget(inner) => Ok(RenderAstNode::RadioTarget(RenderRadioTarget::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
render_context,
|
||||
inner,
|
||||
)?)),
|
||||
IAstNode::PlainLink(inner) => Ok(RenderAstNode::PlainLink(RenderPlainLink::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
render_context,
|
||||
inner,
|
||||
)?)),
|
||||
IAstNode::AngleLink(inner) => Ok(RenderAstNode::AngleLink(RenderAngleLink::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
render_context,
|
||||
inner,
|
||||
)?)),
|
||||
IAstNode::OrgMacro(inner) => Ok(RenderAstNode::OrgMacro(RenderOrgMacro::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
render_context,
|
||||
inner,
|
||||
)?)),
|
||||
IAstNode::Entity(inner) => Ok(RenderAstNode::Entity(RenderEntity::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
render_context,
|
||||
inner,
|
||||
)?)),
|
||||
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(
|
||||
RenderExportSnippet::new(config, output_directory, output_file, inner)?,
|
||||
RenderExportSnippet::new(render_context, inner)?,
|
||||
)),
|
||||
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(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
render_context,
|
||||
inner,
|
||||
)?)),
|
||||
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(
|
||||
RenderInlineBabelCall::new(config, output_directory, output_file, inner)?,
|
||||
RenderInlineBabelCall::new(render_context, inner)?,
|
||||
)),
|
||||
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(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
render_context,
|
||||
inner,
|
||||
)?)),
|
||||
IAstNode::Target(inner) => Ok(RenderAstNode::Target(RenderTarget::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
render_context,
|
||||
inner,
|
||||
)?)),
|
||||
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(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
render_context,
|
||||
inner,
|
||||
)?)),
|
||||
IAstNode::Superscript(inner) => Ok(RenderAstNode::Superscript(RenderSuperscript::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
render_context,
|
||||
inner,
|
||||
)?)),
|
||||
IAstNode::Timestamp(inner) => Ok(RenderAstNode::Timestamp(RenderTimestamp::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
render_context,
|
||||
inner,
|
||||
)?)),
|
||||
}
|
||||
|
@ -1,8 +1,6 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::IBabelCall;
|
||||
|
||||
|
@ -1,10 +1,29 @@
|
||||
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::macros::render;
|
||||
use super::GlobalSettings;
|
||||
use super::PageHeader;
|
||||
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)]
|
||||
#[serde(tag = "type")]
|
||||
#[serde(rename = "blog_post_page")]
|
||||
@ -23,23 +42,82 @@ pub(crate) struct RenderBlogPostPage {
|
||||
footnotes: Vec<RenderRealFootnoteDefinition>,
|
||||
}
|
||||
|
||||
impl RenderBlogPostPage {
|
||||
// TODO: Maybe these settings should be moved into a common struct so this can have the same type signature as the others.
|
||||
pub(crate) fn new(
|
||||
global_settings: GlobalSettings,
|
||||
page_header: Option<PageHeader>,
|
||||
title: Option<String>,
|
||||
self_link: Option<String>,
|
||||
children: Vec<RenderDocumentElement>,
|
||||
footnotes: Vec<RenderRealFootnoteDefinition>,
|
||||
) -> RenderBlogPostPage {
|
||||
RenderBlogPostPage {
|
||||
render!(
|
||||
RenderBlogPostPage,
|
||||
RenderBlogPostPageInput,
|
||||
original,
|
||||
render_context,
|
||||
{
|
||||
let css_files = vec![
|
||||
// get_web_path(
|
||||
// config,
|
||||
// output_directory,
|
||||
// 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,
|
||||
page_header,
|
||||
title,
|
||||
self_link,
|
||||
page_header: Some(page_header),
|
||||
title: original.page.title.clone(),
|
||||
self_link: Some(link_to_blog_post),
|
||||
children,
|
||||
footnotes,
|
||||
}
|
||||
};
|
||||
Ok(ret)
|
||||
}
|
||||
}
|
||||
);
|
||||
|
@ -1,8 +1,7 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use super::macros::render;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::context::RenderDocumentElement;
|
||||
use crate::context::RenderRealFootnoteDefinition;
|
||||
use crate::error::CustomError;
|
||||
@ -12,6 +11,27 @@ use crate::intermediate::BlogPost;
|
||||
use super::GlobalSettings;
|
||||
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)]
|
||||
#[serde(tag = "type")]
|
||||
#[serde(rename = "blog_stream")]
|
||||
@ -22,15 +42,12 @@ pub(crate) struct RenderBlogStream {
|
||||
stream_pagination: Option<RenderBlogStreamPagination>,
|
||||
}
|
||||
|
||||
impl RenderBlogStream {
|
||||
pub(crate) fn new(
|
||||
config: &Config,
|
||||
output_directory: &Path,
|
||||
output_file: &Path,
|
||||
original: &[&BlogPost],
|
||||
older_link: Option<String>,
|
||||
newer_link: Option<String>,
|
||||
) -> Result<RenderBlogStream, CustomError> {
|
||||
render!(
|
||||
RenderBlogStream,
|
||||
RenderBlogStreamInput,
|
||||
original,
|
||||
render_context,
|
||||
{
|
||||
let css_files = vec![
|
||||
// get_web_path(
|
||||
// config,
|
||||
@ -38,33 +55,45 @@ impl RenderBlogStream {
|
||||
// output_file,
|
||||
// "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(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
render_context.config,
|
||||
render_context.output_directory,
|
||||
render_context.output_file,
|
||||
"blog_post.js",
|
||||
)?];
|
||||
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,
|
||||
js_files,
|
||||
);
|
||||
let page_header = PageHeader::new(
|
||||
config.get_site_title().map(str::to_string),
|
||||
Some(get_web_path(config, output_directory, output_file, "")?),
|
||||
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 children = original
|
||||
.original
|
||||
.into_iter()
|
||||
.map(|blog_post| {
|
||||
RenderBlogStreamEntry::new(config, output_directory, output_file, blog_post)
|
||||
})
|
||||
.map(|blog_post| RenderBlogStreamEntry::new(render_context.clone(), blog_post))
|
||||
.collect::<Result<Vec<_>, _>>()?;
|
||||
|
||||
let stream_pagination = if older_link.is_some() || newer_link.is_some() {
|
||||
Some(RenderBlogStreamPagination::new(older_link, newer_link)?)
|
||||
let stream_pagination = if original.older_link.is_some() || original.newer_link.is_some() {
|
||||
Some(RenderBlogStreamPagination::new(
|
||||
original.older_link.clone(),
|
||||
original.newer_link.clone(),
|
||||
)?)
|
||||
} else {
|
||||
None
|
||||
};
|
||||
@ -76,7 +105,7 @@ impl RenderBlogStream {
|
||||
stream_pagination,
|
||||
})
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
#[derive(Debug, Serialize)]
|
||||
pub(crate) struct RenderBlogStreamEntry {
|
||||
@ -90,43 +119,38 @@ pub(crate) struct RenderBlogStreamEntry {
|
||||
footnotes: Vec<RenderRealFootnoteDefinition>,
|
||||
}
|
||||
|
||||
impl RenderBlogStreamEntry {
|
||||
fn new(
|
||||
config: &Config,
|
||||
output_directory: &Path,
|
||||
output_file: &Path,
|
||||
original: &BlogPost,
|
||||
) -> Result<RenderBlogStreamEntry, CustomError> {
|
||||
// TODO: This link is probably wrong.
|
||||
let link_to_blog_post = get_web_path(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
output_file.strip_prefix(output_directory)?,
|
||||
)?;
|
||||
render!(RenderBlogStreamEntry, BlogPost, original, render_context, {
|
||||
// TODO: This link is probably wrong.
|
||||
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)?,
|
||||
)?;
|
||||
|
||||
// TODO: Should I guess an index page instead of erroring out?
|
||||
let index_page = original
|
||||
.get_index_page()
|
||||
.ok_or_else(|| format!("Blog post {} needs an index page.", original.id))?;
|
||||
// TODO: Should I guess an index page instead of erroring out?
|
||||
let index_page = original
|
||||
.get_index_page()
|
||||
.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.
|
||||
let children = index_page
|
||||
.children
|
||||
.iter()
|
||||
.map(|child| RenderDocumentElement::new(config, output_directory, output_file, child))
|
||||
.collect::<Result<Vec<_>, _>>()?;
|
||||
// TODO: Handle footnotes.
|
||||
let children = index_page
|
||||
.children
|
||||
.iter()
|
||||
.map(|child| RenderDocumentElement::new(render_context.clone(), child))
|
||||
.collect::<Result<Vec<_>, _>>()?;
|
||||
|
||||
Ok(RenderBlogStreamEntry {
|
||||
title,
|
||||
self_link: Some(link_to_blog_post),
|
||||
children,
|
||||
footnotes: Vec::new(),
|
||||
})
|
||||
}
|
||||
}
|
||||
Ok(RenderBlogStreamEntry {
|
||||
title,
|
||||
self_link: Some(link_to_blog_post),
|
||||
children,
|
||||
footnotes: Vec::new(),
|
||||
})
|
||||
});
|
||||
|
||||
#[derive(Debug, Serialize)]
|
||||
pub(crate) struct RenderBlogStreamPagination {
|
||||
|
@ -1,12 +1,10 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::IBold;
|
||||
|
||||
use super::macros::render;
|
||||
use super::render_context::RenderContext;
|
||||
use super::RenderObject;
|
||||
|
||||
#[derive(Debug, Serialize)]
|
||||
@ -16,27 +14,14 @@ pub(crate) struct RenderBold {
|
||||
children: Vec<RenderObject>,
|
||||
}
|
||||
|
||||
render!(
|
||||
RenderBold,
|
||||
IBold,
|
||||
original,
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
{
|
||||
let children = {
|
||||
let mut ret = Vec::new();
|
||||
for obj in original.children.iter() {
|
||||
ret.push(RenderObject::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
obj,
|
||||
)?);
|
||||
}
|
||||
ret
|
||||
};
|
||||
render!(RenderBold, IBold, original, render_context, {
|
||||
let children = {
|
||||
let mut ret = Vec::new();
|
||||
for obj in original.children.iter() {
|
||||
ret.push(RenderObject::new(render_context.clone(), obj)?);
|
||||
}
|
||||
ret
|
||||
};
|
||||
|
||||
Ok(RenderBold { children })
|
||||
}
|
||||
);
|
||||
Ok(RenderBold { children })
|
||||
});
|
||||
|
@ -1,8 +1,6 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::ICenterBlock;
|
||||
|
||||
|
@ -1,8 +1,6 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::ICitation;
|
||||
|
||||
|
@ -1,8 +1,6 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::ICitationReference;
|
||||
|
||||
|
@ -1,8 +1,6 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::IClock;
|
||||
|
||||
|
@ -1,8 +1,6 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::ICode;
|
||||
|
||||
@ -15,16 +13,8 @@ pub(crate) struct RenderCode {
|
||||
contents: String,
|
||||
}
|
||||
|
||||
render!(
|
||||
RenderCode,
|
||||
ICode,
|
||||
original,
|
||||
_config,
|
||||
_output_directory,
|
||||
_output_file,
|
||||
{
|
||||
Ok(RenderCode {
|
||||
contents: original.contents.clone(),
|
||||
})
|
||||
}
|
||||
);
|
||||
render!(RenderCode, ICode, original, _render_context, {
|
||||
Ok(RenderCode {
|
||||
contents: original.contents.clone(),
|
||||
})
|
||||
});
|
||||
|
@ -1,8 +1,6 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::IComment;
|
||||
|
||||
|
@ -1,8 +1,6 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::ICommentBlock;
|
||||
|
||||
|
@ -1,8 +1,6 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::IDiarySexp;
|
||||
|
||||
|
@ -1,8 +1,6 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::IDocumentElement;
|
||||
|
||||
@ -21,16 +19,14 @@ render!(
|
||||
RenderDocumentElement,
|
||||
IDocumentElement,
|
||||
original,
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
render_context,
|
||||
{
|
||||
match original {
|
||||
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(
|
||||
RenderSection::new(config, output_directory, output_file, inner)?,
|
||||
RenderSection::new(render_context.clone(), inner)?,
|
||||
)),
|
||||
}
|
||||
}
|
||||
|
@ -1,8 +1,6 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::IDrawer;
|
||||
|
||||
|
@ -1,8 +1,6 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::IDynamicBlock;
|
||||
|
||||
|
@ -1,8 +1,6 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::IElement;
|
||||
|
||||
@ -61,132 +59,98 @@ pub(crate) enum RenderElement {
|
||||
LatexEnvironment(RenderLatexEnvironment),
|
||||
}
|
||||
|
||||
render!(
|
||||
RenderElement,
|
||||
IElement,
|
||||
original,
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
{
|
||||
match original {
|
||||
IElement::Paragraph(inner) => Ok(RenderElement::Paragraph(RenderParagraph::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
inner,
|
||||
)?)),
|
||||
IElement::PlainList(inner) => Ok(RenderElement::PlainList(RenderPlainList::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
inner,
|
||||
)?)),
|
||||
IElement::CenterBlock(inner) => Ok(RenderElement::CenterBlock(RenderCenterBlock::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
inner,
|
||||
)?)),
|
||||
IElement::QuoteBlock(inner) => Ok(RenderElement::QuoteBlock(RenderQuoteBlock::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
inner,
|
||||
)?)),
|
||||
IElement::SpecialBlock(inner) => Ok(RenderElement::SpecialBlock(
|
||||
RenderSpecialBlock::new(config, output_directory, output_file, inner)?,
|
||||
)),
|
||||
IElement::DynamicBlock(inner) => Ok(RenderElement::DynamicBlock(
|
||||
RenderDynamicBlock::new(config, output_directory, output_file, inner)?,
|
||||
)),
|
||||
IElement::FootnoteDefinition(inner) => Ok(RenderElement::FootnoteDefinition(
|
||||
RenderFootnoteDefinition::new(config, output_directory, output_file, inner)?,
|
||||
)),
|
||||
IElement::Comment(inner) => Ok(RenderElement::Comment(RenderComment::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
inner,
|
||||
)?)),
|
||||
IElement::Drawer(inner) => Ok(RenderElement::Drawer(RenderDrawer::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
inner,
|
||||
)?)),
|
||||
IElement::PropertyDrawer(inner) => Ok(RenderElement::PropertyDrawer(
|
||||
RenderPropertyDrawer::new(config, output_directory, output_file, inner)?,
|
||||
)),
|
||||
IElement::Table(inner) => Ok(RenderElement::Table(RenderTable::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
inner,
|
||||
)?)),
|
||||
IElement::VerseBlock(inner) => Ok(RenderElement::VerseBlock(RenderVerseBlock::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
inner,
|
||||
)?)),
|
||||
IElement::CommentBlock(inner) => Ok(RenderElement::CommentBlock(
|
||||
RenderCommentBlock::new(config, output_directory, output_file, inner)?,
|
||||
)),
|
||||
IElement::ExampleBlock(inner) => Ok(RenderElement::ExampleBlock(
|
||||
RenderExampleBlock::new(config, output_directory, output_file, inner)?,
|
||||
)),
|
||||
IElement::ExportBlock(inner) => Ok(RenderElement::ExportBlock(RenderExportBlock::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
inner,
|
||||
)?)),
|
||||
IElement::SrcBlock(inner) => Ok(RenderElement::SrcBlock(RenderSrcBlock::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
inner,
|
||||
)?)),
|
||||
IElement::Clock(inner) => Ok(RenderElement::Clock(RenderClock::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
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)?,
|
||||
)),
|
||||
}
|
||||
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)?,
|
||||
)),
|
||||
}
|
||||
);
|
||||
});
|
||||
|
@ -1,8 +1,6 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::IEntity;
|
||||
|
||||
@ -15,16 +13,8 @@ pub(crate) struct RenderEntity {
|
||||
html: String,
|
||||
}
|
||||
|
||||
render!(
|
||||
RenderEntity,
|
||||
IEntity,
|
||||
original,
|
||||
_config,
|
||||
_output_directory,
|
||||
_output_file,
|
||||
{
|
||||
Ok(RenderEntity {
|
||||
html: original.html.clone(),
|
||||
})
|
||||
}
|
||||
);
|
||||
render!(RenderEntity, IEntity, original, _render_context, {
|
||||
Ok(RenderEntity {
|
||||
html: original.html.clone(),
|
||||
})
|
||||
});
|
||||
|
@ -1,8 +1,6 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::IExampleBlock;
|
||||
|
||||
|
@ -1,8 +1,6 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::IExportBlock;
|
||||
|
||||
|
@ -1,8 +1,6 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::IExportSnippet;
|
||||
|
||||
|
@ -1,8 +1,6 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::IFixedWidthArea;
|
||||
|
||||
|
@ -1,8 +1,6 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::IFootnoteDefinition;
|
||||
use crate::intermediate::IRealFootnoteDefinition;
|
||||
@ -33,14 +31,12 @@ render!(
|
||||
RenderRealFootnoteDefinition,
|
||||
IRealFootnoteDefinition,
|
||||
original,
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
render_context,
|
||||
{
|
||||
let contents = {
|
||||
let mut ret = Vec::new();
|
||||
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
|
||||
};
|
||||
|
@ -1,8 +1,6 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::IFootnoteReference;
|
||||
|
||||
@ -21,9 +19,7 @@ render!(
|
||||
RenderFootnoteReference,
|
||||
IFootnoteReference,
|
||||
original,
|
||||
_config,
|
||||
_output_directory,
|
||||
_output_file,
|
||||
_render_context,
|
||||
{
|
||||
Ok(RenderFootnoteReference {
|
||||
reference_id: original.get_reference_id(),
|
||||
|
@ -1,8 +1,6 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::IHeading;
|
||||
|
||||
@ -19,44 +17,26 @@ pub(crate) struct RenderHeading {
|
||||
children: Vec<RenderDocumentElement>,
|
||||
}
|
||||
|
||||
render!(
|
||||
RenderHeading,
|
||||
IHeading,
|
||||
original,
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
{
|
||||
let title = {
|
||||
let mut ret = Vec::new();
|
||||
for obj in original.title.iter() {
|
||||
ret.push(RenderObject::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
obj,
|
||||
)?);
|
||||
}
|
||||
ret
|
||||
};
|
||||
render!(RenderHeading, IHeading, original, render_context, {
|
||||
let title = {
|
||||
let mut ret = Vec::new();
|
||||
for obj in original.title.iter() {
|
||||
ret.push(RenderObject::new(render_context.clone(), obj)?);
|
||||
}
|
||||
ret
|
||||
};
|
||||
|
||||
let children = {
|
||||
let mut ret = Vec::new();
|
||||
for obj in original.children.iter() {
|
||||
ret.push(RenderDocumentElement::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
obj,
|
||||
)?);
|
||||
}
|
||||
ret
|
||||
};
|
||||
let children = {
|
||||
let mut ret = Vec::new();
|
||||
for obj in original.children.iter() {
|
||||
ret.push(RenderDocumentElement::new(render_context.clone(), obj)?);
|
||||
}
|
||||
ret
|
||||
};
|
||||
|
||||
Ok(RenderHeading {
|
||||
level: original.level + 1, // Adding 1 because the page title is going to be h1.
|
||||
title,
|
||||
children,
|
||||
})
|
||||
}
|
||||
);
|
||||
Ok(RenderHeading {
|
||||
level: original.level + 1, // Adding 1 because the page title is going to be h1.
|
||||
title,
|
||||
children,
|
||||
})
|
||||
});
|
||||
|
@ -1,8 +1,6 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::IHorizontalRule;
|
||||
|
||||
|
@ -1,8 +1,6 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::IInlineBabelCall;
|
||||
|
||||
|
@ -1,8 +1,6 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::IInlineSourceBlock;
|
||||
|
||||
@ -19,9 +17,7 @@ render!(
|
||||
RenderInlineSourceBlock,
|
||||
IInlineSourceBlock,
|
||||
original,
|
||||
_config,
|
||||
_output_directory,
|
||||
_output_file,
|
||||
_render_context,
|
||||
{
|
||||
Ok(RenderInlineSourceBlock {
|
||||
value: original.value.clone(),
|
||||
|
@ -1,8 +1,6 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::IItalic;
|
||||
|
||||
@ -16,27 +14,14 @@ pub(crate) struct RenderItalic {
|
||||
children: Vec<RenderObject>,
|
||||
}
|
||||
|
||||
render!(
|
||||
RenderItalic,
|
||||
IItalic,
|
||||
original,
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
{
|
||||
let children = {
|
||||
let mut ret = Vec::new();
|
||||
for obj in original.children.iter() {
|
||||
ret.push(RenderObject::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
obj,
|
||||
)?);
|
||||
}
|
||||
ret
|
||||
};
|
||||
render!(RenderItalic, IItalic, original, render_context, {
|
||||
let children = {
|
||||
let mut ret = Vec::new();
|
||||
for obj in original.children.iter() {
|
||||
ret.push(RenderObject::new(render_context.clone(), obj)?);
|
||||
}
|
||||
ret
|
||||
};
|
||||
|
||||
Ok(RenderItalic { children })
|
||||
}
|
||||
);
|
||||
Ok(RenderItalic { children })
|
||||
});
|
||||
|
@ -1,8 +1,6 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::IKeyword;
|
||||
|
||||
|
@ -1,8 +1,6 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::ILatexEnvironment;
|
||||
|
||||
|
@ -1,8 +1,6 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::ILatexFragment;
|
||||
|
||||
@ -19,9 +17,7 @@ render!(
|
||||
RenderLatexFragment,
|
||||
ILatexFragment,
|
||||
original,
|
||||
_config,
|
||||
_output_directory,
|
||||
_output_file,
|
||||
_render_context,
|
||||
{
|
||||
Ok(RenderLatexFragment {
|
||||
value: original.value.clone(),
|
||||
|
@ -1,8 +1,6 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::ILineBreak;
|
||||
|
||||
|
@ -2,18 +2,14 @@
|
||||
///
|
||||
/// This exists to make changing the type signature easier.
|
||||
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 {
|
||||
pub(crate) fn new(
|
||||
config: &Config,
|
||||
output_directory: &Path,
|
||||
output_file: &Path,
|
||||
render_context: RenderContext<'_>,
|
||||
original: &$istruct,
|
||||
) -> Result<$rstruct, CustomError> {
|
||||
let $original = original;
|
||||
let $config = config;
|
||||
let $output_directory = output_directory;
|
||||
let $output_file = output_file;
|
||||
let $render_context = render_context;
|
||||
$fnbody
|
||||
}
|
||||
}
|
||||
@ -29,9 +25,7 @@ macro_rules! rnoop {
|
||||
($rstruct:ident, $istruct:ident) => {
|
||||
impl $rstruct {
|
||||
pub(crate) fn new(
|
||||
_config: &Config,
|
||||
_output_directory: &Path,
|
||||
_output_file: &Path,
|
||||
_render_context: RenderContext<'_>,
|
||||
_original: &$istruct,
|
||||
) -> Result<$rstruct, CustomError> {
|
||||
Ok($rstruct {})
|
||||
|
@ -66,7 +66,9 @@ mod verbatim;
|
||||
mod verse_block;
|
||||
|
||||
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::RenderBlogStreamInput;
|
||||
pub(crate) use document_element::RenderDocumentElement;
|
||||
pub(crate) use element::RenderElement;
|
||||
pub(crate) use footnote_definition::RenderRealFootnoteDefinition;
|
||||
@ -74,4 +76,5 @@ pub(crate) use global_settings::GlobalSettings;
|
||||
pub(crate) use heading::RenderHeading;
|
||||
pub(crate) use object::RenderObject;
|
||||
pub(crate) use page_header::PageHeader;
|
||||
pub(crate) use render_context::RenderContext;
|
||||
pub(crate) use section::RenderSection;
|
||||
|
@ -1,8 +1,6 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::IObject;
|
||||
|
||||
@ -67,153 +65,110 @@ pub(crate) enum RenderObject {
|
||||
Timestamp(RenderTimestamp),
|
||||
}
|
||||
|
||||
render!(
|
||||
RenderObject,
|
||||
IObject,
|
||||
original,
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
{
|
||||
match original {
|
||||
IObject::Bold(inner) => Ok(RenderObject::Bold(RenderBold::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
inner,
|
||||
)?)),
|
||||
IObject::Italic(inner) => Ok(RenderObject::Italic(RenderItalic::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
inner,
|
||||
)?)),
|
||||
IObject::Underline(inner) => Ok(RenderObject::Underline(RenderUnderline::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
inner,
|
||||
)?)),
|
||||
IObject::StrikeThrough(inner) => Ok(RenderObject::StrikeThrough(
|
||||
RenderStrikeThrough::new(config, output_directory, output_file, inner)?,
|
||||
)),
|
||||
IObject::Code(inner) => Ok(RenderObject::Code(RenderCode::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
inner,
|
||||
)?)),
|
||||
IObject::Verbatim(inner) => Ok(RenderObject::Verbatim(RenderVerbatim::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
inner,
|
||||
)?)),
|
||||
IObject::PlainText(inner) => Ok(RenderObject::PlainText(RenderPlainText::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
inner,
|
||||
)?)),
|
||||
IObject::RegularLink(inner) => Ok(RenderObject::RegularLink(RenderRegularLink::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
inner,
|
||||
)?)),
|
||||
IObject::RadioLink(inner) => Ok(RenderObject::RadioLink(RenderRadioLink::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
inner,
|
||||
)?)),
|
||||
IObject::RadioTarget(inner) => Ok(RenderObject::RadioTarget(RenderRadioTarget::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
inner,
|
||||
)?)),
|
||||
IObject::PlainLink(inner) => Ok(RenderObject::PlainLink(RenderPlainLink::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
inner,
|
||||
)?)),
|
||||
IObject::AngleLink(inner) => Ok(RenderObject::AngleLink(RenderAngleLink::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
inner,
|
||||
)?)),
|
||||
IObject::OrgMacro(inner) => Ok(RenderObject::OrgMacro(RenderOrgMacro::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
inner,
|
||||
)?)),
|
||||
IObject::Entity(inner) => Ok(RenderObject::Entity(RenderEntity::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
inner,
|
||||
)?)),
|
||||
IObject::LatexFragment(inner) => Ok(RenderObject::LatexFragment(
|
||||
RenderLatexFragment::new(config, output_directory, output_file, inner)?,
|
||||
)),
|
||||
IObject::ExportSnippet(inner) => Ok(RenderObject::ExportSnippet(
|
||||
RenderExportSnippet::new(config, output_directory, output_file, inner)?,
|
||||
)),
|
||||
IObject::FootnoteReference(inner) => Ok(RenderObject::FootnoteReference(
|
||||
RenderFootnoteReference::new(config, output_directory, output_file, inner)?,
|
||||
)),
|
||||
IObject::Citation(inner) => Ok(RenderObject::Citation(RenderCitation::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
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,
|
||||
)?)),
|
||||
}
|
||||
render!(RenderObject, IObject, original, render_context, {
|
||||
match original {
|
||||
IObject::Bold(inner) => Ok(RenderObject::Bold(RenderBold::new(
|
||||
render_context.clone(),
|
||||
inner,
|
||||
)?)),
|
||||
IObject::Italic(inner) => Ok(RenderObject::Italic(RenderItalic::new(
|
||||
render_context.clone(),
|
||||
inner,
|
||||
)?)),
|
||||
IObject::Underline(inner) => Ok(RenderObject::Underline(RenderUnderline::new(
|
||||
render_context.clone(),
|
||||
inner,
|
||||
)?)),
|
||||
IObject::StrikeThrough(inner) => Ok(RenderObject::StrikeThrough(RenderStrikeThrough::new(
|
||||
render_context.clone(),
|
||||
inner,
|
||||
)?)),
|
||||
IObject::Code(inner) => Ok(RenderObject::Code(RenderCode::new(
|
||||
render_context.clone(),
|
||||
inner,
|
||||
)?)),
|
||||
IObject::Verbatim(inner) => Ok(RenderObject::Verbatim(RenderVerbatim::new(
|
||||
render_context.clone(),
|
||||
inner,
|
||||
)?)),
|
||||
IObject::PlainText(inner) => Ok(RenderObject::PlainText(RenderPlainText::new(
|
||||
render_context.clone(),
|
||||
inner,
|
||||
)?)),
|
||||
IObject::RegularLink(inner) => Ok(RenderObject::RegularLink(RenderRegularLink::new(
|
||||
render_context.clone(),
|
||||
inner,
|
||||
)?)),
|
||||
IObject::RadioLink(inner) => Ok(RenderObject::RadioLink(RenderRadioLink::new(
|
||||
render_context.clone(),
|
||||
inner,
|
||||
)?)),
|
||||
IObject::RadioTarget(inner) => Ok(RenderObject::RadioTarget(RenderRadioTarget::new(
|
||||
render_context.clone(),
|
||||
inner,
|
||||
)?)),
|
||||
IObject::PlainLink(inner) => Ok(RenderObject::PlainLink(RenderPlainLink::new(
|
||||
render_context.clone(),
|
||||
inner,
|
||||
)?)),
|
||||
IObject::AngleLink(inner) => Ok(RenderObject::AngleLink(RenderAngleLink::new(
|
||||
render_context.clone(),
|
||||
inner,
|
||||
)?)),
|
||||
IObject::OrgMacro(inner) => Ok(RenderObject::OrgMacro(RenderOrgMacro::new(
|
||||
render_context.clone(),
|
||||
inner,
|
||||
)?)),
|
||||
IObject::Entity(inner) => Ok(RenderObject::Entity(RenderEntity::new(
|
||||
render_context.clone(),
|
||||
inner,
|
||||
)?)),
|
||||
IObject::LatexFragment(inner) => Ok(RenderObject::LatexFragment(RenderLatexFragment::new(
|
||||
render_context.clone(),
|
||||
inner,
|
||||
)?)),
|
||||
IObject::ExportSnippet(inner) => Ok(RenderObject::ExportSnippet(RenderExportSnippet::new(
|
||||
render_context.clone(),
|
||||
inner,
|
||||
)?)),
|
||||
IObject::FootnoteReference(inner) => Ok(RenderObject::FootnoteReference(
|
||||
RenderFootnoteReference::new(render_context.clone(), inner)?,
|
||||
)),
|
||||
IObject::Citation(inner) => Ok(RenderObject::Citation(RenderCitation::new(
|
||||
render_context.clone(),
|
||||
inner,
|
||||
)?)),
|
||||
IObject::CitationReference(inner) => Ok(RenderObject::CitationReference(
|
||||
RenderCitationReference::new(render_context.clone(), inner)?,
|
||||
)),
|
||||
IObject::InlineBabelCall(inner) => Ok(RenderObject::InlineBabelCall(
|
||||
RenderInlineBabelCall::new(render_context.clone(), inner)?,
|
||||
)),
|
||||
IObject::InlineSourceBlock(inner) => Ok(RenderObject::InlineSourceBlock(
|
||||
RenderInlineSourceBlock::new(render_context.clone(), inner)?,
|
||||
)),
|
||||
IObject::LineBreak(inner) => Ok(RenderObject::LineBreak(RenderLineBreak::new(
|
||||
render_context.clone(),
|
||||
inner,
|
||||
)?)),
|
||||
IObject::Target(inner) => Ok(RenderObject::Target(RenderTarget::new(
|
||||
render_context.clone(),
|
||||
inner,
|
||||
)?)),
|
||||
IObject::StatisticsCookie(inner) => Ok(RenderObject::StatisticsCookie(
|
||||
RenderStatisticsCookie::new(render_context.clone(), inner)?,
|
||||
)),
|
||||
IObject::Subscript(inner) => Ok(RenderObject::Subscript(RenderSubscript::new(
|
||||
render_context.clone(),
|
||||
inner,
|
||||
)?)),
|
||||
IObject::Superscript(inner) => Ok(RenderObject::Superscript(RenderSuperscript::new(
|
||||
render_context.clone(),
|
||||
inner,
|
||||
)?)),
|
||||
IObject::Timestamp(inner) => Ok(RenderObject::Timestamp(RenderTimestamp::new(
|
||||
render_context.clone(),
|
||||
inner,
|
||||
)?)),
|
||||
}
|
||||
);
|
||||
});
|
||||
|
@ -1,8 +1,6 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::IOrgMacro;
|
||||
|
||||
|
@ -1,8 +1,6 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::IParagraph;
|
||||
|
||||
@ -16,27 +14,14 @@ pub(crate) struct RenderParagraph {
|
||||
children: Vec<RenderObject>,
|
||||
}
|
||||
|
||||
render!(
|
||||
RenderParagraph,
|
||||
IParagraph,
|
||||
original,
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
{
|
||||
let children = {
|
||||
let mut ret = Vec::new();
|
||||
for obj in original.children.iter() {
|
||||
ret.push(RenderObject::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
obj,
|
||||
)?);
|
||||
}
|
||||
ret
|
||||
};
|
||||
render!(RenderParagraph, IParagraph, original, render_context, {
|
||||
let children = {
|
||||
let mut ret = Vec::new();
|
||||
for obj in original.children.iter() {
|
||||
ret.push(RenderObject::new(render_context.clone(), obj)?);
|
||||
}
|
||||
ret
|
||||
};
|
||||
|
||||
Ok(RenderParagraph { children })
|
||||
}
|
||||
);
|
||||
Ok(RenderParagraph { children })
|
||||
});
|
||||
|
@ -1,8 +1,6 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::IPlainLink;
|
||||
|
||||
|
@ -1,8 +1,6 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::IPlainList;
|
||||
|
||||
@ -17,35 +15,22 @@ pub(crate) struct RenderPlainList {
|
||||
children: Vec<RenderPlainListItem>,
|
||||
}
|
||||
|
||||
render!(
|
||||
RenderPlainList,
|
||||
IPlainList,
|
||||
original,
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
{
|
||||
let list_type = match original.list_type {
|
||||
organic::types::PlainListType::Unordered => "unordered".to_owned(),
|
||||
organic::types::PlainListType::Ordered => "ordered".to_owned(),
|
||||
organic::types::PlainListType::Descriptive => "descriptive".to_owned(),
|
||||
};
|
||||
let children = {
|
||||
let mut ret = Vec::new();
|
||||
for obj in original.children.iter() {
|
||||
ret.push(RenderPlainListItem::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
obj,
|
||||
)?);
|
||||
}
|
||||
ret
|
||||
};
|
||||
render!(RenderPlainList, IPlainList, original, render_context, {
|
||||
let list_type = match original.list_type {
|
||||
organic::types::PlainListType::Unordered => "unordered".to_owned(),
|
||||
organic::types::PlainListType::Ordered => "ordered".to_owned(),
|
||||
organic::types::PlainListType::Descriptive => "descriptive".to_owned(),
|
||||
};
|
||||
let children = {
|
||||
let mut ret = Vec::new();
|
||||
for obj in original.children.iter() {
|
||||
ret.push(RenderPlainListItem::new(render_context.clone(), obj)?);
|
||||
}
|
||||
ret
|
||||
};
|
||||
|
||||
Ok(RenderPlainList {
|
||||
list_type,
|
||||
children,
|
||||
})
|
||||
}
|
||||
);
|
||||
Ok(RenderPlainList {
|
||||
list_type,
|
||||
children,
|
||||
})
|
||||
});
|
||||
|
@ -1,8 +1,6 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::IPlainListItem;
|
||||
|
||||
@ -22,19 +20,12 @@ render!(
|
||||
RenderPlainListItem,
|
||||
IPlainListItem,
|
||||
original,
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
render_context,
|
||||
{
|
||||
let tag = {
|
||||
let mut ret = Vec::new();
|
||||
for obj in original.tag.iter() {
|
||||
ret.push(RenderObject::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
obj,
|
||||
)?);
|
||||
ret.push(RenderObject::new(render_context.clone(), obj)?);
|
||||
}
|
||||
ret
|
||||
};
|
||||
@ -42,12 +33,7 @@ render!(
|
||||
let children = {
|
||||
let mut ret = Vec::new();
|
||||
for obj in original.children.iter() {
|
||||
ret.push(RenderElement::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
obj,
|
||||
)?);
|
||||
ret.push(RenderElement::new(render_context.clone(), obj)?);
|
||||
}
|
||||
ret
|
||||
};
|
||||
|
@ -1,8 +1,6 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::IPlainText;
|
||||
|
||||
@ -15,16 +13,8 @@ pub(crate) struct RenderPlainText {
|
||||
source: String,
|
||||
}
|
||||
|
||||
render!(
|
||||
RenderPlainText,
|
||||
IPlainText,
|
||||
original,
|
||||
_config,
|
||||
_output_directory,
|
||||
_output_file,
|
||||
{
|
||||
Ok(RenderPlainText {
|
||||
source: original.source.clone(),
|
||||
})
|
||||
}
|
||||
);
|
||||
render!(RenderPlainText, IPlainText, original, _render_context, {
|
||||
Ok(RenderPlainText {
|
||||
source: original.source.clone(),
|
||||
})
|
||||
});
|
||||
|
@ -1,8 +1,6 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::IPlanning;
|
||||
|
||||
|
@ -1,8 +1,6 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::IPropertyDrawer;
|
||||
|
||||
|
@ -1,8 +1,6 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::IQuoteBlock;
|
||||
|
||||
@ -16,27 +14,14 @@ pub(crate) struct RenderQuoteBlock {
|
||||
children: Vec<RenderElement>,
|
||||
}
|
||||
|
||||
render!(
|
||||
RenderQuoteBlock,
|
||||
IQuoteBlock,
|
||||
original,
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
{
|
||||
let children = {
|
||||
let mut ret = Vec::new();
|
||||
for obj in original.children.iter() {
|
||||
ret.push(RenderElement::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
obj,
|
||||
)?);
|
||||
}
|
||||
ret
|
||||
};
|
||||
render!(RenderQuoteBlock, IQuoteBlock, original, render_context, {
|
||||
let children = {
|
||||
let mut ret = Vec::new();
|
||||
for obj in original.children.iter() {
|
||||
ret.push(RenderElement::new(render_context.clone(), obj)?);
|
||||
}
|
||||
ret
|
||||
};
|
||||
|
||||
Ok(RenderQuoteBlock { children })
|
||||
}
|
||||
);
|
||||
Ok(RenderQuoteBlock { children })
|
||||
});
|
||||
|
@ -1,8 +1,6 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::IRadioLink;
|
||||
|
||||
|
@ -1,8 +1,6 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::IRadioTarget;
|
||||
|
||||
|
@ -1,8 +1,6 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::IRegularLink;
|
||||
|
||||
@ -17,30 +15,17 @@ pub(crate) struct RenderRegularLink {
|
||||
children: Vec<RenderObject>,
|
||||
}
|
||||
|
||||
render!(
|
||||
RenderRegularLink,
|
||||
IRegularLink,
|
||||
original,
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
{
|
||||
let children = {
|
||||
let mut ret = Vec::new();
|
||||
for obj in original.children.iter() {
|
||||
ret.push(RenderObject::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
obj,
|
||||
)?);
|
||||
}
|
||||
ret
|
||||
};
|
||||
render!(RenderRegularLink, IRegularLink, original, render_context, {
|
||||
let children = {
|
||||
let mut ret = Vec::new();
|
||||
for obj in original.children.iter() {
|
||||
ret.push(RenderObject::new(render_context.clone(), obj)?);
|
||||
}
|
||||
ret
|
||||
};
|
||||
|
||||
Ok(RenderRegularLink {
|
||||
raw_link: original.raw_link.clone(),
|
||||
children,
|
||||
})
|
||||
}
|
||||
);
|
||||
Ok(RenderRegularLink {
|
||||
raw_link: original.raw_link.clone(),
|
||||
children,
|
||||
})
|
||||
});
|
||||
|
@ -1,8 +1,6 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::ISection;
|
||||
|
||||
@ -16,27 +14,14 @@ pub(crate) struct RenderSection {
|
||||
children: Vec<RenderElement>,
|
||||
}
|
||||
|
||||
render!(
|
||||
RenderSection,
|
||||
ISection,
|
||||
original,
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
{
|
||||
let children = {
|
||||
let mut ret = Vec::new();
|
||||
for obj in original.children.iter() {
|
||||
ret.push(RenderElement::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
obj,
|
||||
)?);
|
||||
}
|
||||
ret
|
||||
};
|
||||
render!(RenderSection, ISection, original, render_context, {
|
||||
let children = {
|
||||
let mut ret = Vec::new();
|
||||
for obj in original.children.iter() {
|
||||
ret.push(RenderElement::new(render_context.clone(), obj)?);
|
||||
}
|
||||
ret
|
||||
};
|
||||
|
||||
Ok(RenderSection { children })
|
||||
}
|
||||
);
|
||||
Ok(RenderSection { children })
|
||||
});
|
||||
|
@ -1,8 +1,6 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::ISpecialBlock;
|
||||
|
||||
|
@ -1,8 +1,6 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::ISrcBlock;
|
||||
|
||||
@ -15,16 +13,8 @@ pub(crate) struct RenderSrcBlock {
|
||||
lines: Vec<String>,
|
||||
}
|
||||
|
||||
render!(
|
||||
RenderSrcBlock,
|
||||
ISrcBlock,
|
||||
original,
|
||||
_config,
|
||||
_output_directory,
|
||||
_output_file,
|
||||
{
|
||||
Ok(RenderSrcBlock {
|
||||
lines: original.lines.clone(),
|
||||
})
|
||||
}
|
||||
);
|
||||
render!(RenderSrcBlock, ISrcBlock, original, _render_context, {
|
||||
Ok(RenderSrcBlock {
|
||||
lines: original.lines.clone(),
|
||||
})
|
||||
});
|
||||
|
@ -1,8 +1,6 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::IStatisticsCookie;
|
||||
|
||||
|
@ -1,8 +1,6 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::IStrikeThrough;
|
||||
|
||||
@ -20,19 +18,12 @@ render!(
|
||||
RenderStrikeThrough,
|
||||
IStrikeThrough,
|
||||
original,
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
render_context,
|
||||
{
|
||||
let children = {
|
||||
let mut ret = Vec::new();
|
||||
for obj in original.children.iter() {
|
||||
ret.push(RenderObject::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
obj,
|
||||
)?);
|
||||
ret.push(RenderObject::new(render_context.clone(), obj)?);
|
||||
}
|
||||
ret
|
||||
};
|
||||
|
@ -1,8 +1,6 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::ISubscript;
|
||||
|
||||
|
@ -1,8 +1,6 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::ISuperscript;
|
||||
|
||||
|
@ -1,8 +1,6 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::ITable;
|
||||
|
||||
@ -16,27 +14,14 @@ pub(crate) struct RenderTable {
|
||||
children: Vec<RenderTableRow>,
|
||||
}
|
||||
|
||||
render!(
|
||||
RenderTable,
|
||||
ITable,
|
||||
original,
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
{
|
||||
let children = {
|
||||
let mut ret = Vec::new();
|
||||
for obj in original.children.iter() {
|
||||
ret.push(RenderTableRow::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
obj,
|
||||
)?);
|
||||
}
|
||||
ret
|
||||
};
|
||||
render!(RenderTable, ITable, original, render_context, {
|
||||
let children = {
|
||||
let mut ret = Vec::new();
|
||||
for obj in original.children.iter() {
|
||||
ret.push(RenderTableRow::new(render_context.clone(), obj)?);
|
||||
}
|
||||
ret
|
||||
};
|
||||
|
||||
Ok(RenderTable { children })
|
||||
}
|
||||
);
|
||||
Ok(RenderTable { children })
|
||||
});
|
||||
|
@ -1,8 +1,6 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::ITableCell;
|
||||
|
||||
@ -16,27 +14,14 @@ pub(crate) struct RenderTableCell {
|
||||
children: Vec<RenderObject>,
|
||||
}
|
||||
|
||||
render!(
|
||||
RenderTableCell,
|
||||
ITableCell,
|
||||
original,
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
{
|
||||
let children = {
|
||||
let mut ret = Vec::new();
|
||||
for obj in original.children.iter() {
|
||||
ret.push(RenderObject::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
obj,
|
||||
)?);
|
||||
}
|
||||
ret
|
||||
};
|
||||
render!(RenderTableCell, ITableCell, original, render_context, {
|
||||
let children = {
|
||||
let mut ret = Vec::new();
|
||||
for obj in original.children.iter() {
|
||||
ret.push(RenderObject::new(render_context.clone(), obj)?);
|
||||
}
|
||||
ret
|
||||
};
|
||||
|
||||
Ok(RenderTableCell { children })
|
||||
}
|
||||
);
|
||||
Ok(RenderTableCell { children })
|
||||
});
|
||||
|
@ -1,8 +1,6 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::ITableRow;
|
||||
|
||||
@ -16,27 +14,14 @@ pub(crate) struct RenderTableRow {
|
||||
children: Vec<RenderTableCell>,
|
||||
}
|
||||
|
||||
render!(
|
||||
RenderTableRow,
|
||||
ITableRow,
|
||||
original,
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
{
|
||||
let children = {
|
||||
let mut ret = Vec::new();
|
||||
for obj in original.children.iter() {
|
||||
ret.push(RenderTableCell::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
obj,
|
||||
)?);
|
||||
}
|
||||
ret
|
||||
};
|
||||
render!(RenderTableRow, ITableRow, original, render_context, {
|
||||
let children = {
|
||||
let mut ret = Vec::new();
|
||||
for obj in original.children.iter() {
|
||||
ret.push(RenderTableCell::new(render_context.clone(), obj)?);
|
||||
}
|
||||
ret
|
||||
};
|
||||
|
||||
Ok(RenderTableRow { children })
|
||||
}
|
||||
);
|
||||
Ok(RenderTableRow { children })
|
||||
});
|
||||
|
@ -1,8 +1,6 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::ITarget;
|
||||
|
||||
@ -15,16 +13,8 @@ pub(crate) struct RenderTarget {
|
||||
id: String,
|
||||
}
|
||||
|
||||
render!(
|
||||
RenderTarget,
|
||||
ITarget,
|
||||
original,
|
||||
_config,
|
||||
_output_directory,
|
||||
_output_file,
|
||||
{
|
||||
Ok(RenderTarget {
|
||||
id: original.id.clone(),
|
||||
})
|
||||
}
|
||||
);
|
||||
render!(RenderTarget, ITarget, original, _render_context, {
|
||||
Ok(RenderTarget {
|
||||
id: original.id.clone(),
|
||||
})
|
||||
});
|
||||
|
@ -1,8 +1,6 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::ITimestamp;
|
||||
|
||||
|
@ -1,8 +1,6 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::IUnderline;
|
||||
|
||||
@ -16,27 +14,14 @@ pub(crate) struct RenderUnderline {
|
||||
children: Vec<RenderObject>,
|
||||
}
|
||||
|
||||
render!(
|
||||
RenderUnderline,
|
||||
IUnderline,
|
||||
original,
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
{
|
||||
let children = {
|
||||
let mut ret = Vec::new();
|
||||
for obj in original.children.iter() {
|
||||
ret.push(RenderObject::new(
|
||||
config,
|
||||
output_directory,
|
||||
output_file,
|
||||
obj,
|
||||
)?);
|
||||
}
|
||||
ret
|
||||
};
|
||||
render!(RenderUnderline, IUnderline, original, render_context, {
|
||||
let children = {
|
||||
let mut ret = Vec::new();
|
||||
for obj in original.children.iter() {
|
||||
ret.push(RenderObject::new(render_context.clone(), obj)?);
|
||||
}
|
||||
ret
|
||||
};
|
||||
|
||||
Ok(RenderUnderline { children })
|
||||
}
|
||||
);
|
||||
Ok(RenderUnderline { children })
|
||||
});
|
||||
|
@ -1,8 +1,6 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::IVerbatim;
|
||||
|
||||
@ -15,16 +13,8 @@ pub(crate) struct RenderVerbatim {
|
||||
contents: String,
|
||||
}
|
||||
|
||||
render!(
|
||||
RenderVerbatim,
|
||||
IVerbatim,
|
||||
original,
|
||||
_config,
|
||||
_output_directory,
|
||||
_output_file,
|
||||
{
|
||||
Ok(RenderVerbatim {
|
||||
contents: original.contents.clone(),
|
||||
})
|
||||
}
|
||||
);
|
||||
render!(RenderVerbatim, IVerbatim, original, _render_context, {
|
||||
Ok(RenderVerbatim {
|
||||
contents: original.contents.clone(),
|
||||
})
|
||||
});
|
||||
|
@ -1,8 +1,6 @@
|
||||
use std::path::Path;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use super::render_context::RenderContext;
|
||||
use crate::error::CustomError;
|
||||
use crate::intermediate::IVerseBlock;
|
||||
|
||||
|
@ -3,93 +3,8 @@ use std::path::Path;
|
||||
use std::path::PathBuf;
|
||||
|
||||
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 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>>(
|
||||
config: &Config,
|
||||
output_directory: D,
|
||||
|
@ -76,7 +76,6 @@ pub(crate) use clock::IClock;
|
||||
pub(crate) use code::ICode;
|
||||
pub(crate) use comment::IComment;
|
||||
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 diary_sexp::IDiarySexp;
|
||||
pub(crate) use document_element::IDocumentElement;
|
||||
|
Loading…
x
Reference in New Issue
Block a user