]> oss.titaniummirror.com Git - webber.git/blobdiff - plugins/toc.py
used Emacs' "tabify" command on some python file.
[webber.git] / plugins / toc.py
index 5873e53dbd7d2ca7bb408f9a167a4daedfb8f787..9a7345360de06e2da787af3a64469d9ec03bd5ef 100644 (file)
@@ -25,37 +25,37 @@ def slugify(text, separator):
        Based on http://snipplr.com/view/26266/create-slugs-in-python/
        """
 
-    ret = ""
-    for c in text.lower():
-        try:
-            ret += htmlentitydefs.codepoint2name[ord(c)]
-        except:
-            ret += c
-    ret = re.sub("([a-zA-Z])(uml|acute|grave|circ|tilde|cedil)", r"\1", ret)
-    ret = re.sub("\W", " ", ret)
-    ret = re.sub(" +", separator, ret)
-    return ret.strip()
+       ret = ""
+       for c in text.lower():
+               try:
+                       ret += htmlentitydefs.codepoint2name[ord(c)]
+               except:
+                       ret += c
+       ret = re.sub("([a-zA-Z])(uml|acute|grave|circ|tilde|cedil)", r"\1", ret)
+       ret = re.sub("\W", " ", ret)
+       ret = re.sub(" +", separator, ret)
+       return ret.strip()
 
 
 def repl(m):
-    global toc
-    label = slugify(m.group(3), "_")
-    if labels.has_key(label):
-        n = 0
-        while True:
-            l = "%s_%d" % (label, n)
-            if not labels.has_key(l):
-                label = l
-                break
-            n += 1
-
-    toc.append( (label, int(m.group(1))-1, m.group(3)) )
-    return '<h%s%s>%s<a name="%s">&nbsp;</a></h%s>' % (
-        m.group(1),
-        m.group(2),
-        m.group(3),
-        label,
-        m.group(1))
+       global toc
+       label = slugify(m.group(3), "_")
+       if labels.has_key(label):
+               n = 0
+               while True:
+                       l = "%s_%d" % (label, n)
+                       if not labels.has_key(l):
+                               label = l
+                               break
+                       n += 1
+
+       toc.append( (label, int(m.group(1))-1, m.group(3)) )
+       return '<h%s%s>%s<a name="%s">&nbsp;</a></h%s>' % (
+               m.group(1),
+               m.group(2),
+               m.group(3),
+               label,
+               m.group(1))
        """
        Function used for re.sub() to find all header elements (h1, h2, ...).
        Data from those elements (level, headline) are stored in the global
@@ -69,31 +69,32 @@ def repl(m):
 
 @set_hook("linkify")
 def linkify(params):
-    global toc
-    global labels
-    toc = []
-    labels = {}
+       global toc
+       global labels
+       toc = []
+       labels = {}
 
-    # Very small pages don't need a table-of-contents
-    if params.file.contents.count("\n") < toc_min_lines:
-        return
+       # Very small pages don't need a table-of-contents
+       if params.file.contents.count("\n") < toc_min_lines:
+               return
 
-    params.file.contents = reHeader.sub(repl, params.file.contents)
+       params.file.contents = reHeader.sub(repl, params.file.contents)
 
 
 
 @set_function("get_toc")
 def get_toc():
-    level = 1
-    res = []
-    for (label, lvl, txt) in toc:
-        while lvl > level:
-            res.append("%s<ul>" % ("  "*level))
-            level += 1
-        while lvl < level:
-            level -= 1
-            res.append("%s</ul>" % ("  "*level))
-        res.append('%s<li><a href="#%s">%s</a></li>' % ("  " * level, label, txt))
-    while level > 1:
-        level -= 1
-    return "\n".join(res)
+       level = 1
+       res = []
+       for (label, lvl, txt) in toc:
+               while lvl > level:
+                       res.append("%s<ul>" % ("  "*level))
+                       level += 1
+               while lvl < level:
+                       level -= 1
+                       res.append("%s</ul>" % ("  "*level))
+               res.append('%s<li><a href="#%s">%s</a></li>' %
+                          ("  " * level, label, txt))
+       while level > 1:
+               level -= 1
+       return "\n".join(res)