@benev/slate
Version:
frontend web stuff
73 lines (62 loc) • 1.19 kB
text/typescript
const vowels = [..."aeiou"]
const consonants = [..."bcdfghjklmnpqrstvwxyz"]
const patterns = {
firstName: [
"oxo",
"ox",
"oxox",
"oxoo",
"ooxo",
"xo",
"xox",
"xoxo",
"xoox",
"xooxo",
"xoxox",
"xoxxo",
"xoxxox",
"xoxoo",
"xoxoox",
],
lastName: [
"oxxoxo",
"oxoxxox",
"oxooxo",
"oxooxox",
"oxooxoo",
"xoxxoxo",
"xoxxoo",
"xooxxo",
"xooxox",
"xoxxoxox",
"xoxoxoxo",
"xoxoxoxox",
"xoxxoxo",
"xoxoxxox",
],
}
function grabOne(arr: string[]) {
const index = Math.floor(Math.random() * arr.length)
return arr[index]
}
function generateName(patterns: string[]) {
const pattern = grabOne(patterns)
const name: string[] = []
for (const character of pattern) switch (character) {
case "x": name.push(grabOne(consonants)); break
case "o": name.push(grabOne(vowels)); break
default: name.push(" ")
}
return name
.map((c, i) => i === 0 ? c.toUpperCase() : c)
.join("")
}
export function randomFirstName() {
return generateName(patterns.firstName)
}
export function randomLastName() {
return generateName(patterns.lastName)
}
export function randomFullName() {
return `${randomFirstName()} ${randomLastName()}`
}