aboutsummaryrefslogtreecommitdiff
path: root/trac2md.py
diff options
context:
space:
mode:
Diffstat (limited to 'trac2md.py')
-rwxr-xr-xtrac2md.py38
1 files changed, 17 insertions, 21 deletions
diff --git a/trac2md.py b/trac2md.py
index f7816ce..9a41d1c 100755
--- a/trac2md.py
+++ b/trac2md.py
@@ -14,10 +14,9 @@ from base64 import b64decode
from datetime import datetime
from urllib.parse import quote
-wikilink_1_pattern = re.compile('\[http(.*)\]')
-wikilink_1_extract = re.compile('\[(.*)\]')
-wikilink_2_pattern = re.compile('\[\[([a-zA-Z0-9_]+)\]\]')
-strikethrough_pattern = re.compile('~~(.*)~~')
+wikilink_1_pattern = re.compile("\[\[(http.*)\]\]|\[(http.*)\]")
+wikilink_2_pattern = re.compile("\[\[([a-zA-Z0-9_]+)\]\]")
+strikethrough_pattern = re.compile("~~(.*)~~")
camelcase_pattern = re.compile("!(\w+)")
image_pattern = re.compile("\[\[Image\((.*)\)\]\]")
@@ -74,20 +73,17 @@ def convert_headers(line):
def convert_wikilinks_1(line):
''' Convert wikiformat links
'''
- if wikilink_1_pattern.search(line):
- try:
- result = wikilink_1_extract.search(line).group(1)
- if result:
- parts = result.split(' ', 1)
- if len(parts) == 1:
- mdlink = '[%s](%s)' % (parts[0], parts[0])
- elif len(parts) == 2:
- mdlink = '[%s](%s)' % (parts[1], parts[0])
- line = line.replace('[' + result + ']', mdlink)
- except:
- # Not a link, not a problem
- pass
-
+ m = wikilink_1_pattern.search(line)
+ if m:
+ text = m.group(1) or m.group(2)
+ for sep in "| ":
+ if sep in text:
+ parts = text.split(sep, 1)
+ break
+ else:
+ parts = [text]
+ mdlink = "[{}]({})".format(parts[-1], parts[0])
+ line = line.replace(m.group(0), mdlink)
return line
@@ -97,10 +93,10 @@ def convert_wikilinks_2(line):
if m:
text = m.group(1)
if text.lower() == "pageoutline":
- link = ""
+ mdlink = ""
else:
- link = "[{0}]({0})".format(text)
- line = line.replace(m.group(0), link)
+ mdlink = "[{0}]({0})".format(text)
+ line = line.replace(m.group(0), mdlink)
return line