1.1 --- a/parser.py Sun Jun 17 01:36:50 2012 +0200
1.2 +++ b/parser.py Tue Jul 10 21:59:36 2012 +0200
1.3 @@ -197,29 +197,45 @@
1.4 # NOTE: Proper detection of external links required.
1.5
1.6 if len(parts) == 1:
1.7 - label, target = None, parts[0]
1.8 + label, target, title = None, parts[0], None
1.9 elif len(parts) == 2:
1.10 - label, target = parts
1.11 + (label, target), title = parts, None
1.12 else:
1.13 label, target, title = parts
1.14
1.15 target = target.strip()
1.16
1.17 + # Look for namespace links and rewrite them.
1.18 +
1.19 if target.find(":") != -1:
1.20 prefix = ""
1.21 space, rest = target.split(":", 1)
1.22 if space not in URL_SCHEMES:
1.23 target = "%s/%s" % (space, rest)
1.24 +
1.25 + # Detect anchors.
1.26 +
1.27 elif target.startswith("#"):
1.28 prefix = ""
1.29 +
1.30 + # Detect attachments.
1.31 +
1.32 elif target.startswith("^"):
1.33 prefix = "attachment:"
1.34 +
1.35 + # Link to other pages within a space.
1.36 +
1.37 else:
1.38 prefix = "../"
1.39
1.40 - if len(parts) == 1:
1.41 + # Make the link tidier by making a target if none was given.
1.42 +
1.43 + if not label:
1.44 + label = target
1.45 +
1.46 + if not label and not title:
1.47 return "[[%s%s]]" % (prefix, target)
1.48 - elif len(parts) == 2:
1.49 + elif not title:
1.50 return "[[%s%s|%s]]" % (prefix, target, label)
1.51 else:
1.52 return "[[%s%s|%s|title=%s]]" % (prefix, target, label, title)