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"><a>injection<\/a><\/sup>$/'
+ 'MOCKDATE<sup
class="wb-calendar-name"><a>injection</a></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