Subramanya Sastry has uploaded a new change for review.

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

Change subject: WIP: For 'id' properties in data-mw, fetch HTML and compare DOMs
......................................................................

WIP: For 'id' properties in data-mw, fetch HTML and compare DOMs

* This lets us accept edited <ref>s from clients without expecting
  them to dirty the <ref> node itself since we can fetch the target
  HTML before comparing.

* Needs more testing for named refs.

Change-Id: If29ba8f3da7626e64bb292de7391010adf66c404
---
M lib/mediawiki.DOMDiff.js
M lib/mediawiki.DOMUtils.js
2 files changed, 11 insertions(+), 7 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/services/parsoid 
refs/changes/47/194947/1

diff --git a/lib/mediawiki.DOMDiff.js b/lib/mediawiki.DOMDiff.js
index dfef02c..da1eabd 100644
--- a/lib/mediawiki.DOMDiff.js
+++ b/lib/mediawiki.DOMDiff.js
@@ -95,6 +95,12 @@
                        }
                } else if (vA.constructor !== vB.constructor) {
                        return false;
+               } else if (kA === 'id') {
+                       var htmlA = nodeA.ownerDocument.getElementById(vA);
+                       var htmlB = nodeB.ownerDocument.getElementById(vB);
+                       if (!this.treeEquals(htmlA, htmlB, true)) {
+                               return false;
+                       }
                } else if (kA === 'html') {
                        // For 'html' attributes, parse string and recursively 
compare DOM
                        if (vA !== vB && 
!this.treeEquals(DU.parseHTML(vA).body, DU.parseHTML(vB).body, true)) {
diff --git a/lib/mediawiki.DOMUtils.js b/lib/mediawiki.DOMUtils.js
index 8bf2266..e916544 100644
--- a/lib/mediawiki.DOMUtils.js
+++ b/lib/mediawiki.DOMUtils.js
@@ -173,16 +173,14 @@
                                return false;
                        }
 
-                       if (hA[k] !== hB[k]) {
+                       var attribEquals = specializedAttribHandlers.get(k);
+                       if (attribEquals) {
                                // Use a specialized compare function, if 
provided
-                               var attribEquals = 
specializedAttribHandlers.get(k);
-                               if (attribEquals) {
-                                       if (!hA[k] || !hB[k] || 
!attribEquals(nodeA, JSON.parse(hA[k]), nodeB, JSON.parse(hB[k]))) {
-                                               return false;
-                                       }
-                               } else {
+                               if (!hA[k] || !hB[k] || !attribEquals(nodeA, 
JSON.parse(hA[k]), nodeB, JSON.parse(hB[k]))) {
                                        return false;
                                }
+                       } else if (hA[k] !== hB[k]) {
+                               return false;
                        }
                }
 

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: If29ba8f3da7626e64bb292de7391010adf66c404
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/services/parsoid
Gerrit-Branch: master
Gerrit-Owner: Subramanya Sastry <[email protected]>

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

Reply via email to