Fix ordering of closing tags of sequential entities #4268
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
#4201 breaks the parsing of sequential entities because it puts the closing tag after the next opening tag:
This is a superficial issue with HTML, but actually breaks in Markdown and ends up as
**⚙️__**Settings__
I fixed this behaviour by prioritizing closing tags that occur at the same position as opening tags, so that the
</strong>
is inserted before the<em>
.I added tests to check that nested entities still behave correctly, however the HTML test fails because the HTML parser swaps the order of nested entities (since it recognizes an entity when seeing the closing tag):
This also means that repeatedly parsing and unparsing nested entities swaps their ordering:
(this causes the test to fail because parsing and unparsing gives a different output)
I added a commit to fix it, but I am not sure if it's acceptable. I think it could be fixed inside the parsing code directly, instead of sorting the entities afterwards.