UNPKG

ts-gimei

Version:

日本語の人物名や住所のテストデータを、漢字・ひらがな・カタカナ・ローマ字で出力します

76 lines (75 loc) 2.75 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Gimei = void 0; const fs_extra_1 = __importDefault(require("fs-extra")); const path_1 = __importDefault(require("path")); const yaml_1 = require("yaml"); class Gimei { person(params) { if (!this.namesData) this.loadNamesData(); const gender = params?.gender ?? getRandomItem(['male', 'female']); const firstNames = this.namesData.firstNames[gender]; const lastNames = this.namesData.lastNames; const firstName = getRandomItem(firstNames); const lastName = getRandomItem(lastNames); const fullName = { kanji: `${lastName.kanji} ${firstName.kanji}`, hiragana: `${lastName.hiragana} ${firstName.hiragana}`, katakana: `${lastName.katakana} ${firstName.katakana}`, romaji: `${lastName.romaji} ${firstName.romaji}`, }; return { firstName, lastName, fullName, gender, }; } address() { if (!this.addressesData) this.loadAddressesData(); const prefecture = getRandomItem(this.addressesData.prefecture); const city = getRandomItem(this.addressesData.city); const town = getRandomItem(this.addressesData.town); return { prefecture, city, town }; } loadNamesData() { const _path = path_1.default.join(__dirname, '..', 'data', 'names.yml'); const str = fs_extra_1.default.readFileSync(_path, 'utf8'); const ymlData = (0, yaml_1.parse)(str); this.namesData = { firstNames: { male: ymlData.first_name.male.map(parseItem), female: ymlData.first_name.female.map(parseItem), }, lastNames: ymlData.last_name.map(parseItem), }; } loadAddressesData() { const _path = path_1.default.join(__dirname, '..', 'data', 'addresses.yml'); const str = fs_extra_1.default.readFileSync(_path, 'utf8'); const ymlData = (0, yaml_1.parse)(str); this.addressesData = { prefecture: ymlData.addresses.prefecture.map(parseItem), city: ymlData.addresses.city.map(parseItem), town: ymlData.addresses.town.map(parseItem), }; } } exports.Gimei = Gimei; function parseItem(item) { const [kanji, hiragana, katakana, romaji] = item; return { kanji, hiragana, katakana, romaji, }; } function getRandomItem(array) { return array[Math.floor(Math.random() * array.length)]; }