85 lines
2.4 KiB
JavaScript
85 lines
2.4 KiB
JavaScript
import path from 'path'
|
|
import fs from 'fs-extra'
|
|
|
|
for (const locale of listAllRelativeTimeFormatLocales())
|
|
{
|
|
const localeData = require('relative-time-format/locale/' + locale)
|
|
|
|
const localeDirectory = path.join(__dirname, '../locale', locale)
|
|
|
|
// Extra flavors.
|
|
const EXTRA_STYLES = [
|
|
'short-time',
|
|
'short-convenient',
|
|
'long-time',
|
|
'long-convenient',
|
|
'tiny'
|
|
]
|
|
|
|
const extraStyleDirectories = {}
|
|
|
|
for (const style of EXTRA_STYLES) {
|
|
const directory = findFlavorDirectory(locale, style)
|
|
if (directory) {
|
|
extraStyleDirectories[style] = directory
|
|
}
|
|
}
|
|
|
|
// Create `index.js` file in the locale directory.
|
|
fs.outputFileSync(
|
|
path.join(localeDirectory, 'index.js'),
|
|
`
|
|
var locale = require('relative-time-format/locale/${locale}')
|
|
|
|
module.exports = {
|
|
${[
|
|
'locale: locale.locale',
|
|
'// Standard styles.',
|
|
'long: locale.long',
|
|
'short: locale.short',
|
|
'narrow: locale.narrow',
|
|
Object.keys(extraStyleDirectories).length > 0 && '// Additional styles.',
|
|
...Object.keys(extraStyleDirectories).map(style => "'" + style + "': require('" + extraStyleDirectories[style] + "/" + style + ".json')"),
|
|
localeData.quantify && "// Quantifier.",
|
|
localeData.quantify && "quantify: locale.quantify",
|
|
]
|
|
.filter(_ => _)
|
|
.join(',\n\t')
|
|
.replace(/\.,\n/g, '.\n')}
|
|
}
|
|
`.trim()
|
|
)
|
|
}
|
|
|
|
/**
|
|
* Returns a list of all locales supported by `relative-time-format`.
|
|
* @return {string[]}
|
|
*/
|
|
export function listAllRelativeTimeFormatLocales() {
|
|
return fs.readdirSync(path.join(__dirname, '../node_modules/relative-time-format/locale/'))
|
|
.filter(_ => fs.statSync(path.join(__dirname, '../node_modules/relative-time-format/locale', _)).isDirectory())
|
|
}
|
|
|
|
/**
|
|
* Returns the relative path to a directory where
|
|
* a given "flavor" (short, long, narrow) labels file
|
|
* resides for a given locale.
|
|
* @param {string} locale
|
|
* @param {string} flavor
|
|
* @return {string} [directory]
|
|
*/
|
|
function findFlavorDirectory(locale, flavor) {
|
|
if (fs.existsSync(path.join(__dirname, '../locale-more-styles', locale, `${flavor}.json`))) {
|
|
return `../../locale-more-styles/${locale}`
|
|
}
|
|
}
|
|
|
|
// /**
|
|
// * "long-convenient" -> "longConvenient".
|
|
// * @param {string} string
|
|
// * @return {string}
|
|
// */
|
|
// function toCamelCase(string) {
|
|
// string = string.split('-').map(_ => _[0].toUpperCase() + _.slice(1)).join('')
|
|
// return string[0].toLowerCase() + string.slice(1)
|
|
// }
|