Thiemo Mättig (WMDE) has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/297397

Change subject: Do not show calendar model with precision 10 years or larger
......................................................................

Do not show calendar model with precision 10 years or larger

The calendar model *is* critical with precision month, day and so on.
It *may* be relevant with precision year.
In both cases we enforce displaying the calendar model when it's not
the same as the one our parser guesses.

But is is *not* relevant with precision 10 years, 100 years and so on.
It just does not make any difference.

Bug: T133973
Change-Id: Ic891718364c6a6c53beb48fa10adae5ad0f7a7fa
---
M lib/includes/Formatters/HtmlTimeFormatter.php
M lib/tests/phpunit/Formatters/HtmlTimeFormatterTest.php
2 files changed, 40 insertions(+), 31 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase 
refs/changes/97/297397/1

diff --git a/lib/includes/Formatters/HtmlTimeFormatter.php 
b/lib/includes/Formatters/HtmlTimeFormatter.php
index 5469f38..4182c84 100644
--- a/lib/includes/Formatters/HtmlTimeFormatter.php
+++ b/lib/includes/Formatters/HtmlTimeFormatter.php
@@ -80,6 +80,11 @@
         * @return bool
         */
        private function calendarNameNeeded( TimeValue $value ) {
+               // Do not care about possibly wrong calendar models with 
precision 10 years and more.
+               if ( $value->getPrecision() <= TimeValue::PRECISION_YEAR10 ) {
+                       return false;
+               }
+
                // Loose check if the timestamp string is ISO-ish and starts 
with a year.
                if ( !preg_match( '/^[-+]?\d+\b/', $value->getTime(), $matches 
) ) {
                        return true;
diff --git a/lib/tests/phpunit/Formatters/HtmlTimeFormatterTest.php 
b/lib/tests/phpunit/Formatters/HtmlTimeFormatterTest.php
index a48811e..3f5a7ad 100644
--- a/lib/tests/phpunit/Formatters/HtmlTimeFormatterTest.php
+++ b/lib/tests/phpunit/Formatters/HtmlTimeFormatterTest.php
@@ -66,11 +66,9 @@
        /**
         * @dataProvider timeFormatProvider
         */
-       public function testFormat( TimeValue $value, $pattern ) {
+       public function testFormat( TimeValue $value, $expected ) {
                $formatter = $this->getFormatter();
-
-               $html = $formatter->format( $value );
-               $this->assertRegExp( $pattern, $html );
+               $this->assertSame( $expected, $formatter->format( $value ) );
        }
 
        public function timeFormatProvider() {
@@ -82,161 +80,167 @@
                                '+1520-05-01T00:00:00Z',
                                TimeValue::PRECISION_DAY,
                                $gregorian,
-                               '/^MOCKDATE<sup 
class="wb-calendar-name">\(valueview-expert-timevalue-calendar-gregorian\)<\/sup>$/'
+                               'MOCKDATE<sup 
class="wb-calendar-name">(valueview-expert-timevalue-calendar-gregorian)</sup>'
                        ),
                        'a gregorian month in 1520' => array(
                                '+1520-05-01T00:00:00Z',
                                TimeValue::PRECISION_MONTH,
                                $gregorian,
-                               '/^MOCKDATE<sup 
class="wb-calendar-name">\(valueview-expert-timevalue-calendar-gregorian\)<\/sup>$/'
+                               'MOCKDATE<sup 
class="wb-calendar-name">(valueview-expert-timevalue-calendar-gregorian)</sup>'
                        ),
                        'a julian day in 1520' => array(
                                '+1520-05-01T00:00:00Z',
                                TimeValue::PRECISION_DAY,
                                $julian,
-                               '/^MOCKDATE$/'
+                               'MOCKDATE'
                        ),
                        'a gregorian day in 1920' => array(
                                '+1920-05-01T00:00:00Z',
                                TimeValue::PRECISION_DAY,
                                $gregorian,
-                               '/^MOCKDATE<sup 
class="wb-calendar-name">\(valueview-expert-timevalue-calendar-gregorian\)<\/sup>$/'
+                               'MOCKDATE<sup 
class="wb-calendar-name">(valueview-expert-timevalue-calendar-gregorian)</sup>'
                        ),
                        'a julian day in 1920' => array(
                                '+1920-05-01T00:00:00Z',
                                TimeValue::PRECISION_DAY,
                                $julian,
-                               '/^MOCKDATE<sup 
class="wb-calendar-name">\(valueview-expert-timevalue-calendar-julian\)<\/sup>$/'
+                               'MOCKDATE<sup 
class="wb-calendar-name">(valueview-expert-timevalue-calendar-julian)</sup>'
                        ),
                        'a julian day in 1980' => array(
                                '+1980-05-01T00:00:00Z',
                                TimeValue::PRECISION_DAY,
                                $julian,
-                               '/^MOCKDATE<sup 
class="wb-calendar-name">\(valueview-expert-timevalue-calendar-julian\)<\/sup>$/'
+                               'MOCKDATE<sup 
class="wb-calendar-name">(valueview-expert-timevalue-calendar-julian)</sup>'
                        ),
                        'a gregorian day in 1980' => array(
                                '+1980-05-01T00:00:00Z',
                                TimeValue::PRECISION_DAY,
                                $gregorian,
-                               '/^MOCKDATE$/'
+                               'MOCKDATE'
                        ),
 
                        'a gregorian year in -1000000' => array(
                                '-1000000-00-00T00:00:00Z',
                                TimeValue::PRECISION_YEAR,
                                $gregorian,
-                               '/^MOCKDATE<sup 
class="wb-calendar-name">\(valueview-expert-timevalue-calendar-gregorian\)<\/sup>$/'
+                               'MOCKDATE<sup 
class="wb-calendar-name">(valueview-expert-timevalue-calendar-gregorian)</sup>'
                        ),
                        'a julian year in -1000000' => array(
                                '-1000000-05-01T00:00:00Z',
                                TimeValue::PRECISION_YEAR,
                                $julian,
-                               '/^MOCKDATE$/'
+                               'MOCKDATE'
                        ),
                        'a gregorian year in 1520' => array(
                                '+1520-05-01T00:00:00Z',
                                TimeValue::PRECISION_YEAR,
                                $gregorian,
-                               '/^MOCKDATE<sup 
class="wb-calendar-name">\(valueview-expert-timevalue-calendar-gregorian\)<\/sup>$/'
+                               'MOCKDATE<sup 
class="wb-calendar-name">(valueview-expert-timevalue-calendar-gregorian)</sup>'
                        ),
                        'a julian year in 1520' => array(
                                '+1520-05-01T00:00:00Z',
                                TimeValue::PRECISION_YEAR,
                                $julian,
-                               '/^MOCKDATE$/'
+                               'MOCKDATE'
                        ),
                        'a gregorian year in 1920' => array(
                                '+1920-05-01T00:00:00Z',
                                TimeValue::PRECISION_YEAR,
                                $gregorian,
-                               '/^MOCKDATE$/'
+                               'MOCKDATE'
                        ),
                        'a julian year in 1920' => array(
                                '+1920-05-01T00:00:00Z',
                                TimeValue::PRECISION_YEAR,
                                $julian,
-                               '/^MOCKDATE<sup 
class="wb-calendar-name">\(valueview-expert-timevalue-calendar-julian\)<\/sup>$/'
+                               'MOCKDATE<sup 
class="wb-calendar-name">(valueview-expert-timevalue-calendar-julian)</sup>'
                        ),
                        'a julian year in 1980' => array(
                                '+1980-05-01T00:00:00Z',
                                TimeValue::PRECISION_YEAR,
                                $julian,
-                               '/^MOCKDATE<sup 
class="wb-calendar-name">\(valueview-expert-timevalue-calendar-julian\)<\/sup>$/'
+                               'MOCKDATE<sup 
class="wb-calendar-name">(valueview-expert-timevalue-calendar-julian)</sup>'
+                       ),
+                       'do not enforce calendar model on rough precisions' => 
array(
+                               '+1980-05-01T00:00:00Z',
+                               TimeValue::PRECISION_YEAR10,
+                               $julian,
+                               'MOCKDATE'
                        ),
                        'a gregorian year in 1980' => array(
                                '+1980-05-01T00:00:00Z',
                                TimeValue::PRECISION_YEAR,
                                $gregorian,
-                               '/^MOCKDATE$/'
+                               'MOCKDATE'
                        ),
 
                        'a month in 1980' => array(
                                '+1980-05-01T00:00:00Z',
                                TimeValue::PRECISION_MONTH,
                                $gregorian,
-                               '/^MOCKDATE$/'
+                               'MOCKDATE'
                        ),
 
                        '14th century' => array(
                                '+1300-00-00T00:00:00Z',
                                TimeValue::PRECISION_YEAR100,
                                $julian,
-                               '/^MOCKDATE$/'
+                               'MOCKDATE'
                        ),
 
                        '2014-10-10' => array(
                                '+2014-10-10T00:00:00Z',
                                TimeValue::PRECISION_DAY,
                                $gregorian,
-                               '/^MOCKDATE$/'
+                               'MOCKDATE'
                        ),
                        '2014-10-10 with leading zeros' => array(
                                '+00000002014-10-10T00:00:00Z',
                                TimeValue::PRECISION_DAY,
                                $gregorian,
-                               '/^MOCKDATE$/'
+                               'MOCKDATE'
                        ),
                        'massive year' => array(
                                '+00123452014-10-10T00:00:00Z',
                                TimeValue::PRECISION_DAY,
                                $gregorian,
-                               '/^MOCKDATE$/'
+                               'MOCKDATE'
                        ),
                        'negative' => array(
                                '-1-01-01T00:00:00Z',
                                TimeValue::PRECISION_DAY,
                                $gregorian,
-                               '/^MOCKDATE<sup 
class="wb-calendar-name">\(valueview-expert-timevalue-calendar-gregorian\)<\/sup>$/'
+                               'MOCKDATE<sup 
class="wb-calendar-name">(valueview-expert-timevalue-calendar-gregorian)</sup>'
                        ),
                        '32-bit integer overflow' => array(
                                '-2147483649-01-01T00:00:00Z',
                                TimeValue::PRECISION_DAY,
                                $gregorian,
-                               '/^MOCKDATE<sup 
class="wb-calendar-name">\(valueview-expert-timevalue-calendar-gregorian\)<\/sup>$/'
+                               'MOCKDATE<sup 
class="wb-calendar-name">(valueview-expert-timevalue-calendar-gregorian)</sup>'
                        ),
                        'unknown calendar model' => array(
                                '+2015-01-01T00:00:00Z',
                                TimeValue::PRECISION_DAY,
                                'Stardate',
-                               '/^MOCKDATE<sup 
class="wb-calendar-name">Stardate<\/sup>$/'
+                               'MOCKDATE<sup 
class="wb-calendar-name">Stardate</sup>'
                        ),
                        'optional sign' => array(
                                '2015-01-01T00:00:00Z',
                                TimeValue::PRECISION_DAY,
                                $gregorian,
-                               '/^MOCKDATE$/'
+                               'MOCKDATE'
                        ),
                        'unsupported time' => array(
                                'MOCKTIME',
                                TimeValue::PRECISION_DAY,
                                $gregorian,
-                               '/^MOCKDATE<sup 
class="wb-calendar-name">\(valueview-expert-timevalue-calendar-gregorian\)<\/sup>$/'
+                               'MOCKDATE<sup 
class="wb-calendar-name">(valueview-expert-timevalue-calendar-gregorian)</sup>'
                        ),
                        'HTML entities' => array(
                                '<a>injection</a>',
+                               TimeValue::PRECISION_DAY,
                                '<a>injection</a>',
-                               '<a>injection</a>',
-                               '/^MOCKDATE<sup 
class="wb-calendar-name">&lt;a&gt;injection&lt;\/a&gt;<\/sup>$/'
+                               'MOCKDATE<sup 
class="wb-calendar-name">&lt;a&gt;injection&lt;/a&gt;</sup>'
                        ),
                );
 

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ic891718364c6a6c53beb48fa10adae5ad0f7a7fa
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Thiemo Mättig (WMDE) <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to