X-Git-Url: https://codewiz.org/gitweb?p=geekigeeki.git;a=blobdiff_plain;f=geekigeeki.py;h=5340646c63101b24629d96a26ff2adea8e66a3b7;hp=7193d5520b50af8bb709453f3cb53f721d9c7efd;hb=61f00a0d333aeb1cb45e98ab4c1902ff1981ad6a;hpb=e3f54bfe72a742afbe81e363bacc1869959f50c9
diff --git a/geekigeeki.py b/geekigeeki.py
index 7193d55..5340646 100755
--- a/geekigeeki.py
+++ b/geekigeeki.py
@@ -3,7 +3,7 @@
#
# Copyright 1999, 2000 Martin Pool
'
-def link_tag(params, text=None, ss_class=None, authentication=False):
+def link_tag(params, text=None, ss_class=None, privileged=False):
if text is None:
text = params # default
classattr = ''
@@ -162,11 +171,9 @@ def link_tag(params, text=None, ss_class=None, authentication=False):
# Prevent crawlers from following links potentially added by spammers or to generated pages
if ss_class == 'external' or ss_class == 'navlink':
classattr += 'rel="nofollow" '
- if authentication:
- path = privileged_path()
- else:
- path = script_name()
- return '%s' % (classattr, path, params, text)
+ elif url_re.match(params):
+ classattr += 'rel="nofollow" '
+ return '%s' % (classattr, relative_url(params, privileged=privileged), text)
# Search ---------------------------------------------------
@@ -318,11 +325,11 @@ def _macro_TitleIndex(*vargs):
for name in pages:
letter = string.lower(name[0])
if letter != current_letter:
- s = s + '%s
' % (letter, letter)
+ s += '%s
' % (letter, letter)
current_letter = letter
else:
- s = s + '
'
- s = s + Page(name).link_to()
+ s += '
'
+ s += Page(name).link_to()
return s
@@ -336,22 +343,27 @@ class PageFormatter:
def __init__(self, raw):
self.raw = raw
self.h_level = 0
- self.in_pre = self.in_table = self.in_tt = self.in_em = self.in_b = False
+ self.in_pre = self.in_table = False
self.in_header = True
self.list_indents = []
self.tr_cnt = self.h_cnt = 0
+ self.styles = {
+ #wiki html enabled?
+ "//": ["em", False],
+ "''": ["em", False],
+ "**": ["b", False],
+ "'''": ["b", False],
+ "##": ["tt", False],
+ "``": ["tt", False],
+ "__": ["u", False],
+ "^^": ["sup", False],
+ ",,": ["sub", False]
+ }
def _b_repl(self, word):
- self.in_b = not self.in_b
- return ['', ''][self.in_b]
-
- def _em_repl(self, word):
- self.in_em = not self.in_em
- return ['', ''][self.in_em]
-
- def _tt_repl(self, word):
- self.in_tt = not self.in_tt
- return ['', ''][self.in_tt]
+ style = self.styles[word]
+ style[1] = not style[1]
+ return ['','<'][style[1]] + style[0] + '>'
def _tit_repl(self, word):
if self.h_level:
@@ -374,7 +386,7 @@ class PageFormatter:
return Page(word).link_to()
def _img_repl(self, word):
- path = script_name() + '/' + word;
+ path = relative_url(word)
return '' % (path, path)
def _url_repl(self, word):
@@ -384,7 +396,7 @@ class PageFormatter:
return '%s' % (word, word)
def _hurl_repl(self, word):
- m = re.compile("\[\[(\S+)(?:\s*\|\s*([^\]]*)|)\]\]").match(word)
+ m = re.compile("\[\[([^ \t\n\r\f\v\|]+)(?:\s*\|\s*([^\]]+)|)\]\]").match(word)
name = m.group(1)
descr = m.group(2) or name
@@ -392,17 +404,14 @@ class PageFormatter:
if macro:
return apply(macro, (name, descr))
elif img_re.match(name):
- return '' % (name, name, descr)
+ name = relative_url(name)
+ # The "extthumb" nonsense works around a limitation of the HTML block model
+ return '' % (name, name, descr, descr)
else:
if img_re.match(descr):
descr = ''
- if url_re.match(name):
- return '%s' % (name, descr)
- elif name.startswith('/'):
- return '%s' % (name, descr)
- else:
- return link_tag(name, descr, 'wikilink')
+ return link_tag(name, descr, 'wikilink')
def _email_repl(self, word):
return '%s' % (word, word)
@@ -428,13 +437,7 @@ class PageFormatter:
return ''
def _hi_repl(self, word):
- if word == 'FIXME':
- cl = 'error'
- elif word == 'DONE':
- cl = 'success'
- elif word == 'TODO':
- cl = 'notice'
- return '' + word + ''
+ return '' + word + ''
def _tr_repl(self, word):
out = ''
@@ -495,9 +498,7 @@ class PageFormatter:
scan_re = re.compile(
r"(?:"
# Formatting
- + r"(?P\*\*|''')"
- + r"|(?P//|'')"
- + r"|(?P##|``)"
+ + r"(?P\*\*|'''|//|''|##|``|__|\^\^|,,)"
+ r"|(?P
\\\\)"
+ r"|(?P\s*\}\}\})"
+ + r"|(?P