diff --git a/docsite/rst/playbooks_variables.rst b/docsite/rst/playbooks_variables.rst index 39a9f4bfa5f..f92d895d187 100644 --- a/docsite/rst/playbooks_variables.rst +++ b/docsite/rst/playbooks_variables.rst @@ -384,6 +384,10 @@ Hash types available depend on the master system running ansible, Other Useful Filters -------------------- +To use one value on true and another on false:: + + {{ name == "John" | ternary('Mr','Ms') }} + To concatenate a list into a string:: {{ list | join(" ") }} diff --git a/lib/ansible/runner/filter_plugins/core.py b/lib/ansible/runner/filter_plugins/core.py index 22ce73970cd..e2ac36e79f2 100644 --- a/lib/ansible/runner/filter_plugins/core.py +++ b/lib/ansible/runner/filter_plugins/core.py @@ -174,6 +174,13 @@ def regex_replace(value='', pattern='', replacement='', ignorecase=False): _re = re.compile(pattern, flags=flags) return _re.sub(replacement, value) +def ternary(value, true_val, false_val): + ''' value ? true_val : false_val ''' + if value: + return true_val + else: + return false_val + def unique(a): if isinstance(a,collections.Hashable): c = set(a) @@ -374,6 +381,9 @@ class FilterModule(object): 'regex': regex, 'regex_replace': regex_replace, + # ? : ; + 'ternary': ternary, + # list 'unique' : unique, 'intersect': intersect,