matthewwithanm/python-markdownify

Newlines inside `<pre>` blocks are collapsed instead of preserved

Closed this issue · 0 comments

If I have child elements in a <pre> block that have adjacent newlines between them, they are collapsed:

md = markdownify.MarkdownConverter().convert

html = '<pre><span>foo\n\n\n</span><span>\n\n\nbar</span></pre>'
#                     ^^^^^^^^^^^^^^^^^^^^^^^^^

md('<pre><span>foo\n\n\n</span><span>\n\n\nbar</span></pre>')
# '\n```\nfoo\n\n\nbar\n```\n'
#            ^^^^^^

This is incorrect behavior - newlines inside <pre> elements should be preserved as-is.

Here are some suggested regression test commands:

assert md('<pre>\n\n<span>\n\nfoo\n\n\n</span><span>\n\n\nbar\n\n</span>\n\n</pre>') == '\n\n```\nfoo\n\n\n\n\n\n\n\n\n\n\n\n\n\nbar\n```\n\n'
assert md('<pre>\n\n<span>\n\nfoo\n\n</span>\n\n<span>\n\nbar\n\n</span>\n\n</pre>') == '\n\n```\nfoo\n\n\n\n\n\n\n\n\n\n\n\n\n\nbar\n```\n\n'