Bug 1428366 - Add new plural rule (6 forms) for Welsh to PluralForm.jsm r?pike draft
authorFrancesco Lodolo (:flod) <flod@lodolo.net>
Mon, 08 Jan 2018 08:50:38 +0100
changeset 717086 04ac1cd704c8031cd74aea794a4045d823081af3
parent 717028 739484451a6399c7f156a0d960335606aa6c1221
child 745148 c8f338f220e0775d258a1f008459ea116124e894
push id94558
push userbmo:francesco.lodolo@gmail.com
push dateMon, 08 Jan 2018 07:51:29 +0000
reviewerspike
bugs1428366
milestone59.0a1
Bug 1428366 - Add new plural rule (6 forms) for Welsh to PluralForm.jsm r?pike MozReview-Commit-ID: GJ87J9gtqQt
intl/locale/PluralForm.jsm
intl/locale/tests/unit/test_pluralForm.js
--- a/intl/locale/PluralForm.jsm
+++ b/intl/locale/PluralForm.jsm
@@ -71,16 +71,18 @@ var gFunctions = [
   // 14: Unused
   [3, (n) => n%10==1?0:n%10==2?1:2],
   // 15: Icelandic, Macedonian
   [2, (n) => n%10==1&&n%100!=11?0:1],
   // 16: Breton
   [5, (n) => n%10==1&&n%100!=11&&n%100!=71&&n%100!=91?0:n%10==2&&n%100!=12&&n%100!=72&&n%100!=92?1:(n%10==3||n%10==4||n%10==9)&&n%100!=13&&n%100!=14&&n%100!=19&&n%100!=73&&n%100!=74&&n%100!=79&&n%100!=93&&n%100!=94&&n%100!=99?2:n%1000000==0&&n!=0?3:4],
   // 17: Shuar
   [2, (n) => n!=0?1:0],
+  // 18: Welsh
+  [6, (n) => n==0?0:n==1?1:n==2?2:n==3?3:n==6?4:5],
 ];
 
 this.PluralForm = {
   /**
    * Get the correct plural form of a word based on the number
    *
    * @param aNum
    *        The number to decide which plural form to use
--- a/intl/locale/tests/unit/test_pluralForm.js
+++ b/intl/locale/tests/unit/test_pluralForm.js
@@ -618,16 +618,50 @@ function run_test()
     2,2,2,2,2,2,2,2,2,2,
     2,2,2,2,2,2,2,2,2,2,
     2,2,2,2,2,2,2,2,2,2,
     2,2,2,2,2,2,2,2,2,2,
     2,2,2,2,2,2,2,2,2,2,
     2,2,2,2,2,2,2,2,2,2,
     2,2,2,2,2,2,2,2,2,2,
     2,2,2,2,2,2,2,2,2,2,
+  ], [
+    // 18: Welsh 0-9, 10-19, ..., 90-99
+    1,2,3,4,6,6,5,6,6,6,
+    6,6,6,6,6,6,6,6,6,6,
+    6,6,6,6,6,6,6,6,6,6,
+    6,6,6,6,6,6,6,6,6,6,
+    6,6,6,6,6,6,6,6,6,6,
+    6,6,6,6,6,6,6,6,6,6,
+    6,6,6,6,6,6,6,6,6,6,
+    6,6,6,6,6,6,6,6,6,6,
+    6,6,6,6,6,6,6,6,6,6,
+    6,6,6,6,6,6,6,6,6,6,
+    // 100-109, 110-119, ..., 190-199
+    6,6,6,6,6,6,6,6,6,6,
+    6,6,6,6,6,6,6,6,6,6,
+    6,6,6,6,6,6,6,6,6,6,
+    6,6,6,6,6,6,6,6,6,6,
+    6,6,6,6,6,6,6,6,6,6,
+    6,6,6,6,6,6,6,6,6,6,
+    6,6,6,6,6,6,6,6,6,6,
+    6,6,6,6,6,6,6,6,6,6,
+    6,6,6,6,6,6,6,6,6,6,
+    6,6,6,6,6,6,6,6,6,6,
+    // 200-209, 210-219, ..., 290-299
+    6,6,6,6,6,6,6,6,6,6,
+    6,6,6,6,6,6,6,6,6,6,
+    6,6,6,6,6,6,6,6,6,6,
+    6,6,6,6,6,6,6,6,6,6,
+    6,6,6,6,6,6,6,6,6,6,
+    6,6,6,6,6,6,6,6,6,6,
+    6,6,6,6,6,6,6,6,6,6,
+    6,6,6,6,6,6,6,6,6,6,
+    6,6,6,6,6,6,6,6,6,6,
+    6,6,6,6,6,6,6,6,6,6,
   ]];
 
   for (let [rule, expect] of allExpect.entries()) {
     print("\nTesting rule #" + rule);
 
     let [get, numForms] = PluralForm.makeGetter(rule);
 
     // Make sure the largest value expected matches the number of plural forms