<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="style.css">
<script src="script.js"></script>
</head>
<body>
<form name="form">
<input type="button" value="Generate Region Name" onclick="generateRegion()">
<input type="button" value="Generate People Name" onclick="generatePeople()">
x
<input type="text" name="quantity">
</form>
<br>
<div id="output"></div>
</body>
</html>
// Code goes here
// Code goes here
var initials = ['b', 'bl', 'br', 'bh', 'd', 'dr', 'f', 'fr', 'fl', 'ph', 'g', 'gr', 'gl', 'gh', 'h', 'j', 'c', 'k', 'ch', 'cl', 'cr', 'chr', 'l', 'm', 'n', 'kn', 'gn', 'p', 'pr', 'pl', 'r', 'wr', 's', 'ps', 'sc', 'sch', 't', 'pt', 'v', 'w', 'wh', 'y', 'z', 'th', 'ch', 'sh', 'qu'];
var nucleii = ['a', 'e', 'i', 'o', 'u', 'ae', 'ee', 'ie', 'oe', 'ue', 'oo', 'au', 'oi', 'ai', 'ea', 'y', 'ye', 'ou', 'oy', 'ey', 'uy', 'ay'];
var finals = ['b', 'd', 'f', 'g', 'ge', 'dge', 'ck', 'x', 'ks', 'cks', 'l', 'm', 'mb', 'n', 'p', 'r', 's', 'se', 'ce', 't', 'v', 've', 'w', 'we', 'y', 'z', 'th', 'the', 'ch', 'tch', 'sh', 'sch', 'ng'];
function random(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
function phoneme(forceInitial) {
var config = random(1, 3);
var target = '';
if (forceInitial)
config = config | 1;
var initial = random(0, initials.length - 1);
var nucleus = random(0, nucleii.length - 1);
var final = random(0, finals.length - 1);
if ((config & 1) == 1)
target += initials[initial];
target += nucleii[nucleus];
if ((config & 2) == 2) {
target += finals[final];
}
return {
result: config,
text: target,
};
}
function correctCase(text) {
return text.substring(0, 1).toUpperCase() + text.substring(1);
}
function regionName() {
var count = random(1, 2);
var force = false;
var word = '';
for (var j = 0; j < count || word.length < 2; j++) {
var result = phoneme(force);
force = ((result.result & 2) === 0);
word += result.text;
}
word = correctCase(word);
if (word.length < 5 && random(0, 3) === 0) {
var secondWord = correctCase(phoneme(false).text);
word = word + ' ' + secondWord;
}
return word;
}
function peopleName(base) {
var vowels = ['a', 'e', 'i', 'o', 'u', 'y'];
if (base.indexOf(' ') >= 0) {
switch (random(0, 2)) {
case 0:
base = base;
break;
case 1:
base = base.substring(0, base.indexOf(' '));
break;
case 2:
base = base.substring(base.indexOf(' ') + 1);
break;
}
}
if (vowels.indexOf(base.substring(base.length - 1), 1) < 0) {
switch (random(0, 2)) {
case 0:
return base + 'ian';
case 1:
return base + 'i';
case 2:
return base + 'ish';
}
} else {
switch (random(0, 3)) {
case 0:
return base + 'an';
case 1:
return base;
case 2:
if (base.length < 5)
return base + 'ic';
return base.substring(0, base.length - 1) + 'ic';
case 3:
if (base.length < 5)
return base + 'ish';
return base.substring(0, base.length - 1) + 'ish';
}
}
return base;
}
function generateRegion() {
var quantityString = document.forms.form.quantity.value;
var numberRegex = new RegExp('^[0-9]+$');
quantity = 1;
if (numberRegex.test(quantityString))
quantity = parseInt(quantityString);
var output = '';
for (var i = 0; i < quantity; i++)
output += regionName() + '<br>';
document.getElementById('output').innerHTML = output;
}
function generatePeople() {
var quantityString = document.forms.form.quantity.value;
var numberRegex = new RegExp('^[0-9]+$');
quantity = 1;
if (numberRegex.test(quantityString))
quantity = parseInt(quantityString);
var output = '';
for (var i = 0; i < quantity; i++) {
var region = regionName();
output += 'The ' + peopleName(region) + ' people of ' + region + '<br>';
}
document.getElementById('output').innerHTML = output;
}
/* Styles go here */
Random name generator for both places and the people from those places.