GWicke has submitted this change and it was merged.

Change subject: Use .item() accessor for DOM attributes.
......................................................................


Use .item() accessor for DOM attributes.

Avoid using array-access notation for DOM attribute lists.

Also fixed up some instances where we tried to use array-access notation
to look up an attribute by name.  Use node.getAttribute() for this instead.

Change-Id: Idb38d07b6e56901860faa9a2c0f8ceadea09654f
---
M js/lib/mediawiki.DOMDiff.js
M js/lib/mediawiki.DOMUtils.js
M js/lib/mediawiki.WikitextSerializer.js
3 files changed, 19 insertions(+), 18 deletions(-)

Approvals:
  GWicke: Verified; Looks good to me, approved
  jenkins-bot: Checked



diff --git a/js/lib/mediawiki.DOMDiff.js b/js/lib/mediawiki.DOMDiff.js
index a3434ce..d24ab27 100644
--- a/js/lib/mediawiki.DOMDiff.js
+++ b/js/lib/mediawiki.DOMDiff.js
@@ -53,9 +53,9 @@
 };
 
 function countIgnoredAttributes (attributes) {
-       var n = 0;
-       for (var name in ignoreAttributes) {
-               if (attributes[name]) {
+       var n = 0, i;
+       for (i=0; i < attributes.length; i++) {
+               if ( ignoreAttributes.hasOwnProperty(attributes.item(i).name) ) 
{
                        n++;
                }
        }
@@ -80,16 +80,16 @@
        for (var i = 0, la = nodeA.attributes.length, lb = 
nodeB.attributes.length;
                        i + skippedA < la && i + skippedB < lb; i++)
        {
-               if ( ignoreAttributes[nodeA.attributes[i + skippedA].name] ) {
+               if ( ignoreAttributes.hasOwnProperty(nodeA.attributes.item(i + 
skippedA).name) ) {
                        skippedA++;
                        continue;
                }
-               if ( ignoreAttributes[nodeB.attributes[i + skippedB].name] ) {
+               if ( ignoreAttributes.hasOwnProperty(nodeB.attributes.item(i + 
skippedB).name) ) {
                        skippedB++;
                        continue;
                }
-               if (nodeA.attributes[i + skippedA].name !== nodeB.attributes[i 
+ skippedB].name ||
-                               nodeA.attributes[i + skippedA].value !== 
nodeB.attributes[i + skippedB].value)
+               if (nodeA.attributes.item(i + skippedA).name !== 
nodeB.attributes.item(i + skippedB).name ||
+                               nodeA.attributes.item(i + skippedA).value !== 
nodeB.attributes.item(i + skippedB).value)
                {
                        return false;
                }
diff --git a/js/lib/mediawiki.DOMUtils.js b/js/lib/mediawiki.DOMUtils.js
index 17dff72..3129485 100644
--- a/js/lib/mediawiki.DOMUtils.js
+++ b/js/lib/mediawiki.DOMUtils.js
@@ -128,7 +128,7 @@
                var attribs = node.attributes,
                        kvs = [];
                for(var i = 0, l = attribs.length; i < l; i++) {
-                       var attrib = attribs[i];
+                       var attrib = attribs.item(i);
                        kvs.push(new KV(attrib.name, attrib.value));
                }
                return kvs;
diff --git a/js/lib/mediawiki.WikitextSerializer.js 
b/js/lib/mediawiki.WikitextSerializer.js
index 97cc5b8..57ea7a8 100644
--- a/js/lib/mediawiki.WikitextSerializer.js
+++ b/js/lib/mediawiki.WikitextSerializer.js
@@ -1153,7 +1153,8 @@
                // switch to html only when needed to support attributes
 
                var isComplexLink = function ( attributes ) {
-                       for ( var attr in attributes ) {
+                       for ( var i=0; i < attributes.length; i++ ) {
+                               var attr = attributes.item(i);
                                if ( attr.name && ! ( attr.name in { href: 1 } 
) ) {
                                        return true;
                                }
@@ -2113,7 +2114,7 @@
 };
 
 WSP._getDOMAttribs = function( attribs ) {
-       // convert to list fo key-value pairs
+       // convert to list of key-value pairs
        var out = [],
                ignoreAttribs = {
                        'data-parsoid': 1,
@@ -2131,9 +2132,9 @@
        return out;
 };
 
-WSP._getDOMRTInfo = function( attribs ) {
-       if ( attribs['data-parsoid'] ) {
-               return JSON.parse( attribs['data-parsoid'].value || '{}' );
+WSP._getDOMRTInfo = function( node ) {
+       if ( node.hasAttribute('data-parsoid') ) {
+               return JSON.parse( node.getAttribute('data-parsoid') || '{}' );
        } else {
                return {};
        }
@@ -2165,7 +2166,7 @@
                var prop = node.getAttribute("property");
                if (prop && prop.match(/mw:objectAttr/)) {
                        var templateId = node.getAttribute("about") || '';
-                       var src  = this._getDOMRTInfo(node.attributes).src;
+                       var src  = this._getDOMRTInfo(node).src;
                        if (!state.tplAttrs[templateId]) {
                                state.tplAttrs[templateId] = { kvs: {}, ks: {}, 
vs: {} };
                        }
@@ -2400,7 +2401,7 @@
                 * on the gathered text
                 *
                        // Ignore text for extlink/numbered
-                       if (name === 'a' && node.attributes["rel"].value === 
'mw:ExtLink/Numbered') {
+                       if (name === 'a' && node.getAttribute("rel") === 
'mw:ExtLink/Numbered') {
                                return;
                        }
                 * 
-----------------------------------------------------------------*/
@@ -2489,7 +2490,7 @@
                                }
                                var dummyToken = new SelfclosingTagTk("meta",
                                        attrs,
-                                       { src: 
this._getDOMRTInfo(node.attributes).src }
+                                       { src: this._getDOMRTInfo(node).src }
                                );
 
                                if ( dps ) {
@@ -2509,8 +2510,8 @@
                case Node.ELEMENT_NODE:
                        var nodeName = node.nodeName.toLowerCase(),
                                tkAttribs = 
this._getDOMAttribs(node.attributes),
-                               tkRTInfo = this._getDOMRTInfo(node.attributes),
-                               parentSTX = state.parentSTX;
+                               tkRTInfo = this._getDOMRTInfo(node),
+                               parentSTX = state.parentST1X;
 
                        // populate node.data.parsoid and 
node.data['parsoid-serialize']
                        DU.loadDataParsoid(node);

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

Gerrit-MessageType: merged
Gerrit-Change-Id: Idb38d07b6e56901860faa9a2c0f8ceadea09654f
Gerrit-PatchSet: 2
Gerrit-Project: mediawiki/extensions/Parsoid
Gerrit-Branch: master
Gerrit-Owner: Cscott <[email protected]>
Gerrit-Reviewer: Cscott <[email protected]>
Gerrit-Reviewer: GWicke <[email protected]>
Gerrit-Reviewer: Subramanya Sastry <[email protected]>
Gerrit-Reviewer: jenkins-bot

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

Reply via email to