From fc5342adce49664bdc9ee4fd0431aa2b45a9928b Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Sun, 22 Oct 2023 16:40:58 -0400 Subject: [PATCH] Make the renderer a bit more generic. --- src/command/build/render.rs | 6 +++--- src/render/duster_renderer.rs | 19 +++++++++++-------- src/render/mod.rs | 1 + src/render/renderer_integration.rs | 9 +++++---- 4 files changed, 20 insertions(+), 15 deletions(-) diff --git a/src/command/build/render.rs b/src/command/build/render.rs index 7a35346..5b4ce4c 100644 --- a/src/command/build/render.rs +++ b/src/command/build/render.rs @@ -4,6 +4,7 @@ use crate::blog_post::convert_blog_post_to_render_context; use crate::blog_post::BlogPost; use crate::error::CustomError; use crate::render::DusterRenderer; +use crate::render::RendererIntegration; pub(crate) struct SiteRenderer { pub(crate) output_directory: PathBuf, @@ -12,13 +13,12 @@ pub(crate) struct SiteRenderer { impl SiteRenderer { pub(crate) async fn render_blog_posts(&self) -> Result<(), CustomError> { + let mut renderer_integration = DusterRenderer {}; for blog_post in &self.blog_posts { let render_context = convert_blog_post_to_render_context(blog_post); - println!("{}", serde_json::to_string(&render_context)?); + renderer_integration.render(render_context)?; } - let mut renderer_integration = DusterRenderer {}; - Ok(()) } } diff --git a/src/render/duster_renderer.rs b/src/render/duster_renderer.rs index ac1cb2d..435aab0 100644 --- a/src/render/duster_renderer.rs +++ b/src/render/duster_renderer.rs @@ -1,4 +1,6 @@ use super::renderer_integration::RendererIntegration; +use duster::renderer::DustRenderer; +use serde::Serialize; pub(crate) struct DusterRenderer {} @@ -8,17 +10,18 @@ impl RendererIntegration for DusterRenderer { I: Iterator, P: Into, { - todo!() + // TODO + Ok(()) } - fn render

( - &self, - context: &str, - build_directory: P, - ) -> Result + fn render(&self, context: C) -> Result where - P: AsRef, + C: Serialize, { - todo!() + let mut dust_renderer = DustRenderer::new(); + println!("{}", serde_json::to_string(&context)?); + + // TODO + Ok("".to_owned()) } } diff --git a/src/render/mod.rs b/src/render/mod.rs index 389e21b..b6bd3a1 100644 --- a/src/render/mod.rs +++ b/src/render/mod.rs @@ -1,3 +1,4 @@ mod duster_renderer; mod renderer_integration; pub(crate) use duster_renderer::DusterRenderer; +pub(crate) use renderer_integration::RendererIntegration; diff --git a/src/render/renderer_integration.rs b/src/render/renderer_integration.rs index a854ac0..4fbbba1 100644 --- a/src/render/renderer_integration.rs +++ b/src/render/renderer_integration.rs @@ -1,15 +1,16 @@ -use std::path::Path; use std::path::PathBuf; +use serde::Serialize; + use crate::error::CustomError; -pub trait RendererIntegration { +pub(crate) 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 + fn render(&self, context: C) -> Result where - P: AsRef; + C: Serialize; }