Catrope has uploaded a new change for review.

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


Change subject: Merge undefineds into undefined rather than []
......................................................................

Merge undefineds into undefined rather than []

ve.dm.MetaLinearData.static.merge( [ undefined, undefined, ... ] )
returned [ [] ], make it return [ undefined ] instead. This allows
us to lazily use the merge function to create metadata without having
to worry about denormalizing undefined to [] all over the place.

Change-Id: I41fe6472c2185a6315119a546a73765966d013d3
---
M modules/ve/dm/lineardata/ve.dm.MetaLinearData.js
1 file changed, 15 insertions(+), 3 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/VisualEditor 
refs/changes/45/82745/1

diff --git a/modules/ve/dm/lineardata/ve.dm.MetaLinearData.js 
b/modules/ve/dm/lineardata/ve.dm.MetaLinearData.js
index 32467e6..29344f7 100644
--- a/modules/ve/dm/lineardata/ve.dm.MetaLinearData.js
+++ b/modules/ve/dm/lineardata/ve.dm.MetaLinearData.js
@@ -27,25 +27,37 @@
 /* Static Methods */
 
 /**
- * Takes an array of meta linear data arrays and collapses them into a single 
array.
+ * Takes an array of meta linear data arrays and collapses them into a single 
array
+ * wrapped in an array.
  *
  * Undefined values will be discarded e.g.
  * [ [ metaItem1, metaItem2 ], undefined, [ metaItem3 ], undefined ]
  * =>
  * [ [ metaItem1, metaItem2, metaItem3 ] ]
  *
+ * If all values are undefined, the result is undefined wrapped in an array:
+ * [ undefined, undefined, ... ]
+ * =>
+ * [ undefined ]
+ *
+ * But if some of the values are empty arrays, the result is an empty array 
wrapped in an array:
+ * [ undefined, [], undefined, undefined, [] ]
+ * =>
+ * [ [] ]
+ *
  * @static
  * @param {Array} data Meta linear data arrays
  * @returns {Array} Merged data
  */
 ve.dm.MetaLinearData.static.merge = function ( data ) {
-       var i, merged = [];
+       var i, merged = [], allUndefined = true;
        for ( i = 0; i < data.length; i++ ) {
                if ( data[i] !== undefined ) {
+                       allUndefined = false;
                        merged = merged.concat( data[i] );
                }
        }
-       return [ merged ];
+       return allUndefined ? [ undefined ] : [ merged ];
 };
 
 /* Methods */

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I41fe6472c2185a6315119a546a73765966d013d3
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: Catrope <[email protected]>

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

Reply via email to