X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=geekigeeki.py;h=a9aa019400d5e166e662668def9a1c8fd6ba7bec;hb=f223be8a781401fb22428712f25fe3531fe503be;hp=a81ac72da5d6c09c54297162822ce98879db9a28;hpb=44aff46c69f5a6faf0960891481c5295d70d940a;p=geekigeeki.git
diff --git a/geekigeeki.py b/geekigeeki.py
index a81ac72..a9aa019 100755
--- a/geekigeeki.py
+++ b/geekigeeki.py
@@ -1,9 +1,9 @@
-#!/usr/bin/python
+#!/usr/bin/python3.0
# -*- coding: utf-8 -*-
#
# Copyright 1999, 2000 Martin Pool ' + Page(page_name).link_to()
- print ' . . . . ' + `count`
- print ['match', 'matches'][count != 1]
- print ' ' + Page(page_name).link_to())
+ print(' . . . . ' + repr(count))
+ print(['match', 'matches'][count != 1])
+ print(' ' + Page(filename).link_to() + " ' + Page(filename).link_to() + " %d hits out of %d pages searched. %d hits out of %d pages searched.'
+ print('
')
# FIXME: This little JS snippet is harder to pass than ACID 3.0
- print """
+ print("""
"""
+ """)
-def send_title(name, text="Limbo", msg_text=None, msg_type='error'):
+def send_title(name, text="Limbo", msg_text=None, msg_type='error', writable=False):
global title_done
if title_done: return
# Head
emit_header()
- print ''
- print ''
+ print('')
+ print('')
site_name = globals().get('site_name', 'Unconfigured Site')
- print "')
if msg_type == 'error':
- print ' Software Failure. Press left mouse button to continue.\n'
- print msg_text
+ print(' Software Failure. Press left mouse button to continue.\n')
+ print(msg_text)
if msg_type == 'error':
- print ' Guru Meditation #DEADBEEF.ABADC0DE'
- print '
'
+ print('\n Guru Meditation #DEADBEEF.ABADC0DE')
+ print('"
+ print("
")
print_search_stats(len(hits), len(all_pages))
@@ -211,28 +236,36 @@ def handle_titlesearch(needle):
needle_re = re.compile(needle, re.IGNORECASE)
all_pages = page_list()
- hits = filter(needle_re.search, all_pages)
+ hits = list(filter(needle_re.search, all_pages))
- print "")
for (count, page_name) in hits:
- print '
"
+ print('"
+ print("
")
print_search_stats(len(hits), len(all_pages))
def print_search_stats(hits, searched):
- print "")
for filename in hits:
- print '
"
+ print('
' + print('
')
# For each line, we scan through looking for magic
# strings, outputting verbatim any intervening text
@@ -463,19 +519,19 @@ class WikiFormatter:
+ r"|(?P '
+ print(' ')
if blank_re.match(self.line):
- print ' '
+ print(' ')
else:
indent = indent_re.match(self.line)
- print self._indent_to(len(indent.group(0)))
- print re.sub(scan_re, self.replace, self.line)
+ print(self._indent_to(len(indent.group(0))), end=' ')
+ print(re.sub(scan_re, self.replace, self.line))
- if self.in_pre: print ''
- if self.in_table: print ' '
- print self._undent()
- print ' ')
+ print(self._undent())
+ print(' Editing ' + self.page_name
+ print((' Editing ' + self.page_name
+ ' for ' + cgi.escape(remote_user())
+ ' from ' + cgi.escape(get_hostname(remote_host()))
- + ' " + Page('EditingTips').link_to() + "\{\{\{|\s*\}\}\})"
- + r"|(?P
^\s*\|\|(=|)\s*)"
@@ -491,7 +547,7 @@ class WikiFormatter:
indent_re = re.compile(r"^\s*")
tr_re = re.compile(r"^\s*\|\|")
eol_re = re.compile(r"\r?\n")
- for self.line in eol_re.split(self.raw.expandtabs()):
+ for self.line in eol_re.split(str(self.raw).expandtabs()):
# Skip ACLs
if self.in_header:
if self.line.startswith('#'):
@@ -499,23 +555,23 @@ class WikiFormatter:
self.in_header = False
if self.in_pre:
- print re.sub(pre_re, self.replace, self.line)
+ print(re.sub(pre_re, self.replace, self.line))
else:
if self.in_table and not tr_re.match(self.line):
self.in_table = False
- print '
\n"
- except IOError, er:
- if er.errno != errno.ENOENT:
+ except IOError as er:
+ if er.errno != errno.ENOENT and er.errno != errno.EISDIR:
raise er
return self.attrs
@@ -590,7 +662,7 @@ class Page:
if user == remote_user() or user == "All":
return action in perms.split(',')
return False
- except Exception, er:
+ except Exception as er:
if acl:
self.msg_text = 'Illegal acl line: ' + acl
return default
@@ -608,23 +680,22 @@ class Page:
send_guru("Read access denied by ACLs", "notice")
def format(self):
- page_name = None
- if self.can_write():
- page_name = self.page_name
-
- #css foo.css bar.css
- global css_url
- css_url = self.get_attr("css", "").split() + css_url
-
- send_title(page_name, self.split_title(), msg_text=self.msg_text, msg_type=self.msg_type)
+ #css foo.css
+ value = self.get_attr("css", None)
+ if value:
+ global link_urls
+ link_urls += [ [ "stylesheet", value ] ]
+
+ send_title(self.page_name, self.split_title(),
+ msg_text=self.msg_text, msg_type=self.msg_type, writable=self.can_write())
self.send_naked()
- send_footer(page_name, self._last_modified())
+ send_footer(self.page_name, self._last_modified())
def _last_modified(self):
try:
from time import localtime, strftime
- modtime = localtime(os.stat(self._text_filename())[stat.ST_MTIME])
- except OSError, er:
+ modtime = localtime(os.stat(self._filename())[stat.ST_MTIME])
+ except OSError as er:
if er.errno != errno.ENOENT:
raise er
return None
@@ -640,50 +711,67 @@ class Page:
if 'file' in form:
file = form['file'].value
- print ('