UNPKG

gimei

Version:

Random Japanese name and address generator. Node.js port of gimei with TypeScript support.

55 lines (47 loc) 1.91 kB
'use strict'; // Name generator class-style but compatible with old API module.exports = { names : [], gender : 'male', firstNames : [], lastNames : [], firstNamesIndex : 0, lastNamesIndex : 0, isFirst : false, isLast : false, setNames : function (names) { this.names = names; return this; }, setGender : function (gender) { this.gender = gender; this.firstNames = this.names['first_name'][this.gender]; this.lastNames = this.names['last_name']; this.firstNamesIndex = Math.floor(Math.random() * this.firstNames.length); this.lastNamesIndex = Math.floor(Math.random() * this.lastNames.length); return this; }, isMale : function () { return this.gender === 'male'; }, isFemale : function () { return this.gender === 'female';}, first : function () { this.isFirst = true; return this; }, last : function () { this.isLast = true; return this; }, kanji : function () { return this.createName(0); }, hiragana : function () { return this.createName(1); }, katakana : function () { return this.createName(2); }, english : function () { return this.createName(3); }, // helpers createFirstName : function (i) { return this.firstNames[this.firstNamesIndex][i]; }, createLastName : function (i) { return this.lastNames[this.lastNamesIndex][i]; }, createFullName : function (i) { return this.createLastName(i) + ' ' + this.createFirstName(i); }, createName : function (i) { let str; if (this.isFirst) { str = this.createFirstName(i); this.isFirst = false; } else if (this.isLast) { str = this.createLastName(i); this.isLast = false; } else { str = this.createFullName(i); } return str; } };