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

Reply via email to