minirst: add getsections helper
authorMatt Mackall <mpm@selenic.com>
Tue, 02 Aug 2011 17:43:18 -0500
changeset 15014 a814e986859f
parent 15013 4a1e3c761ec7
child 15015 ee6988aea74e
minirst: add getsections helper
mercurial/minirst.py
--- a/mercurial/minirst.py	Tue Aug 02 17:41:45 2011 -0500
+++ b/mercurial/minirst.py	Tue Aug 02 17:43:18 2011 -0500
@@ -465,6 +465,25 @@
     else:
         return text, pruned
 
+def getsections(blocks):
+    '''return a list of (section name, nesting level, blocks) tuples'''
+    nest = ""
+    level = 0
+    secs = []
+    for b in blocks:
+        if b['type'] == 'section':
+            i = b['underline']
+            if i not in nest:
+                nest += i
+            level = nest.index(i) + 1
+            nest = nest[:level]
+            secs.append((b['lines'][0], level, [b]))
+        else:
+            if not secs:
+                # add an initial empty section
+                secs = [('', 0, [])]
+            secs[-1][2].append(b)
+    return secs
 
 if __name__ == "__main__":
     from pprint import pprint