Fix corner cases of humanized links
authorBernie Innocenti <bernie@codewiz.org>
Sat, 2 May 2009 06:19:18 +0000 (08:19 +0200)
committerBernie Innocenti <bernie@codewiz.org>
Sat, 2 May 2009 06:19:18 +0000 (08:19 +0200)
geekigeeki.py

index b52d3522c88d0b5b11a5e6c46463b70a1f92ca52..678754e3a9633d29fc779eeed48eeddb8fa9fa87 100755 (executable)
@@ -79,7 +79,7 @@ def permalink(s):
     return re.sub(' ', '-', re.sub('[^a-z0-9_ ]', '', s.lower()).strip())
 
 def humanlink(s):
-    return re.search('([^:/\.]+)(?:\.[^/:]+|)$', s).group(1).replace('_', ' ')
+    return re.sub(r'([^:/\.]+)(?:\.[^/:]+|)$', r'\1', s.replace('_', ' '))
 
 # Split arg lists like "blah| blah blah| width=100 | align = center",
 # return a list containing anonymous arguments and a map containing the named arguments
@@ -87,10 +87,10 @@ def parse_args(s):
     args = []
     kwargs = {} 
     for arg in s.strip('<[{}]>').split('|'):
-        try:
-            key, val = arg.split('=', 1)
-            kwargs[key.strip()] = val.strip()
-        except ValueError:
+        m = re.match('\s*(\w+)\s*=\s*(.+)\s*', arg)
+        if m is not None:
+            kwargs[m.group(1)] = m.group(2)
+        else:
             args.append(arg.strip())
     return (args, kwargs)
 
@@ -173,7 +173,7 @@ def send_title(name, text="Limbo", msg_text=None, msg_type='error', writable=Fal
             print(' | <a href="' + relative_url(history_url + '?a=history;f=' + name) + '" class="navlink">Page History</a>')
 
     if name:
-        print(' | ' + link_tag('?raw=' + name, 'Raw Text', cssclass='navlink'))
+        print(' | ' + link_tag(name + '?a=raw', 'Raw Text', cssclass='navlink'))
         if privileged_url is not None:
             if writable:
                 print(' | ' + link_tag('?a=edit&q=' + name, 'Edit', cssclass='navlink', privileged=True))