Henning Snater has uploaded a new change for review.
https://gerrit.wikimedia.org/r/92304
Change subject: Reduced SnakList.newFromJSON complexity
......................................................................
Reduced SnakList.newFromJSON complexity
(bug 53397)
Reduced complexity in SnakList's newFromJSON function.
Change-Id: I2282c4b26baf8663c382571743a6dadbfa6612e1
---
M lib/resources/wikibase.datamodel/wikibase.SnakList.js
1 file changed, 20 insertions(+), 10 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase
refs/changes/04/92304/1
diff --git a/lib/resources/wikibase.datamodel/wikibase.SnakList.js
b/lib/resources/wikibase.datamodel/wikibase.SnakList.js
index 899cdbc..a738a30 100644
--- a/lib/resources/wikibase.datamodel/wikibase.SnakList.js
+++ b/lib/resources/wikibase.datamodel/wikibase.SnakList.js
@@ -451,14 +451,24 @@
* @return {wikibase.SnakList|null}
*/
SELF.newFromJSON = function( json, order ) {
- var snaksList = new SELF();
+ var snakList = new SELF();
+
+ /**
+ * @param {object[]} serializedSnaks
+ * @param {wikibase.SnakList} snakList
+ * @return {wikibase.SnakList}
+ */
+ function addSerializedSnaksToSnakList( serializedSnaks, snakList ) {
+ for( var i = 0; i < serializedSnaks.length; i++ ) {
+ snakList.addSnak( wb.Snak.newFromJSON(
serializedSnaks[i] ) );
+ }
+ return snakList;
+ }
if( !order ) {
// No order specified: Just loop through the json object:
$.each( json, function( propertyId, snaksPerProperty ) {
- $.each( snaksPerProperty, function( i, snakJson ) {
- snaksList.addSnak( wb.Snak.newFromJSON(
snakJson ) );
- } );
+ addSerializedSnaksToSnakList( snaksPerProperty,
snakList );
} );
} else {
@@ -474,18 +484,18 @@
// Add all snaks grouped by property according to the order
specified via the "order"
// parameter:
for( var i = 0; i < order.length; i++ ) {
- if( !json[order[i]] ) {
- throw new Error( 'Trying to oder by property '
+ order[i] + ' without any snak '
+ var propertyId = order[i];
+
+ if( !json[propertyId] ) {
+ throw new Error( 'Trying to oder by property '
+ propertyId + ' without any snak '
+ ' featuring this property being
present' );
}
- for( var j = 0; j < json[order[i]].length; j++ ) {
- snaksList.addSnak( wb.Snak.newFromJSON(
json[order[i]][j] ) );
- }
+ addSerializedSnaksToSnakList( json[propertyId],
snakList );
}
}
- return snaksList;
+ return snakList;
};
}( wikibase, jQuery ) );
--
To view, visit https://gerrit.wikimedia.org/r/92304
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I2282c4b26baf8663c382571743a6dadbfa6612e1
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Henning Snater <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits