X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=geekigeeki.py;h=7193d5520b50af8bb709453f3cb53f721d9c7efd;hb=e3f54bfe72a742afbe81e363bacc1869959f50c9;hp=adc7d2a88f3bab4e8d2bb28a5fdc263841d7d2db;hpb=2cd7e796c7e07cdfd052afbb9d35a4ded3782ef1;p=geekigeeki.git diff --git a/geekigeeki.py b/geekigeeki.py index adc7d2a..7193d55 100755 --- a/geekigeeki.py +++ b/geekigeeki.py @@ -1,4 +1,4 @@ -#! /usr/bin/env python +#!/usr/bin/python # -*- coding: utf-8 -*- # # Copyright 1999, 2000 Martin Pool @@ -113,8 +113,8 @@ def send_title(name, text="Limbo", msg=None, msg_type='error'): print ' ' if not name: print ' ' - if globals().has_key('css_url'): - print ' ' % css_url + for css in css_url: + print ' ' % css print '' # Body @@ -336,7 +336,7 @@ class PageFormatter: def __init__(self, raw): self.raw = raw self.h_level = 0 - self.in_pre = self.in_table = self.in_var = self.in_em = self.in_b = False + self.in_pre = self.in_table = self.in_tt = self.in_em = self.in_b = False self.in_header = True self.list_indents = [] self.tr_cnt = self.h_cnt = 0 @@ -349,6 +349,10 @@ class PageFormatter: 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] + def _tit_repl(self, word): if self.h_level: result = '' % self.h_level @@ -389,12 +393,16 @@ class PageFormatter: return apply(macro, (name, descr)) elif img_re.match(name): return '%s' % (name, name, descr) - elif url_re.match(name): - return '%s' % (name, descr) - elif name.startswith('/'): - return '%s' % (name, descr) else: - return link_tag(name, descr, 'wikilink') + 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') def _email_repl(self, word): return '%s' % (word, word) @@ -428,15 +436,6 @@ class PageFormatter: cl = 'notice' return '' + word + '' - def _var_repl(self, word): - if word == '{{' and not self.in_var: - self.in_var = True - return '' - elif self.in_var: - self.in_var = False - return '' - return '' - def _tr_repl(self, word): out = '' if not self.in_table: @@ -498,6 +497,7 @@ class PageFormatter: # Formatting + r"(?P\*\*|''')" + r"|(?P//|'')" + + r"|(?P##|``)" + r"|(?P\={2,6})" + r"|(?P
\\\\)" + r"|(?P^-{3,})" @@ -515,7 +515,6 @@ class PageFormatter: # Lists, divs, spans + r"|(?P
  • ^\s+[\*#] +)" + r"|(?P
    \{\{\{|\s*\}\}\})"
    -            + r"|(?P\{\{|\}\})"
     
                 # Tables
                 + r"|(?P^\s*\|\|(=|)\s*)"
    @@ -563,7 +562,6 @@ class Page:
             self.page_name = page_name
             self.msg = ''
             self.msg_type = 'error'
    -        self.attrs = {}
     
         def split_title(self):
             # look for the end of words and the start of a new word,
    @@ -602,8 +600,9 @@ class Page:
                 raise er
     
         def get_attrs(self):
    -        if self.attrs:
    +        if self.__dict__.has_key('attrs'):
                 return self.attrs
    +        self.attrs = {}
             try:
                 file = open(self._text_filename(), 'rt')
                 attr_re = re.compile(r"^#(\S*)(.*)$")
    @@ -618,11 +617,16 @@ class Page:
                     raise er
             return self.attrs
     
    +    def get_attr(self, name, default):
    +        if self.get_attrs().has_key(name):
    +            return self.get_attrs()[name]
    +        else:
    +            return default
    +
         def can(self, action, default=True):
    -        attrs = self.get_attrs()
             try:
    -            # SomeUser:read,write All:read
    -            acl = attrs["acl"]
    +            #acl SomeUser:read,write All:read
    +            acl = self.get_attr("acl", None)
                 for rule in acl.split():
                     (user,perms) = rule.split(':')
                     if user == remote_user() or user == "All":
    @@ -645,6 +649,12 @@ class Page:
             page_name = None
             if self.can_write():
                 page_name = self.page_name
    +
    +        #FIXME: are there security implications?
    +        #css foo.css bar.css
    +        global css_url
    +        css_url = css_url + self.get_attr("css", "").split()
    +
             send_title(page_name, self.split_title(), msg=self.msg, msg_type=self.msg_type)
             if self.can_read():
                 PageFormatter(self.get_raw_body()).print_html()