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*([^\]]+)|)(?:\]\]|}})")
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):
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)
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)
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)
+ 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.-]+)"