UNPKG

ter-localization-cli

Version:

Quick and powerful library for localization for react / react native application

111 lines (82 loc) 3.58 kB
#!/usr/bin/env node "use strict"; var _index = _interopRequireDefault(require("../helpers/index")); var _fs = _interopRequireDefault(require("fs")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); } function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); } function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } } processDirectory(_index.default.argv.options.file || './src'); function processDirectory(path) { var files = fileList(path); var allWords = files.reduce(function (total, file) { return [].concat(_toConsumableArray(total), _toConsumableArray(processFile(file))); }, []); var allUniqueWord = allWords.reduce(function (total, word) { if (total.every(function (w) { return word.group !== w.group || word.key !== w.key; })) { total.push(word); } return total; }, []); allUniqueWord.map(function (word) { addWord(word); }); } function addWord(_ref) { var group = _ref.group, key = _ref.key; var languages = _index.default.io.read(_index.default.config()); Object.keys(languages).map(function (code) { if (!languages[code][group]) { languages[code][group] = {}; } if (!languages[code][group][key]) { languages[code][group][key] = key; } }); _index.default.io.write(_index.default.config(), languages); } function fileList(dir, filelist) { var files = _fs.default.readdirSync(dir); filelist = filelist || []; files.forEach(function (file) { if (_fs.default.statSync(dir + '/' + file).isDirectory()) { filelist = fileList(dir + '/' + file, filelist); } else { filelist.push(dir + '/' + file); } }); return filelist; } ; function processFile(path) { var content = _fs.default.readFileSync(path, 'utf8'); var translateRegex = /(TranslateService.t\(['"`].*['"`]\)\(['"`].*['"`][,)])/gm; var matches = content.match(translateRegex); if (matches) { var words = matches.map(function (match) { return exportGroupAndKey(match); }); return words; } return []; } function exportGroupAndKey(string) { var regex = /^TranslateService.t\(['"`](.*)['"`]\)\(['"`](.*)['"`][,)]/gm; var _regex$exec = regex.exec(string), _regex$exec2 = _slicedToArray(_regex$exec, 3), match = _regex$exec2[0], group = _regex$exec2[1], key = _regex$exec2[2]; return { group: group, key: key }; }