summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrey Kislyuk <kislyuk@gmail.com>2017-12-26 22:18:43 -0800
committerAndrey Kislyuk <kislyuk@gmail.com>2017-12-26 22:18:43 -0800
commitc01a4b3de314162cebb1a74bd263bca02191eef9 (patch)
treebc7ca21c774637b07dbd527c7b02177f212f7b8a
parentf88017c6c692635dae0fb7084a846769fec54703 (diff)
Support bare YAML dates and times. Fixes #10
-rwxr-xr-xtest/test.py11
-rwxr-xr-xyq/__init__.py4
2 files changed, 13 insertions, 2 deletions
diff --git a/test/test.py b/test/test.py
index 5fa025a..c6805fb 100755
--- a/test/test.py
+++ b/test/test.py
@@ -57,5 +57,16 @@ class TestYq(unittest.TestCase):
self.assertEqual(self.run_yq("- 2016-12-20T22:07:36Z\n", ["."]), "")
self.assertEqual(self.run_yq("- 2016-12-20T22:07:36Z\n", ["-y", "."]), "- '2016-12-20T22:07:36'\n")
+ self.assertEqual(self.run_yq("2016-12-20", ["."]), "")
+ self.assertEqual(self.run_yq("2016-12-20", ["-y", "."]), "'2016-12-20'\n")
+
+ @unittest.expectedFailure
+ def test_times(self):
+ """
+ Timestamps are parsed as sexagesimals in YAML 1.1 but not 1.2. No PyYAML support for YAML 1.2 yet. See issue 10
+ """
+ self.assertEqual(self.run_yq("11:12:13", ["."]), "")
+ self.assertEqual(self.run_yq("11:12:13", ["-y", "."]), "'11:12:13'\n")
+
if __name__ == '__main__':
unittest.main()
diff --git a/yq/__init__.py b/yq/__init__.py
index a33c19e..8c9a1d0 100755
--- a/yq/__init__.py
+++ b/yq/__init__.py
@@ -9,7 +9,7 @@ from __future__ import absolute_import, division, print_function, unicode_litera
import os, sys, argparse, subprocess, json
from collections import OrderedDict
-from datetime import datetime
+from datetime import datetime, date, time
import yaml
from .version import __version__
@@ -30,7 +30,7 @@ class OrderedDumper(yaml.SafeDumper):
class JSONDateTimeEncoder(json.JSONEncoder):
def default(self, o):
- if isinstance(o, datetime):
+ if isinstance(o, (datetime, date, time)):
return o.isoformat()
return json.JSONEncoder.default(self, o)