home ~ projects ~ socials

Create Global Page Template Variables In MiniJinja

---
[dependencies]
minijinja = "2.0"
---

use minijinja::{Environment, context};

fn main() {

  let mut env = Environment::new();
  env.add_template("example", r#"

{% set data = namespace() %}

{% macro count_red_items(i, d) %} 
  {% set d.red_items = 0 %}
  {% for item in i %}
    {% if item == "red" %}
      {% set d.red_items = d.red_items + 1 %}
    {% endif %}
  {% endfor %}
{% endmacro %}

{{ count_red_items(items, data) }}

{{ data.red_items }}

"#).unwrap();

  let items = ["red", "green", "red"];

  let tmpl = env.get_template("example").unwrap();
  let output = tmpl.render(context!(items=> items)).unwrap();

  println!("{}", output.trim());
}
Output:
2
-- end of line --