From 4050abde6b6da7c2cc479e55dfaf768036297b56 Mon Sep 17 00:00:00 2001 From: Santhosh Thottingal Date: Fri, 14 Sep 2012 20:20:04 -0700 Subject: [PATCH] Add support for plural rules for decimal numbers * Update CLDRPluralRuleParser from upstream * Use parseFloat instead of parseInt in mediawiki.jqueryMsg * Add qunit tests Change-Id: I0b44df6c9e299142925a557f6dc41d749d381a02 --- resources/mediawiki.libs/CLDRPluralRuleParser.js | 8 ++++++++ resources/mediawiki/mediawiki.jqueryMsg.js | 2 +- .../suites/resources/mediawiki/mediawiki.cldr.test.js | 5 ++--- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/resources/mediawiki.libs/CLDRPluralRuleParser.js b/resources/mediawiki.libs/CLDRPluralRuleParser.js index bb1491d304..91bdc07d16 100644 --- a/resources/mediawiki.libs/CLDRPluralRuleParser.js +++ b/resources/mediawiki.libs/CLDRPluralRuleParser.js @@ -275,7 +275,15 @@ function pluralRuleParser(rule, number) { var condition = choice([and, or, relation]); + function isInt(n) { + return parseFloat(n) % 1 === 0; + } + + function start() { + if (!isInt(number)) { + return false; + } var result = condition(); return result; } diff --git a/resources/mediawiki/mediawiki.jqueryMsg.js b/resources/mediawiki/mediawiki.jqueryMsg.js index def122502e..86af31fffe 100644 --- a/resources/mediawiki/mediawiki.jqueryMsg.js +++ b/resources/mediawiki/mediawiki.jqueryMsg.js @@ -639,7 +639,7 @@ * @return {String} selected pluralized form according to current language */ plural: function ( nodes ) { - var count = parseInt( this.language.convertNumber( nodes[0], true ), 10 ); + var count = parseFloat( this.language.convertNumber( nodes[0], true ) ); var forms = nodes.slice(1); return forms.length ? this.language.convertPlural( count, forms ) : ''; }, diff --git a/tests/qunit/suites/resources/mediawiki/mediawiki.cldr.test.js b/tests/qunit/suites/resources/mediawiki/mediawiki.cldr.test.js index 895a73542d..e2c66685d8 100644 --- a/tests/qunit/suites/resources/mediawiki/mediawiki.cldr.test.js +++ b/tests/qunit/suites/resources/mediawiki/mediawiki.cldr.test.js @@ -50,9 +50,8 @@ var pluralTestcases = { [ 9999, [ "zero", "one", "two", "few", "many", "other" ], "many", "Arabic plural test - 9999 is many" ], [ 100, [ "zero", "one", "two", "few", "many", "other" ], "other", "Arabic plural test - 100 is other" ], [ 102, [ "zero", "one", "two", "few", "many", "other" ], "other", "Arabic plural test - 102 is other" ], - [ 1000, [ "zero", "one", "two", "few", "many", "other" ], "other", "Arabic plural test - 1000 is other" ] - // FIXME plural rules for decimal numbers does not work - // [ 1.7, [ "zero", "one", "two", "few", "many", "other" ], "other", "Arabic plural test - 1.7 is other" ], + [ 1000, [ "zero", "one", "two", "few", "many", "other" ], "other", "Arabic plural test - 1000 is other" ], + [ 1.7, [ "zero", "one", "two", "few", "many", "other" ], "other", "Arabic plural test - 1.7 is other" ] ] }; -- 2.20.1