pathname = url + '/' + pathname
return pathname
-# Formatting stuff --------------------------------------------------
+def permalink(s):
+ return re.sub(' ', '-', re.sub('[^a-z0-9_ ]', '', s.lower()).strip())
+# Formatting stuff --------------------------------------------------
def emit_header(mime_type="text/html"):
print "Content-type: " + mime_type + "; charset=utf-8\n"
print '<p class="modified">last modified %s</p>' % mod_string
print '</div></body></html>'
-# ----------------------------------------------------------
-# Macros
+# Macros ------------------------------------------------------------
def _macro_TitleSearch(*vargs):
return _macro_search("titlesearch")
s += Page(name).link_to()
return s
-
-# ----------------------------------------------------------
class PageFormatter:
"""Object that turns Wiki markup into HTML.
def __init__(self, raw):
self.raw = raw
self.h_level = 0
- self.in_pre = self.in_table = False
+ self.in_pre = self.in_table = self.in_li = False
self.in_header = True
self.list_indents = []
self.tr_cnt = 0
def _tit_repl(self, word):
if self.h_level:
- result = '</h%d>' % self.h_level
+ result = '</h%d><p>\n' % self.h_level
self.h_level = 0
else:
self.h_level = len(word) - 1
- abridged = re.sub('[^A-Za-z0-9_]', '', self.line).lower()
- result = '<h%d id="%s"><a class="heading" href="#%s">¶</a> ' % (self.h_level, abridged, abridged)
+ link = permalink(self.line)
+ result = '\n</p><h%d id="%s"><a class="heading" href="#%s">¶</a> ' % (self.h_level, link, link)
return result
def _br_repl(self, word):
'>': '>'}[s]
def _li_repl(self, match):
- return '<li>'
+ if self.in_li:
+ return '</li><li>'
+ else:
+ self.in_li = True
+ return '<li>'
def _pre_repl(self, word):
if word == '{{{' and not self.in_pre:
s = '</p>'
while self._indent_level() > new_level:
del(self.list_indents[-1])
+ if self.in_li:
+ s += '</li>'
+ self.in_li = False # FIXME
s += '</ul>\n'
while self._indent_level() < new_level:
self.list_indents.append(new_level)
print self._undent()
print '</p></div>'
-# ----------------------------------------------------------
class Page:
def __init__(self, page_name):
self.page_name = page_name
return self.get_attrs().get(name, default)
def can(self, action, default=True):
+ acl = None
try:
#acl SomeUser:read,write All:read
acl = self.get_attr("acl", None)