Skip to main content

nargo_template/renderers/
mod.rs

1#![warn(missing_docs)]
2
3/// 模板渲染器 trait
4#[async_trait::async_trait]
5pub trait TemplateRenderer: Send + Sync {
6    /// 渲染单个模板
7    fn render(&self, template_name: &str, context: &serde_json::Value) -> crate::TemplateResult<String>;
8
9    /// 异步渲染单个模板
10    async fn render_async(&self, template_name: &str, context: &serde_json::Value) -> crate::TemplateResult<String> {
11        Ok(self.render(template_name, context)?)
12    }
13
14    /// 注册模板
15    fn register_template(&mut self, name: &str, content: &str) -> crate::TemplateResult<()>;
16
17    /// 注册模板文件
18    fn register_template_file(&mut self, name: &str, path: &std::path::Path) -> crate::TemplateResult<()>;
19
20    /// 从目录注册所有模板
21    fn register_templates_from_dir(&mut self, dir: &std::path::Path, extension: Option<&str>) -> crate::TemplateResult<()>;
22}
23
24#[cfg(feature = "jinja")]
25pub mod jinja;
26
27#[cfg(feature = "dejavu")]
28pub mod dejavu;
29
30#[cfg(feature = "liquid")]
31pub mod liquid;