diff options
Diffstat (limited to 'trac2md.py')
-rwxr-xr-x | trac2md.py | 38 |
1 files changed, 17 insertions, 21 deletions
@@ -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 |