1
0
Fork 0
mirror of https://github.com/ansible-collections/community.general.git synced 2024-09-14 20:13:21 +02:00

Adding custom indentation of YAML and JSON filters (#10008)

This commit is contained in:
Jiri Tyr 2016-06-14 15:07:34 +01:00 committed by Brian Coca
parent e1d248dddf
commit 27d065924f
2 changed files with 11 additions and 5 deletions

View file

@ -25,6 +25,11 @@ For human readable output, you can use::
{{ some_variable | to_nice_json }} {{ some_variable | to_nice_json }}
{{ some_variable | to_nice_yaml }} {{ some_variable | to_nice_yaml }}
It's also possible to change the indentation of both::
{{ some_variable | to_nice_json(indent=2) }}
{{ some_variable | to_nice_yaml(indent=8) }}
Alternatively, you may be reading in some already formatted data:: Alternatively, you may be reading in some already formatted data::
{{ some_variable | from_json }} {{ some_variable | from_json }}

View file

@ -75,16 +75,16 @@ def to_yaml(a, *args, **kw):
transformed = yaml.dump(a, Dumper=AnsibleDumper, allow_unicode=True, **kw) transformed = yaml.dump(a, Dumper=AnsibleDumper, allow_unicode=True, **kw)
return to_unicode(transformed) return to_unicode(transformed)
def to_nice_yaml(a, *args, **kw): def to_nice_yaml(a, indent=4, *args, **kw):
'''Make verbose, human readable yaml''' '''Make verbose, human readable yaml'''
transformed = yaml.dump(a, Dumper=AnsibleDumper, indent=4, allow_unicode=True, default_flow_style=False, **kw) transformed = yaml.dump(a, Dumper=AnsibleDumper, indent=indent, allow_unicode=True, default_flow_style=False, **kw)
return to_unicode(transformed) return to_unicode(transformed)
def to_json(a, *args, **kw): def to_json(a, *args, **kw):
''' Convert the value to JSON ''' ''' Convert the value to JSON '''
return json.dumps(a, cls=AnsibleJSONEncoder, *args, **kw) return json.dumps(a, cls=AnsibleJSONEncoder, *args, **kw)
def to_nice_json(a, *args, **kw): def to_nice_json(a, indent=4, *args, **kw):
'''Make verbose, human readable JSON''' '''Make verbose, human readable JSON'''
# python-2.6's json encoder is buggy (can't encode hostvars) # python-2.6's json encoder is buggy (can't encode hostvars)
if sys.version_info < (2, 7): if sys.version_info < (2, 7):
@ -99,9 +99,10 @@ def to_nice_json(a, *args, **kw):
pass pass
else: else:
if major >= 2: if major >= 2:
return simplejson.dumps(a, indent=4, sort_keys=True, *args, **kw) return simplejson.dumps(a, indent=indent, sort_keys=True, *args, **kw)
try: try:
return json.dumps(a, indent=4, sort_keys=True, cls=AnsibleJSONEncoder, *args, **kw) return json.dumps(a, indent=indent, sort_keys=True, cls=AnsibleJSONEncoder, *args, **kw)
except: except:
# Fallback to the to_json filter # Fallback to the to_json filter
return to_json(a, *args, **kw) return to_json(a, *args, **kw)