Introduced "MaskedEmail" and allow a masked email in the Gasthausbox.
[philipp/winterrodeln/wrpylib.git] / wrpylib / mwmarkup.py
index d0543e0ea7c82a6fabc7c33dddefe327a05f8cdd..b43050253a8c8cfc9cd2092e75da9348f89f738d 100644 (file)
@@ -28,7 +28,8 @@ def find_template(wikitext, template_title):
     >>> print wikitext.__getslice__(*find_template(wikitext, u'Color'))
     {{Color|red|red text}}
 
-    The search is done with regular expression.
+    The search is done with regular expression. It gives wrong results when parsing a template
+    containing the characters "}}"
 
     :param wikitext: The text (preferalbe unicode) that has the template in it.
     :param template_title: The page title of the template with or without namespace (but as in the wikitext).
@@ -36,15 +37,14 @@ def find_template(wikitext, template_title):
         (start, end) of the first occurence with start >= 0 and end > start.
         (None, None) if the template is not found.
     """ 
-    match = re.search(u"\{\{" + template_title + "[^\}]*\}\}", wikitext,  re.DOTALL)
+    match = re.search(u"\{\{" + template_title + "\s*(\|[^\}]*)?\}\}", wikitext,  re.DOTALL)
     if match is None: return None, None
     return match.start(), match.end()
 
 
-
 def split_template(template):
     """Takes a template, like u'{{Color|red|text=Any text}}' and translates it to a Python tuple
-    (template_title, parameters) where parameters is a Python dictionary {1: u'red', u'text'=u'Any text'}.
+    (template_title, parameters) where parameters is a Python dictionary {u'1': u'red', u'text'=u'Any text'}.
     Anonymous parameters get integer keys (converted to unicode) starting with 1 
     like in MediaWiki, named parameters are unicode strings.
     Whitespace is stripped.
@@ -98,8 +98,11 @@ def create_template(template_title, anonym_params=[], named_param_keys=[], named
         as_table_keylen = max([len(k) for k in named_param_keys])
     for i in xrange(len(named_param_keys)):
         key = named_param_keys[i]
-        if as_table: key = key.ljust(as_table_keylen)
-        parts.append(key + equal_char + named_param_values[i])
+        if as_table: 
+            key = key.ljust(as_table_keylen)
+            parts.append((key + equal_char + named_param_values[i]).rstrip())
+        else:
+            parts.append(key + equal_char + named_param_values[i])
     return pipe_char.join(parts) + end_char