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 < [email protected] >
*/
-( 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 < [email protected] >
*/
-( 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 <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits