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: ...@@ -7,6 +7,7 @@ Major features/changes:
* The deprecated legacy variable templating system has been finally removed. Use {{ foo }} always not $foo or ${foo}. * 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. * 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: New Modules:
......
...@@ -42,6 +42,7 @@ import traceback ...@@ -42,6 +42,7 @@ import traceback
import getpass import getpass
import sys import sys
import textwrap import textwrap
import json
#import vault #import vault
from vault import VaultLib from vault import VaultLib
...@@ -351,7 +352,16 @@ def smush_ds(data): ...@@ -351,7 +352,16 @@ def smush_ds(data):
return data return data
def parse_yaml(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)) return smush_ds(yaml.safe_load(data))
def process_common_errors(msg, probline, column): 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