]> ToastFreeware Gitweb - philipp/winterrodeln/wrpylib.git/commitdiff
Add functions lonlat_to_json and lonlat_ele_to_json.
authorPhilipp Spitzer <philipp@spitzer.priv.at>
Sun, 28 Nov 2021 21:45:09 +0000 (22:45 +0100)
committerPhilipp Spitzer <philipp@spitzer.priv.at>
Sun, 28 Nov 2021 21:45:09 +0000 (22:45 +0100)
tests/test_wrmwmarkup.py
wrpylib/wrmwmarkup.py

index eba6cd8395ec1ab9651f5588701f44e3d8ef2712..273fa36c5b58e553250d463e1987a6684b0c4f49 100644 (file)
@@ -6,7 +6,8 @@ import wrpylib.wrvalidators
 import wrpylib.wrmwmarkup
 from wrpylib.wrvalidators import LonLat
 from wrpylib.wrmwmarkup import sledrun_from_rodelbahnbox, sledrun_to_rodelbahnbox, \
-    inn_from_gasthausbox, inn_to_gasthausbox, lonlat_ele_from_template, latlon_ele_to_template, create_sledrun_wiki
+    inn_from_gasthausbox, inn_to_gasthausbox, lonlat_ele_from_template, latlon_ele_to_template, create_sledrun_wiki, \
+    lonlat_to_json, lonlat_ele_to_json
 
 
 class TestSledrun(unittest.TestCase):
@@ -363,6 +364,25 @@ class TestLonlatEle(unittest.TestCase):
         template = latlon_ele_to_template((LonLat(11.468819, 46.942239), 1866), 'Position oben')
         self.assertEqual('{{Position oben|46.942239 N 11.468819 E|1866}}', template)
 
+    def test_lonlat_to_json(self):
+        actual = lonlat_to_json(LonLat(11.2, 47.6))
+        self.assertEqual({'longitude': 11.2, 'latitude': 47.6}, actual)
+
+    def test_lonlat_ele_to_json(self):
+        actual = lonlat_ele_to_json(LonLat(12.3, 42.9), 420)
+        expected = {'position': {'longitude': 12.3, 'latitude': 42.9}, 'elevation': 420}
+        self.assertEqual(expected, actual)
+
+        actual = lonlat_ele_to_json(LonLat(13.0, 40.1), None)
+        expected = {'position': {'longitude': 13.0, 'latitude': 40.1}}
+        self.assertEqual(expected, actual)
+
+        actual = lonlat_ele_to_json(None, 1580)
+        expected = {'elevation': 1580}
+        self.assertEqual(expected, actual)
+
+        self.assertEqual({}, lonlat_ele_to_json(None, None))
+
 
 class TestWrMap(unittest.TestCase):
     def test_parse_wrmap(self):
index 32c9b02e65c0a4dad06708affad31e73c977b049..1c82c43fe9b76f65cdefade2b2f64c6b947536ae 100644 (file)
@@ -165,6 +165,19 @@ def latlon_ele_to_template(lonlat_ele, name) -> Template:
     return template
 
 
+def lonlat_to_json(lonlat: LonLat) -> dict:
+    return {'longitude': lonlat.lon, 'latitude': lonlat.lat}
+
+
+def lonlat_ele_to_json(lonlat: Optional[LonLat], ele: Optional[int]) -> dict:
+    result = {}
+    if lonlat is not None:
+        result['position'] = lonlat_to_json(lonlat)
+    if ele is not None:
+        result['elevation'] = ele
+    return result
+
+
 class ParseError(RuntimeError):
     """Exception used by some of the functions"""
     pass