48 lines
1.4 KiB
JavaScript
48 lines
1.4 KiB
JavaScript
|
|
function singNameGame(name) {
|
|||
|
|
|
|||
|
|
// normalize name
|
|||
|
|
name = name.toLowerCase();
|
|||
|
|
name = name[0].toUpperCase() + name.slice(1);
|
|||
|
|
|
|||
|
|
// ... and sometimes y
|
|||
|
|
// let's pray this works
|
|||
|
|
let firstVowelPos = (function() {
|
|||
|
|
let vowels =
|
|||
|
|
'aeiouàáâãäåæèéêëìíîïòóôõöøùúûüāăąēĕėęěĩīĭįıijōŏőœũūŭůűų'
|
|||
|
|
.split('');
|
|||
|
|
function isVowel(char) {
|
|||
|
|
return vowels.indexOf(char) >= 0;
|
|||
|
|
}
|
|||
|
|
if (isVowel(name[0].toLowerCase())) return 0;
|
|||
|
|
if (name[0] == 'Y' && !isVowel(name[1])) return 0;
|
|||
|
|
if (name[0] == 'Y' && isVowel(name[1])) return 1;
|
|||
|
|
vowels = vowels.concat(vowels, 'yÿý'.split(''));
|
|||
|
|
for (let i = 1; i < name.length; i++)
|
|||
|
|
if (isVowel(name[i])) return i;
|
|||
|
|
})();
|
|||
|
|
|
|||
|
|
let init = name[0].toLowerCase(),
|
|||
|
|
trunk = name.slice(firstVowelPos).toLowerCase(),
|
|||
|
|
b = trunk, f = trunk, m = trunk;
|
|||
|
|
|
|||
|
|
switch (init) {
|
|||
|
|
case 'b': f = 'f' + trunk; m = 'm' + trunk; break;
|
|||
|
|
case 'f': b = 'b' + trunk; m = 'm' + trunk; break;
|
|||
|
|
case 'm': b = 'b' + trunk; f = 'f' + trunk; break;
|
|||
|
|
default: b = 'b' + trunk; f = 'f' + trunk; m = 'm' + trunk;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return `
|
|||
|
|
<p>${name}, ${name}, bo-${b}<br>
|
|||
|
|
Banana-fana fo-${f}<br>
|
|||
|
|
Fee-fi-fo-mo-${m}<br>
|
|||
|
|
${name}!<br></p>
|
|||
|
|
`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// testing
|
|||
|
|
let names =
|
|||
|
|
'Gary Earl Billy Felix Mary Christine Brian Yvonne Yannick'.split(' ');
|
|||
|
|
for (let i = 0; i < names.length; i++)
|
|||
|
|
document.write(singNameGame(names[i]));
|