1use crate::render;
8use doido_core::Result;
9use serde_json::{json, Value};
10
11pub fn render_partial(name: &str, context: &Value) -> Result<String> {
13 render(&partial_path(name), context)
14}
15
16pub fn render_collection(partial: &str, items: &[Value], as_var: &str) -> Result<String> {
19 let mut out = String::new();
20 for item in items {
21 let ctx = json!({ as_var: item });
22 out.push_str(&render_partial(partial, &ctx)?);
23 }
24 Ok(out)
25}
26
27fn partial_path(name: &str) -> String {
29 match name.rsplit_once('/') {
30 Some((dir, base)) => format!("{dir}/_{base}"),
31 None => format!("_{name}"),
32 }
33}