Commit 79799f68 by Michael DeHaan

Allow any file that can be in YAML to also be in JSON. This is primarily done…

Allow any file that can be in YAML to also be in JSON.  This is primarily done to support non-visual editors better.
parent a0f93958
......@@ -7,6 +7,7 @@ Major features/changes:
* The deprecated legacy variable templating system has been finally removed. Use {{ foo }} always not $foo or ${foo}.
* Role dependencies are now tracked across multiple plays, making common roles easier to include in dependencies without any special variable tricks.
* Any data file can also be JSON. Use sparingly -- with great power comes great responsibility. Starting file with "{" or "[" denotes JSON.
New Modules:
......
......@@ -42,6 +42,7 @@ import traceback
import getpass
import sys
import textwrap
import json
#import vault
from vault import VaultLib
......@@ -351,7 +352,16 @@ def smush_ds(data):
return data
def parse_yaml(data):
''' convert a yaml string to a data structure '''
''' convert a yaml string to a data structure. Also supports JSON, ssssssh!!!'''
data = data.lstrip()
if data.startswith("{") or data.startswith("["):
# since the line starts with { or [ we can infer this is a JSON document.
loaded = json.loads(data)
else:
# else this is pretty sure to be a YAML document
loaded = yaml.safe_load(data)
return smush_ds(yaml.safe_load(data))
def process_common_errors(msg, probline, column):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment