Documentation: show non-string non-iterable defaults for choices (#40212)

* Also marking non-string defaults.

* Adding list filter from #37517 to plugin_formatter.

* Simplifying list test.

* Redistribute imports
This commit is contained in:
Felix Fontein 2018-06-28 04:31:47 +02:00 committed by Alicia Cozine
parent 5024b4e445
commit 0752dc12b7
2 changed files with 7 additions and 1 deletions

View file

@ -31,6 +31,7 @@ import sys
import warnings import warnings
from collections import defaultdict from collections import defaultdict
from distutils.version import LooseVersion from distutils.version import LooseVersion
from functools import partial
from pprint import PrettyPrinter from pprint import PrettyPrinter
try: try:
@ -49,6 +50,7 @@ from six import iteritems, string_types
from ansible.errors import AnsibleError from ansible.errors import AnsibleError
from ansible.module_utils._text import to_bytes, to_text from ansible.module_utils._text import to_bytes, to_text
from ansible.module_utils.common.collections import is_sequence
from ansible.plugins.loader import fragment_loader from ansible.plugins.loader import fragment_loader
from ansible.utils import plugin_docs from ansible.utils import plugin_docs
from ansible.utils.display import Display from ansible.utils.display import Display
@ -154,6 +156,9 @@ def rst_xline(width, char="="):
return char * width return char * width
test_list = partial(is_sequence, include_strings=False)
def write_data(text, output_dir, outputname, module=None): def write_data(text, output_dir, outputname, module=None):
''' dumps module output to a file or the screen, as requested ''' ''' dumps module output to a file or the screen, as requested '''
@ -334,6 +339,7 @@ def jinja2_environment(template_dir, typ, plugin_type):
env.filters['html_ify'] = html_ify env.filters['html_ify'] = html_ify
env.filters['fmt'] = rst_fmt env.filters['fmt'] = rst_fmt
env.filters['xline'] = rst_xline env.filters['xline'] = rst_xline
env.tests['list'] = test_list
templates['plugin'] = env.get_template('plugin.rst.j2') templates['plugin'] = env.get_template('plugin.rst.j2')
if plugin_type == 'module': if plugin_type == 'module':

View file

@ -142,7 +142,7 @@ Parameters
{% elif choice is sameas false %} {% elif choice is sameas false %}
{% set choice = 'no' %} {% set choice = 'no' %}
{% endif %} {% endif %}
{% if (value.default is string and value.default == choice) or (value.default is iterable and value.default is not string and choice in value.default) %} {% if (value.default is not list and value.default == choice) or (value.default is list and choice in value.default) %}
<li><div style="color: blue"><b>@{ choice | escape }@</b>&nbsp;&larr;</div></li> <li><div style="color: blue"><b>@{ choice | escape }@</b>&nbsp;&larr;</div></li>
{% else %} {% else %}
<li>@{ choice | escape }@</li> <li>@{ choice | escape }@</li>