X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;ds=sidebyside;f=geekigeeki.py;h=73c45ce41d3f36a82c5adedacb370a930b1c9e14;hb=341fe4ae99533d8ce81d9dcd1fa973ce5796923c;hp=d3ce2203bdb6ef379d4fdcec2ebf6e83494e5a0c;hpb=8a6eee8a2bd33f522824afba25feac7c3ac74db3;p=geekigeeki.git
diff --git a/geekigeeki.py b/geekigeeki.py
index d3ce220..73c45ce 100755
--- a/geekigeeki.py
+++ b/geekigeeki.py
@@ -36,6 +36,9 @@ url_re = re.compile(r"[a-z]{3,8}://[^\s'\"]+\S")
ext_re = re.compile(r"\.([^\./]+)$")
# CGI stuff ---------------------------------------------------------
+def config_get(key, default=None):
+ return globals().get(key, default)
+
def script_name():
return os.environ.get('SCRIPT_NAME', '')
@@ -83,18 +86,18 @@ def permalink(s):
def humanlink(s):
return re.sub(r'(?:.*[/:]|)([^:/\.]+)(?:\.[^/:]+|)$', r'\1', s.replace('_', ' '))
-# Split arg lists like "blah| blah blah| width=100 | align = center",
+# Split arg lists like "blah|blah blah| width=100 | align = center",
# return a list containing anonymous arguments and a map containing the named arguments
def parse_args(s):
args = []
- kwargs = {}
+ kvargs = {}
for arg in s.strip('<[{}]>').split('|'):
m = re.match('\s*(\w+)\s*=\s*(.+)\s*', arg)
if m is not None:
- kwargs[m.group(1)] = m.group(2)
+ kvargs[m.group(1)] = m.group(2)
else:
args.append(arg.strip())
- return (args, kwargs)
+ return (args, kvargs)
def url_args(kvargs):
argv = []
@@ -129,16 +132,15 @@ def send_title(name, text="Limbo", msg_text=None, msg_type='error', writable=Fal
print(' "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">')
print('')
- print("
')
- print link_tag('FrontPage', site_icon or 'Home', cssclass='navlink')
+ print link_tag('FrontPage', config_get('site_icon', 'Home'), cssclass='navlink')
if name:
print('
' + link_tag('?fullsearch=' + name, text, cssclass='navlink') + ' ')
else:
print('
' + text + ' ')
print(' | ' + link_tag('FindPage', 'Find Page', cssclass='navlink'))
- if 'history_url' in globals():
- print(' |
Recent Changes')
+ if history:
+ print(' |
Recent Changes')
if name:
- print(' |
Page History')
+ print(' |
Page History')
if name:
print(' | ' + link_tag(name + '?a=raw', 'Raw Text', cssclass='navlink'))
@@ -209,7 +212,7 @@ def link_tag(dest, text=None, privileged=False, **kvargs):
elif file_re.match(dest) and Page(dest).exists():
link_class = 'wikilink'
else:
- text = nonexist_pfx + text
+ text = config_get('nonexist_pfx', '') + text
link_class = 'nonexistent'
# Prevent crawlers from following links potentially added by spammers or to generated pages
@@ -227,7 +230,7 @@ def link_inline(name, descr=None, kvargs={}):
elif image_re.match(name):
return '
' % (url, url + url_args(kvargs), descr)
elif file_re.match(name) and not ext_re.search(name): # FIXME: this guesses a wiki page
- return Page(name).send_naked()
+ return Page(name).send_naked(kvargs)
else:
return '
' \
% (url, url, name)
@@ -330,23 +333,21 @@ def page_list(dirname=None, re=None):
if re is None:
# FIXME: WikiWord is too restrictive now!
re = re.compile(r"^\b((([A-Z][a-z0-9]+){2,}/)*([A-Z][a-z0-9]+){2,})\b$")
- return sorted(filter(re.match, os.listdir(dirname or data_dir)))
+ return sorted(filter(re.match, os.listdir(dirname or config_get(data_dir, ''))))
def send_footer(mod_string=None):
- if globals().get('debug_cgi', False):
+ if config_get('debug_cgi', False):
cgi.print_arguments()
cgi.print_form(form)
cgi.print_environ()
- print('''
-')
+ link_inline("sys/footer", kvargs= { 'LAST_MODIFIED': mod_string })
+ print("