Commit 93dddf9eb7b3263beda332e79ee84cf8ab9c13bb
Fixed TOC extension to properly nest multiple header levels in the table of contents. Specificly, when stepping back multiple levels, the nestsed listed now follow suite. Test included. Thanks for the patch Jack Miller.
| |   |
| 60 | 60 | if header_rgx.match(c.tag): |
| 61 | 61 | tag_level = int(c.tag[-1]) |
| 62 | 62 | |
| # Regardless of how many levels we jumped |
| # only one list should be created, since |
| # empty lists containing lists are illegal. |
| |
| if tag_level < level: |
| while tag_level < level: |
| 68 | 64 | list_stack.pop() |
| level = tag_level |
| level -= 1 |
| 70 | 66 | |
| 71 | 67 | if tag_level > level: |
| 72 | 68 | newlist = etree.Element("ul") |
| … | … | |
| 71 | 71 | else: |
| 72 | 72 | list_stack[-1].append(newlist) |
| 73 | 73 | list_stack.append(newlist) |
| level = tag_level |
| level += 1 |
| 75 | 75 | |
| 76 | 76 | # Do not override pre-existing ids |
| 77 | 77 | if not "id" in c.attrib: |
| |   |
| <h1 id="header-a">Header A</h1> |
| <h2 id="header-1">Header 1</h2> |
| <h3 id="header-i">Header i</h3> |
| <h1 id="header-b">Header B</h1> |
| <div class="toc"> |
| <ul> |
| <li><a href="#header-a">Header A</a><ul> |
| <li><a href="#header-1">Header 1</a><ul> |
| <li><a href="#header-i">Header i</a></li> |
| </ul> |
| </li> |
| </ul> |
| </li> |
| <li><a href="#header-b">Header B</a></li> |
| </ul> |
| </div> |
| |   |
| # Header A |
|
| ## Header 1 |
|
| ### Header i |
|
| # Header B |
|
| [TOC] |