use crate::render;
use doido_core::Result;
use serde_json::{json, Value};
pub fn render_partial(name: &str, context: &Value) -> Result<String> {
render(&partial_path(name), context)
}
pub fn render_collection(partial: &str, items: &[Value], as_var: &str) -> Result<String> {
let mut out = String::new();
for item in items {
let ctx = json!({ as_var: item });
out.push_str(&render_partial(partial, &ctx)?);
}
Ok(out)
}
fn partial_path(name: &str) -> String {
match name.rsplit_once('/') {
Some((dir, base)) => format!("{dir}/_{base}"),
None => format!("_{name}"),
}
}