From 88b9d5068c5bac0691fedb543114300d6afc7131 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Mon, 3 Aug 2020 09:26:37 -0700 Subject: [PATCH] finish date parser --- EXAMPLES.md | 18 +++++++++++++++++ README.md | 1 + docs/parsers/date.md | 34 ++++++++++++++++++-------------- tests/fixtures/generic/date.json | 1 + tests/fixtures/generic/date.out | 1 + tests/test_date.py | 34 ++++++++++++++++++++++++++++++++ 6 files changed, 74 insertions(+), 15 deletions(-) create mode 100644 tests/fixtures/generic/date.json create mode 100644 tests/fixtures/generic/date.out create mode 100644 tests/test_date.py diff --git a/EXAMPLES.md b/EXAMPLES.md index 72a84d04..69b7c509 100644 --- a/EXAMPLES.md +++ b/EXAMPLES.md @@ -377,6 +377,24 @@ cat homes.csv | jc --csv -p } ] ``` +### date +```bash +date | jc --date -p # or: jc -p date +``` +```json +{ + "year": 2020, + "month_num": 7, + "day": 31, + "hour": 16, + "minute": 48, + "second": 11, + "month": "Jul", + "weekday": "Fri", + "weekday_num": 6, + "timezone": "PDT" +} +``` ### df ```bash df | jc --df -p # or: jc -p df diff --git a/README.md b/README.md index f59eee5a..9b7d26fe 100644 --- a/README.md +++ b/README.md @@ -119,6 +119,7 @@ The JSON output can be compact (default) or pretty formatted with the `-p` optio - `--crontab` enables the `crontab` command and file parser - `--crontab-u` enables the `crontab` file parser with user support - `--csv` enables the `CSV` file parser +- `--date` enables the `date` command parser - `--df` enables the `df` command parser - `--dig` enables the `dig` command parser - `--dmidecode` enables the `dmidecode` command parser diff --git a/docs/parsers/date.md b/docs/parsers/date.md index bd15b802..44478068 100644 --- a/docs/parsers/date.md +++ b/docs/parsers/date.md @@ -15,12 +15,14 @@ Examples: $ date | jc --date -p { "year": 2020, - "month": "Jul", + "month_num": 7, "day": 31, + "hour": 16, + "minute": 48, + "second": 11, + "month": "Jul", "weekday": "Fri", - "hour": 14, - "minute": 35, - "second": 55, + "weekday_num": 6, "timezone": "PDT" } @@ -30,9 +32,9 @@ Examples: "month": "Jul", "day": "31", "weekday": "Fri", - "hour": "14", - "minute": "36", - "second": "14", + "hour": "16", + "minute": "50", + "second": "01", "timezone": "PDT" } @@ -59,14 +61,16 @@ Returns: Dictionary. Structured data with the following schema: { - "year": integer, - "month": string, - "day": integer, - "weekday": string, - "hour": integer, - "minute": integer, - "second": integer, - "timezone": string + "year": integer, + "month_num": integer, + "day": integer, + "hour": integer, + "minute": integer, + "second": integer, + "month": string, + "weekday": string, + "weekday_num": integer, + "timezone": string } diff --git a/tests/fixtures/generic/date.json b/tests/fixtures/generic/date.json new file mode 100644 index 00000000..5e5057ca --- /dev/null +++ b/tests/fixtures/generic/date.json @@ -0,0 +1 @@ +{"year": 2020, "month_num": 8, "day": 3, "hour": 9, "minute": 12, "second": 51, "month": "Aug", "weekday": "Mon", "weekday_num": 2, "timezone": "PDT"} diff --git a/tests/fixtures/generic/date.out b/tests/fixtures/generic/date.out new file mode 100644 index 00000000..f1758f38 --- /dev/null +++ b/tests/fixtures/generic/date.out @@ -0,0 +1 @@ +Mon Aug 3 09:12:51 PDT 2020 diff --git a/tests/test_date.py b/tests/test_date.py new file mode 100644 index 00000000..3274a1fd --- /dev/null +++ b/tests/test_date.py @@ -0,0 +1,34 @@ +import os +import json +import unittest +import jc.parsers.date + +THIS_DIR = os.path.dirname(os.path.abspath(__file__)) + + +class MyTests(unittest.TestCase): + + def setUp(self): + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/date.out'), 'r', encoding='utf-8') as f: + self.generic_date = f.read() + + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/date.json'), 'r', encoding='utf-8') as f: + self.generic_date_json = json.loads(f.read()) + + def test_date_nodata(self): + """ + Test 'date' with no data + """ + self.assertEqual(jc.parsers.date.parse('', quiet=True), {}) + + def test_date(self): + """ + Test 'date' + """ + self.assertEqual(jc.parsers.date.parse(self.generic_date, quiet=True), self.generic_date_json) + + +if __name__ == '__main__': + unittest.main()