123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- const fs = require('fs');
- const path = require('path');
- const usage = `USAGE:
- node ${path.basename(process.argv[1])} [options] source_dir
- source_dir: path to the locale directory of bootstrap-datepicker's source
- Options:
- -h|--help print this help
- `;
- const src = process.argv[2];
- if (!src || src === '-h' || src === '--help') {
- console.log(usage);
- process.exit();
- }
- if (!fs.existsSync(src) || !fs.statSync(src).isDirectory()) {
- console.error(`${src} is not a directory.`);
- process.exit(1);
- }
- const reFilename = /^bootstrap-datepicker\.([a-z]+(-[A-Za-z]+)?)\.js$/;
- const files = fs.readdirSync(src);
- if (files.length < 2 || !reFilename.test(files[1])) {
- console.error(`${src} is not a bootstrap-datepicker's locale directory.`);
- process.exit(1);
- }
- const destDir = path.resolve(__dirname, '../js/i18n/locales');
- if (!fs.existsSync(destDir)) {
- fs.mkdirSync(destDir, {recursive: true});
- }
- files.forEach(file => {
- const matched = file.match(reFilename);
- if (!matched) {
- return;
- }
- const lang = matched[1].replace('latin', 'latn');
- if (lang === 'en-US') {
- return;
- }
- const langKey = lang.indexOf('-') > -1 ? `'${lang}'` : lang;
- let contents = fs.readFileSync(path.resolve(src, file), 'utf8');
- if (contents.indexOf('DEPRECATED') > -1) {
- return;
- }
- contents = contents
- .replace(/\t/g, ' ')
- .replace(/; *\( *function *\( *\$ *\) *\{/, 'export default {')
- .replace(/ *\$\.fn\.datepicker\.dates\[.+?\] =/, ` ${langKey}:`)
- .replace(/ *};/, ' }')
- .replace(/ *\} *\( *jQuery *\) *\);\s*/, '};\n')
- .replace(/ {5,}/g, ' ')
- .replace(/: *(\S)/g, ': $1')
- .replace(/ +\n/g, '\n')
- .replace(/(titleFormat:.+)yyyy/, '$1y');
- fs.writeFileSync(path.resolve(destDir, `${lang}.js`), contents);
- });
|