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