return results
-def parse_googlemap(wikitext):
- """Parses the (unicode) u'<googlemap ...>content</googlemap>' of the googlemap extension
- out of a page. If wikitext does not contain the googlemaps extension text None is returned.
- If the googlemap contains invalid formatted lines, a ParseError is raised.
-
- :param wikitext: wikitext containing the template. Example:
-
- wikitext = '''
- <googlemap version="0.9" lat="47.113291" lon="11.272337" zoom="15">
- (Parkplatz)47.114958,11.266026
- Parkplatz
-
- (Gasthaus) 47.114715, 11.266262, Alt Bärnbad (Gasthaus)
- 6#FF014E9A
- 47.114715,11.266262
- 47.114135,11.268381
- 47.113421,11.269322
- 47.11277,11.269979
- 47.112408,11.271119
- </googlemap>
- '''
+def googlemap_to_wrmap(center, zoom, coords, paths):
+ """Converts the output of parse_googlemap to the GeoJSON format wrmap uses.
:returns: (GeoJSON as nested Python datatypes)
"""
- center, zoom, coords, paths = wrpylib.mwmarkup.parse_googlemap(wikitext)
json_features = []
# point
def create_wrmap(geojson):
"""Creates a <wrmap> wikitext from geojson (as python types)."""
wrmap_xml = xml.etree.ElementTree.Element('wrmap')
+ wrmap_xml.text = '\n\n'
for k, v in geojson['properties'].iteritems():
wrmap_xml.attrib[k] = str(v)
assert geojson['type'] == 'FeatureCollection'
json_features = geojson['features']
+ last_json_feature = None
for json_feature in json_features:
feature_xml = xml.etree.ElementTree.SubElement(wrmap_xml, json_feature['properties']['type'])
geo = json_feature['geometry']
if geo['type'] == 'Point':
feature_xml.text = create_wrmap_coordinates([geo['coordinates']])
+ if last_json_feature is not None:
+ last_json_feature.tail = '\n'
else:
- feature_xml.text = create_wrmap_coordinates(geo['coordinates'])
+ if last_json_feature is not None:
+ last_json_feature.tail = '\n\n'
+ feature_xml.text = '\n' + create_wrmap_coordinates(geo['coordinates']) + '\n'
+ last_json_feature = feature_xml
feature_xml.attrib = json_feature['properties']
+ del feature_xml.attrib['type']
- return xml.etree.ElementTree.tostring(wrmap_xml)
+ if last_json_feature is not None:
+ last_json_feature.tail = '\n\n'
+ return xml.etree.ElementTree.tostring(wrmap_xml, encoding='utf-8').decode('utf-8')