Tobias Gritschacher has submitted this change and it was merged. Change subject: (bug 48145) Introduction of TimeParser for TimeValue data value type in JavaScript ......................................................................
(bug 48145) Introduction of TimeParser for TimeValue data value type in JavaScript The parser requires a time.Time object just like the TimeValue itself. For now the parser does not really have any use. The interface might change to match the one of time.Time.parse instead. Change-Id: I81465579400ea84187fa45dace81347e5d5ff20f --- M ValueParsers/Resources.php M ValueParsers/ValueParsers.mw.php A ValueParsers/resources/parsers/TimeParser.js A ValueParsers/tests/qunit/parsers/TimeParser.tests.js 4 files changed, 98 insertions(+), 2 deletions(-) Approvals: Tobias Gritschacher: Looks good to me, approved jenkins-bot: Verified diff --git a/ValueParsers/Resources.php b/ValueParsers/Resources.php index da13ab2..84913a5 100644 --- a/ValueParsers/Resources.php +++ b/ValueParsers/Resources.php @@ -63,16 +63,18 @@ ), 'valueParsers.parsers' => $moduleTemplate + array( - 'scripts' => array( + 'scripts' => array( // TODO: one module per parser 'parsers/BoolParser.js', 'parsers/FloatParser.js', 'parsers/IntParser.js', 'parsers/StringParser.js', + 'parsers/TimeParser.js', 'parsers/NullParser.js', ), 'dependencies' => array( 'valueParsers.ValueParser', 'valueParsers.api', + 'time.js', // required by TimeValue ), ), diff --git a/ValueParsers/ValueParsers.mw.php b/ValueParsers/ValueParsers.mw.php index 143c6a2..587ca34 100644 --- a/ValueParsers/ValueParsers.mw.php +++ b/ValueParsers/ValueParsers.mw.php @@ -76,6 +76,7 @@ 'includes/parsers/GeoCoordinateParser', 'includes/parsers/FloatParser', 'includes/parsers/IntParser', + 'includes/parsers/IntParser', 'includes/parsers/NullParser', 'includes/parsers/TitleParser', @@ -133,10 +134,12 @@ 'tests/qunit/parsers/FloatParser.tests.js', 'tests/qunit/parsers/IntParser.tests.js', 'tests/qunit/parsers/StringParser.tests.js', + 'tests/qunit/parsers/TimeParser.tests.js', 'tests/qunit/parsers/NullParser.tests.js', ), 'dependencies' => array( 'ext.valueParsers.tests', + 'time.js' ), ); @@ -148,4 +151,4 @@ $wgResourceModules = array_merge( $wgResourceModules, include( __DIR__ . '/Resources.php' ) -); \ No newline at end of file +); diff --git a/ValueParsers/resources/parsers/TimeParser.js b/ValueParsers/resources/parsers/TimeParser.js new file mode 100644 index 0000000..fa08fea --- /dev/null +++ b/ValueParsers/resources/parsers/TimeParser.js @@ -0,0 +1,45 @@ +/** + * @file + * @ingroup ValueParsers + * + * @licence GNU GPL v2+ + * + * @author Daniel Werner < danwe...@web.de > + */ +( function( vp, dv, $, Time ) { + 'use strict'; + + var PARENT = vp.ValueParser; + + /** + * Constructor for time parsers. + * + * @constructor + * @extends vp.ValueParser + * @since 0.1 + */ + vp.TimeParser = dv.util.inherit( PARENT, { + /** + * @see vp.ValueParser.parse + * @since 0.1 + * + * @param {time.Time} time + * @return $.Promise + */ + parse: function( time ) { + var deferred = $.Deferred(); + + if( time.isValid() ) { + // Valid time: + var dataValue = new dv.TimeValue( time ); + deferred.resolve( dataValue ); + } else { + // Invalid time: + deferred.reject(); + } + + return deferred.promise(); + } + } ); + +}( valueParsers, dataValues, jQuery, time.Time ) ); diff --git a/ValueParsers/tests/qunit/parsers/TimeParser.tests.js b/ValueParsers/tests/qunit/parsers/TimeParser.tests.js new file mode 100644 index 0000000..1ca01f7 --- /dev/null +++ b/ValueParsers/tests/qunit/parsers/TimeParser.tests.js @@ -0,0 +1,46 @@ +/** + * @since 0.1 + * @file + * @ingroup ValueParsers + * + * @licence GNU GPL v2+ + * @author Daniel Werner < danwe...@web.de > + */ +( function( vp, dv, $, QUnit, Time ) { + 'use strict'; + + var PARENT = vp.tests.ValueParserTest; + + /** + * Constructor for creating a test object holding tests for the TimeParser. + * + * @constructor + * @extends dv.tests.ValueParserTest + * @since 0.1 + */ + vp.tests.TimeParserTest = vp.util.inherit( PARENT, { + + /** + * @see vp.tests.ValueParserTest.getObject + */ + getObject: function() { + return vp.TimeParser; + }, + + /** + * @see vp.tests.ValueParserTest.getParseArguments + */ + getParseArguments: function() { + return [ + [ new Time( 'April, 2010' ), new dv.TimeValue( new Time( 'April, 2010' ) ) ], + [ new Time( '123456 BC' ), new dv.TimeValue( new Time( '123456 BC' ) ) ] + ]; + } + + } ); + + var test = new vp.tests.TimeParserTest(); + + test.runTests( 'valueParsers.TimeParser' ); + +}( valueParsers, dataValues, jQuery, QUnit, time.Time ) ); -- To view, visit https://gerrit.wikimedia.org/r/61528 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I81465579400ea84187fa45dace81347e5d5ff20f Gerrit-PatchSet: 6 Gerrit-Project: mediawiki/extensions/DataValues Gerrit-Branch: master Gerrit-Owner: Daniel Werner <daniel.wer...@wikimedia.de> Gerrit-Reviewer: Tobias Gritschacher <tobias.gritschac...@wikimedia.de> Gerrit-Reviewer: jenkins-bot _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits