Skip to content

Commit 0fa2341

Browse files
committed
Initial commit
0 parents  commit 0fa2341

File tree

114 files changed

+13443
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

114 files changed

+13443
-0
lines changed

.gitattributes

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# Auto detect text files and perform LF normalization
2+
* text=auto

index.html

+232
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,232 @@
1+
<!DOCTYPE html>
2+
<html lang="de">
3+
4+
<head>
5+
<title>Namensgenerator</title>
6+
<meta charset="utf-8">
7+
<meta name="viewport" content="width=device-width, initial-scale=1">
8+
<!-- Bootstrap CSS -->
9+
<link rel="stylesheet" href="styles/custom.css">
10+
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
11+
</head>
12+
<body>
13+
<div class="container mt-5">
14+
<h1><b>Namensgenerator</b></h1>
15+
<form id="nameGeneratorForm">
16+
<div class="row">
17+
<div class="col-md-4">
18+
<div class="form-group">
19+
<label for="raceDropdown"><b>Volk:</b></label>
20+
<select class="form-control small-dropdown" id="raceDropdown">
21+
<option id="randomRace">Zufall</option>
22+
<option id="humanRandom">Mensch - Zufall</option>
23+
<option id="humanArabic">Mensch - Arabisch</option>
24+
<option id="humanBantu">Mensch - Bantuisch</option>
25+
<option id="humanCeltic">Mensch - Keltisch</option>
26+
<option id="humanChinese">Mensch - Chinesisch</option>
27+
<option id="humanEgyptian">Mensch - Ägyptisch</option>
28+
<option id="humanGermanic">Mensch - Germanisch</option>
29+
<option id="humanGreek">Mensch - Griechisch</option>
30+
<option id="humanIndian">Mensch - Indisch</option>
31+
<option id="humanJapanese">Mensch - Japanisch</option>
32+
<option id="humanMesoAmerican">Mensch - Meso-Amerikanisch</option>
33+
<option id="humanPersian">Mensch - Persisch</option>
34+
<option id="humanPolynesian">Mensch - Polynesisch</option>
35+
<option id="humanRomanic">Mensch - Romanisch</option>
36+
<option id="humanScandinavian">Mensch - Skandinavisch</option>
37+
<option id="humanSlavic">Mensch - Slawisch</option>
38+
<option id="dwarf">Zwerg</option>
39+
<option id="elf">Elf</option>
40+
<option id="hafling">Halbling</option>
41+
<option id="gnome">Gnom</option>
42+
<option id="halfElf">Halbelf</option>
43+
<option id="halfOrc">Halbork</option>
44+
<option id="dragonborn">Drachenblütiger</option>
45+
<option id="tiefling">Tiefling</option>
46+
</select>
47+
</div>
48+
</div>
49+
<div class="col-md-4">
50+
<div class="form-group">
51+
<label for="genderDropdown"><b>Geschlecht:</b></label>
52+
<select class="form-control small-dropdown" id="genderDropdown">
53+
<option id="randomGender">Zufall</option>
54+
<option id="male">Männlich</option>
55+
<option id="female">Weiblich</option>
56+
<option id="nonBinary">Nicht-Binär</option>
57+
</select>
58+
</div>
59+
</div>
60+
<div class="col-md-4">
61+
<div class="form-group">
62+
<label for="nameTypeDropdown"><b>Namensart:</b></label>
63+
<select class="form-control small-dropdown" id="nameTypeDropdown">
64+
<option id="firstAndLastName">Vorname und Nachname</option>
65+
<option id="firstName">Vorname</option>
66+
<option id="lastName">Nachname</option>
67+
</select>
68+
</div>
69+
</div>
70+
</div>
71+
<div class="row">
72+
<div class="col-md-6">
73+
<div class="form-group">
74+
<label for="numberOfNames"><b>Anzahl der Namen:</b></label>
75+
<input type="number" class="form-control small-dropdown" id="numberOfNames" min="1" value="1">
76+
</div>
77+
</div>
78+
</div>
79+
80+
<div class="row">
81+
<div class="col-md-auto">
82+
<div class="form-group">
83+
<button type="submit" id="generateNamesButton" class="btn btn-secondary">Generieren</button>
84+
</div>
85+
</div>
86+
<div class="col-md-2">
87+
<div class="form-auto">
88+
<button type="button" id="copyNamesButton" class="btn btn-secondary">Kopieren</button>
89+
</div>
90+
</div>
91+
</div>
92+
93+
</form>
94+
<br>
95+
<h2>Generierte Namen:</h2>
96+
<div id="generatedNames"></div>
97+
<div class="container mt-4" id="container-generated-names">
98+
</div>
99+
</div>
100+
101+
<!-- <button type="button" class="btn btn-secondary btn-floating btn-lg mt-1" id="btn-back-to-top">
102+
<b style="font-size: 24px">^</b>
103+
</button> -->
104+
105+
<!-- Bootstrap JavaScript -->
106+
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
107+
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script>
108+
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
109+
110+
111+
<!--Scripts for generating the author's first name -->
112+
<script src="scripts/names/first_name/generateRandomFirstNameDragonbornFemale.js"></script>
113+
<script src="scripts/names/first_name/generateRandomFirstNameDragonbornMale.js"></script>
114+
<script src="scripts/names/first_name/generateRandomFirstNameDragonbornNonBinary.js"></script>
115+
<script src="scripts/names/first_name/generateRandomFirstNameDwarfFemale.js"></script>
116+
<script src="scripts/names/first_name/generateRandomFirstNameDwarfMale.js"></script>
117+
<script src="scripts/names/first_name/generateRandomFirstNameDwarfNonBinary.js"></script>
118+
<script src="scripts/names/first_name/generateRandomFirstNameElfFemale.js"></script>
119+
<script src="scripts/names/first_name/generateRandomFirstNameElfMale.js"></script>
120+
<script src="scripts/names/first_name/generateRandomFirstNameElfNonBinary.js"></script>
121+
<script src="scripts/names/first_name/generateRandomFirstNameGnomeFemale.js"></script>
122+
<script src="scripts/names/first_name/generateRandomFirstNameGnomeMale.js"></script>
123+
<script src="scripts/names/first_name/generateRandomFirstNameGnomeNonBinary.js"></script>
124+
<script src="scripts/names/first_name/generateRandomFirstNameHalfOrcFemale.js"></script>
125+
<script src="scripts/names/first_name/generateRandomFirstNameHalfOrcMale.js"></script>
126+
<script src="scripts/names/first_name/generateRandomFirstNameHalfOrcNonBinary.js"></script>
127+
<script src="scripts/names/first_name/generateRandomFirstNameHalflingFemale.js"></script>
128+
<script src="scripts/names/first_name/generateRandomFirstNameHalflingMale.js"></script>
129+
<script src="scripts/names/first_name/generateRandomFirstNameHalflingNonBinary.js"></script>
130+
<script src="scripts/names/first_name/generateRandomFirstNameHumanFemale.js"></script>
131+
<script src="scripts/names/first_name/generateRandomFirstNameHumanMale.js"></script>
132+
<script src="scripts/names/first_name/generateRandomFirstNameHumanNonBinary.js"></script>
133+
<script src="scripts/names/first_name/generateRandomFirstNameTieflingFemale.js"></script>
134+
<script src="scripts/names/first_name/generateRandomFirstNameTieflingMale.js"></script>
135+
<script src="scripts/names/first_name/generateRandomFirstNameTieflingNonBinary.js"></script>
136+
137+
<script src="scripts/names/first_name/generateRandomFirstNameHumanMaleArabic.js"></script>
138+
<script src="scripts/names/first_name/generateRandomFirstNameHumanMaleBantu.js"></script>
139+
<script src="scripts/names/first_name/generateRandomFirstNameHumanMaleCeltic.js"></script>
140+
<script src="scripts/names/first_name/generateRandomFirstNameHumanMaleChinese.js"></script>
141+
<script src="scripts/names/first_name/generateRandomFirstNameHumanMaleEgyptian.js"></script>
142+
<script src="scripts/names/first_name/generateRandomFirstNameHumanMaleGermanic.js"></script>
143+
<script src="scripts/names/first_name/generateRandomFirstNameHumanMaleGreek.js"></script>
144+
<script src="scripts/names/first_name/generateRandomFirstNameHumanMaleIndian.js"></script>
145+
<script src="scripts/names/first_name/generateRandomFirstNameHumanMaleJapanese.js"></script>
146+
<script src="scripts/names/first_name/generateRandomFirstNameHumanMaleMesoAmerican.js"></script>
147+
<script src="scripts/names/first_name/generateRandomFirstNameHumanMalePersian.js"></script>
148+
<script src="scripts/names/first_name/generateRandomFirstNameHumanMalePolynesian.js"></script>
149+
<script src="scripts/names/first_name/generateRandomFirstNameHumanMaleRomanesque.js"></script>
150+
<script src="scripts/names/first_name/generateRandomFirstNameHumanMaleScandinavian.js"></script>
151+
<script src="scripts/names/first_name/generateRandomFirstNameHumanMaleSlavic.js"></script>
152+
153+
154+
<script src="scripts/names/first_name/generateRandomFirstNameHumanFemaleArabic.js"></script>
155+
<script src="scripts/names/first_name/generateRandomFirstNameHumanFemaleBantu.js"></script>
156+
<script src="scripts/names/first_name/generateRandomFirstNameHumanFemaleCeltic.js"></script>
157+
<script src="scripts/names/first_name/generateRandomFirstNameHumanFemaleChinese.js"></script>
158+
<script src="scripts/names/first_name/generateRandomFirstNameHumanFemaleEgyptian.js"></script>
159+
<script src="scripts/names/first_name/generateRandomFirstNameHumanFemaleGermanic.js"></script>
160+
<script src="scripts/names/first_name/generateRandomFirstNameHumanFemaleGreek.js"></script>
161+
<script src="scripts/names/first_name/generateRandomFirstNameHumanFemaleIndian.js"></script>
162+
<script src="scripts/names/first_name/generateRandomFirstNameHumanFemaleJapanese.js"></script>
163+
<script src="scripts/names/first_name/generateRandomFirstNameHumanFemaleMesoAmerican.js"></script>
164+
<script src="scripts/names/first_name/generateRandomFirstNameHumanFemalePersian.js"></script>
165+
<script src="scripts/names/first_name/generateRandomFirstNameHumanFemalePolynesian.js"></script>
166+
<script src="scripts/names/first_name/generateRandomFirstNameHumanFemaleRomanesque.js"></script>
167+
<script src="scripts/names/first_name/generateRandomFirstNameHumanFemaleScandinavian.js"></script>
168+
<script src="scripts/names/first_name/generateRandomFirstNameHumanFemaleSlavic.js"></script>
169+
170+
<script src="scripts/names/first_name/generateRandomFirstNameHumanNonBinaryArabic.js"></script>
171+
<script src="scripts/names/first_name/generateRandomFirstNameHumanNonBinaryBantu.js"></script>
172+
<script src="scripts/names/first_name/generateRandomFirstNameHumanNonBinaryCeltic.js"></script>
173+
<script src="scripts/names/first_name/generateRandomFirstNameHumanNonBinaryChinese.js"></script>
174+
<script src="scripts/names/first_name/generateRandomFirstNameHumanNonBinaryEgyptian.js"></script>
175+
<script src="scripts/names/first_name/generateRandomFirstNameHumanNonBinaryGermanic.js"></script>
176+
<script src="scripts/names/first_name/generateRandomFirstNameHumanNonBinaryGreek.js"></script>
177+
<script src="scripts/names/first_name/generateRandomFirstNameHumanNonBinaryIndian.js"></script>
178+
<script src="scripts/names/first_name/generateRandomFirstNameHumanNonBinaryJapanese.js"></script>
179+
<script src="scripts/names/first_name/generateRandomFirstNameHumanNonBinaryMesoAmerican.js"></script>
180+
<script src="scripts/names/first_name/generateRandomFirstNameHumanNonBinaryPersian.js"></script>
181+
<script src="scripts/names/first_name/generateRandomFirstNameHumanNonBinaryPolynesian.js"></script>
182+
<script src="scripts/names/first_name/generateRandomFirstNameHumanNonBinaryRomanesque.js"></script>
183+
<script src="scripts/names/first_name/generateRandomFirstNameHumanNonBinaryScandinavian.js"></script>
184+
<script src="scripts/names/first_name/generateRandomFirstNameHumanNonBinarySlavic.js"></script>
185+
186+
<script src="scripts/names/last_name/generateRandomLastNameHumanArabic.js"></script>
187+
<script src="scripts/names/last_name/generateRandomLastNameHumanBantu.js"></script>
188+
<script src="scripts/names/last_name/generateRandomLastNameHumanCeltic.js"></script>
189+
<script src="scripts/names/last_name/generateRandomLastNameHumanChinese.js"></script>
190+
<script src="scripts/names/last_name/generateRandomLastNameHumanEgyptian.js"></script>
191+
<script src="scripts/names/last_name/generateRandomLastNameHumanGermanic.js"></script>
192+
<script src="scripts/names/last_name/generateRandomLastNameHumanGreek.js"></script>
193+
<script src="scripts/names/last_name/generateRandomLastNameHumanIndian.js"></script>
194+
<script src="scripts/names/last_name/generateRandomLastNameHumanJapanese.js"></script>
195+
<script src="scripts/names/last_name/generateRandomLastNameHumanMesoAmerican.js"></script>
196+
<script src="scripts/names/last_name/generateRandomLastNameHumanPersian.js"></script>
197+
<script src="scripts/names/last_name/generateRandomLastNameHumanPolynesian.js"></script>
198+
<script src="scripts/names/last_name/generateRandomLastNameHumanRomanesque.js"></script>
199+
<script src="scripts/names/last_name/generateRandomLastNameHumanScandinavian.js"></script>
200+
<script src="scripts/names/last_name/generateRandomLastNameHumanSlavic.js"></script>
201+
202+
<!--Scripts of syllables for names -->
203+
<script src="scripts/names/syllables_name/dragonbornNameSyllables.js"></script>
204+
<script src="scripts/names/syllables_name/dwarfNameSyllables.js"></script>
205+
<script src="scripts/names/syllables_name/elfNameSyllables.js"></script>
206+
<script src="scripts/names/syllables_name/gnomeNameSyllables.js"></script>
207+
<script src="scripts/names/syllables_name/halflingNameSyllables.js"></script>
208+
<script src="scripts/names/syllables_name/halfOrcNameSyllables.js"></script>
209+
<script src="scripts/names/syllables_name/humanNameSyllables.js"></script>
210+
<script src="scripts/names/syllables_name/tieflingNameSyllables.js"></script>
211+
212+
<!--Scripts for generating the last name -->
213+
<script src="scripts/names/last_name/generateRandomLastNameDragonborn.js"></script>
214+
<script src="scripts/names/last_name/generateRandomLastNameDwarf.js"></script>
215+
<script src="scripts/names/last_name/generateRandomLastNameElf.js"></script>
216+
<script src="scripts/names/last_name/generateRandomLastNameGnome.js"></script>
217+
<script src="scripts/names/last_name/generateRandomLastNameHalfling.js"></script>
218+
<script src="scripts/names/last_name/generateRandomLastNameHalfOrc.js"></script>
219+
<script src="scripts/names/last_name/generateRandomLastNameHuman.js"></script>
220+
221+
<script src="scripts/names/generateFirstName.js"></script>
222+
<script src="scripts/names/generateLastName.js"></script>
223+
<script src="scripts/names/generateNames.js"></script>
224+
<script src="scripts/names/generateRandomGender.js"></script>
225+
<script src="scripts/names/generateRandomRace.js"></script>
226+
<script src="scripts/names/generateRandomRegion.js"></script>
227+
228+
<script src="scripts/getRandomElement.js"></script>
229+
<script src="scripts/interface/eventListener.js"></script>
230+
</body>
231+
232+
</html>

scripts/getRandomElement.js

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
function getRandomElement(array) {
2+
const randomIndex = Math.floor(Math.random() * array.length);
3+
return array[randomIndex];
4+
}

scripts/interface/eventListener.js

+44
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
// Eventlistener für den Button "Generieren" hinzufügen
2+
document.getElementById('generateNamesButton').addEventListener('click', function () {
3+
generateNames();
4+
});
5+
6+
// Eventlistener für den Button "Kopieren" hinzufügen
7+
document.getElementById("copyNamesButton").addEventListener("click", function() {
8+
let container = document.getElementById("generatedNames").innerText;
9+
navigator.clipboard.writeText(container).then(function() {
10+
document.getElementById("copyNamesButton").innerText = "Kopiert!";
11+
setTimeout(function() {
12+
document.getElementById("copyNamesButton").innerText = "Kopieren";
13+
}, 2000); // 2 Sekunden verzögert
14+
}, function() {
15+
alert("Fehler beim Kopieren des Inhalts in die Zwischenablage.");
16+
});
17+
});
18+
19+
// Erstellt den Zurück nach oben-Button
20+
document.addEventListener("DOMContentLoaded", function() {
21+
// Erstellt den Zurück nach oben-Button
22+
let backToTopButton = document.createElement("button");
23+
backToTopButton.textContent = "^";
24+
backToTopButton.classList.add("btn", "btn-secondary", "back-to-top");
25+
backToTopButton.style.display = "none"; // Setzt den Button standardmäßig auf "versteckt"
26+
document.body.appendChild(backToTopButton);
27+
28+
// Überprüft, ob der Zurück nach oben-Button angezeigt oder ausgeblendet werden soll
29+
window.addEventListener("scroll", function() {
30+
if (window.scrollY > 200) { // Zeige den Button, wenn der Benutzer 200 Pixel nach unten gescrollt hat
31+
backToTopButton.style.display = "block";
32+
} else { // Verstecke den Button, wenn der Benutzer ganz oben ist
33+
backToTopButton.style.display = "none";
34+
}
35+
});
36+
37+
// Scrollt nach oben, wenn der Zurück nach oben-Button geklickt wird
38+
backToTopButton.addEventListener("click", function() {
39+
window.scrollTo({
40+
top: 0,
41+
behavior: "smooth"
42+
});
43+
});
44+
});
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
function generateRandomFirstNameDragonbornFemale() {
2+
let firstName;
3+
let previousVowel = '';
4+
let consecutiveVowels = 0;
5+
let consecutiveConsonants;
6+
let consecutiveXZQ;
7+
8+
function isDigraph(string) {
9+
return [
10+
'ch',
11+
'chs',
12+
'ck',
13+
'dh',
14+
'dsch',
15+
'dt',
16+
'gh',
17+
'ng',
18+
'ph',
19+
'sch',
20+
'sp',
21+
'ss',
22+
'st',
23+
'sz',
24+
'th',
25+
'tz',
26+
'tzsch',
27+
'zsch',
28+
].includes(string);
29+
}
30+
31+
do {
32+
const syllable1 =
33+
dragonbornFirstNameFemaleSyllable1[
34+
Math.floor(Math.random() * dragonbornFirstNameFemaleSyllable1.length)
35+
];
36+
const syllable2 =
37+
dragonbornFirstNameFemaleSyllable2[
38+
Math.floor(Math.random() * dragonbornFirstNameFemaleSyllable2.length)
39+
];
40+
const syllable3 =
41+
dragonbornFirstNameFemaleSyllable3[
42+
Math.floor(Math.random() * dragonbornFirstNameFemaleSyllable3.length)
43+
];
44+
const syllable4 =
45+
dragonbornFirstNameFemaleSyllable4[
46+
Math.floor(Math.random() * dragonbornFirstNameFemaleSyllable4.length)
47+
];
48+
const syllable5 =
49+
dragonbornFirstNameFemaleSyllable5[
50+
Math.floor(Math.random() * dragonbornFirstNameFemaleSyllable5.length)
51+
];
52+
53+
firstName = syllable1 + syllable2 + syllable3 + syllable4 + syllable5;
54+
55+
// Check for consecutive vowels
56+
const currentVowel = firstName.match(/[aeiou]/gi);
57+
if (currentVowel && currentVowel[0] === previousVowel) {
58+
consecutiveVowels++;
59+
} else {
60+
consecutiveVowels = 0;
61+
}
62+
63+
// Check for consecutive consonants, considering digraphs
64+
const syllablesArray = [syllable1, syllable2, syllable3, syllable4, syllable5];
65+
consecutiveConsonants = syllablesArray.some((syllable, index) => {
66+
if (index < syllablesArray.length - 1) {
67+
const combinedSyllables = syllable + syllablesArray[index + 1];
68+
return (
69+
!isDigraph(combinedSyllables) &&
70+
combinedSyllables.match(/[bcdfghjklmnpqrstvwxyz]{3,}/gi)
71+
);
72+
}
73+
return false;
74+
});
75+
76+
// Check for x, z, q consecutive
77+
consecutiveXZQ = firstName.match(/xz|xq|zx|zq|qz/gi);
78+
} while (
79+
consecutiveVowels > 1 ||
80+
firstName.match(/[aeiou]{4,}/gi) ||
81+
firstName.length < 3 ||
82+
firstName.length > 10 ||
83+
consecutiveConsonants ||
84+
consecutiveXZQ
85+
);
86+
87+
return firstName.charAt(0).toUpperCase() + firstName.slice(1);
88+
}

0 commit comments

Comments
 (0)