From: Michael Tremer Date: Mon, 12 Nov 2018 23:40:36 +0000 (+0000) Subject: wiki: Add support for [[wiki]] links X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=574794da99c412456bbf95187856a12f33399aeb;p=ipfire.org.git wiki: Add support for [[wiki]] links Signed-off-by: Michael Tremer --- diff --git a/src/backend/wiki.py b/src/backend/wiki.py index 4d1e8f82..46b27b77 100644 --- a/src/backend/wiki.py +++ b/src/backend/wiki.py @@ -134,6 +134,27 @@ class Page(misc.Object): def _render(self, text): logging.debug("Rendering %s" % self) + patterns = ( + (r"\[\[([\w\d\/]+)(?:\|([\w\d\s]+))\]\]", r"/\1", r"\2", None, None), + (r"\[\[([\w\d\/\-]+)\]\]", r"/\1", r"\1", self.backend.wiki.get_page_title, r"\1"), + ) + + for pattern, link, title, repl, args in patterns: + replacements = [] + + for match in re.finditer(pattern, text): + l = match.expand(link) + t = match.expand(title) + + if callable(repl): + t = repl(match.expand(args)) or t + + replacements.append((match.span(), t or l, l)) + + # Apply all replacements + for (start, end), t, l in reversed(replacements): + text = text[:start] + "[%s](%s)" % (t, l) + text[end:] + # Borrow this from the blog return self.backend.blog._render_text(text, lang="markdown")