adding min() and max() filters for use in Jinja templates

This commit is contained in:
Michael Peters 2014-06-19 12:25:36 -04:00 committed by Michael DeHaan
parent 2d2178f2c5
commit 3ba516ac25
3 changed files with 32 additions and 0 deletions

View file

@ -180,6 +180,20 @@ Jinja2 provides a useful 'default' filter, that is often a better approach to fa
In the above example, if the variable 'some_variable' is not defined, the value used will be 5, rather than an error
being raised.
.. _list_filters:
List Filters
--------------------
.. versionadded:: 1.7
To get the minimum value from list of numbers::
{{ list1 | min }}
To get the maximum value from a list of numbers::
{{ [3, 4, 2] | max }}
.. _set_theory_filters:
Set Theory Filters

View file

@ -183,6 +183,14 @@ def union(a, b):
c = unique(a + b)
return c
def min(a):
_min = __builtins__.get('min')
return _min(a);
def max(a):
_max = __builtins__.get('max')
return _max(a);
def version_compare(value, version, operator='eq', strict=False):
''' Perform a version comparison on a value '''
op_map = {
@ -289,6 +297,8 @@ class FilterModule(object):
'difference': difference,
'symmetric_difference': symmetric_difference,
'union': union,
'min' : min,
'max' : max,
# version comparison
'version_compare': version_compare,

View file

@ -175,3 +175,11 @@ class TestFilters(unittest.TestCase):
self.assertTrue(ansible.runner.filter_plugins.core.version_compare(1.0, 1.1, '<='))
self.assertTrue(ansible.runner.filter_plugins.core.version_compare('12.04', 12, 'ge'))
def test_min(self):
a = ansible.runner.filter_plugins.core.min([3, 2, 5, 4])
assert a == 2
def test_max(self):
a = ansible.runner.filter_plugins.core.max([3, 2, 5, 4])
assert a == 5