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

Reply via email to