lr-i18n
Version:
Allows to connect your `Laravel` Framework localization files with `React`.
36 lines (35 loc) • 1.3 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.convertToKeyType = convertToKeyType;
exports.saveKeyTypeToFile = saveKeyTypeToFile;
const fs_1 = __importDefault(require("fs"));
const path_1 = __importDefault(require("path"));
/**
*
* @param dirname
* @param basename
*/
function convertToKeyType(dirname, basename) {
const result = fs_1.default.readFileSync(`${dirname + path_1.default.sep + basename}.json`, 'utf8');
const obj = Object.entries(JSON.parse(result));
let str = '';
obj.forEach(([key], index) => {
// Escaping a key
const escKey = key.replace(/[!@#$%^&*()+=\-[\]\\';,/{}|":<>?~_]/g, '\\$&');
str = obj.length === 1 || obj.length - 1 === index ? `${str}'${escKey}'` : `${str}'${escKey}'|`;
});
return str;
}
/**
*
* @param keys
* @param dirname
*/
function saveKeyTypeToFile(keys, dirname = 'resources/js') {
const sanitizeDirname = dirname.replace(/[\\/]$/, '') + path_1.default.sep;
const data = `export type I18nKeyType = ${keys};`.replace(/[\r\n]+/g, '');
fs_1.default.writeFileSync(`${sanitizeDirname}LaravelReactI18n.types.ts`, data);
}