import re
import xml.etree.ElementTree
import collections
-from typing import Tuple, Optional, List, OrderedDict, Union, Dict
+from typing import Tuple, Optional, List, OrderedDict, Union, Dict, Any
import jinja2
from mwparserfromhell.nodes import Template, Wikilink
import wrpylib.wrvalidators
import wrpylib.mwmarkup
import wrpylib.wrmwdb
+from wrpylib.lib_sledrun_wikitext_from_json import strip_eol
from wrpylib.wrvalidators import LonLat, opt_lonlat_from_str, opt_lonlat_to_str, opt_uint_from_str, opt_uint_to_str, \
opt_str_opt_comment_enum_to_str, lift_german_to_str, webauskunft_to_str, cachet_german_to_str, \
opt_phone_comment_enum_to_str, lift_german_from_str, GASTHAUSBOX_DICT, opt_difficulty_german_from_str, \
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']
+ feature_xml.attrib = json_feature['properties'].copy()
del feature_xml.attrib['type']
if last_json_feature is not None:
def list_template(self, name: str, value: List[str]) -> str:
return str(wrpylib.mwmarkup.create_template(name, value))
+ def key_value_template(self, name: str, value: Dict[str, Any], keep_empty: bool = False) -> str:
+ value = {k: str(v) for k, v in value.items()
+ if keep_empty or (v is not None and not isinstance(v, jinja2.Undefined) and str(v).strip() != '')}
+ return str(wrpylib.mwmarkup.create_template(name, [], value))
+
def json_template(self, value) -> str:
args = []
kwargs = {}
rodelbahnbox = rodelbahnbox_to_str(sledrun_rbb_json)
- return template.render(sledrun_json=sledrun_json,
+ text = template.render(sledrun_json=sledrun_json,
rodelbahnbox=rodelbahnbox,
map_json=map_json, impressions_title=impressions_title,
h=Jinja2Tools(), **sledrun_json)
+ return strip_eol(text)