Daniel Werner has uploaded a new change for review.

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


Change subject: Changed null parser to be useful.
......................................................................

Changed null parser to be useful.

Null parser will no longer wrap everything in an UnknownValue instance. If a 
DataValue instance is
given already, the same instance will be returned. If null is given, null will 
be returned.
Also extended related tests.

Change-Id: I6dfbf530c9779d3a820d6e0f7b96ef61c9cf7e4f
---
M ValueParsers/resources/ValueParser.js
M ValueParsers/resources/parsers/NullParser.js
M ValueParsers/tests/qunit/ValueParser.tests.js
M ValueParsers/tests/qunit/parsers/NullParser.tests.js
4 files changed, 19 insertions(+), 11 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/DataValues 
refs/changes/48/57048/1

diff --git a/ValueParsers/resources/ValueParser.js 
b/ValueParsers/resources/ValueParser.js
index b2f76bd..f9355e4 100644
--- a/ValueParsers/resources/ValueParser.js
+++ b/ValueParsers/resources/ValueParser.js
@@ -45,7 +45,7 @@
                 * @param {*} rawValue
                 *
                 * @return $.Promise In the resolved callbacks the first 
parameter will be the parsed
-                *         DataValue object.
+                *         DataValue object or null for an empty value.
                 */
                parse: vp.util.abstractMember
 
diff --git a/ValueParsers/resources/parsers/NullParser.js 
b/ValueParsers/resources/parsers/NullParser.js
index 88a53af..0f8dab8 100644
--- a/ValueParsers/resources/parsers/NullParser.js
+++ b/ValueParsers/resources/parsers/NullParser.js
@@ -6,14 +6,16 @@
  *
  * @author Jeroen De Dauw < jeroended...@gmail.com >
  */
-( function( mw, vp, dv, $, undefined ) {
+( function( mw, vp, dv, $ ) {
        'use strict';
 
        var PARENT = vp.ValueParser,
                constructor = function() {};
 
        /**
-        * Constructor for null parsers.
+        * Constructor for null parsers. Null parser will take any value for 
parsing and return a
+        * UnknownValue data value except if null got passed in or a DataValue 
got passed in. In those
+        * cases the value given to the parser process will be the parse result.
         *
         * @constructor
         * @extends vp.ValueParser
@@ -31,11 +33,14 @@
                 * @return $.Promise
                 */
                parse: function( rawValue ) {
-                       var deferred = $.Deferred();
+                       var deferred = $.Deferred(),
+                               value = rawValue;
 
-                       deferred.resolve( new dv.UnknownValue( rawValue ) );
+                       if( value !== null && !( value instanceof dv.DataValue 
) ) {
+                               value = new dv.UnknownValue( value );
+                       }
 
-                       return deferred.promise();
+                       return deferred.resolve( value ).promise();
                }
 
        } );
diff --git a/ValueParsers/tests/qunit/ValueParser.tests.js 
b/ValueParsers/tests/qunit/ValueParser.tests.js
index 74ada28..265bd2d 100644
--- a/ValueParsers/tests/qunit/ValueParser.tests.js
+++ b/ValueParsers/tests/qunit/ValueParser.tests.js
@@ -119,13 +119,13 @@
                                                assert.ok( true, 'parsing 
succeeded' );
 
                                                assert.ok(
-                                                       dataValue instanceof 
dv.DataValue,
-                                                       'result ' + 
inputDetailMsg + 'is instanceof DataValue'
+                                                       dataValue === null || ( 
dataValue instanceof dv.DataValue ),
+                                                       'result ' + 
inputDetailMsg + 'is instanceof DataValue or null'
                                                );
 
                                                if( expected !== undefined ) {
                                                        assert.ok(
-                                                               
dataValue.equals( expected ),
+                                                               dataValue === 
expected || dataValue.equals( expected ),
                                                                'result ' + 
inputDetailMsg + 'is equal to the expected DataValue'
                                                        );
                                                }
diff --git a/ValueParsers/tests/qunit/parsers/NullParser.tests.js 
b/ValueParsers/tests/qunit/parsers/NullParser.tests.js
index 1ef09a5..4648713 100644
--- a/ValueParsers/tests/qunit/parsers/NullParser.tests.js
+++ b/ValueParsers/tests/qunit/parsers/NullParser.tests.js
@@ -6,7 +6,7 @@
  * @licence GNU GPL v2+
  * @author Jeroen De Dauw < jeroended...@gmail.com >
  */
-( function( vp, dv, $, QUnit, undefined ) {
+( function( vp, dv, $, QUnit ) {
        'use strict';
 
        var PARENT = vp.tests.ValueParserTest,
@@ -34,9 +34,12 @@
                 */
                getParseArguments: function() {
                        var date = new Date(),
-                               list = [ true, false, null ];
+                               list = [ true, false, null ],
+                               dataValue = new dv.UnknownValue( 'foo' );
 
                        return [
+                               [ dataValue, dataValue ],
+                               [ null, null ],
                                [ '42', new dv.UnknownValue( '42' ) ],
                                [ -4.2, new dv.UnknownValue( -4.2 ) ],
                                [ date, new dv.UnknownValue( date ) ],

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I6dfbf530c9779d3a820d6e0f7b96ef61c9cf7e4f
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/DataValues
Gerrit-Branch: master
Gerrit-Owner: Daniel Werner <daniel.wer...@wikimedia.de>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to