mirror of
https://github.com/valitydev/salt.git
synced 2024-11-07 08:58:59 +00:00
Add json5 renderer (#32635)
* Add JSON5 renderer * Add documentation RST files for json5 renderer
This commit is contained in:
parent
97111bdc9b
commit
aa9c458346
@ -16,6 +16,7 @@ Full list of builtin renderer modules
|
||||
hjson
|
||||
jinja
|
||||
json
|
||||
json5
|
||||
mako
|
||||
msgpack
|
||||
py
|
||||
|
6
doc/ref/renderers/all/salt.renderers.json5.rst
Normal file
6
doc/ref/renderers/all/salt.renderers.json5.rst
Normal file
@ -0,0 +1,6 @@
|
||||
====================
|
||||
salt.renderers.json5
|
||||
====================
|
||||
|
||||
.. automodule:: salt.renderers.json5
|
||||
:members:
|
54
salt/renderers/json5.py
Normal file
54
salt/renderers/json5.py
Normal file
@ -0,0 +1,54 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
'''
|
||||
JSON5 Renderer for Salt
|
||||
|
||||
.. versionadded:: 2016.3.0
|
||||
|
||||
JSON5 is an unofficial extension to JSON. See http://json5.org/ for more
|
||||
information.
|
||||
|
||||
This renderer requires the `json5 python bindings`__, installable via pip.
|
||||
|
||||
.. __: https://pypi.python.org/pypi/json5
|
||||
'''
|
||||
|
||||
from __future__ import absolute_import
|
||||
|
||||
# Import python libs
|
||||
import logging
|
||||
try:
|
||||
import json5 as json
|
||||
HAS_JSON5 = True
|
||||
except ImportError:
|
||||
HAS_JSON5 = False
|
||||
|
||||
# Import salt libs
|
||||
from salt.ext.six import string_types
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
# Define the module's virtual name
|
||||
__virtualname__ = 'json5'
|
||||
|
||||
|
||||
def __virtual__():
|
||||
if not HAS_JSON5:
|
||||
return (False, 'json5 module not installed')
|
||||
return __virtualname__
|
||||
|
||||
|
||||
def render(json_data, saltenv='base', sls='', **kws):
|
||||
'''
|
||||
Accepts JSON as a string or as a file object and runs it through the JSON
|
||||
parser.
|
||||
|
||||
:rtype: A Python data structure
|
||||
'''
|
||||
if not isinstance(json_data, string_types):
|
||||
json_data = json_data.read()
|
||||
|
||||
if json_data.startswith('#!'):
|
||||
json_data = json_data[(json_data.find('\n') + 1):]
|
||||
if not json_data.strip():
|
||||
return {}
|
||||
return json.loads(json_data)
|
Loading…
Reference in New Issue
Block a user