gimei
Version:
Random Japanese name and address generator. Node.js port of gimei with TypeScript support.
55 lines (47 loc) • 1.91 kB
JavaScript
'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;
}
};