]> Devi Nivas Git - chevron.git/commitdiff
Defaulting to yaml.FullLoader with hidden cli arg to resolve GH-78
authorBinokkio <binokkio@b.nana.technology>
Sun, 27 Dec 2020 10:01:44 +0000 (11:01 +0100)
committerBinokkio <binokkio@b.nana.technology>
Sun, 27 Dec 2020 10:01:44 +0000 (11:01 +0100)
chevron/main.py

index 35934ee6ff4f6128e49b167b417fc318d378878c..5efe763f5bb9894d650b040f84f469d0d3f58d30 100755 (executable)
@@ -3,11 +3,6 @@
 import io
 import sys
 
-try:
-    import yaml as json
-except ImportError:  # not tested
-    import json
-
 try:
     from .renderer import render
     from .metadata import version
@@ -18,9 +13,12 @@ except (ValueError, SystemError):  # python 2
 
 def main(template, data={}, **kwargs):
     with io.open(template, 'r', encoding='utf-8') as template_file:
+
+        yaml_loader = kwargs.pop('yaml_loader', None) or 'FullLoader'
+
         if data != {}:
             data_file = io.open(data, 'r', encoding='utf-8')
-            data = json.load(data_file)
+            data = _load_data(data_file, yaml_loader)
             data_file.close()
 
         args = {
@@ -32,6 +30,16 @@ def main(template, data={}, **kwargs):
         return render(**args)
 
 
+def _load_data(file, yaml_loader):
+    try:
+        import yaml
+        loader = getattr(yaml, yaml_loader)
+        return yaml.load(file, Loader=loader)
+    except ImportError:
+        import json
+        return json.load(file)
+
+
 def cli_main():
     """Render mustache templates using json files"""
     import argparse
@@ -61,6 +69,9 @@ def cli_main():
                         help='The json data file',
                         type=is_file_or_pipe, default={})
 
+    parser.add_argument('-y', '--yaml-loader', dest='yaml_loader',
+                        help=argparse.SUPPRESS)
+
     parser.add_argument('-p', '--path', dest='partials_path',
                         help='The directory where your partials reside',
                         type=is_dir, default='.')