X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;ds=sidebyside;f=geekigeeki.py;h=494118661918794e5726000858eabe9db891023d;hb=fe9e24ac252d4e400fd800102451ff165bd179b3;hp=b6e802c8277f9e67be9e118c0a3eaef9cdc25fc7;hpb=62337efb7bd140125c890b843c428a9f13c4aaf7;p=geekigeeki.git diff --git a/geekigeeki.py b/geekigeeki.py index b6e802c..4941186 100755 --- a/geekigeeki.py +++ b/geekigeeki.py @@ -22,11 +22,11 @@ import cgi, sys, os, re, errno, stat, glob image_ext = 'png|gif|jpg|jpeg|bmp|ico' video_ext = "ogg|ogv|oga" # Not supported by Firefox 3.5: mkv|mpg|mpeg|mp4|avi|asf|flv|wmv|qt -image_re = re.compile(r".*\.(" + image_ext + "|" + video_ext + ")", re.IGNORECASE) -video_re = re.compile(r".*\.(" + video_ext + ")", re.IGNORECASE) +image_re = re.compile(r".*\.(" + image_ext + "|" + video_ext + ")$", re.IGNORECASE) +video_re = re.compile(r".*\.(" + video_ext + ")$", re.IGNORECASE) # FIXME: we accept stuff like foo/../bar and we shouldn't -file_re = re.compile(r"([A-Za-z0-9_\-][A-Za-z0-9_\.\-/]*)") -url_re = re.compile(r"[a-z]{3,8}://[^\s'\"]+\S") +file_re = re.compile(r"([A-Za-z0-9_\-][A-Za-z0-9_\.\-/ ]*)$") +url_re = re.compile(r"[a-z]{3,8}://[^\s'\"]+\S$") ext_re = re.compile(r"\.([^\./]+)$") # CGI stuff --------------------------------------------------------- @@ -120,21 +120,18 @@ def send_guru(msg_text, msg_type): print(cgi.escape(msg_text)) if msg_type == 'error': print '\n Guru Meditation #DEADBEEF.ABADC0DE' - print('' \ + print('' \ % relative_url('sys/GuruMeditation.js')) def send_title(name, text="Limbo", msg_text=None, msg_type='error', writable=False, mtime=None): global title_done if title_done: return - # Head + # HEAD emit_header(mtime) - print('') - print('') - + print('\n') print("
\{\{\{|\s*\}\}\}) - | (?P\{\{([^\s\|]+)(?:\s*\|\s*([^\]]+)|)\}\}) + | (?P \{\{[^\}]+\}\}) # Tables | (?P ^\s*\|\|(=|)\s*) @@ -614,8 +610,8 @@ class WikiFormatter: print(' ') else: indent = indent_re.match(self.line) - #3.0: print(self._indent_to(len(indent.group(0))), end=' ') print(self._indent_to(len(indent.group(1)), indent.group(2))) + # Stand back! Here we apply the monster regex that does all the parsing print(re.sub(scan_re, self.replace, self.line)) if self.in_pre: print('') @@ -625,7 +621,7 @@ class WikiFormatter: class Page: def __init__(self, page_name): - self.page_name = page_name + self.page_name = page_name.rstrip('/'); self.msg_text = '' self.msg_type = 'error' @@ -668,19 +664,20 @@ class Page: out = '== ' pathname = '' for dirname in self.page_name.strip('/').split('/'): - pathname = (pathname + '/' + dirname) if pathname else dirname + pathname = (pathname and pathname + '/' ) + dirname out += '[[' + pathname + '|' + dirname + ']]/' out += ' ==\n' + images_out = '\n' for filename in page_list(self._filename(), file_re): if image_re.match(filename): maxwidth = config_get('image_maxwidth', '400') if maxwidth: maxwidth = ' | maxwidth=' + str(maxwidth) - out += '{{' + self.page_name + '/' + filename + ' | ' + humanlink(filename) + maxwidth + ' | class=thumbleft}}\n' + images_out += '{{' + self.page_name + '/' + filename + ' | ' + humanlink(filename) + maxwidth + ' | class=thumbleft}}\n' else: out += ' * [[' + self.page_name + '/' + filename + ']]\n' - return out + return out + images_out def pragmas(self): if not '_pragmas' in self.__dict__: