| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559 |
- // @flow
- 'use strict'
- /*:: export type Rule = 'zero' | 'one' | 'two' | 'few' | 'many' | 'other' */
- var zero = 'zero', one = 'one', two = 'two', few = 'few', many = 'many', other = 'other'
- var f = [
- function (s/*: string | number */)/*: Rule */ {
- var n = +s
- return n === 1 ? one
- : other
- },
- function (s/*: string | number */)/*: Rule */ {
- var n = +s
- return 0 <= n && n <= 1 ? one
- : other
- },
- function (s/*: string | number */)/*: Rule */ {
- var i = Math.floor(Math.abs(+s))
- var n = +s
- return i === 0 || n === 1 ? one
- : other
- },
- function (s/*: string | number */)/*: Rule */ {
- var n = +s
- return n === 0 ? zero
- : n === 1 ? one
- : n === 2 ? two
- : 3 <= n % 100 && n % 100 <= 10 ? few
- : 11 <= n % 100 && n % 100 <= 99 ? many
- : other
- },
- function (s/*: string | number */)/*: Rule */ {
- var i = Math.floor(Math.abs(+s))
- var v = (s + '.').split('.')[1].length
- return i === 1 && v === 0 ? one
- : other
- },
- function (s/*: string | number */)/*: Rule */ {
- var n = +s
- return n % 10 === 1 && n % 100 !== 11 ? one
- : (2 <= n % 10 && n % 10 <= 4) && (n % 100 < 12 || 14 < n % 100) ? few
- : n % 10 === 0 || (5 <= n % 10 && n % 10 <= 9) || (11 <= n % 100 && n % 100 <= 14) ? many
- : other
- },
- function (s/*: string | number */)/*: Rule */ {
- var n = +s
- return n % 10 === 1 && (n % 100 !== 11 && n % 100 !== 71 && n % 100 !== 91) ? one
- : n % 10 === 2 && (n % 100 !== 12 && n % 100 !== 72 && n % 100 !== 92) ? two
- : ((3 <= n % 10 && n % 10 <= 4) || n % 10 === 9) && ((n % 100 < 10 || 19 < n % 100) && (n % 100 < 70 || 79 < n % 100) && (n % 100 < 90 || 99 < n % 100)) ? few
- : n !== 0 && n % 1000000 === 0 ? many
- : other
- },
- function (s/*: string | number */)/*: Rule */ {
- var i = Math.floor(Math.abs(+s))
- var v = (s + '.').split('.')[1].length
- var f = +(s + '.').split('.')[1]
- return v === 0 && i % 10 === 1 && i % 100 !== 11 || f % 10 === 1 && f % 100 !== 11 ? one
- : v === 0 && (2 <= i % 10 && i % 10 <= 4) && (i % 100 < 12 || 14 < i % 100) || (2 <= f % 10 && f % 10 <= 4) && (f % 100 < 12 || 14 < f % 100) ? few
- : other
- },
- function (s/*: string | number */)/*: Rule */ {
- var i = Math.floor(Math.abs(+s))
- var v = (s + '.').split('.')[1].length
- return i === 1 && v === 0 ? one
- : (2 <= i && i <= 4) && v === 0 ? few
- : v !== 0 ? many
- : other
- },
- function (s/*: string | number */)/*: Rule */ {
- var n = +s
- return n === 0 ? zero
- : n === 1 ? one
- : n === 2 ? two
- : n === 3 ? few
- : n === 6 ? many
- : other
- },
- function (s/*: string | number */)/*: Rule */ {
- var i = Math.floor(Math.abs(+s))
- var t = +('' + s).replace(/^[^.]*.?|0+$/g, '')
- var n = +s
- return n === 1 || t !== 0 && (i === 0 || i === 1) ? one
- : other
- },
- function (s/*: string | number */)/*: Rule */ {
- var i = Math.floor(Math.abs(+s))
- var v = (s + '.').split('.')[1].length
- var f = +(s + '.').split('.')[1]
- return v === 0 && i % 100 === 1 || f % 100 === 1 ? one
- : v === 0 && i % 100 === 2 || f % 100 === 2 ? two
- : v === 0 && (3 <= i % 100 && i % 100 <= 4) || (3 <= f % 100 && f % 100 <= 4) ? few
- : other
- },
- function (s/*: string | number */)/*: Rule */ {
- var i = Math.floor(Math.abs(+s))
- return i === 0 || i === 1 ? one
- : other
- },
- function (s/*: string | number */)/*: Rule */ {
- var i = Math.floor(Math.abs(+s))
- var v = (s + '.').split('.')[1].length
- var f = +(s + '.').split('.')[1]
- return v === 0 && (i === 1 || i === 2 || i === 3) || v === 0 && (i % 10 !== 4 && i % 10 !== 6 && i % 10 !== 9) || v !== 0 && (f % 10 !== 4 && f % 10 !== 6 && f % 10 !== 9) ? one
- : other
- },
- function (s/*: string | number */)/*: Rule */ {
- var n = +s
- return n === 1 ? one
- : n === 2 ? two
- : 3 <= n && n <= 6 ? few
- : 7 <= n && n <= 10 ? many
- : other
- },
- function (s/*: string | number */)/*: Rule */ {
- var n = +s
- return n === 1 || n === 11 ? one
- : n === 2 || n === 12 ? two
- : ((3 <= n && n <= 10) || (13 <= n && n <= 19)) ? few
- : other
- },
- function (s/*: string | number */)/*: Rule */ {
- var i = Math.floor(Math.abs(+s))
- var v = (s + '.').split('.')[1].length
- return v === 0 && i % 10 === 1 ? one
- : v === 0 && i % 10 === 2 ? two
- : v === 0 && (i % 100 === 0 || i % 100 === 20 || i % 100 === 40 || i % 100 === 60 || i % 100 === 80) ? few
- : v !== 0 ? many
- : other
- },
- function (s/*: string | number */)/*: Rule */ {
- var i = Math.floor(Math.abs(+s))
- var v = (s + '.').split('.')[1].length
- var n = +s
- return i === 1 && v === 0 ? one
- : i === 2 && v === 0 ? two
- : v === 0 && (n < 0 || 10 < n) && n % 10 === 0 ? many
- : other
- },
- function (s/*: string | number */)/*: Rule */ {
- var i = Math.floor(Math.abs(+s))
- var t = +('' + s).replace(/^[^.]*.?|0+$/g, '')
- return t === 0 && i % 10 === 1 && i % 100 !== 11 || t !== 0 ? one
- : other
- },
- function (s/*: string | number */)/*: Rule */ {
- var n = +s
- return n === 1 ? one
- : n === 2 ? two
- : other
- },
- function (s/*: string | number */)/*: Rule */ {
- var n = +s
- return n === 0 ? zero
- : n === 1 ? one
- : other
- },
- function (s/*: string | number */)/*: Rule */ {
- var i = Math.floor(Math.abs(+s))
- var n = +s
- return n === 0 ? zero
- : (i === 0 || i === 1) && n !== 0 ? one
- : other
- },
- function (s/*: string | number */)/*: Rule */ {
- var f = +(s + '.').split('.')[1]
- var n = +s
- return n % 10 === 1 && (n % 100 < 11 || 19 < n % 100) ? one
- : (2 <= n % 10 && n % 10 <= 9) && (n % 100 < 11 || 19 < n % 100) ? few
- : f !== 0 ? many
- : other
- },
- function (s/*: string | number */)/*: Rule */ {
- var v = (s + '.').split('.')[1].length
- var f = +(s + '.').split('.')[1]
- var n = +s
- return n % 10 === 0 || (11 <= n % 100 && n % 100 <= 19) || v === 2 && (11 <= f % 100 && f % 100 <= 19) ? zero
- : n % 10 === 1 && n % 100 !== 11 || v === 2 && f % 10 === 1 && f % 100 !== 11 || v !== 2 && f % 10 === 1 ? one
- : other
- },
- function (s/*: string | number */)/*: Rule */ {
- var i = Math.floor(Math.abs(+s))
- var v = (s + '.').split('.')[1].length
- var f = +(s + '.').split('.')[1]
- return v === 0 && i % 10 === 1 && i % 100 !== 11 || f % 10 === 1 && f % 100 !== 11 ? one
- : other
- },
- function (s/*: string | number */)/*: Rule */ {
- var i = Math.floor(Math.abs(+s))
- var v = (s + '.').split('.')[1].length
- var n = +s
- return i === 1 && v === 0 ? one
- : v !== 0 || n === 0 || n !== 1 && (1 <= n % 100 && n % 100 <= 19) ? few
- : other
- },
- function (s/*: string | number */)/*: Rule */ {
- var n = +s
- return n === 1 ? one
- : n === 0 || (2 <= n % 100 && n % 100 <= 10) ? few
- : 11 <= n % 100 && n % 100 <= 19 ? many
- : other
- },
- function (s/*: string | number */)/*: Rule */ {
- var i = Math.floor(Math.abs(+s))
- var v = (s + '.').split('.')[1].length
- return i === 1 && v === 0 ? one
- : v === 0 && (2 <= i % 10 && i % 10 <= 4) && (i % 100 < 12 || 14 < i % 100) ? few
- : v === 0 && i !== 1 && (0 <= i % 10 && i % 10 <= 1) || v === 0 && (5 <= i % 10 && i % 10 <= 9) || v === 0 && (12 <= i % 100 && i % 100 <= 14) ? many
- : other
- },
- function (s/*: string | number */)/*: Rule */ {
- var i = Math.floor(Math.abs(+s))
- return 0 <= i && i <= 1 ? one
- : other
- },
- function (s/*: string | number */)/*: Rule */ {
- var i = Math.floor(Math.abs(+s))
- var v = (s + '.').split('.')[1].length
- return v === 0 && i % 10 === 1 && i % 100 !== 11 ? one
- : v === 0 && (2 <= i % 10 && i % 10 <= 4) && (i % 100 < 12 || 14 < i % 100) ? few
- : v === 0 && i % 10 === 0 || v === 0 && (5 <= i % 10 && i % 10 <= 9) || v === 0 && (11 <= i % 100 && i % 100 <= 14) ? many
- : other
- },
- function (s/*: string | number */)/*: Rule */ {
- var i = Math.floor(Math.abs(+s))
- var n = +s
- return i === 0 || n === 1 ? one
- : 2 <= n && n <= 10 ? few
- : other
- },
- function (s/*: string | number */)/*: Rule */ {
- var i = Math.floor(Math.abs(+s))
- var f = +(s + '.').split('.')[1]
- var n = +s
- return (n === 0 || n === 1) || i === 0 && f === 1 ? one
- : other
- },
- function (s/*: string | number */)/*: Rule */ {
- var i = Math.floor(Math.abs(+s))
- var v = (s + '.').split('.')[1].length
- return v === 0 && i % 100 === 1 ? one
- : v === 0 && i % 100 === 2 ? two
- : v === 0 && (3 <= i % 100 && i % 100 <= 4) || v !== 0 ? few
- : other
- },
- function (s/*: string | number */)/*: Rule */ {
- var n = +s
- return (0 <= n && n <= 1) || (11 <= n && n <= 99) ? one
- : other
- },
- function (s/*: string | number */)/*: Rule */ {
- var n = +s
- return n === 1 || n === 5 || n === 7 || n === 8 || n === 9 || n === 10 ? one
- : n === 2 || n === 3 ? two
- : n === 4 ? few
- : n === 6 ? many
- : other
- },
- function (s/*: string | number */)/*: Rule */ {
- var i = Math.floor(Math.abs(+s))
- return (i % 10 === 1 || i % 10 === 2 || i % 10 === 5 || i % 10 === 7 || i % 10 === 8) || (i % 100 === 20 || i % 100 === 50 || i % 100 === 70 || i % 100 === 80) ? one
- : (i % 10 === 3 || i % 10 === 4) || (i % 1000 === 100 || i % 1000 === 200 || i % 1000 === 300 || i % 1000 === 400 || i % 1000 === 500 || i % 1000 === 600 || i % 1000 === 700 || i % 1000 === 800 || i % 1000 === 900) ? few
- : i === 0 || i % 10 === 6 || (i % 100 === 40 || i % 100 === 60 || i % 100 === 90) ? many
- : other
- },
- function (s/*: string | number */)/*: Rule */ {
- var n = +s
- return (n % 10 === 2 || n % 10 === 3) && (n % 100 !== 12 && n % 100 !== 13) ? few
- : other
- },
- function (s/*: string | number */)/*: Rule */ {
- var n = +s
- return n === 1 || n === 3 ? one
- : n === 2 ? two
- : n === 4 ? few
- : other
- },
- function (s/*: string | number */)/*: Rule */ {
- var n = +s
- return n === 0 || n === 7 || n === 8 || n === 9 ? zero
- : n === 1 ? one
- : n === 2 ? two
- : n === 3 || n === 4 ? few
- : n === 5 || n === 6 ? many
- : other
- },
- function (s/*: string | number */)/*: Rule */ {
- var n = +s
- return n % 10 === 1 && n % 100 !== 11 ? one
- : n % 10 === 2 && n % 100 !== 12 ? two
- : n % 10 === 3 && n % 100 !== 13 ? few
- : other
- },
- function (s/*: string | number */)/*: Rule */ {
- var n = +s
- return n === 1 || n === 11 ? one
- : n === 2 || n === 12 ? two
- : n === 3 || n === 13 ? few
- : other
- },
- function (s/*: string | number */)/*: Rule */ {
- var n = +s
- return n === 1 ? one
- : n === 2 || n === 3 ? two
- : n === 4 ? few
- : n === 6 ? many
- : other
- },
- function (s/*: string | number */)/*: Rule */ {
- var n = +s
- return n === 1 || n === 5 ? one
- : other
- },
- function (s/*: string | number */)/*: Rule */ {
- var n = +s
- return n === 11 || n === 8 || n === 80 || n === 800 ? many
- : other
- },
- function (s/*: string | number */)/*: Rule */ {
- var i = Math.floor(Math.abs(+s))
- return i === 1 ? one
- : i === 0 || ((2 <= i % 100 && i % 100 <= 20) || i % 100 === 40 || i % 100 === 60 || i % 100 === 80) ? many
- : other
- },
- function (s/*: string | number */)/*: Rule */ {
- var n = +s
- return n % 10 === 6 || n % 10 === 9 || n % 10 === 0 && n !== 0 ? many
- : other
- },
- function (s/*: string | number */)/*: Rule */ {
- var i = Math.floor(Math.abs(+s))
- return i % 10 === 1 && i % 100 !== 11 ? one
- : i % 10 === 2 && i % 100 !== 12 ? two
- : (i % 10 === 7 || i % 10 === 8) && (i % 100 !== 17 && i % 100 !== 18) ? many
- : other
- },
- function (s/*: string | number */)/*: Rule */ {
- var n = +s
- return n === 1 ? one
- : n === 2 || n === 3 ? two
- : n === 4 ? few
- : other
- },
- function (s/*: string | number */)/*: Rule */ {
- var n = +s
- return 1 <= n && n <= 4 ? one
- : other
- },
- function (s/*: string | number */)/*: Rule */ {
- var n = +s
- return (n === 1 || n === 5 || (7 <= n && n <= 9)) ? one
- : n === 2 || n === 3 ? two
- : n === 4 ? few
- : n === 6 ? many
- : other
- },
- function (s/*: string | number */)/*: Rule */ {
- var n = +s
- return n === 1 ? one
- : n % 10 === 4 && n % 100 !== 14 ? many
- : other
- },
- function (s/*: string | number */)/*: Rule */ {
- var n = +s
- return (n % 10 === 1 || n % 10 === 2) && (n % 100 !== 11 && n % 100 !== 12) ? one
- : other
- },
- function (s/*: string | number */)/*: Rule */ {
- var n = +s
- return (n % 10 === 6 || n % 10 === 9) || n === 10 ? few
- : other
- },
- function (s/*: string | number */)/*: Rule */ {
- var n = +s
- return n % 10 === 3 && n % 100 !== 13 ? few
- : other
- }
- ]
- module.exports = {
- af: { cardinal: f[0] },
- ak: { cardinal: f[1] },
- am: { cardinal: f[2] },
- ar: { cardinal: f[3] },
- ars: { cardinal: f[3] },
- as: { cardinal: f[2], ordinal: f[34] },
- asa: { cardinal: f[0] },
- ast: { cardinal: f[4] },
- az: { cardinal: f[0], ordinal: f[35] },
- be: { cardinal: f[5], ordinal: f[36] },
- bem: { cardinal: f[0] },
- bez: { cardinal: f[0] },
- bg: { cardinal: f[0] },
- bh: { cardinal: f[1] },
- bn: { cardinal: f[2], ordinal: f[34] },
- br: { cardinal: f[6] },
- brx: { cardinal: f[0] },
- bs: { cardinal: f[7] },
- ca: { cardinal: f[4], ordinal: f[37] },
- ce: { cardinal: f[0] },
- cgg: { cardinal: f[0] },
- chr: { cardinal: f[0] },
- ckb: { cardinal: f[0] },
- cs: { cardinal: f[8] },
- cy: { cardinal: f[9], ordinal: f[38] },
- da: { cardinal: f[10] },
- de: { cardinal: f[4] },
- dsb: { cardinal: f[11] },
- dv: { cardinal: f[0] },
- ee: { cardinal: f[0] },
- el: { cardinal: f[0] },
- en: { cardinal: f[4], ordinal: f[39] },
- eo: { cardinal: f[0] },
- es: { cardinal: f[0] },
- et: { cardinal: f[4] },
- eu: { cardinal: f[0] },
- fa: { cardinal: f[2] },
- ff: { cardinal: f[12] },
- fi: { cardinal: f[4] },
- fil: { cardinal: f[13], ordinal: f[0] },
- fo: { cardinal: f[0] },
- fr: { cardinal: f[12], ordinal: f[0] },
- fur: { cardinal: f[0] },
- fy: { cardinal: f[4] },
- ga: { cardinal: f[14], ordinal: f[0] },
- gd: { cardinal: f[15], ordinal: f[40] },
- gl: { cardinal: f[4] },
- gsw: { cardinal: f[0] },
- gu: { cardinal: f[2], ordinal: f[41] },
- guw: { cardinal: f[1] },
- gv: { cardinal: f[16] },
- ha: { cardinal: f[0] },
- haw: { cardinal: f[0] },
- he: { cardinal: f[17] },
- hi: { cardinal: f[2], ordinal: f[41] },
- hr: { cardinal: f[7] },
- hsb: { cardinal: f[11] },
- hu: { cardinal: f[0], ordinal: f[42] },
- hy: { cardinal: f[12], ordinal: f[0] },
- ia: { cardinal: f[4] },
- io: { cardinal: f[4] },
- is: { cardinal: f[18] },
- it: { cardinal: f[4], ordinal: f[43] },
- iu: { cardinal: f[19] },
- iw: { cardinal: f[17] },
- jgo: { cardinal: f[0] },
- ji: { cardinal: f[4] },
- jmc: { cardinal: f[0] },
- ka: { cardinal: f[0], ordinal: f[44] },
- kab: { cardinal: f[12] },
- kaj: { cardinal: f[0] },
- kcg: { cardinal: f[0] },
- kk: { cardinal: f[0], ordinal: f[45] },
- kkj: { cardinal: f[0] },
- kl: { cardinal: f[0] },
- kn: { cardinal: f[2] },
- ks: { cardinal: f[0] },
- ksb: { cardinal: f[0] },
- ksh: { cardinal: f[20] },
- ku: { cardinal: f[0] },
- kw: { cardinal: f[19] },
- ky: { cardinal: f[0] },
- lag: { cardinal: f[21] },
- lb: { cardinal: f[0] },
- lg: { cardinal: f[0] },
- ln: { cardinal: f[1] },
- lt: { cardinal: f[22] },
- lv: { cardinal: f[23] },
- mas: { cardinal: f[0] },
- mg: { cardinal: f[1] },
- mgo: { cardinal: f[0] },
- mk: { cardinal: f[24], ordinal: f[46] },
- ml: { cardinal: f[0] },
- mn: { cardinal: f[0] },
- mo: { cardinal: f[25], ordinal: f[0] },
- mr: { cardinal: f[2], ordinal: f[47] },
- mt: { cardinal: f[26] },
- nah: { cardinal: f[0] },
- naq: { cardinal: f[19] },
- nb: { cardinal: f[0] },
- nd: { cardinal: f[0] },
- ne: { cardinal: f[0], ordinal: f[48] },
- nl: { cardinal: f[4] },
- nn: { cardinal: f[0] },
- nnh: { cardinal: f[0] },
- no: { cardinal: f[0] },
- nr: { cardinal: f[0] },
- nso: { cardinal: f[1] },
- ny: { cardinal: f[0] },
- nyn: { cardinal: f[0] },
- om: { cardinal: f[0] },
- or: { cardinal: f[0], ordinal: f[49] },
- os: { cardinal: f[0] },
- pa: { cardinal: f[1] },
- pap: { cardinal: f[0] },
- pl: { cardinal: f[27] },
- prg: { cardinal: f[23] },
- ps: { cardinal: f[0] },
- pt: { cardinal: f[28] },
- 'pt-PT': { cardinal: f[4] },
- rm: { cardinal: f[0] },
- ro: { cardinal: f[25], ordinal: f[0] },
- rof: { cardinal: f[0] },
- ru: { cardinal: f[29] },
- rwk: { cardinal: f[0] },
- saq: { cardinal: f[0] },
- sc: { cardinal: f[4], ordinal: f[43] },
- scn: { cardinal: f[4], ordinal: f[43] },
- sd: { cardinal: f[0] },
- sdh: { cardinal: f[0] },
- se: { cardinal: f[19] },
- seh: { cardinal: f[0] },
- sh: { cardinal: f[7] },
- shi: { cardinal: f[30] },
- si: { cardinal: f[31] },
- sk: { cardinal: f[8] },
- sl: { cardinal: f[32] },
- sma: { cardinal: f[19] },
- smi: { cardinal: f[19] },
- smj: { cardinal: f[19] },
- smn: { cardinal: f[19] },
- sms: { cardinal: f[19] },
- sn: { cardinal: f[0] },
- so: { cardinal: f[0] },
- sq: { cardinal: f[0], ordinal: f[50] },
- sr: { cardinal: f[7] },
- ss: { cardinal: f[0] },
- ssy: { cardinal: f[0] },
- st: { cardinal: f[0] },
- sv: { cardinal: f[4], ordinal: f[51] },
- sw: { cardinal: f[4] },
- syr: { cardinal: f[0] },
- ta: { cardinal: f[0] },
- te: { cardinal: f[0] },
- teo: { cardinal: f[0] },
- ti: { cardinal: f[1] },
- tig: { cardinal: f[0] },
- tk: { cardinal: f[0], ordinal: f[52] },
- tl: { cardinal: f[13], ordinal: f[0] },
- tn: { cardinal: f[0] },
- tr: { cardinal: f[0] },
- ts: { cardinal: f[0] },
- tzm: { cardinal: f[33] },
- ug: { cardinal: f[0] },
- uk: { cardinal: f[29], ordinal: f[53] },
- ur: { cardinal: f[4] },
- uz: { cardinal: f[0] },
- ve: { cardinal: f[0] },
- vo: { cardinal: f[0] },
- vun: { cardinal: f[0] },
- wa: { cardinal: f[1] },
- wae: { cardinal: f[0] },
- xh: { cardinal: f[0] },
- xog: { cardinal: f[0] },
- yi: { cardinal: f[4] },
- zu: { cardinal: f[2] },
- lo: { ordinal: f[0] },
- ms: { ordinal: f[0] },
- vi: { ordinal: f[0] }
- }
|