markdown-it-py icon indicating copy to clipboard operation
markdown-it-py copied to clipboard

Empty text syntax tree node added when using two md text styles

Open ffolkes1911 opened this issue 3 months ago • 0 comments

Describe the bug

context When I parse markdown:

new _li**ne**_  
a  

expectation I expected to get output:

<root>
  <paragraph>
    <text>
      new 
    <em>
      <text>
        li
      <strong>
        <text>
          ne
    <hardbreak>
    <text>
      a

bug But instead I get:

<root>
  <paragraph>
    <text>
      new 
    <em>
      <text>
        li
      <strong>
        <text>
          ne
      <text>
    <hardbreak>
    <text>
      a

There's an additional <text> empty node being inserted at the end. Problem seems to occur when there are nested styles and both end at the same time.

Reproduce the bug

Code:

from markdown_it import MarkdownIt
from markdown_it.tree import SyntaxTreeNode

md = MarkdownIt('gfm-like').disable(['linkify'])
text = ("""
new _li**ne**_  
new _l**i**ne_  
new _**line**_  
""")
tokens = md.parse(text)
node = SyntaxTreeNode(tokens)
print("------\n" + node.pretty(indent=2, show_text=True) + "------\n")

output:

------
<root>
  <paragraph>
    <inline>
      <text>
        new 
      <em>
        <text>
          li
        <strong>
          <text>
            ne
        <text>
      <hardbreak>
      <text>
        new 
      <em>
        <text>
          l
        <strong>
          <text>
            i
        <text>
          ne
      <hardbreak>
      <text>
        new 
      <em>
        <text>
        <strong>
          <text>
            line
        <text>------

List your environment

Version of markdown-it-py - 4.0.0 Versions of mdit-py-plugins - none The version of Python you're using. - 3.10.6 Your operating system - Ubuntu 20.04.6 LTS

ffolkes1911 avatar Oct 30 '25 10:10 ffolkes1911