X-Git-Url: https://git.toastfreeware.priv.at/philipp/winterrodeln/wrpylib.git/blobdiff_plain/f6c4fcdf278c631e8900c06845eebfe36aa5dc51..05897cf97ad5b1a0beb15acc56387d1967959ede:/wrpylib/wrvalidators.py diff --git a/wrpylib/wrvalidators.py b/wrpylib/wrvalidators.py index 127b513..c827d5e 100644 --- a/wrpylib/wrvalidators.py +++ b/wrpylib/wrvalidators.py @@ -304,7 +304,7 @@ opt_tristate_german_converter = FromToConverter(opt_tristate_german_from_str, op # ------------------------------- def opt_tristate_german_comment_from_str(value): - """Ja, Nein or Vielleicht, optionally with comment in parenthesis.""" + """Ja, Nein or Teilweise, optionally with comment in parenthesis.""" return value_comment_from_str(value, opt_tristate_german_from_str, opt_str_from_str, True) @@ -335,6 +335,14 @@ def url_to_str(value): # --------------------- def webauskunft_from_str(value): + """Converts a URL or 'Nein' to a tuple + 'http://www.example.com/' -> (True, 'http://www.example.com/') + 'Nein' -> (False, None) + '' -> (None, None) + + :param value: URL or 'Nein' + :return: tuple + """ return opt_no_german_from_str(value, url_from_str) @@ -350,11 +358,11 @@ webauskunft_converter = FromToConverter(webauskunft_from_str, webauskunft_to_str def wikipage_from_str(value): """Validates wiki page name like '[[Birgitzer Alm]]'. - The page is not checked for existance. + The page is not checked for existence. An empty string is an error. '[[Birgitzer Alm]]' => '[[Birgitzer Alm]]' """ - if not value.startswith('[[') or not value.endswith(']]'): + if re.match(r'\[\[[^\[\]]+\]\]$', value) is None: raise ValueError('No valid wiki page name "{}"'.format(value)) return value @@ -699,7 +707,7 @@ def wikibox_to_template(value, name, converter_dict): def template_from_str(value, name): wikicode = mwparserfromhell.parse(value) - template_list = [template for template in wikicode.filter_templates(name) if template.name.strip() == name] + template_list = wikicode.filter_templates(recursive=False, matches=lambda t: t.name.strip() == name) if len(template_list) == 0: raise ValueError('No "{}" template was found'.format(name)) if len(template_list) > 1: