]> 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/
        """
 
        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):
 
 
 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
        """
        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):
 
 @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():
 
 
 
 @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)