flexmark-java icon indicating copy to clipboard operation
flexmark-java copied to clipboard

For emphasis, using asterisks to bold and italicize the middle of a word doesn't work.

Open arjun2 opened this issue 1 year ago • 5 comments

For emphasis, using asterisks to bold and italicize the middle of a word doesn't work.

  • [x] Parser
  • [x] HtmlRenderer
  • [ ] Formatter
  • [ ] FlexmarkHtmlParser
  • [ ] DocxRenderer
  • [ ] PdfConverterExtension
  • [ ] extension(s)

Example: Input: "This is really***very***important text."

Expected: <p>This is really<em><strong>very</strong></em>important text.</p>

Actual: <p>This is really***very***important text.</p>

arjun2 avatar Feb 28 '23 17:02 arjun2

Can I please get some help on this ? I was looking at options on Parser but don't see any thing that can help. Note that it works with https://github.com/commonmark/commonmark-java

arjun2 avatar Feb 28 '23 18:02 arjun2

@arjun2 I am seeing the same. This is example 415 from the CommonMark specification.

A parser creates the following AST:

Document[0, 16]
  Paragraph[0, 16]
    Text[0, 15] chars:[0, 15, "foo** … **baz"]

Notice the missing StrongEmphasis and Emphasis nodes.

This seems like a bug in Flexmark.

david-waltermire avatar Jun 10 '23 20:06 david-waltermire

Tracing this, I believe the problem relates to the code at:

https://github.com/vsch/flexmark-java/blame/cc3a2f59ba6e532833f4805f8134b4dc966ff837/flexmark/src/main/java/com/vladsch/flexmark/parser/internal/InlineParserImpl.java#L1418

It looks like the loop here is rewinding the stack to find the outer most opener and closer. Then processing the result.

This code is a bit complex, so I am not fully sure what is happening, but this seems to result in the delimiters getting ignored.

david-waltermire avatar Jun 10 '23 20:06 david-waltermire

@vsch Is there a possibility of prioritizing a fix? I am not sure I am able to fully debug this to create a PR or I would.

david-waltermire avatar Jun 10 '23 20:06 david-waltermire

@vsch Is there a possibility of prioritizing a fix? I am not sure I am able to fully debug this to create a PR or I would.

I was able to create a PR after all. Let me know if this works or needs adjustments.

david-waltermire avatar Jun 24 '23 16:06 david-waltermire