@huideyeren/type-gimei
Version:
type-gimei generates Japanese Language random data.
385 lines • 9.23 kB
JavaScript
import { ADDRESSES_DATA } from "./addresses_data";
import { NAMES_DATA } from "./names_data";
const jconv = require('jaconv');
export var GENDER;
(function (GENDER) {
GENDER["male"] = "male";
GENDER["female"] = "female";
})(GENDER || (GENDER = {}));
export class Gimei {
constructor(gender = undefined) {
this.name = new Name(gender);
this.address = new Address();
}
static get NAMES() {
return NAMES_DATA;
}
static get ADDRESSES() {
return ADDRESSES_DATA;
}
static get GENDER() {
return GENDER;
}
static get Random() {
return Random;
}
static randomName(gender = undefined) {
return new Name(gender);
}
static randomAddress() {
return new Address();
}
static randomMale() {
return Name.randomMale();
}
static randomFemale() {
return Name.randomFemale();
}
static createName() {
return new Name();
}
static createAddress() {
return new Address();
}
static kanji() {
return this.createName().kanji();
}
static katakana() {
return this.createName().katakana();
}
static romaji() {
return this.createName().romaji();
}
static first() {
return this.createName().first;
}
static last() {
return this.createName().last;
}
static prefecture() {
return this.createAddress().prefecture;
}
static city() {
return this.createAddress().city;
}
static town() {
return this.createAddress().town;
}
kanji() {
return this.name.kanji();
}
hiragana() {
return this.name.hiragana();
}
katakana() {
return this.name.katakana();
}
romaji() {
return this.name.romaji();
}
get first() {
return this.name.first;
}
get last() {
return this.name.last;
}
get prefecture() {
return this.address.prefecture;
}
get city() {
return this.address.city;
}
get town() {
return this.address.town;
}
toString() {
return this.name.kanji();
}
}
export class Name {
constructor(gender = undefined) {
this.gender = gender;
this.first = new FirstName(gender);
this.last = new LastName();
}
static randomMale() {
return new this(Gimei.GENDER.male);
}
static randomFemale() {
return new this(Gimei.GENDER.female);
}
static kanji() {
return (new this).kanji();
}
static hiragana() {
return (new this).hiragana();
}
static katakana() {
return (new this).katakana();
}
static romaji() {
return (new this).romaji();
}
toString() {
return "uheheheh";
}
kanji() {
return `${this.last.kanji()} ${this.first.kanji()}`;
}
hiragana() {
return `${this.last.hiragana()} ${this.first.hiragana()}`;
}
katakana() {
return `${this.last.katakana()} ${this.first.katakana()}`;
}
romaji() {
return `${this.last.romaji()} ${this.first.romaji()}`;
}
isMale() {
return this.gender == Gimei.GENDER.male;
}
isFemale() {
return this.gender == Gimei.GENDER.female;
}
}
export class FirstName {
constructor(gender = undefined) {
this.gender = gender || Random.randomGender();
let data_len = Gimei.NAMES['first_name'][this.gender].length - 1;
this.name = new NameWord(Gimei.NAMES['first_name'][this.gender][Random.random(0, data_len)]);
}
static createMale() {
return (new this(GENDER.male));
}
static createFemale() {
return (new this(GENDER.female));
}
kanji() {
return this.name.kanji();
}
hiragana() {
return this.name.hiragana();
}
katakana() {
return this.name.katakana();
}
romaji() {
return this.name.romaji();
}
isMale() {
return this.gender === GENDER.male;
}
isFemale() {
return this.gender === GENDER.female;
}
toString() {
return this.name.toString();
}
}
export class LastName {
constructor() {
let data_len = Gimei.NAMES['last_name'].length - 1;
this.name = new NameWord(Gimei.NAMES['last_name'][Random.random(0, data_len)]);
}
kanji() {
return this.name.kanji();
}
hiragana() {
return this.name.hiragana();
}
katakana() {
return this.name.katakana();
}
romaji() {
return this.name.romaji();
}
toString() {
return this.name.toString();
}
}
class NameWord {
constructor(name) {
this.name = name;
}
kanji() {
return this.name[0];
}
hiragana() {
return this.name[1];
}
katakana() {
return this.name[2];
}
romaji() {
let n = jconv.toHebon(this.hiragana());
return n.charAt(0) + n.slice(1).toLowerCase();
}
toString() {
return this.kanji();
}
}
export class Address {
constructor() {
this.prefecture = new Prefecture();
this.city = new City();
this.town = new Town();
}
static kanji() {
return (new this).kanji();
}
static hiragana() {
return (new this).hiragana();
}
static katakana() {
return (new this).katakana();
}
static romaji() {
return (new this).romaji();
}
toString() {
return "uheheheh";
}
kanji() {
return `${this.prefecture.kanji()}${this.city.kanji()}${this.town.kanji()}`;
}
hiragana() {
return `${this.prefecture.hiragana()}${this.city.hiragana()}${this.town.hiragana()}`;
}
katakana() {
return `${this.prefecture.katakana()}${this.city.katakana()}${this.town.katakana()}`;
}
romaji() {
return `${this.prefecture.romaji()} ${this.city.romaji()} ${this.town.romaji()}`;
}
}
export class Prefecture {
constructor() {
let data_len = Gimei.ADDRESSES['prefecture'].length - 1;
this.address = new AddressWord(Gimei.ADDRESSES['prefecture'][Random.random(0, data_len)]);
}
kanji() {
return this.address.kanji();
}
hiragana() {
return this.address.hiragana();
}
katakana() {
return this.address.katakana();
}
romaji() {
return this.address.romaji();
}
toString() {
return this.address.toString();
}
}
export class City {
constructor() {
let data_len = Gimei.ADDRESSES['city'].length - 1;
this.address = new AddressWord(Gimei.ADDRESSES['city'][Random.random(0, data_len)]);
}
kanji() {
return this.address.kanji();
}
hiragana() {
return this.address.hiragana();
}
katakana() {
return this.address.katakana();
}
romaji() {
return this.address.romaji();
}
toString() {
return this.address.toString();
}
}
export class Town {
constructor() {
let data_len = Gimei.ADDRESSES['town'].length - 1;
this.address = new AddressWord(Gimei.ADDRESSES['town'][Random.random(0, data_len)]);
}
kanji() {
return this.address.kanji();
}
hiragana() {
return this.address.hiragana();
}
katakana() {
return this.address.katakana();
}
romaji() {
return this.address.romaji();
}
toString() {
return this.address.toString();
}
}
class AddressWord {
constructor(address) {
this.address = address;
}
kanji() {
return this.address[0];
}
hiragana() {
return this.address[1];
}
katakana() {
return this.address[2];
}
romaji() {
let n = jconv.toHebon(this.hiragana());
return n.charAt(0) + n.slice(1).toLowerCase();
}
toString() {
return this.kanji();
}
}
export class Random {
constructor(seed) {
if (seed === undefined) {
let max = 100;
let min = 0;
seed = Math.floor(Math.random() * (max - min)) + min;
}
this.x = 123456789;
this.y = 345677911;
this.z = 567899233;
this.w = seed;
}
next() {
let t;
t = this.x ^ (this.x << 11);
this.x = this.y;
this.y = this.z;
this.z = this.w;
return this.w = (this.w ^ (this.w >>> 19)) ^ (t ^ (t >>> 8));
}
nextInt(min, max) {
const rand = Math.abs(this.next());
return min + (rand % (max + 1 - min));
}
static random(min = 0, max = 1) {
let rand = new Random();
return rand.nextInt(min, max);
}
static randomGender(min = 0, max = 1) {
let rand = new Random();
let index = rand.nextInt(min, max);
let gender;
switch (index) {
case 0:
gender = GENDER.male;
break;
case 1:
gender = GENDER.female;
break;
default:
gender = GENDER.male;
break;
}
return gender;
}
}
//# sourceMappingURL=gimei.js.map