Add new static function LanguageCode::replaceDeprecatedCodes
authorFomafix <fomafix@googlemail.com>
Tue, 27 Jun 2017 14:25:01 +0000 (16:25 +0200)
committerC. Scott Ananian <cscott@cscott.net>
Thu, 10 Aug 2017 19:21:59 +0000 (15:21 -0400)
Refactor the deprecatedLanguageCodeMapping to a private variable.

Change-Id: I5f8e601e53de183e6268c9ef601eef8390b725cd

languages/LanguageCode.php
tests/phpunit/languages/LanguageCodeTest.php

index 7c9da77..3fa3dc1 100644 (file)
  * @ingroup Language
  */
 class LanguageCode {
+       /**
+        * Mapping of deprecated language codes that were used in previous
+        * versions of MediaWiki to up-to-date, current language codes.
+        *
+        * @var array Mapping from language code to language code
+        *
+        * @since 1.30
+        */
+       private static $deprecatedLanguageCodeMapping = [
+               // Note that als is actually a valid ISO 639 code (Tosk Albanian), but it
+               // was previously used in MediaWiki for Alsatian, which comes under gsw
+               'als' => 'gsw',
+               'bat-smg' => 'sgs',
+               'be-x-old' => 'be-tarask',
+               'fiu-vro' => 'vro',
+               'roa-rup' => 'rup',
+               'zh-classical' => 'lzh',
+               'zh-min-nan' => 'nan',
+               'zh-yue' => 'yue',
+       ];
+
        /**
         * Returns a mapping of deprecated language codes that were used in previous
         * versions of MediaWiki to up-to-date, current language codes.
@@ -36,19 +57,27 @@ class LanguageCode {
         * MediaWiki's localisation system.
         *
         * @return string[]
+        *
+        * @since 1.29
         */
        public static function getDeprecatedCodeMapping() {
-               return [
-                       // Note that als is actually a valid ISO 639 code (Tosk Albanian), but it
-                       // was previously used in MediaWiki for Alsatian, which comes under gsw
-                       'als' => 'gsw',
-                       'bat-smg' => 'sgs',
-                       'be-x-old' => 'be-tarask',
-                       'fiu-vro' => 'vro',
-                       'roa-rup' => 'rup',
-                       'zh-classical' => 'lzh',
-                       'zh-min-nan' => 'nan',
-                       'zh-yue' => 'yue',
-               ];
+               return self::$deprecatedLanguageCodeMapping;
+       }
+
+       /**
+        * Replace deprecated language codes that were used in previous
+        * versions of MediaWiki to up-to-date, current language codes.
+        * Other values will returned unchanged.
+        *
+        * @param string $code Old language code
+        * @return string New language code
+        *
+        * @since 1.30
+        */
+       public static function replaceDeprecatedCodes( $code ) {
+               if ( isset( self::$deprecatedLanguageCodeMapping[$code] ) ) {
+                       return self::$deprecatedLanguageCodeMapping[$code];
+               }
+               return $code;
        }
 }
index b33360c..7689ef1 100644 (file)
@@ -37,4 +37,10 @@ class LanguageCodeTest extends PHPUnit_Framework_TestCase {
                $this->assertArrayNotHasKey( 'simple', $map );
        }
 
+       public function testReplaceDeprecatedCodes() {
+               $this->assertEquals( 'gsw', LanguageCode::replaceDeprecatedCodes( 'als' ) );
+               $this->assertEquals( 'gsw', LanguageCode::replaceDeprecatedCodes( 'gsw' ) );
+               $this->assertEquals( null, LanguageCode::replaceDeprecatedCodes( null ) );
+       }
+
 }