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

Reply via email to