diff options
Diffstat (limited to 'trac2md.py')
-rwxr-xr-x | trac2md.py | 13 |
1 files changed, 10 insertions, 3 deletions
@@ -20,7 +20,7 @@ traclink_pattern = re.compile(r"(?<!\[)\[([^][]+)\]") image_pattern = re.compile(r"\[\[Image\((.*)\)\]\]") -wikilink_pattern = re.compile(r"\[\[(wiki:|attachment:)?([^]|[]+)(?:[|]([^][]+))?\]\]") +wikilink_pattern = re.compile(r"\[\[(wiki:|attachment:|source:|browser:)?([^]|[]+)(?:[|]([^][]+))?\]\]") strikethrough_pattern = re.compile(r"~~([^~]+)~~") bangquote_pattern = re.compile(r"!((?:\w|[#])+)") @@ -62,7 +62,12 @@ def convert_traclink_to_creolelink(line): return line -def convert_wikilinks(line, slug): +# Probably most of the non-wiki scheme tests should become a table in an +# extended JSON config file which maps +# +# { "source:fee/fie/foe/fum": "https://git.cryptech.is/blarg/blee/blue" } + +def convert_wikilinks(line, slug, giturl): for m in wikilink_pattern.finditer(line): scheme, link, text = [p.strip() if p else p for p in m.groups()] if text is None: @@ -75,6 +80,8 @@ def convert_wikilinks(line, slug): mdlink = "<{}>".format(link) elif scheme == "attachment:": mdlink = "[{}]({{attach}}{}/{})".format(text, slug, link) + elif scheme in ("source:", "browser:"): + mdlink = "[{}]({}/{})".format(text, giturl.rstrip("/"), link.lstrip("/")) elif scheme == "wiki:" or (scheme is None and camelcase_pattern.match(link)): mdlink = "[{}]({{filename}}{}.md)".format(text, link) else: @@ -190,7 +197,7 @@ def WikiToMD(content, slug): line = delete_pattern.sub("", line) # Convert wiki links - line = convert_wikilinks(line, slug) + line = convert_wikilinks(line, slug, "https://git.cryptech.is/") # Convert striked through text line = strikethrough_pattern.sub(r"<s>\1</s>", line) |