Skip to content

Commit

Permalink
feat(cli): Improve category printing, including vars for strings
Browse files Browse the repository at this point in the history
  • Loading branch information
eemeli committed Aug 20, 2019
1 parent 1ccc8db commit 9c0a8d8
Show file tree
Hide file tree
Showing 5 changed files with 144 additions and 128 deletions.
15 changes: 15 additions & 0 deletions packages/cli/src/common-categories.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
export const combinedCategories = [
'{cardinal:[x],ordinal:[x]}',
'{cardinal:[o,x],ordinal:[x]}',
'{cardinal:[o,x],ordinal:[o,x]}',
'{cardinal:[o,t,x],ordinal:[x]}',
'{cardinal:[o,f,m,x],ordinal:[x]}'
]

export const cardinalCategories = [
'{cardinal:[x],ordinal:[]}',
'{cardinal:[o,x],ordinal:[]}',
'{cardinal:[o,t,x],ordinal:[]}',
'{cardinal:[o,f,x],ordinal:[]}',
'{cardinal:[o,f,m,x],ordinal:[]}'
]
12 changes: 0 additions & 12 deletions packages/cli/src/common.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,6 @@ export const combined = {
return (n == 1 && v0) ? 'one' : 'other';
}
`
],
categories: [
'{cardinal:["other"],ordinal:["other"]}',
'{cardinal:["one","other"],ordinal:["other"]}',
'{cardinal:["one","other"],ordinal:["one","other"]}',
'{cardinal:["one","two","other"],ordinal:["other"]}'
]
}

Expand Down Expand Up @@ -61,11 +55,5 @@ export const cardinals = {
return (n == 1 && v0) ? 'one' : 'other';
}
`
],
categories: [
'{cardinal:["other"],ordinal:[]}',
'{cardinal:["one","other"],ordinal:[]}',
'{cardinal:["one","other"],ordinal:[]}',
'{cardinal:["one","two","other"],ordinal:[]}'
]
}
21 changes: 15 additions & 6 deletions packages/cli/src/print-categories.js
Original file line number Diff line number Diff line change
@@ -1,23 +1,31 @@
import { identifier } from 'safe-identifier'
import * as common from './common'
import { cardinalCategories, combinedCategories } from './common-categories'
import getCompiler from './get-compiler'
import printUMD from './print-umd'

const NAMES = { zero: 'z', one: 'o', two: 't', few: 'f', many: 'm', other: 'x' }

function stringifyCategories({ cardinal, ordinal }) {
function catList(list) {
const vars = list.map(name => NAMES[name])
return vars.join(',')
}
return `{cardinal:[${catList(cardinal)}],ordinal:[${catList(ordinal)}]}`
}

export default function printCategoriesModule(args) {
const MakePlural = getCompiler(args)
const { locale, ordinals, umd } = args
const locales =
locale.length === 0 ? Object.keys(MakePlural.rules.cardinal) : locale.sort()
const commonCategories = ordinals
? common.combined.categories
: common.cardinals.categories
const commonCategories = ordinals ? combinedCategories : cardinalCategories

const usedCommonCategories = {}
const categories = locales.map(lc => {
const mpc = new MakePlural(lc)
mpc.compile()
mpc.test()
const cat = JSON.stringify(mpc.categories).replace(/"(\w+)":/g, '$1:')
const cat = stringifyCategories(mpc.categories)
const i = commonCategories.indexOf(cat)
if (i === -1) {
return [lc, cat]
Expand All @@ -28,7 +36,8 @@ export default function printCategoriesModule(args) {
})

const varType = umd ? 'var' : 'const'
let str = ''
const varNames = Object.keys(NAMES).map(name => `${NAMES[name]} = "${name}"`)
let str = `${varType} ${varNames.join(', ')};\n`
for (let i = 0; i < commonCategories.length; ++i) {
if (usedCommonCategories[i])
str += `${varType} _${i} = ${commonCategories[i]};\n`
Expand Down
112 changes: 57 additions & 55 deletions packages/plurals/pluralCategories.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
var _0 = {cardinal:["other"],ordinal:["other"]};
var _1 = {cardinal:["one","other"],ordinal:["other"]};
var _2 = {cardinal:["one","other"],ordinal:["one","other"]};
var _3 = {cardinal:["one","two","other"],ordinal:["other"]};
var z = "zero", o = "one", t = "two", f = "few", m = "many", x = "other";
var _0 = {cardinal:[x],ordinal:[x]};
var _1 = {cardinal:[o,x],ordinal:[x]};
var _2 = {cardinal:[o,x],ordinal:[o,x]};
var _3 = {cardinal:[o,t,x],ordinal:[x]};
var _4 = {cardinal:[o,f,m,x],ordinal:[x]};

(function (root, pluralCategories) {
if (typeof define === 'function' && define.amd) {
Expand All @@ -15,38 +17,38 @@ var _3 = {cardinal:["one","two","other"],ordinal:["other"]};
af: _1,
ak: _1,
am: _1,
ar: {cardinal:["zero","one","two","few","many","other"],ordinal:["other"]},
ars: {cardinal:["zero","one","two","few","many","other"],ordinal:["other"]},
as: {cardinal:["one","other"],ordinal:["one","two","few","many","other"]},
ar: {cardinal:[z,o,t,f,m,x],ordinal:[x]},
ars: {cardinal:[z,o,t,f,m,x],ordinal:[x]},
as: {cardinal:[o,x],ordinal:[o,t,f,m,x]},
asa: _1,
ast: _1,
az: {cardinal:["one","other"],ordinal:["one","few","many","other"]},
be: {cardinal:["one","few","many","other"],ordinal:["few","other"]},
az: {cardinal:[o,x],ordinal:[o,f,m,x]},
be: {cardinal:[o,f,m,x],ordinal:[f,x]},
bem: _1,
bez: _1,
bg: _1,
bh: _1,
bm: _0,
bn: {cardinal:["one","other"],ordinal:["one","two","few","many","other"]},
bn: {cardinal:[o,x],ordinal:[o,t,f,m,x]},
bo: _0,
br: {cardinal:["one","two","few","many","other"],ordinal:["other"]},
br: {cardinal:[o,t,f,m,x],ordinal:[x]},
brx: _1,
bs: {cardinal:["one","few","other"],ordinal:["other"]},
ca: {cardinal:["one","other"],ordinal:["one","two","few","other"]},
bs: {cardinal:[o,f,x],ordinal:[x]},
ca: {cardinal:[o,x],ordinal:[o,t,f,x]},
ce: _1,
cgg: _1,
chr: _1,
ckb: _1,
cs: {cardinal:["one","few","many","other"],ordinal:["other"]},
cy: {cardinal:["zero","one","two","few","many","other"],ordinal:["zero","one","two","few","many","other"]},
cs: _4,
cy: {cardinal:[z,o,t,f,m,x],ordinal:[z,o,t,f,m,x]},
da: _1,
de: _1,
dsb: {cardinal:["one","two","few","other"],ordinal:["other"]},
dsb: {cardinal:[o,t,f,x],ordinal:[x]},
dv: _1,
dz: _0,
ee: _1,
el: _1,
en: {cardinal:["one","other"],ordinal:["one","two","few","other"]},
en: {cardinal:[o,x],ordinal:[o,t,f,x]},
eo: _1,
es: _1,
et: _1,
Expand All @@ -59,19 +61,19 @@ fo: _1,
fr: _2,
fur: _1,
fy: _1,
ga: {cardinal:["one","two","few","many","other"],ordinal:["one","other"]},
gd: {cardinal:["one","two","few","other"],ordinal:["one","two","few","other"]},
ga: {cardinal:[o,t,f,m,x],ordinal:[o,x]},
gd: {cardinal:[o,t,f,x],ordinal:[o,t,f,x]},
gl: _1,
gsw: _1,
gu: {cardinal:["one","other"],ordinal:["one","two","few","many","other"]},
gu: {cardinal:[o,x],ordinal:[o,t,f,m,x]},
guw: _1,
gv: {cardinal:["one","two","few","many","other"],ordinal:["other"]},
gv: {cardinal:[o,t,f,m,x],ordinal:[x]},
ha: _1,
haw: _1,
he: {cardinal:["one","two","many","other"],ordinal:["other"]},
hi: {cardinal:["one","other"],ordinal:["one","two","few","many","other"]},
hr: {cardinal:["one","few","other"],ordinal:["other"]},
hsb: {cardinal:["one","two","few","other"],ordinal:["other"]},
he: {cardinal:[o,t,m,x],ordinal:[x]},
hi: {cardinal:[o,x],ordinal:[o,t,f,m,x]},
hr: {cardinal:[o,f,x],ordinal:[x]},
hsb: {cardinal:[o,t,f,x],ordinal:[x]},
hu: _2,
hy: _2,
ia: _1,
Expand All @@ -81,52 +83,52 @@ ii: _0,
_in: _0,
io: _1,
is: _1,
it: {cardinal:["one","other"],ordinal:["many","other"]},
it: {cardinal:[o,x],ordinal:[m,x]},
iu: _3,
iw: {cardinal:["one","two","many","other"],ordinal:["other"]},
iw: {cardinal:[o,t,m,x],ordinal:[x]},
ja: _0,
jbo: _0,
jgo: _1,
ji: _1,
jmc: _1,
jv: _0,
jw: _0,
ka: {cardinal:["one","other"],ordinal:["one","many","other"]},
ka: {cardinal:[o,x],ordinal:[o,m,x]},
kab: _1,
kaj: _1,
kcg: _1,
kde: _0,
kea: _0,
kk: {cardinal:["one","other"],ordinal:["many","other"]},
kk: {cardinal:[o,x],ordinal:[m,x]},
kkj: _1,
kl: _1,
km: _0,
kn: _1,
ko: _0,
ks: _1,
ksb: _1,
ksh: {cardinal:["zero","one","other"],ordinal:["other"]},
ksh: {cardinal:[z,o,x],ordinal:[x]},
ku: _1,
kw: _3,
ky: _1,
lag: {cardinal:["zero","one","other"],ordinal:["other"]},
lag: {cardinal:[z,o,x],ordinal:[x]},
lb: _1,
lg: _1,
lkt: _0,
ln: _1,
lo: {cardinal:["other"],ordinal:["one","other"]},
lt: {cardinal:["one","few","many","other"],ordinal:["other"]},
lv: {cardinal:["zero","one","other"],ordinal:["other"]},
lo: {cardinal:[x],ordinal:[o,x]},
lt: _4,
lv: {cardinal:[z,o,x],ordinal:[x]},
mas: _1,
mg: _1,
mgo: _1,
mk: {cardinal:["one","other"],ordinal:["one","two","many","other"]},
mk: {cardinal:[o,x],ordinal:[o,t,m,x]},
ml: _1,
mn: _1,
mo: {cardinal:["one","few","other"],ordinal:["one","other"]},
mr: {cardinal:["one","other"],ordinal:["one","two","few","other"]},
ms: {cardinal:["other"],ordinal:["one","other"]},
mt: {cardinal:["one","few","many","other"],ordinal:["other"]},
mo: {cardinal:[o,f,x],ordinal:[o,x]},
mr: {cardinal:[o,x],ordinal:[o,t,f,x]},
ms: {cardinal:[x],ordinal:[o,x]},
mt: _4,
my: _0,
nah: _1,
naq: _3,
Expand All @@ -143,45 +145,45 @@ nso: _1,
ny: _1,
nyn: _1,
om: _1,
or: {cardinal:["one","other"],ordinal:["one","two","few","many","other"]},
or: {cardinal:[o,x],ordinal:[o,t,f,m,x]},
os: _1,
pa: _1,
pap: _1,
pl: {cardinal:["one","few","many","other"],ordinal:["other"]},
prg: {cardinal:["zero","one","other"],ordinal:["other"]},
pl: _4,
prg: {cardinal:[z,o,x],ordinal:[x]},
ps: _1,
pt: _1,
pt_PT: _1,
rm: _1,
ro: {cardinal:["one","few","other"],ordinal:["one","other"]},
ro: {cardinal:[o,f,x],ordinal:[o,x]},
rof: _1,
root: _0,
ru: {cardinal:["one","few","many","other"],ordinal:["other"]},
ru: _4,
rwk: _1,
sah: _0,
saq: _1,
sc: {cardinal:["one","other"],ordinal:["many","other"]},
scn: {cardinal:["one","other"],ordinal:["many","other"]},
sc: {cardinal:[o,x],ordinal:[m,x]},
scn: {cardinal:[o,x],ordinal:[m,x]},
sd: _1,
sdh: _1,
se: _3,
seh: _1,
ses: _0,
sg: _0,
sh: {cardinal:["one","few","other"],ordinal:["other"]},
shi: {cardinal:["one","few","other"],ordinal:["other"]},
sh: {cardinal:[o,f,x],ordinal:[x]},
shi: {cardinal:[o,f,x],ordinal:[x]},
si: _1,
sk: {cardinal:["one","few","many","other"],ordinal:["other"]},
sl: {cardinal:["one","two","few","other"],ordinal:["other"]},
sk: _4,
sl: {cardinal:[o,t,f,x],ordinal:[x]},
sma: _3,
smi: _3,
smj: _3,
smn: _3,
sms: _3,
sn: _1,
so: _1,
sq: {cardinal:["one","other"],ordinal:["one","many","other"]},
sr: {cardinal:["one","few","other"],ordinal:["other"]},
sq: {cardinal:[o,x],ordinal:[o,m,x]},
sr: {cardinal:[o,f,x],ordinal:[x]},
ss: _1,
ssy: _1,
st: _1,
Expand All @@ -194,19 +196,19 @@ teo: _1,
th: _0,
ti: _1,
tig: _1,
tk: {cardinal:["one","other"],ordinal:["few","other"]},
tk: {cardinal:[o,x],ordinal:[f,x]},
tl: _2,
tn: _1,
to: _0,
tr: _1,
ts: _1,
tzm: _1,
ug: _1,
uk: {cardinal:["one","few","many","other"],ordinal:["few","other"]},
uk: {cardinal:[o,f,m,x],ordinal:[f,x]},
ur: _1,
uz: _1,
ve: _1,
vi: {cardinal:["other"],ordinal:["one","other"]},
vi: {cardinal:[x],ordinal:[o,x]},
vo: _1,
vun: _1,
wa: _1,
Expand Down
Loading

0 comments on commit 9c0a8d8

Please sign in to comment.