minijinja_contrib/
lib.rs

1//! MiniJinja-Contrib is a utility crate for [MiniJinja](https://github.com/mitsuhiko/minijinja)
2//! that adds support for certain utilities that are too specific for the MiniJinja core.  This is
3//! usually because they provide functionality that Jinja2 itself does not have.
4//!
5//! To add all of these to an environment you can use the [`add_to_environment`] function.
6//!
7//! ```
8//! use minijinja::Environment;
9//!
10//! let mut env = Environment::new();
11//! minijinja_contrib::add_to_environment(&mut env);
12//! ```
13#![cfg_attr(docsrs, feature(doc_cfg))]
14
15use minijinja::Environment;
16
17/// Implements Python methods for better compatibility.
18#[cfg(feature = "pycompat")]
19pub mod pycompat;
20
21/// Utility filters.
22pub mod filters;
23
24/// Globals
25pub mod globals;
26
27#[cfg(feature = "html_entities")]
28mod html_entities;
29
30#[cfg(feature = "rand")]
31mod rand;
32
33/// Registers all features of this crate with an [`Environment`].
34///
35/// All the filters that are available will be added, same with global
36/// functions that exist.
37///
38/// **Note:** the `pycompat` support is intentionally not registered
39/// with the environment.
40pub fn add_to_environment(env: &mut Environment) {
41    env.add_filter("pluralize", filters::pluralize);
42    env.add_filter("filesizeformat", filters::filesizeformat);
43    env.add_filter("truncate", filters::truncate);
44    env.add_filter("striptags", filters::striptags);
45    #[cfg(feature = "wordcount")]
46    {
47        env.add_filter("wordcount", filters::wordcount);
48    }
49    #[cfg(feature = "wordwrap")]
50    {
51        env.add_filter("wordwrap", filters::wordwrap);
52    }
53    #[cfg(feature = "datetime")]
54    {
55        env.add_filter("datetimeformat", filters::datetimeformat);
56        env.add_filter("timeformat", filters::timeformat);
57        env.add_filter("dateformat", filters::dateformat);
58        env.add_function("now", globals::now);
59    }
60    #[cfg(feature = "rand")]
61    {
62        env.add_filter("random", filters::random);
63        env.add_function("lipsum", globals::lipsum);
64        env.add_function("randrange", globals::randrange);
65    }
66    env.add_function("cycler", globals::cycler);
67    env.add_function("joiner", globals::joiner);
68}