From 24bac982f132f69a85b56d7e0ef756aed1ea6adb Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Sun, 22 Oct 2023 16:26:43 -0400 Subject: [PATCH] Starting to create the renderer integrations. These are the layer directly over dust which can be used by anything, not just blog posts. --- src/command/build/render.rs | 3 +++ src/main.rs | 1 + src/render/duster_renderer.rs | 24 ++++++++++++++++++++++++ src/render/mod.rs | 3 +++ src/render/renderer_integration.rs | 15 +++++++++++++++ 5 files changed, 46 insertions(+) create mode 100644 src/render/duster_renderer.rs create mode 100644 src/render/mod.rs create mode 100644 src/render/renderer_integration.rs diff --git a/src/command/build/render.rs b/src/command/build/render.rs index cc47f27..7a35346 100644 --- a/src/command/build/render.rs +++ b/src/command/build/render.rs @@ -3,6 +3,7 @@ use std::path::PathBuf; use crate::blog_post::convert_blog_post_to_render_context; use crate::blog_post::BlogPost; use crate::error::CustomError; +use crate::render::DusterRenderer; pub(crate) struct SiteRenderer { pub(crate) output_directory: PathBuf, @@ -16,6 +17,8 @@ impl SiteRenderer { println!("{}", serde_json::to_string(&render_context)?); } + let mut renderer_integration = DusterRenderer {}; + Ok(()) } } diff --git a/src/main.rs b/src/main.rs index 124c99b..6e1fb2d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -12,6 +12,7 @@ mod cli; mod command; mod config; mod error; +mod render; fn main() -> Result { let rt = tokio::runtime::Runtime::new()?; diff --git a/src/render/duster_renderer.rs b/src/render/duster_renderer.rs new file mode 100644 index 0000000..ac1cb2d --- /dev/null +++ b/src/render/duster_renderer.rs @@ -0,0 +1,24 @@ +use super::renderer_integration::RendererIntegration; + +pub(crate) struct DusterRenderer {} + +impl RendererIntegration for DusterRenderer { + fn load_templates(&mut self, dust_templates: I) -> Result<(), crate::error::CustomError> + where + I: Iterator, + P: Into, + { + todo!() + } + + fn render

( + &self, + context: &str, + build_directory: P, + ) -> Result + where + P: AsRef, + { + todo!() + } +} diff --git a/src/render/mod.rs b/src/render/mod.rs new file mode 100644 index 0000000..389e21b --- /dev/null +++ b/src/render/mod.rs @@ -0,0 +1,3 @@ +mod duster_renderer; +mod renderer_integration; +pub(crate) use duster_renderer::DusterRenderer; diff --git a/src/render/renderer_integration.rs b/src/render/renderer_integration.rs new file mode 100644 index 0000000..a854ac0 --- /dev/null +++ b/src/render/renderer_integration.rs @@ -0,0 +1,15 @@ +use std::path::Path; +use std::path::PathBuf; + +use crate::error::CustomError; + +pub trait RendererIntegration { + fn load_templates(&mut self, dust_templates: I) -> Result<(), CustomError> + where + I: Iterator, + P: Into; + + fn render

(&self, context: &str, build_directory: P) -> Result + where + P: AsRef; +}