jenkins-bot has submitted this change and it was merged.
Change subject: Don't assume English in MwTimeIsoParser
......................................................................
Don't assume English in MwTimeIsoParser
In order for this to work we need to expand {{PLURAL:$1|…}}
constructs which many localizations make use of.
Getting this to work for the tests wasn't nice, but I figured
that getting the message directly from the Message object would
work.
This most probably still has some shortcomings, but I think it
works reasonably well (like the English version).
Bug: T95532
Change-Id: I15c2864ce9a2b6ef971982da5963347d60835992
---
M repo/includes/Parsers/MwTimeIsoParser.php
M repo/tests/phpunit/includes/Parsers/MwTimeIsoParserTest.php
2 files changed, 273 insertions(+), 99 deletions(-)
Approvals:
Adrian Heine: Looks good to me, approved
jenkins-bot: Verified
diff --git a/repo/includes/Parsers/MwTimeIsoParser.php
b/repo/includes/Parsers/MwTimeIsoParser.php
index 2a09623..8336f93 100644
--- a/repo/includes/Parsers/MwTimeIsoParser.php
+++ b/repo/includes/Parsers/MwTimeIsoParser.php
@@ -20,6 +20,7 @@
*
* @license GPL-2.0+
* @author Addshore
+ * @author Marius Hoch
*
* @todo move me to DataValues-time
*/
@@ -96,7 +97,11 @@
* @return TimeValue
*/
protected function stringParse( $value ) {
- $reconverted = $this->reconvertOutputString( $value );
+ $reconverted = $this->reconvertOutputString( $value,
$this->lang );
+ if ( $reconverted === false && $this->lang->getCode() !== 'en'
) {
+ // Also try English
+ $reconverted = $this->reconvertOutputString( $value,
Language::factory( 'en' ) );
+ }
if ( $reconverted !== false ) {
return $reconverted;
}
@@ -114,41 +119,17 @@
* @throws RuntimeException
* @return TimeValue|bool
*/
- private function reconvertOutputString( $value ) {
+ private function reconvertOutputString( $value, Language $lang ) {
foreach ( self::$precisionMsgKeys as $precision =>
$msgKeysGroup ) {
foreach ( $msgKeysGroup as $msgKey ) {
- // FIXME: Use the language passed in options!
The only reason we are not currently
- // doing this is due to the formatting not
currently localizing. See the fix me in
- // MwTimeIsoFormatter::getMessage.
- // TODO: Check other translations?
- $msgText = wfMessage( $msgKey )->inLanguage(
'en' )->text();
- $isBceMsg = $this->isBceMsg( $msgKey );
-
- list( $start, $end ) = explode( '$1', $msgText,
2 );
- if ( preg_match(
- '/^\s*'
- . preg_quote( $start, '/' ) .
'(.+?)'
- . preg_quote( $end, '/' ) .
'\s*$/i',
+ $res = $this->parseFromOutputString(
+ $lang,
$value,
- $matches
- ) ) {
- list( , $number ) = $matches;
- return $this->parseNumber( $number,
$precision, $isBceMsg );
- }
-
- // If the msg string ends with BCE also check
for BC
- if ( substr_compare( $end, 'BCE', -3 ) === 0 ) {
- if ( preg_match(
- '/^\s*'
- . preg_quote( $start,
'/' ) . '(.+?)'
- . preg_quote( substr(
$end, 0, -1 ), '/' ) . '\s*$/i',
- $value,
- $matches
- ) ) {
- list( , $number ) = $matches;
- return $this->parseNumber(
$number, $precision, $isBceMsg );
- }
-
+ $precision,
+ $msgKey
+ );
+ if ( $res !== null ) {
+ return $res;
}
}
}
@@ -157,15 +138,118 @@
}
/**
- * @param string $number
+ * @param Language $lang
+ * @param string $value
+ * @param int $precision
+ * @param string $msgKey
+ *
+ * @return TimeValue|bool|null
+ */
+ private function parseFromOutputString( Language $lang, $value,
$precision, $msgKey ) {
+ $msgText = $lang->getMessage( $msgKey );
+ $isBceMsg = $this->isBceMsg( $msgKey );
+ $msgRegexp = $this->getRegexpFromMessageText( $msgText );
+
+ if ( preg_match(
+ '/^\s*'. $msgRegexp . '\s*$/i',
+ $value,
+ $matches
+ ) ) {
+ return $this->chooseAndParseNumber(
+ $lang,
+ array_slice( $matches, 1 ),
+ $precision,
+ $isBceMsg
+ );
+ }
+
+ // If the msg string ends with BCE also check for BC
+ if ( substr_compare( $msgRegexp, 'BCE', -3 ) === 0 ) {
+ if ( preg_match(
+ '/^\s*' . substr( $msgRegexp, 0, -1 ) .
'\s*$/i',
+ $value,
+ $matches
+ ) ) {
+ return $this->chooseAndParseNumber(
+ $lang,
+ array_slice( $matches, 1 ),
+ $precision,
+ $isBceMsg
+ );
+ }
+
+ }
+
+ return null;
+ }
+
+ /**
+ * Creates a regular expression snippet from a given message.
+ * This replaces $1 with (.+?) and also expands PLURAL clauses
+ * so that we can match for every combination of these.
+ *
+ * @param string $msgText
+ * @return string
+ */
+ private function getRegexpFromMessageText( $msgText ) {
+ static $pluralRegex = null;
+ if ( $pluralRegex === null ) {
+ // We need to match on a preg_quoted string here, so
double quote
+ $pluralRegex = '@' . preg_quote( preg_quote(
'{{PLURAL:$1|' ) ) .
+ '.*?' . preg_quote( preg_quote( '}}' ) ) . '@';
+ }
+
+ // Quote regexp
+ $regex = preg_quote( $msgText, '@' );
+
+ // Expand the PLURAL cases
+ $regex = preg_replace_callback(
+ $pluralRegex,
+ function ( $matches ) {
+ // Change "{{PLURAL:$1" to "(?:" and "}}" to ")"
+ $replace = str_replace( '\{\{PLURAL\:\$1\|',
'(?:', $matches[0] );
+ $replace = str_replace( '\}\}', ')', $replace );
+
+ // Unescape the pipes within the PLURAL clauses
+ return str_replace( '\|', '|', $replace );
+ },
+ $regex
+ );
+
+ // Make sure we match for all $1s
+ return str_replace( '\$1', '(.+?)', $regex );
+ }
+
+ /**
+ * Tries to find the number from the given matches and parses it.
+ * This naively assumes the first parseable number to be the best match.
+ *
+ * @param Language $lang
+ * @param string[] $matches
* @param int $precision
* @param boolean $isBceMsg
*
- * @return TimeValue
+ * @return TimeValue|bool
*/
- private function parseNumber( $number, $precision, $isBceMsg ) {
- $number = $this->lang->parseFormattedNumber( $number );
- $year = $number . str_repeat( '0',
self::$paddedZeros[$precision] );
+ private function chooseAndParseNumber( Language $lang, $matches,
$precision, $isBceMsg ) {
+ $year = null;
+ foreach ( $matches as $number ) {
+ if ( $number === '' ) {
+ continue;
+ }
+ $number = $lang->parseFormattedNumber( $number );
+ $year = $number . str_repeat( '0',
self::$paddedZeros[$precision] );
+
+ if ( ctype_digit( $year ) ) {
+ // IsoTimestampParser works only with digit
only years (it uses \d{1,16} to match)
+ break;
+ }
+ $year = null;
+ }
+
+ if ( $year === null ) {
+ return false;
+ }
$this->setPrecision( $precision );
diff --git a/repo/tests/phpunit/includes/Parsers/MwTimeIsoParserTest.php
b/repo/tests/phpunit/includes/Parsers/MwTimeIsoParserTest.php
index a5e122c..1d585ba 100644
--- a/repo/tests/phpunit/includes/Parsers/MwTimeIsoParserTest.php
+++ b/repo/tests/phpunit/includes/Parsers/MwTimeIsoParserTest.php
@@ -3,6 +3,10 @@
namespace Wikibase\Repo\Tests\Parsers;
use DataValues\TimeValue;
+use Language;
+use LogicException;
+use ValueParsers\ParserOptions;
+use ValueParsers\ValueParser;
use ValueParsers\Test\StringValueParserTest;
use Wikibase\Repo\Parsers\MwTimeIsoParser;
@@ -16,6 +20,7 @@
*
* @license GPL-2.0+
* @author Addshore
+ * @author Marius Hoch
*/
class MwTimeIsoParserTest extends StringValueParserTest {
@@ -23,7 +28,7 @@
* @deprecated since 0.3, just use getInstance.
*/
protected function getParserClass() {
- throw new \LogicException( 'Should not be called, use
getInstance' );
+ throw new LogicException( 'Should not be called, use
getInstance' );
}
/**
@@ -32,7 +37,70 @@
* @return MwTimeIsoParser
*/
protected function getInstance() {
- return new MwTimeIsoParser();
+ $options = new ParserOptions();
+ $options->setOption( ValueParser::OPT_LANG, 'es' );
+
+ return new MwTimeIsoParser( $options );
+ }
+
+ protected function setUp() {
+ parent::setUp();
+
+ // We don't have control over object instantiation, but
+ // need this in order to test with some staged messages.
+ Language::$mLangObjCache['es'] = $this->getLanguage();
+ }
+
+ protected function tearDown() {
+ parent::tearDown();
+
+ unset( Language::$mLangObjCache['es'] );
+ }
+
+ private function getLanguage() {
+ $lang = $this->getMock( 'Language' );
+
+ $lang->expects( $this->any() )
+ ->method( 'getCode' )
+ ->will( $this->returnValue( 'es' ) );
+
+ $lang->expects( $this->any() )
+ ->method( 'parseFormattedNumber' )
+ ->will( $this->returnCallback( function( $number ) {
+ return Language::factory( 'en'
)->parseFormattedNumber( $number );
+ } ) );
+
+ $lang->expects( $this->any() )
+ ->method( 'getMessage' )
+ ->with( $this->isType( 'string' ) )
+ ->will( $this->returnCallback( function( $msg ) {
+ $messages = $this->getMessages();
+ if ( isset( $messages[$msg] ) ) {
+ return $messages[$msg];
+ } else {
+ return 'kitten';
+ }
+ } ) );
+
+ return $lang;
+ }
+
+ /**
+ * @param string[]
+ */
+ private function getMessages() {
+ return [
+ // Trivial case
+ 'wikibase-time-precision-Gannum' => '$1
precision-Gannum',
+ // With separate PLURAL case
+ 'wikibase-time-precision-Mannum' => '$1
{{PLURAL:$1|one|more|evenmore}} precision-Mannum',
+ // From the Ukrainian translation
+ 'wikibase-time-precision-BCE-Mannum' => '$1
мільйон{{PLURAL:$1||ів|и}} років до н.е.',
+ // With $1 in the PLURAL case
+ 'wikibase-time-precision-BCE-century' =>
'{{PLURAL:$1|$1 one|$1 more|$1 evenmore}} precision-BCE-century',
+ // A random template in the message
+ 'wikibase-time-precision-10annum' => '$1
precision-10annum{{PLURAL:$1||s}} {{dummy|1|2|3}}'
+ ];
}
/**
@@ -44,126 +112,148 @@
$argLists = array();
- $valid = array(
+ $valid = [
// + dates
'13 billion years CE' =>
- array( '+13000000000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR1G, ),
+ [ '+13000000000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR1G, ],
+ '23 precision-Gannum' =>
+ [ '+23000000000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR1G, ],
'130 billion years CE' =>
- array( '+130000000000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR1G, ),
+ [ '+130000000000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR1G, ],
'13000 billion years CE' =>
- array( '+13000000000000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR1G, ),
+ [ '+13000000000000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR1G, ],
'13,000 billion years CE' =>
- array( '+13000000000000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR1G, ),
+ [ '+13000000000000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR1G, ],
'13,000 million years CE' =>
- array( '+13000000000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR1G, ),
+ [ '+13000000000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR1G, ],
'13,800 million years CE' =>
- array( '+13800000000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR100M, ),
+ [ '+13800000000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR100M, ],
'100 million years CE' =>
- array( '+100000000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR100M, ),
+ [ '+100000000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR100M, ],
'70 million years CE' =>
- array( '+70000000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR10M, ),
+ [ '+70000000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR10M, ],
'77 million years CE' =>
- array( '+77000000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR1M, ),
+ [ '+77000000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR1M, ],
+ '55 one precision-Mannum' =>
+ [ '+55000000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR1M, ],
+ '23 more precision-Mannum' =>
+ [ '+23000000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR1M, ],
+ '21 evenmore precision-Mannum' =>
+ [ '+21000000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR1M, ],
'13 million years CE' =>
- array( '+13000000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR1M, ),
+ [ '+13000000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR1M, ],
'1 million years CE' =>
- array( '+1000000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR1M, ),
+ [ '+1000000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR1M, ],
'100000 years CE' =>
- array( '+100000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR100K, ),
+ [ '+100000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR100K, ],
'100,000 years CE' =>
- array( '+100000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR100K, ),
+ [ '+100000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR100K, ],
'10000 years CE' =>
- array( '+10000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR10K, ),
+ [ '+10000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR10K, ],
'99000 years CE' =>
- array( '+99000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR1K, ),
+ [ '+99000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR1K, ],
'99,000 years CE' =>
- array( '+99000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR1K, ),
+ [ '+99000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR1K, ],
'5. millennium' =>
- array( '+5000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR1K, ),
+ [ '+5000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR1K, ],
'55. millennium' =>
- array( '+55000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR1K, ),
+ [ '+55000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR1K, ],
'10. century' =>
- array( '+1000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR100, $julian ),
+ [ '+1000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR100, $julian ],
'12. century' =>
- array( '+1200-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR100, $julian ),
+ [ '+1200-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR100, $julian ],
'1980s' =>
- array( '+1980-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR10, ),
+ [ '+1980-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR10, ],
+ '1990 precision-10annum {{dummy|1|2|3}}' =>
+ [ '+1990-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR10, ],
'2000s' =>
- array( '+2000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR10, ),
+ [ '+2000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR10, ],
+ '2010 precision-10annums {{dummy|1|2|3}}' =>
+ [ '+2010-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR10, ],
'10s' =>
- array( '+0010-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR10, $julian ),
+ [ '+0010-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR10, $julian ],
'12s' =>
- array( '+0012-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR10, $julian ),
+ [ '+0012-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR10, $julian ],
// - dates
'13 billion years BCE' =>
- array( '-13000000000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR1G, $julian ),
+ [ '-13000000000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR1G, $julian ],
'130 billion years BCE' =>
- array( '-130000000000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR1G, $julian ),
+ [ '-130000000000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR1G, $julian ],
'13000 billion years BCE' =>
- array( '-13000000000000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR1G, $julian ),
+ [ '-13000000000000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR1G, $julian ],
'13,000 billion years BCE' =>
- array( '-13000000000000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR1G, $julian ),
+ [ '-13000000000000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR1G, $julian ],
'13,000 million years BCE' =>
- array( '-13000000000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR1G, $julian ),
+ [ '-13000000000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR1G, $julian ],
'13,800 million years BCE' =>
- array( '-13800000000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR100M, $julian ),
+ [ '-13800000000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR100M, $julian ],
'100 million years BCE' =>
- array( '-100000000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR100M, $julian ),
+ [ '-100000000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR100M, $julian ],
'70 million years BCE' =>
- array( '-70000000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR10M, $julian ),
+ [ '-70000000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR10M, $julian ],
'77 million years BCE' =>
- array( '-77000000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR1M, $julian ),
+ [ '-77000000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR1M, $julian ],
+ '64 мільйони років до н.е.' =>
+ [ '-64000000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR1M, $julian ],
'13 million years BCE' =>
- array( '-13000000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR1M, $julian ),
+ [ '-13000000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR1M, $julian ],
'1 million years BCE' =>
- array( '-1000000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR1M, $julian ),
+ [ '-1000000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR1M, $julian ],
+ '64 мільйон років до н.е.' =>
+ [ '-64000000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR1M, $julian ],
'100000 years BCE' =>
- array( '-100000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR100K, $julian ),
+ [ '-100000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR100K, $julian ],
'100,000 years BCE' =>
- array( '-100000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR100K, $julian ),
+ [ '-100000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR100K, $julian ],
'10000 years BCE' =>
- array( '-10000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR10K, $julian ),
+ [ '-10000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR10K, $julian ],
'99000 years BCE' =>
- array( '-99000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR1K, $julian ),
+ [ '-99000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR1K, $julian ],
'99,000 years BCE' =>
- array( '-99000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR1K, $julian ),
+ [ '-99000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR1K, $julian ],
'5. millennium BCE' =>
- array( '-5000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR1K, $julian ),
+ [ '-5000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR1K, $julian ],
'55. millennium BCE' =>
- array( '-55000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR1K, $julian ),
+ [ '-55000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR1K, $julian ],
+ '22 more precision-BCE-century' =>
+ [ '-2200-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR100, $julian ],
+ '8 evenmore precision-BCE-century' =>
+ [ '-0800-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR100, $julian ],
+ '11 more precision-BCE-century' =>
+ [ '-1100-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR100, $julian ],
'10. century BCE' =>
- array( '-1000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR100, $julian ),
+ [ '-1000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR100, $julian ],
'12. century BCE' =>
- array( '-1200-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR100, $julian ),
+ [ '-1200-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR100, $julian ],
'10s BCE' =>
- array( '-0010-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR10, $julian ),
+ [ '-0010-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR10, $julian ],
'12s BCE' =>
- array( '-0012-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR10, $julian ),
+ [ '-0012-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR10, $julian ],
// also parse BC
'5. millennium BC' =>
- array( '-5000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR1K, $julian ),
+ [ '-5000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR1K, $julian ],
'55. millennium BC' =>
- array( '-55000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR1K, $julian ),
+ [ '-55000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR1K, $julian ],
'10. century BC' =>
- array( '-1000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR100, $julian ),
+ [ '-1000-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR100, $julian ],
'12. century BC' =>
- array( '-1200-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR100, $julian ),
+ [ '-1200-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR100, $julian ],
'10s BC' =>
- array( '-0010-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR10, $julian ),
+ [ '-0010-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR10, $julian ],
'12s BC' =>
- array( '-0012-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR10, $julian ),
- );
+ [ '-0012-00-00T00:00:00Z',
TimeValue::PRECISION_YEAR10, $julian ],
+ ];
foreach ( $valid as $value => $expected ) {
$timestamp = $expected[0];
$precision = $expected[1];
$calendarModel = isset( $expected[2] ) ? $expected[2] :
$gregorian;
- $argLists[] = array(
+ $argLists[] = [
(string)$value,
new TimeValue( $timestamp, 0, 0, 0, $precision,
$calendarModel )
- );
+ ];
}
return $argLists;
@@ -175,7 +265,7 @@
public function invalidInputProvider() {
$argLists = parent::invalidInputProvider();
- $invalid = array(
+ $invalid = [
//These are just wrong!
'June June June',
'111 111 111',
@@ -188,10 +278,10 @@
'2000',
'1980x',
'1980ss',
- );
+ ];
foreach ( $invalid as $value ) {
- $argLists[] = array( $value );
+ $argLists[] = [ $value ];
}
return $argLists;
--
To view, visit https://gerrit.wikimedia.org/r/278234
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I15c2864ce9a2b6ef971982da5963347d60835992
Gerrit-PatchSet: 4
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Hoo man <[email protected]>
Gerrit-Reviewer: Addshore <[email protected]>
Gerrit-Reviewer: Adrian Heine <[email protected]>
Gerrit-Reviewer: Hoo man <[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