natter/src/render/duster_renderer.rs

39 lines
1.0 KiB
Rust
Raw Normal View History

use std::collections::HashMap;
use crate::error::CustomError;
use super::renderer_integration::RendererIntegration;
2023-10-22 16:40:58 -04:00
use duster::renderer::DustRenderer;
use serde::Serialize;
pub(crate) struct DusterRenderer<'a> {
templates: HashMap<&'a str, duster::parser::Template<'a>>,
}
impl<'a> DusterRenderer<'a> {
pub(crate) fn new() -> DusterRenderer<'a> {
DusterRenderer {
templates: HashMap::new(),
}
}
}
impl<'a> RendererIntegration<'a> for DusterRenderer<'a> {
fn load_template(&mut self, name: &'a str, contents: &'a str) -> Result<(), CustomError> {
let compiled_template = duster::renderer::compile_template(contents.as_ref())?;
self.templates.insert(name, compiled_template);
2023-10-22 16:40:58 -04:00
Ok(())
}
fn render<C>(&self, context: C) -> Result<String, CustomError>
where
2023-10-22 16:40:58 -04:00
C: Serialize,
{
2023-10-22 16:40:58 -04:00
let mut dust_renderer = DustRenderer::new();
println!("{}", serde_json::to_string(&context)?);
// TODO
Ok("".to_owned())
}
}