Initial import from local backup (Documents-Playground/pakerpale)
This commit is contained in:
75
node_modules/relative-time-format/bin/generate-locale-quantifiers.js
generated
vendored
Normal file
75
node_modules/relative-time-format/bin/generate-locale-quantifiers.js
generated
vendored
Normal file
@@ -0,0 +1,75 @@
|
||||
// CLDR data package is periodically being updated.
|
||||
// `npm install cldr-data@latest --save-dev`
|
||||
|
||||
import CLDR from 'cldr-data'
|
||||
import plurals from 'make-plural'
|
||||
import MakePlural from 'make-plural/make-plural'
|
||||
import UglifyJS from 'uglify-js'
|
||||
import path from 'path'
|
||||
import fs from 'fs-extra'
|
||||
|
||||
import getLocalesListInCLDR from '../source/CLDR/getLocalesList'
|
||||
|
||||
const CLDR_LOCALES = getLocalesListInCLDR()
|
||||
|
||||
// Generate a pluralization function for each language
|
||||
for (const locale of Object.keys(plurals)) {
|
||||
// // Some keys are locales, e.g. "pt-PT".
|
||||
// // (whatever that means)
|
||||
// const language = locale.split('-')[0]
|
||||
|
||||
// Don't know what the "root" key is for so skip it.
|
||||
if (locale === 'root') {
|
||||
continue
|
||||
}
|
||||
|
||||
// If this locale has no relative time labels
|
||||
// in CLDR data then skip it.
|
||||
if (CLDR_LOCALES.indexOf(locale) < 0) {
|
||||
continue
|
||||
}
|
||||
|
||||
// `make-plural` library converts
|
||||
// CLDR pluralization rules
|
||||
// into a javascript function.
|
||||
// https://github.com/eemeli/make-plural.js
|
||||
const MakePlurals = MakePlural.load(
|
||||
CLDR('supplemental/plurals'),
|
||||
// Ordinals aren't needed for relative date/time formatting
|
||||
// CLDR('supplemental/ordinals')
|
||||
)
|
||||
|
||||
// Pluralization function code
|
||||
const functionCode = new MakePlurals(locale).toString('classify')
|
||||
|
||||
// Minify pluralization function code
|
||||
let { error, code } = UglifyJS.minify(functionCode)
|
||||
|
||||
if (error) {
|
||||
throw error
|
||||
}
|
||||
|
||||
// Strip function name.
|
||||
code = code.replace('function classify(', 'function(')
|
||||
|
||||
// If quantifier always returns "other"
|
||||
// it's as if it wasn't specified at all.
|
||||
if (code === 'function(n){return"other"}') {
|
||||
continue
|
||||
}
|
||||
|
||||
// Write pluralization function to a file.
|
||||
fs.outputFileSync(
|
||||
path.join(__dirname, '../locale', locale, 'quantify.js'),
|
||||
`module.exports=${code}`
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a list of all locales supported by CLDR.
|
||||
* @return {string[]}
|
||||
*/
|
||||
function listAllCLDRLocales() {
|
||||
return fs.readdirSync(path.join(__dirname, '../node_modules/cldr-dates-full/main/'))
|
||||
.filter(name => fs.statSync(path.join(__dirname, '../node_modules/cldr-dates-full/main', name)).isDirectory())
|
||||
}
|
||||
Reference in New Issue
Block a user