femstache 0.1.2

Embrace the feminine mustache to unlock your templating dreams! Or something, I don't know. :3
Documentation
use std::{collections::BTreeMap, path::PathBuf};

use crate::{
    env::TemplateEnv, error::EvalResult, input::TemplateInput, loader::TemplateLoader,
    output::Output, renderer::TemplateRenderer,
};

#[derive(Debug)]
pub struct Femstache {
    loader: TemplateLoader,
}

impl Femstache {
    pub fn new(root: impl Into<PathBuf>) -> Self {
        let loader = TemplateLoader::new(root);
        Self { loader }
    }

    pub fn render(&self, path: &str, inputs: &impl TemplateInput) -> EvalResult<String> {
        let template = self.loader.load(path)?;
        let env = TemplateEnv::new(inputs);
        let mut renderer = TemplateRenderer::new(env, BTreeMap::new(), Some(self.loader.clone()));
        let mut output = Output::String(String::new());
        renderer.render_document(&template.doc, &mut output)?;
        Ok(output.into_inner())
    }
}