Skip to content

feature request(list): prevent extra p tags inside list items #8

Open

Description

@Kristinita

1. Summary

It would be nice if python-markdown-comments would prevent adding extra <p></p> tags inside <li></li> if the user adds comments between list items.

2. MCVE

2.1. KiraListWithComments.md

1. Kira first

<!--- Kira comment -->

1. Kira second
1. Kira third

or

1. Kira first
<!--- Kira comment -->
1. Kira second
1. Kira third

or

1. Kira first

<!--- Kira 
multiline
comment -->

1. Kira second
1. Kira third

2.2. Command

python -m markdown -x mkdcomments KiraListWithComments.md

2.3. Behavior

2.3.1. Current
<ol>
<li>
<p>Kira first</p>
</li>
<li>
<p>Kira second</p>
</li>
<li>Kira third</li>
</ol>

2 extra p tags.

This behavior is as if the file KiraListWithComments.md would have an empty line between the first and second item of the list.

1. Kira first

1. Kira second
1. Kira third
2.3.2. Desired
<ol>
<li>Kira first</li>
<li>Kira second</li>
<li>Kira third</li>
</ol>

No p tags.

This behavior is as if the file KiraListWithComments.md wouldn’t have empty lines between the items of the list.

1. Kira first
1. Kira second
1. Kira third

3. Reasons why the feature is needed

  1. The text inside list items is already wrapped in a li tag. Additional p inside list elements isn’t needed.

  2. List items with p and without it has different interline spacing. See an example of a real list, where items 1, 2 and 3 hasn’t p tag, but items 4 and 5 has:

    p tag interline spacing

  3. Extra p tags increase a DOM size. A large DOM tree isn’t the best idea.

4. Not helped

I can’t find Python Markdown extension and any third-party tool at all, which could resolve this problem. I use HTML Tidy for fixing Python Markdown problems, but for the case described in my MCVE, it doesn’t remove extra p.

If you know of a third-party tool that can solve this problem without changes in python-markdown-comments, please tell me about it.

Thanks.

Activity

  1. added a commit that references this issue on Feb 15, 2025
    56f4fa2
  2. ryneeverett commented on Feb 16, 2025

    @ryneeverett
    Owner

    Thanks for opening this issue and sorry i didn't get around to really looking at it until now. While your PR was successful in pressuring me to give this attention, I think the first step is to agree on what the correct behavior is before getting too deep into discussing the proposed changes.


    I don't think that the first and third examples in your MCVE are bugs because the blank lines alone would have been sufficient to cause those <p> tags without any comments. For example:

    1. Kira first
    
    1. Kira second
    1. Kira third
    

    produces the same "bad" output with or without this extension. Blank lines matter in markdown and IMO this extension shouldn't be in the business of hiding them from the markdown parser.


    Regarding the second example in your MCVE in which there are no blank lines, note that the extra newline is still what is causing the undesirable behavior here. For example, you get the desired behavior with no newline:

    1. Kira first <!--- Kira comment -->
    1. Kira second
    1. Kira third
    

    However, I am more sympathetic towards addressing your second example because the comment line alone is causing the undesirable behavior and it it is nice and normal to be able to have comments on their own line.


    So my current thinking is that it would be a nice improvement if, when a line consists of nothing but a comment and possibly whitespace before and/or after that comment, the entire line is deleted prior to markdown processing. This would prevent lines consisting solely of comments from inducing markdown to create <p> tags around adjacent items.

    What do you think?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions