Consolidate legacy syntax rules
authorBernie Innocenti <bernie@codewiz.org>
Wed, 8 Apr 2009 16:41:29 +0000 (18:41 +0200)
committerBernie Innocenti <bernie@codewiz.org>
Wed, 8 Apr 2009 16:41:29 +0000 (18:41 +0200)
geekigeeki.py

index 9f4400fef4a2a4c30d24d5840817d7024a7d9ccb..651d98db20e984506af833ebf7c810e20a8ae635 100755 (executable)
@@ -30,7 +30,7 @@ import cgi, sys, os, re, errno, stat
 word_re = re.compile(r"^\b((([A-Z][a-z0-9]+){2,}/)*([A-Z][a-z0-9]+){2,})\b$")
 # FIXME: we accept stuff like foo/../bar and we shouldn't
 file_re = re.compile(r"^\b([A-Za-z0-9_\-][A-Za-z0-9_\.\-/]*)\b$")
-img_re = re.compile(r"^.*\.(png|gif|jpg|jpeg|bmp|ico)$", re.IGNORECASE)
+img_re = re.compile(r"^.*\.(png|gif|jpg|jpeg|bmp|ico|ogm|ogg|mkv|mpg|mpeg|mp4|avi|asf|flv|wmv|qt)$", re.IGNORECASE)
 video_re = re.compile(r"^.*\.(ogm|ogg|mkv|mpg|mpeg|mp4|avi|asf|flv|wmv|qt)$", re.IGNORECASE)
 url_re = re.compile(r"^[a-z]{3,8}://[^\s'\"]+\S$")
 link_re = re.compile("(?:\[\[|{{)([^\s\|]+)(?:\s*\|\s*([^\]]+)|)(?:\]\]|}})")
@@ -182,6 +182,8 @@ def send_httperror(status="403 Not Found", query=""):
 def link_tag(params, text=None, link_class=None, privileged=False):
     if text is None:
         text = params # default
+    elif img_re.match(text):
+        text = '<img border="0" src="' + text + '" />'
 
     if not link_class:
         if is_external_url(params):
@@ -345,19 +347,6 @@ class WikiFormatter:
     def _rule_repl(self, word):
         return self._undent() + '\n<hr size="%d" noshade="noshade" />\n' % (len(word) - 2)
 
-    def _word_repl(self, word):
-        return link_tag(word)
-
-    def _img_repl(self, word):
-        pathname = relative_url(word)
-        return '<a href="%s"><img border="0" src="%s" /></a>' % (pathname, pathname)
-
-    def _url_repl(self, word):
-        if img_re.match(word):
-            return '<a href="%s"><img border="0" src="%s" /></a>' % (word, word)
-        else:
-            return '<a href="%s" rel="nofollow" class="external">%s</a>' % (word, word)
-
     def _macro_repl(self, word):
         m = re.compile("\<\<([^\s\|\>]+)(?:\s*\|\s*([^\>]+)|)\>\>").match(word)
         name = m.group(1)
@@ -380,14 +369,13 @@ class WikiFormatter:
 
     def _hurl_repl(self, word):
         m = link_re.match(word)
-        name = m.group(1)
-        descr = m.group(2)
-        if descr is None:
-            descr = name
-        elif img_re.match(m.group(2)):
-            descr = '<img border="0" src="' + descr + '" />'
+        return link_tag(m.group(1), m.group(2))
+
+    def _url_repl(self, word):
+        return link_tag(word)
 
-        return link_tag(name, descr)
+    def _word_repl(self, word):
+        return link_tag(word)
 
     def _inl_repl(self, word):
         m = link_re.match(word)
@@ -409,6 +397,9 @@ class WikiFormatter:
         else:
             return '<a href="%s"><img border="0" src="%s" /></a>' % (name, name)
 
+    def _img_repl(self, word):
+        return self._inl_repl('{{' + word + '}}')
+
     def _email_repl(self, word):
         return '<a href="mailto:%s">%s</a>' % (word, word)
 
@@ -520,7 +511,7 @@ class WikiFormatter:
             + r"|(?P<ent>[<>&])"
 
             # Auto links (LEGACY)
-            + r"|(?P<img>\b[a-zA-Z0-9_/-]+\.(png|gif|jpg|jpeg|bmp|ico))"
+            + r"|(?P<img>\b[a-zA-Z0-9_/-]+\.(png|gif|jpg|jpeg|bmp|ico|ogm|ogg|mkv|mpg|mpeg|mp4|avi|asf|flv|wmv|qt))"
             + r"|(?P<word>\b(?:[A-Z][a-z]+){2,}\b)"
             + r"|(?P<url>(http|https|ftp|mailto)\:[^\s'\"]+\S)"
             + r"|(?P<email>[-\w._+]+\@[\w.-]+)"