Module minijinja::tests

source ·
Expand description

Test functions and abstractions.

Test functions in MiniJinja are like filters but a different syntax is used to invoke them and they have to return boolean values. For instance the expression {% if foo is defined %} invokes the is_defined test to check if the value is indeed an odd number.

MiniJinja comes with some built-in test functions that are listed below. To create a custom test write a function that takes at least a value argument that returns a boolean result, then register it with add_filter.

§Using Tests

Tests are useful to “test” a value in a specific way. For instance if you want to assign different classes to alternating rows one way is using the odd test:

{% if seq is defined %}
  <ul>
  {% for item in seq %}
    <li class="{{ 'even' if loop.index is even else 'odd' }}">{{ item }}</li>
  {% endfor %}
  </ul>
{% endif %}

§Custom Tests

A custom test function is just a simple function which accepts its inputs as parameters and then returns a bool. For instance the following shows a test function which takes an input value and checks if it’s lowercase:

fn is_lowercase(value: String) -> bool {
    value.chars().all(|x| x.is_lowercase())
}

env.add_test("lowercase", is_lowercase);

MiniJinja will perform the necessary conversions automatically. For more information see the Test trait.

§Built-in Tests

When the builtins feature is enabled a range of built-in tests are automatically added to the environment. These are also all provided in this module. Note though that these functions are not to be called from Rust code as their exact interface (arguments and return types) might change from one MiniJinja version to another.

Traits§

  • A utility trait that represents test functions.
  • A utility trait that represents the return value of filters.

Functions§

  • Checks if a value is defined.
  • Checks if the value is ending with a string.
  • is_eqbuiltins
    Test version of ==.
  • is_evenbuiltins
    Checks if a value is even.
  • is_falsebuiltins
    Checks if a value is false.
  • is_filterbuiltins
    Checks if a filter with a given name is available.
  • is_floatbuiltins
    Checks if this value is a float
  • is_gebuiltins
    Test version of >=.
  • is_gtbuiltins
    Test version of >.
  • is_inbuiltins
    Test version of in.
  • is_integerbuiltins
    Checks if this value is an integer.
  • is_iterablebuiltins
    Checks if this value can be iterated over.
  • is_lebuiltins
    Test version of <=.
  • is_ltbuiltins
    Test version of <.
  • is_mappingbuiltins
    Checks if this value is a mapping
  • is_nebuiltins
    Test version of !=.
  • Checks if a value is none.
  • is_numberbuiltins
    Checks if this value is a number.
  • is_oddbuiltins
    Checks if a value is odd.
  • Checks if a value is safe.
  • is_sequencebuiltins
    Checks if this value is a sequence
  • Checks if the value is starting with a string.
  • is_stringbuiltins
    Checks if this value is a string.
  • is_testbuiltins
    Checks if a test with a given name is available.
  • is_truebuiltins
    Checks if a value is true.
  • Checks if a value is undefined.