def get_json(workout): p = swim_parser.parser res = p.parse(workout) sv = SwimJsonVisitor() cv = SwimJsonCloseVisitor() out = traversal.json_traverse(res, sv, cv, []) return json.dumps(json.loads(out), indent = 2)
def test_multi_set(self): """ Test a multiset (e.g 2 x {1 x 50 ... } """ s = '2 x {2 x 100 fr @1:20 2 x 100 IM @1:30}' result = self.parser.parse(s) actual = traversal.json_traverse(result, self.json_visitor, self.json_close_visitor, []) expected = '{"setlist": [{"reps": 2, "setlist": [{"reps": 2, "distance": 100, "stroke": "fr", "zone": null, "time": 80}, {"reps": 2, "distance": 100, "stroke": "IM", "zone": null, "time": 90}]}]}' self.assertEqual(actual, expected)
def test_set_with_only_distance(self): """ Takes a set that is defined only by yards, e.g. 1000. Should return a json structure like: { setlist: { set: { reps: 0, yards: 1000, zone: None, stroke: None}}} """ s = '1000' result = self.parser.parse(s) actual = traversal.json_traverse(result, self.json_visitor, self.json_close_visitor, []) expected = '{"setlist": [{"reps": 1, "distance": 1000, "stroke": null, "zone": null, "time": 0}]}' self.assertEqual(actual, expected)