Merge branch 'master' of ssh://sunjammer.codewiz.org/~/wiki/git/geekigeeki
authorBernie Innocenti <bernie@codewiz.org>
Tue, 24 Nov 2009 18:16:59 +0000 (13:16 -0500)
committerBernie Innocenti <bernie@codewiz.org>
Tue, 24 Nov 2009 18:16:59 +0000 (13:16 -0500)
1  2 
geekigeeki.py

diff --combined geekigeeki.py
index 9d2bf9e12e8dea0617622960871baa95a990d753,84cc9afa490ab574c859b4523ae124873b8e538a..44b5131bb1435a0e2781f56a8583e108b52b0b75
@@@ -1,16 -1,16 +1,16 @@@
  #!/usr/bin/python
  # -*- coding: utf-8 -*-
  #
- # Copyright 1999, 2000 Martin Pool <mbp@humbug.org.au>
- # Copyright 2002 Gerardo Poggiali
- # Copyright 2007, 2008, 2009 Bernie Innocenti <bernie@codewiz.org>
+ # Copyright (C) 1999, 2000 Martin Pool <mbp@humbug.org.au>
+ # Copyright (C) 2002 Gerardo Poggiali
+ # Copyright (C) 2007, 2008, 2009 Bernie Innocenti <bernie@codewiz.org>
  #
  # This program is free software: you can redistribute it and/or modify
- # it under the terms of the GNU General Public License as published by
- # the Free Software Foundation, either version 3 of the License, or
- # (at your option) any later version.  You should have received a copy
- # of the GNU General Public License along with this program.
- # If not, see <http://www.gnu.org/licenses/>.
+ # it under the terms of the GNU Affero General Public License as
+ # published by the Free Software Foundation, either version 3 of the
+ # License, or (at your option) any later version.
+ # You should have received a copy of the GNU Affero General Public License
+ # along with this program.  If not, see <http://www.gnu.org/licenses/>.
  
  __version__ = '4.0-' + '$Id$'[4:11]
  
@@@ -22,11 -22,11 +22,11 @@@ import cgi, sys, os, re, errno, stat, g
  
  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 ---------------------------------------------------------
@@@ -127,14 -127,11 +127,11 @@@ def send_title(name, text="Limbo", msg_
      global title_done
      if title_done: return
  
-     # Head
+     # HEAD
      emit_header(mtime)
-     print('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"')
-     print('  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">')
-     print('<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">')
+     print('<!doctype html>\n<html lang="en">')
      print("<head><title>%s: %s</title>" % (config_get('site_name', "Unconfigured Wiki"), text))
-     print(' <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />')
+     print(' <meta charset="UTF-8">')
      if not name:
          print(' <meta name="robots" content="noindex,nofollow" />')
  
  
      print('</head>')
  
-     # Body
+     # BODY
      if editable:
          print('<body ondblclick="location.href=\'' + relative_url('?a=edit&q=' + name, privileged=True) + '\'">')
      else:
      title_done = True
      send_guru(msg_text, msg_type)
  
-     # Navbar
-     print('<div class="nav">')
+     # NAVBAR
+     print('<nav><div class="nav">')
      print link_tag('FrontPage', config_get('site_icon', 'Home'), cssclass='navlink')
      if name:
          print('  <b>' + link_tag('?fullsearch=' + name, text, cssclass='navlink') + '</b> ')
      if user != 'AnonymousCoward':
          print(' | <span class="login"><i><b>' + link_tag('User/' + user, user) + '</b></i></span>')
  
-     print('<hr /></div>')
+     print('<hr /></div></nav>')
  
  def send_httperror(status="403 Not Found", query=""):
      print("Status: %s" % status)
@@@ -205,7 -202,7 +202,7 @@@ def link_tag(dest, text=None, privilege
      if text is None:
          text = humanlink(dest)
      elif image_re.match(text):
-         text = '<img border="0" src="' + relative_url(text) + '" alt="' + text + '" />'
+         text = '<img style="border: 0" src="' + relative_url(text) + '" alt="' + text + '" />'
  
      link_class = kvargs.get('class', kvargs.get('cssclass', None))
      if not link_class:
@@@ -388,7 -385,6 +385,6 @@@ class WikiFormatter
              ",,":  ["sub", False],
              "''":  ["em",  False], # LEGACY
              "'''": ["b",   False], # LEGACY
-             "``":  ["tt",  False], # LEGACY
          }
  
      def _b_repl(self, word):
  
          scan_re = re.compile(r"""(?:
              # Styles and formatting ("--" must cling to a word to disambiguate it from the dash)
-               (?P<b>     \*\* | // | \#\# | __ | --\b | \b-- | \^\^ | ,, | ''' | '' | `` )
+               (?P<b>     \*\* | // | \#\# | __ | --\b | \b-- | \^\^ | ,, | ''' | '' )
              | (?P<tit>   \={2,6})
              | (?P<br>    \\\\)
              | (?P<rule>  ^-{3,})
                      print('</p><p>')
                  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('</pre>')
@@@ -668,7 -664,7 +664,7 @@@ 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'