jenkins-bot has submitted this change and it was merged.
Change subject: Show human readable time precision in diffs
......................................................................
Show human readable time precision in diffs
This uses existing messages from core.
Change-Id: I714e79bc5d1e048e26a94e56040bf6a50303a721
---
M lib/includes/formatters/TimeDetailsFormatter.php
M lib/tests/phpunit/formatters/TimeDetailsFormatterTest.php
2 files changed, 53 insertions(+), 10 deletions(-)
Approvals:
Daniel Kinzler: Looks good to me, approved
jenkins-bot: Verified
diff --git a/lib/includes/formatters/TimeDetailsFormatter.php
b/lib/includes/formatters/TimeDetailsFormatter.php
index 52c0659..3d9e7a9 100644
--- a/lib/includes/formatters/TimeDetailsFormatter.php
+++ b/lib/includes/formatters/TimeDetailsFormatter.php
@@ -86,7 +86,7 @@
// TODO: Provide "nice" rendering of precision, etc.
$html .= $this->renderLabelValuePair(
'precision',
- htmlspecialchars( $value->getPrecision() )
+ $this->getPrecisionHtml( $value->getPrecision() )
);
$html .= $this->renderLabelValuePair(
'before',
@@ -105,7 +105,7 @@
/**
* @param int $timezone
*
- * @return string
+ * @return string HTML
*/
private function getTimezoneHtml( $timezone ) {
$sign = $timezone < 0 ? "\xE2\x88\x92" : '+';
@@ -117,7 +117,7 @@
/**
* @param string $calendarModel
*
- * @return string
+ * @return string HTML
*/
private function getCalendarModelHtml( $calendarModel ) {
$calendarNames = $this->getOption( self::OPT_CALENDARNAMES );
@@ -126,6 +126,36 @@
}
return htmlspecialchars( $calendarModel );
+ }
+
+ /**
+ * @param int $precision
+ *
+ * @return string HTML
+ */
+ private function getPrecisionHtml( $precision ) {
+ if ( $precision > TimeValue::PRECISION_SECOND ) {
+ return htmlspecialchars( $precision );
+ }
+
+ $key = 'years';
+ $amount = 1;
+
+ switch ( $precision ) {
+ case TimeValue::PRECISION_MONTH: $key = 'months'; break;
+ case TimeValue::PRECISION_DAY: $key = 'days'; break;
+ case TimeValue::PRECISION_HOUR: $key = 'hours'; break;
+ case TimeValue::PRECISION_MINUTE: $key = 'minutes';
break;
+ case TimeValue::PRECISION_SECOND: $key = 'seconds';
break;
+ }
+
+ if ( $precision < TimeValue::PRECISION_YEAR ) {
+ $amount = pow( 10, TimeValue::PRECISION_YEAR -
$precision );
+ }
+
+ $lang = $this->getOption( ValueFormatter::OPT_LANG );
+ $msg = wfMessage( $key, $amount )->inLanguage( $lang );
+ return $msg->text();
}
/**
@@ -152,8 +182,6 @@
* @return Message
*/
private function getFieldLabel( $fieldName ) {
- $lang = $this->getOption( ValueFormatter::OPT_LANG );
-
// Messages:
// wikibase-timedetails-isotime
// wikibase-timedetails-timezone
@@ -162,8 +190,9 @@
// wikibase-timedetails-before
// wikibase-timedetails-after
$key = 'wikibase-timedetails-' . strtolower( $fieldName );
- $msg = wfMessage( $key )->inLanguage( $lang );
+ $lang = $this->getOption( ValueFormatter::OPT_LANG );
+ $msg = wfMessage( $key )->inLanguage( $lang );
return $msg;
}
diff --git a/lib/tests/phpunit/formatters/TimeDetailsFormatterTest.php
b/lib/tests/phpunit/formatters/TimeDetailsFormatterTest.php
index 144e39a..330d726 100644
--- a/lib/tests/phpunit/formatters/TimeDetailsFormatterTest.php
+++ b/lib/tests/phpunit/formatters/TimeDetailsFormatterTest.php
@@ -28,7 +28,9 @@
* @param string $pattern
*/
public function testFormat( TimeValue $value, $pattern ) {
- $formatter = new TimeDetailsFormatter( new FormatterOptions() );
+ $formatter = new TimeDetailsFormatter( new FormatterOptions(
array(
+ ValueFormatter::OPT_LANG => 'qqx',
+ ) ) );
$html = $formatter->format( $value );
$this->assertRegExp( $pattern, $html );
@@ -47,7 +49,7 @@
'<td[^<>]*>\+0*2001-01-01T00:00:00Z</td>',
'<td[^<>]*>\+01:00</td>',
'<td[^<>]*>Gregorian</td>',
- '<td[^<>]*>10</td>',
+ '<td[^<>]*>\(months: 1\)</td>',
'<td[^<>]*>0</td>',
'<td[^<>]*>1</td>',
)
@@ -55,11 +57,23 @@
),
array(
new TimeValue( '+2001-01-01T00:00:00Z', 0, 0,
0, $day, 'Stardate' ),
- '@.*<td
class="wb-time-calendar">Stardate</td>.*@s'
+ '@.*<td[^<>]*calendar">Stardate</td>.*@s'
),
array(
new TimeValue( '+2001-01-01T00:00:00Z', -179,
0, 0, $day, $gregorian ),
- '@.*<td
class="wb-time-timezone">\xE2\x88\x9202:59</td>.*@s'
+
'@.*<td[^<>]*timezone">\xE2\x88\x9202:59</td>.*@s'
+ ),
+ array(
+ new TimeValue( '+2001-01-01T00:00:00Z', 0, 0,
0, TimeValue::PRECISION_SECOND, $gregorian ),
+ '@.*<td[^<>]*precision">\(seconds: 1\)</td>.*@s'
+ ),
+ array(
+ new TimeValue( '+2001-01-01T00:00:00Z', 0, 0,
0, TimeValue::PRECISION_10a, $gregorian ),
+ '@.*<td[^<>]*precision">\(years: 10\)</td>.*@s'
+ ),
+ array(
+ new TimeValue( '+2001-01-01T00:00:00Z', 0, 0,
0, TimeValue::PRECISION_Ga, $gregorian ),
+ '@.*<td[^<>]*precision">\(years:
1000000000\)</td>.*@s'
),
);
}
--
To view, visit https://gerrit.wikimedia.org/r/188544
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I714e79bc5d1e048e26a94e56040bf6a50303a721
Gerrit-PatchSet: 2
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Thiemo Mättig (WMDE) <[email protected]>
Gerrit-Reviewer: Addshore <[email protected]>
Gerrit-Reviewer: Daniel Kinzler <[email protected]>
Gerrit-Reviewer: Thiemo Mättig (WMDE) <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits