thephpleague / commonmark

Highly-extensible PHP Markdown parser which fully supports the CommonMark and GFM specs.
https://commonmark.thephpleague.com
BSD 3-Clause "New" or "Revised" License
2.75k stars 194 forks source link

Fix the parser behavior for texts containing curly-braces when the Attributes extension is enabled #1040

Closed xavierlacot closed 3 months ago

xavierlacot commented 3 months ago

The issue

As stated in https://github.com/thephpleague/commonmark/pull/1035#issuecomment-2284664894, the PR #986 , which introduced the ability to create valueless attributes using the Attributes extension, causes issues when a markdown document includes text strings that contain curly braces.

For example, the following markdown text

Elastic{ON} Tour San Francisco

is rendered by the official commonmark dingus as:

<p>Elastic{ON} Tour San Francisco</p>

The league/commonmark library with the "Attributes" extension enabled was used to render such markdown the same way until the commit 2138460860e2cee78498846a9d6e2da1913bbadb. Since then, it renders this markdown as:

<p>Elastic Tour San Francisco</p>

which is obviously something we do not want.

What does this PR

This PR reverts the changes introduced in #986 and #1035 and adds more test cases, to show how to create valid boolean-attributes.

A section has also been added in the documentation to show how to write attributes that will be rendered as empty-value attributes in HTML.