diff --git a/docs/docsite/rst/user_guide/playbooks_filters.rst b/docs/docsite/rst/user_guide/playbooks_filters.rst index 37adc0f3e1..5134a02ef4 100644 --- a/docs/docsite/rst/user_guide/playbooks_filters.rst +++ b/docs/docsite/rst/user_guide/playbooks_filters.rst @@ -1081,6 +1081,10 @@ To use one value on true and another on false (new in version 1.9):: {{ (name == "John") | ternary('Mr','Ms') }} +To use one value on true, one value on false and a third value on null (new in version 2.8):: + + {{ enabled | ternary('no shutdown', 'shutdown', omit) }} + To concatenate a list into a string:: {{ list | join(" ") }} diff --git a/lib/ansible/plugins/filter/core.py b/lib/ansible/plugins/filter/core.py index 2648986432..00837d6d17 100644 --- a/lib/ansible/plugins/filter/core.py +++ b/lib/ansible/plugins/filter/core.py @@ -178,9 +178,11 @@ def regex_search(value, regex, *args, **kwargs): return items -def ternary(value, true_val, false_val): +def ternary(value, true_val, false_val, none_val=None): ''' value ? true_val : false_val ''' - if bool(value): + if value is None and none_val is not None: + return none_val + elif bool(value): return true_val else: return false_val