Fix handling of indented HTML in DOMParser #315
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.
This PR fixes a bug that causes
DOMParser
to throw an error when parsing indented HTML with the default collapsing of whitespace.The root cause of the bug is in
add_text_node
. Notice the the assignment ofnode_before
on line 571:prosemirror-py/prosemirror/model/from_dom.py
Line 571 in 34c9614
When
top.content
is an empty list, the following error is thrown:Compare with the JavaScript implementation of
addTextNode
in the original ProseMirror:Here, when
top.content
is an empty array,nodeBefore
will be set totop.content[-1]
. In JavaScript, a negative indexing of an empty array will correctly returnundefined
. However, in Python, a negative indexing of an empty list will throw an error. Thus, we need to check iftop.content
is truthy before accessingtop.content[-1]
.Thanks for the great library!