jenkins-bot has submitted this change and it was merged.

Change subject: Clean up minor bits after major HtmlTimeFormatter changes
......................................................................


Clean up minor bits after major HtmlTimeFormatter changes

Most importantly:
* The regex may fail. The later code triggers undefined index warnings
  then. This can easily be avoided.
* Make the test independend from a class it should not depend on.
* Try to make documentation more specific.

Change-Id: If3c9f2827ca96a8d90ad2bb4e5e8da9649852020
---
M lib/includes/formatters/HtmlTimeFormatter.php
M lib/tests/phpunit/formatters/HtmlTimeFormatterTest.php
2 files changed, 35 insertions(+), 33 deletions(-)

Approvals:
  Daniel Kinzler: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/lib/includes/formatters/HtmlTimeFormatter.php 
b/lib/includes/formatters/HtmlTimeFormatter.php
index b998bc1..625e7a8 100644
--- a/lib/includes/formatters/HtmlTimeFormatter.php
+++ b/lib/includes/formatters/HtmlTimeFormatter.php
@@ -40,11 +40,9 @@
        }
 
        /**
-        * Format a time data value
-        *
         * @since 0.5
         *
-        * @param TimeValue $value The time to format
+        * @param TimeValue $value
         *
         * @return string HTML
         * @throws InvalidArgumentException
@@ -71,11 +69,13 @@
         * @return bool
         */
        private function calendarNameNeeded( TimeValue $value ) {
-               // We assume this is an ISO-ish timestamp.
-               preg_match( '/^[-+]\d+\D/', $value->getTime(), $m );
+               // Loose check if the timestamp string is ISO-ish and starts 
with a year.
+               if ( !preg_match( '/^[-+]?\d+\b/', $value->getTime(), $matches 
) ) {
+                       return true;
+               }
 
-               // NOTE: PHP will limit overly large values to PHP_INT_MAX. No 
overflow or wrap-around occurs.
-               $year = (int)$m[0];
+               // NOTE: PHP limits overly large values to PHP_INT_MAX. No 
overflow or wrap-around occurs.
+               $year = (int)$matches[0];
                $guessedCalendar = $this->getDefaultCalendar( $year );
 
                // Always show the calendar if it's different from the 
"guessed" default.
@@ -83,15 +83,15 @@
                        return true;
                }
 
-               // If precision is year or lower, don't show the calendar
+               // If precision is year or less precise, don't show the 
calendar.
                if ( $value->getPrecision() <= TimeValue::PRECISION_YEAR ) {
                        return false;
                }
 
                // If the date is inside the "critical" range where Julian and 
Gregorian were used
-               // in parallel, always show the calendar. Gregorian started to 
be used in the 1580s,
-               // but the Julian calendar continued to be used into the 1920s 
(in Russia and Greece).
-               // See https://en.wikipedia.org/wiki/Julian_calendar
+               // in parallel, always show the calendar. Gregorian was made 
"official" in October 1582 but
+               // may already be used earlier. Julian continued to be official 
until the 1920s in Russia
+               // and Greece, see 
https://en.wikipedia.org/wiki/Julian_calendar.
                if ( $year > 1580 && $year < 1930 ) {
                        return true;
                }
diff --git a/lib/tests/phpunit/formatters/HtmlTimeFormatterTest.php 
b/lib/tests/phpunit/formatters/HtmlTimeFormatterTest.php
index 76be7a5..952a796 100644
--- a/lib/tests/phpunit/formatters/HtmlTimeFormatterTest.php
+++ b/lib/tests/phpunit/formatters/HtmlTimeFormatterTest.php
@@ -5,7 +5,6 @@
 use DataValues\TimeValue;
 use PHPUnit_Framework_TestCase;
 use ValueFormatters\FormatterOptions;
-use ValueFormatters\TimeFormatter;
 use ValueFormatters\ValueFormatter;
 use Wikibase\Lib\HtmlTimeFormatter;
 
@@ -52,47 +51,50 @@
        }
 
        public function timeFormatProvider() {
+               $gregorian = 'http://www.wikidata.org/entity/Q1985727';
+               $julian = 'http://www.wikidata.org/entity/Q1985786';
+
                return array(
                        'a gregorian day in 1520' => array(
                                new TimeValue( '+1520-05-01T00:00:00Z',
                                        1 * 60 * 60, 0, 0,
                                        TimeValue::PRECISION_DAY,
-                                       TimeFormatter::CALENDAR_GREGORIAN ),
+                                       $gregorian ),
                                '/^MOCKDATE<sup 
class="wb-calendar-name">\(valueview-expert-timevalue-calendar-gregorian\)<\/sup>$/'
                        ),
                        'a julian day in 1520' => array(
                                new TimeValue( '+1520-05-01T00:00:00Z',
                                        1 * 60 * 60, 0, 0,
                                        TimeValue::PRECISION_DAY,
-                                       TimeFormatter::CALENDAR_JULIAN ),
+                                       $julian ),
                                '/^MOCKDATE$/'
                        ),
                        'a gregorian day in 1920' => array(
                                new TimeValue( '+1920-05-01T00:00:00Z',
                                        1 * 60 * 60, 0, 0,
                                        TimeValue::PRECISION_DAY,
-                                       TimeFormatter::CALENDAR_GREGORIAN ),
+                                       $gregorian ),
                                '/^MOCKDATE<sup 
class="wb-calendar-name">\(valueview-expert-timevalue-calendar-gregorian\)<\/sup>$/'
                        ),
                        'a julian day in 1920' => array(
                                new TimeValue( '+1920-05-01T00:00:00Z',
                                        1 * 60 * 60, 0, 0,
                                        TimeValue::PRECISION_DAY,
-                                       TimeFormatter::CALENDAR_JULIAN ),
+                                       $julian ),
                                '/^MOCKDATE<sup 
class="wb-calendar-name">\(valueview-expert-timevalue-calendar-julian\)<\/sup>$/'
                        ),
                        'a julian day in 1980' => array(
                                new TimeValue( '+1980-05-01T00:00:00Z',
                                        1 * 60 * 60, 0, 0,
                                        TimeValue::PRECISION_DAY,
-                                       TimeFormatter::CALENDAR_JULIAN ),
+                                       $julian ),
                                '/^MOCKDATE<sup 
class="wb-calendar-name">\(valueview-expert-timevalue-calendar-julian\)<\/sup>$/'
                        ),
                        'a gregorian day in 1980' => array(
                                new TimeValue( '+1980-05-01T00:00:00Z',
                                        1 * 60 * 60, 0, 0,
                                        TimeValue::PRECISION_DAY,
-                                       TimeFormatter::CALENDAR_GREGORIAN ),
+                                       $gregorian ),
                                '/^MOCKDATE$/'
                        ),
 
@@ -100,56 +102,56 @@
                                new TimeValue( '-1000000-00-00T00:00:00Z',
                                        1 * 60 * 60, 0, 0,
                                        TimeValue::PRECISION_YEAR,
-                                       TimeFormatter::CALENDAR_GREGORIAN ),
+                                       $gregorian ),
                                '/^MOCKDATE<sup 
class="wb-calendar-name">\(valueview-expert-timevalue-calendar-gregorian\)<\/sup>$/'
                        ),
                        'a julian year in -1000000' => array(
                                new TimeValue( '-1000000-05-01T00:00:00Z',
                                        1 * 60 * 60, 0, 0,
                                        TimeValue::PRECISION_YEAR,
-                                       TimeFormatter::CALENDAR_JULIAN ),
+                                       $julian ),
                                '/^MOCKDATE$/'
                        ),
                        'a gregorian year in 1520' => array(
                                new TimeValue( '+1520-05-01T00:00:00Z',
                                        1 * 60 * 60, 0, 0,
                                        TimeValue::PRECISION_YEAR,
-                                       TimeFormatter::CALENDAR_GREGORIAN ),
+                                       $gregorian ),
                                '/^MOCKDATE<sup 
class="wb-calendar-name">\(valueview-expert-timevalue-calendar-gregorian\)<\/sup>$/'
                        ),
                        'a julian year in 1520' => array(
                                new TimeValue( '+1520-05-01T00:00:00Z',
                                        1 * 60 * 60, 0, 0,
                                        TimeValue::PRECISION_YEAR,
-                                       TimeFormatter::CALENDAR_JULIAN ),
+                                       $julian ),
                                '/^MOCKDATE$/'
                        ),
                        'a gregorian year in 1920' => array(
                                new TimeValue( '+1920-05-01T00:00:00Z',
                                        1 * 60 * 60, 0, 0,
                                        TimeValue::PRECISION_YEAR,
-                                       TimeFormatter::CALENDAR_GREGORIAN ),
+                                       $gregorian ),
                                '/^MOCKDATE$/'
                        ),
                        'a julian year in 1920' => array(
                                new TimeValue( '+1920-05-01T00:00:00Z',
                                        1 * 60 * 60, 0, 0,
                                        TimeValue::PRECISION_YEAR,
-                                       TimeFormatter::CALENDAR_JULIAN ),
+                                       $julian ),
                                '/^MOCKDATE<sup 
class="wb-calendar-name">\(valueview-expert-timevalue-calendar-julian\)<\/sup>$/'
                        ),
                        'a julian year in 1980' => array(
                                new TimeValue( '+1980-05-01T00:00:00Z',
                                        1 * 60 * 60, 0, 0,
                                        TimeValue::PRECISION_YEAR,
-                                       TimeFormatter::CALENDAR_JULIAN ),
+                                       $julian ),
                                '/^MOCKDATE<sup 
class="wb-calendar-name">\(valueview-expert-timevalue-calendar-julian\)<\/sup>$/'
                        ),
                        'a gregorian year in 1980' => array(
                                new TimeValue( '+1980-05-01T00:00:00Z',
                                        1 * 60 * 60, 0, 0,
                                        TimeValue::PRECISION_YEAR,
-                                       TimeFormatter::CALENDAR_GREGORIAN ),
+                                       $gregorian ),
                                '/^MOCKDATE$/'
                        ),
 
@@ -157,7 +159,7 @@
                                new TimeValue( '+1980-05-01T00:00:00Z',
                                        1 * 60 * 60, 0, 0,
                                        TimeValue::PRECISION_MONTH,
-                                       TimeFormatter::CALENDAR_GREGORIAN ),
+                                       $gregorian ),
                                '/^MOCKDATE$/'
                        ),
 
@@ -165,7 +167,7 @@
                                new TimeValue( '+1300-00-00T00:00:00Z',
                                        1 * 60 * 60, 0, 0,
                                        TimeValue::PRECISION_100a,
-                                       TimeFormatter::CALENDAR_JULIAN ),
+                                       $julian ),
                                '/^MOCKDATE$/'
                        ),
 
@@ -173,35 +175,35 @@
                                new TimeValue( '+2014-10-10T00:00:00Z',
                                        1 * 60 * 60, 0, 0,
                                        TimeValue::PRECISION_DAY,
-                                       TimeFormatter::CALENDAR_GREGORIAN ),
+                                       $gregorian ),
                                '/^MOCKDATE$/'
                        ),
                        '2014-10-10 with leading zeros' => array(
                                new TimeValue( '+00000002014-10-10T00:00:00Z',
                                        1 * 60 * 60, 0, 0,
                                        TimeValue::PRECISION_DAY,
-                                       TimeFormatter::CALENDAR_GREGORIAN ),
+                                       $gregorian ),
                                '/^MOCKDATE$/'
                        ),
                        'massive year' => array(
                                new TimeValue( '+00123452014-10-10T00:00:00Z',
                                        1 * 60 * 60, 0, 0,
                                        TimeValue::PRECISION_DAY,
-                                       TimeFormatter::CALENDAR_GREGORIAN ),
+                                       $gregorian ),
                                '/^MOCKDATE$/'
                        ),
                        'negative' => array(
                                new TimeValue( '-1-01-01T00:00:00Z',
                                        0, 0, 0,
                                        TimeValue::PRECISION_DAY,
-                                       TimeFormatter::CALENDAR_GREGORIAN ),
+                                       $gregorian ),
                                '/^MOCKDATE<sup 
class="wb-calendar-name">\(valueview-expert-timevalue-calendar-gregorian\)<\/sup>$/'
                        ),
                        '32-bit integer overflow' => array(
                                new TimeValue( '-2147483649-01-01T00:00:00Z',
                                        0, 0, 0,
                                        TimeValue::PRECISION_DAY,
-                                       TimeFormatter::CALENDAR_GREGORIAN ),
+                                       $gregorian ),
                                '/^MOCKDATE<sup 
class="wb-calendar-name">\(valueview-expert-timevalue-calendar-gregorian\)<\/sup>$/'
                        ),
                        'unknown calendar model' => array(

-- 
To view, visit https://gerrit.wikimedia.org/r/209726
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: If3c9f2827ca96a8d90ad2bb4e5e8da9649852020
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Thiemo Mättig (WMDE) <thiemo.maet...@wikimedia.de>
Gerrit-Reviewer: Daniel Kinzler <daniel.kinz...@wikimedia.de>
Gerrit-Reviewer: Smalyshev <smalys...@wikimedia.org>
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