matthewwithanm/python-markdownify

Deeply nested lists

Closed this issue · 1 comments

I tried converting the following list, but it didn't work correctly:

from markdownify import markdownify as md

lst = md(
    "<ol> <li>Item 1 <ul> <li>Subitem 1 <ol> <li>SubSubitem 1</li> <li>SubSubitem 2</li> <ol> <li>SubSubSubitem 1</li> </ol> </ol> </li> <li>Subitem 2</li> </ul></li> <li>Item 2</li></ol>"
)
print(lst)

This is the output I get:

1. Item 1
   * Subitem 1
     1. SubSubitem 1
     2. SubSubitem 2
     1. SubSubSubitem 1
   * Subitem 2
2. Item 2

And this is the expected output:

1. Item 1
   * Subitem 1
     1. SubSubitem 1
     2. SubSubitem 2
       1. SubSubSubitem 1
   * Subitem 2
2. Item 2

There is an issue in indenting 1. SubSubSubitem 1.

Quick check: the SubSubSubitem <ol> is not inside a <li> tag. Does it work with:

<ol>
    <li>Item 1
        <ul>
            <li>Subitem 1
                <ol>
                    <li>SubSubitem 1</li>
                    <li>SubSubitem 2
                        <ol>
                            <li>SubSubSubitem 1</li>
                        </ol>
                    </li>
                </ol>
            </li>
            <li>Subitem 2</li>
        </ul>
    </li>
    <li>Item 2</li>
</ol>

instead of

<ol>
    <li>Item 1
        <ul>
            <li>Subitem 1
                <ol>
                    <li>SubSubitem 1</li>
                    <li>SubSubitem 2</li>
                    <ol>
                        <li>SubSubSubitem 1</li>
                    </ol>
                </ol>
            </li>
            <li>Subitem 2</li>
        </ul>
    </li>
    <li>Item 2</li>
</ol>

See https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ol#nesting_lists