Reputation: 896
I have a block that looks like this:
{% if grains['function'] == 'production' %}
{% set conf_src = "prod.yml.ninja" %}
{% elif grains['function'] == 'staging'] %}
{% set conf_src = "staging.yml.ninja" %}
{% elif grains['function'] == 'dev'] %}
{% set conf_src = "dev.yml.ninja" %}
{% endif %}
Is there any way to do something like
{%
if grains['function'] == 'production'
set conf_src = "prod.yml.ninja"
elif grains['function'] == 'staging'
set conf_src = "staging.yml.ninja"
elif grains['function'] == 'dev'
set conf_src = "dev.yml.ninja"
endif
%}
So I can just open the block once?
Upvotes: 4
Views: 2867
Reputation: 77941
You can define a look-up dictionary, and only include non-trivial cases:
html = '''
{% set lookup = dict(production='prod') %}
{% set conf_src = lookup.get(grains['function'], grains['function'])
+ '.yml.ninja' %}
'''
Here, since dev
and staging
are not modified, you may use dict.get
fall-back argument.
Upvotes: 1