template macro: return rendered samples

This commit is contained in:
Olivier 'reivilibre
2025-10-24 14:47:02 +01:00
parent 7c67af9156
commit 3bc4cbcc02

View File

@@ -78,19 +78,21 @@ macro_rules! register_templates {
pub(crate) fn $name
$(< $( $lt $( : $clt $(+ $dlt )* + TemplateContext )? ),+ >)?
(templates: &Templates, now: chrono::DateTime<chrono::Utc>, rng: &mut impl rand::Rng)
-> anyhow::Result<()> {
-> anyhow::Result<Vec<String>> {
let locales = templates.translator().available_locales();
let samples: Vec< $param > = TemplateContext::sample(now, rng, &locales);
let name = $template;
for sample in samples {
let mut out = Vec::new();
for (idx, sample) in samples.into_iter().enumerate() {
let context = serde_json::to_value(&sample)?;
::tracing::info!(name, %context, "Rendering template");
templates. $name (&sample)
.with_context(|| format!("Failed to render template {:?} with context {}", name, context))?;
let rendered = templates. $name (&sample)
.with_context(|| format!("Failed to render sample template {name:?}-{idx} with context {context}"))?;
out.push(rendered);
}
Ok(())
Ok(out)
}
)*
}