]> git.ipfire.org Git - ipfire.org.git/blobdiff - src/backend/wiki.py
wiki: Handle email addresses
[ipfire.org.git] / src / backend / wiki.py
index c445529d86f7880115fc1e063f583162e0dc2b27..eb889bad803d8c4591e1a5ec8fba57fc1a6d9bd4 100644 (file)
@@ -210,6 +210,9 @@ class Page(misc.Object):
        # Interwiki links e.g. [[wp>IPFire]]
        interwiki_link = re.compile(r"\[\[(\w+)>(.+?)(?:\|(.+?))?\]\]")
 
+       # Mail link
+       email_link = re.compile(r"\[\[([a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+)(?:\|(.+?))?\]\]")
+
        def init(self, id, data=None):
                self.id = id
                self.data = data
@@ -321,6 +324,12 @@ class Page(misc.Object):
 
                return " ".join(s)
 
+       def _render_email_link(self, m):
+               address, alias = m.groups()
+
+               return """<a class="link-external" href="mailto:%s">%s</a>""" \
+                       % (address, alias or address)
+
        def _render(self, text):
                logging.debug("Rendering %s" % self)
 
@@ -363,14 +372,13 @@ class Page(misc.Object):
                # Handle external links
                text = self.external_link.sub(self._render_external_link, text)
 
+               # Handle email links
+               text = self.email_link.sub(self._render_email_link, text)
+
                # Add wiki links
                patterns = (
                        (r"\[\[([\w\d\/\-\.]+)(?:\|(.+?))\]\]", r"\1", r"\2", None, True),
                        (r"\[\[([\w\d\/\-\.]+)\]\]", r"\1", r"\1", self.backend.wiki.get_page_title, True),
-
-                       # Mail
-                       (r"\[\[([a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+)\]\]",
-                               r"\1", r"\1", None, False),
                )
 
                for pattern, link, title, repl, internal in patterns: