Starting to create the renderer integrations.

These are the layer directly over dust which can be used by anything, not just blog posts.
This commit is contained in:
Tom Alexander 2023-10-22 16:26:43 -04:00
parent 5f34cb2dd5
commit 24bac982f1
Signed by: talexander
GPG Key ID: D3A179C9A53C0EDE
5 changed files with 46 additions and 0 deletions

View File

@ -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(())
}
}

View File

@ -12,6 +12,7 @@ mod cli;
mod command;
mod config;
mod error;
mod render;
fn main() -> Result<ExitCode, CustomError> {
let rt = tokio::runtime::Runtime::new()?;

View File

@ -0,0 +1,24 @@
use super::renderer_integration::RendererIntegration;
pub(crate) struct DusterRenderer {}
impl RendererIntegration for DusterRenderer {
fn load_templates<I, P>(&mut self, dust_templates: I) -> Result<(), crate::error::CustomError>
where
I: Iterator<Item = P>,
P: Into<std::path::PathBuf>,
{
todo!()
}
fn render<P>(
&self,
context: &str,
build_directory: P,
) -> Result<String, crate::error::CustomError>
where
P: AsRef<std::path::Path>,
{
todo!()
}
}

3
src/render/mod.rs Normal file
View File

@ -0,0 +1,3 @@
mod duster_renderer;
mod renderer_integration;
pub(crate) use duster_renderer::DusterRenderer;

View File

@ -0,0 +1,15 @@
use std::path::Path;
use std::path::PathBuf;
use crate::error::CustomError;
pub trait RendererIntegration {
fn load_templates<I, P>(&mut self, dust_templates: I) -> Result<(), CustomError>
where
I: Iterator<Item = P>,
P: Into<PathBuf>;
fn render<P>(&self, context: &str, build_directory: P) -> Result<String, CustomError>
where
P: AsRef<Path>;
}