From 77f8375d7a90d25a7ec2ccbf11bc500e7d551cab Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Tue, 24 Oct 2023 00:01:40 -0400 Subject: [PATCH] Introduce an array of document elements. --- src/blog_post/convert.rs | 7 ++++++- src/types/blog_post_page.rs | 5 +++++ src/types/document_element.rs | 11 +++++++++++ src/types/heading.rs | 6 ++++++ src/types/mod.rs | 6 ++++++ src/types/section.rs | 6 ++++++ 6 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 src/types/document_element.rs create mode 100644 src/types/heading.rs create mode 100644 src/types/section.rs diff --git a/src/blog_post/convert.rs b/src/blog_post/convert.rs index 81a7410..f94db3e 100644 --- a/src/blog_post/convert.rs +++ b/src/blog_post/convert.rs @@ -39,7 +39,12 @@ pub(crate) fn convert_blog_post_page_to_render_context, F: AsRef< output_file.strip_prefix(output_directory)?, )?; - let ret = RenderBlogPostPage::new(global_settings, page.title.clone(), Some(link_to_blog_post)); + let ret = RenderBlogPostPage::new( + global_settings, + page.title.clone(), + Some(link_to_blog_post), + Vec::new(), + ); Ok(ret) } diff --git a/src/types/blog_post_page.rs b/src/types/blog_post_page.rs index 9ddd0ec..9f607ce 100644 --- a/src/types/blog_post_page.rs +++ b/src/types/blog_post_page.rs @@ -1,6 +1,7 @@ use serde::Serialize; use super::GlobalSettings; +use super::RenderDocumentElement; #[derive(Debug, Serialize)] #[serde(tag = "type")] @@ -12,6 +13,8 @@ pub(crate) struct RenderBlogPostPage { title: Option, self_link: Option, + + children: Vec, } impl RenderBlogPostPage { @@ -19,11 +22,13 @@ impl RenderBlogPostPage { global_settings: GlobalSettings, title: Option, self_link: Option, + children: Vec, ) -> RenderBlogPostPage { RenderBlogPostPage { global_settings, title, self_link, + children, } } } diff --git a/src/types/document_element.rs b/src/types/document_element.rs new file mode 100644 index 0000000..6b11e0b --- /dev/null +++ b/src/types/document_element.rs @@ -0,0 +1,11 @@ +use serde::Serialize; + +use super::RenderHeading; +use super::RenderSection; + +#[derive(Debug, Serialize)] +#[serde(untagged)] +pub(crate) enum RenderDocumentElement { + Heading(RenderHeading), + Section(RenderSection), +} diff --git a/src/types/heading.rs b/src/types/heading.rs new file mode 100644 index 0000000..cda697a --- /dev/null +++ b/src/types/heading.rs @@ -0,0 +1,6 @@ +use serde::Serialize; + +#[derive(Debug, Serialize)] +#[serde(tag = "type")] +#[serde(rename = "heading")] +pub(crate) struct RenderHeading {} diff --git a/src/types/mod.rs b/src/types/mod.rs index a216de3..abede68 100644 --- a/src/types/mod.rs +++ b/src/types/mod.rs @@ -1,5 +1,11 @@ mod blog_post_page; +mod document_element; mod global_settings; +mod heading; +mod section; pub(crate) use blog_post_page::RenderBlogPostPage; +pub(crate) use document_element::RenderDocumentElement; pub(crate) use global_settings::GlobalSettings; +pub(crate) use heading::RenderHeading; +pub(crate) use section::RenderSection; diff --git a/src/types/section.rs b/src/types/section.rs new file mode 100644 index 0000000..d59c81d --- /dev/null +++ b/src/types/section.rs @@ -0,0 +1,6 @@ +use serde::Serialize; + +#[derive(Debug, Serialize)] +#[serde(tag = "type")] +#[serde(rename = "section")] +pub(crate) struct RenderSection {}