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