GWicke has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/71757


Change subject: Bug 50636: Don't extrapolate DSR on change
......................................................................

Bug 50636: Don't extrapolate DSR on change

The WikitextSerializer's emitSeparator method was using text node lengths to
extrapolate a previousSibling's DSR, even if that text node was changed. This
led to an invalid extrapolated dsr if that text was modified.

This patch adds a test for the subtree-changed diff marker on the parentNode
and does not extrapolate the DSR in that case.

subtree-changed is sadly less precise than possible as it is set all the way
to the root. We should add a different flag to mark the case where direct
children have changed, and check for that here.

Change-Id: Iad67bac7a9ba890cbd3816d3ff3295b23b34be30
---
M js/lib/mediawiki.WikitextSerializer.js
1 file changed, 5 insertions(+), 1 deletion(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Parsoid 
refs/changes/57/71757/1

diff --git a/js/lib/mediawiki.WikitextSerializer.js 
b/js/lib/mediawiki.WikitextSerializer.js
index 6f93ed6..6a80b64 100644
--- a/js/lib/mediawiki.WikitextSerializer.js
+++ b/js/lib/mediawiki.WikitextSerializer.js
@@ -3470,7 +3470,11 @@
                                dsrA = prevNode.parentNode.data.parsoid.dsr;
                        } else if (prevNode.previousSibling &&
                                        prevNode.previousSibling.nodeType === 
prevNode.ELEMENT_NODE &&
-                                       
prevNode.previousSibling.data.parsoid.dsr)
+                                       
prevNode.previousSibling.data.parsoid.dsr &&
+                                       // Don't extrapolate if the string was 
potentially changed
+                                       // TODO: Only disable if direct 
children of parent were
+                                       // modified!
+                                       !DU.hasCurrentDiffMark(node.parentNode, 
this.env))
                        {
                                var endDsr = 
prevNode.previousSibling.data.parsoid.dsr[1],
                                        correction;

-- 
To view, visit https://gerrit.wikimedia.org/r/71757
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Iad67bac7a9ba890cbd3816d3ff3295b23b34be30
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Parsoid
Gerrit-Branch: master
Gerrit-Owner: GWicke <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to