vmg / sundown

Standards compliant, fast, secure markdown processing library in C
1.99k stars 385 forks source link

Improving HTML TOC nesting #58

Closed gregleaver closed 13 years ago

gregleaver commented 13 years ago

Currently:

# Header 1
## Header 2

Renders as:

<ul>
<li><a href="#toc_0">Header 1</a></li>
<li><ul>
<li><a href="#toc_1">Header 2</a><li>
</ul></li>
</ul>

Which has more <li> tags than necessary. This change make it so the nesting works more as expected (or at least how I expected). Result:

<ul>
  <li>
    <a href="#toc_0">Header 1</a>
    <ul>
      <li>
        <a href="#toc_1">Header 2</a>
      </li>
    </ul>
  </li>
</ul>

I have tested it with various combinations of headers including missing header levels and it all produces valid markup.

vmg commented 13 years ago

Independently of the valid markup, I'm afraid the result from this patch seems quite broken:

# Header 1
# Header 2

## Header 3

### Header 4

## Header 5

# Header 6

#### Header 7

## Header 8

# Header 9
<ul>
<li>
<a href="#toc_0">Header 1</a>
</li>
<li>
<a href="#toc_1">Header 2</a>
<ul>
<li>
<a href="#toc_2">Header 3</a>
<ul>
<li>
<a href="#toc_3">Header 4</a>
</li>
</ul>
</li>
<li>
<a href="#toc_4">Header 5</a>
</li>
</ul>
</li>
<li>
<a href="#toc_5">Header 6</a>
<ul>
<li>
<ul>
<li>
<ul>
<li>
<a href="#toc_6">Header 7</a>
</li>
</ul>
</li>
</ul>
</li>
<li>
<a href="#toc_7">Header 8</a>
</li>
</ul>
</li>
<li>
<a href="#toc_8">Header 9</a>
</li>
</ul>

broken list