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