From 60e1d9996c0c746165f073c53857d4fcffb4e9d7 Mon Sep 17 00:00:00 2001 From: aude Date: Thu, 24 Apr 2014 04:33:58 +0200 Subject: [PATCH] Fix Language::parseFormattedNumber for lzh and zh-classical When parsing, filter any array values that are empty string before using strtr php function so that strtr can handle the array. Bug: 64347 Change-Id: I94761caa70d44febfa0999c91048a01044fc1fbe --- languages/Language.php | 6 +++++- tests/phpunit/languages/LanguageTest.php | 23 +++++++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/languages/Language.php b/languages/Language.php index c635ebbfd1..95bd31e34b 100644 --- a/languages/Language.php +++ b/languages/Language.php @@ -3130,14 +3130,18 @@ class Language { * @param string $number * @return string */ - function parseFormattedNumber( $number ) { + public function parseFormattedNumber( $number ) { $s = $this->digitTransformTable(); if ( $s ) { + // eliminate empty array values such as ''. (bug 64347) + $s = array_filter( $s ); $number = strtr( $number, array_flip( $s ) ); } $s = $this->separatorTransformTable(); if ( $s ) { + // eliminate empty array values such as ''. (bug 64347) + $s = array_filter( $s ); $number = strtr( $number, array_flip( $s ) ); } diff --git a/tests/phpunit/languages/LanguageTest.php b/tests/phpunit/languages/LanguageTest.php index 13d84f755e..ed89159fd3 100644 --- a/tests/phpunit/languages/LanguageTest.php +++ b/tests/phpunit/languages/LanguageTest.php @@ -1472,6 +1472,29 @@ class LanguageTest extends LanguageClassesTestCase { ); } + /** + * @dataProvider parseFormattedNumberProvider + */ + public function testParseFormattedNumber( $langCode, $number ) { + $lang = Language::factory( $langCode ); + + $localisedNum = $lang->formatNum( $number ); + $normalisedNum = $lang->parseFormattedNumber( $localisedNum ); + + $this->assertEquals( $number, $normalisedNum ); + } + + public function parseFormattedNumberProvider() { + return array( + array( 'de', 377.01 ), + array( 'fa', 334 ), + array( 'fa', 382.772 ), + array( 'ar', 1844 ), + array( 'lzh', 3731 ), + array( 'zh-classical', 7432 ) + ); + } + /** * @covers Language::commafy() * @dataProvider provideCommafyData -- 2.20.1