Skip to content

Instantly share code, notes, and snippets.

@rhilo
Created July 27, 2023 21:35
Show Gist options
  • Select an option

  • Save rhilo/1c9220a5483017a84b259b0bce8a70e0 to your computer and use it in GitHub Desktop.

Select an option

Save rhilo/1c9220a5483017a84b259b0bce8a70e0 to your computer and use it in GitHub Desktop.
Linux Distro Name Generator
<div class="wrapper">
<div class="output">
<span class="output"></span>
<button onclick="generate()">Generate</button>
</div>
</div>
console.clear();
var pattern = Trianglify({
height: 2400,
width: 2400,
cell_size: 160});
document.body.appendChild(pattern.canvas());
var name = "",
chars = "abcdefghijklmnopqrstuvwxyz",
vowels = "aeiou".split(""),
consonants = "bcdfghjklmnpqrstvwxyz".split(""),
char, index, found;
function isVowel(char){
return vowels.indexOf(char) !== -1;
}
function isConsonant(char){
return consonants.indexOf(char) !== -1;
}
function type(char){
if(char === undefined)return null;
if(isVowel(char))return "vowel";
if(isConsonant(char))return "consonant";
}
function select(string){
return string[Math.floor(Math.random()*string.length)];
}
function valid(char, name){
var prev = name[name.length-1];
if(name.length > 0){
prev = prev.toLowerCase();
if(prev === "a"){
return select(consonants);
} else if(prev === "b"){
return select(vowels);
} else if(prev === "c"){
return select(vowels.concat(["hkrl"]));
} else if(prev === "d"){
return select(vowels);
} else if(prev === "e"){
return select(consonants.concat("aiou".split("")));
} else if(prev === "f"){
return select(vowels.concat("lr".split("")));
} else if(prev === "g"){
return select(vowels.concat("lhnr".split("")));
} else if(prev === "h"){
return select(vowels);
} else if(prev === "i"){
return select("abcdfklmnoprstvxz");
} else if(prev === "j"){
return select(vowels);
} else if(prev === "k"){
return select("aeiloruwy");
} else if(prev === "l"){
return select("aeikmnopstuy");
} else if(prev === "m"){
return select("abeiopuy");
} else if(prev === "n"){
return select("acegikoqsuvxy");
} else if(prev === "o"){
return select("acdeghilmnprstuwxyz");
} else if(prev === "p"){
return select("aehilorsuy");
} else if(prev === "q"){
return "u";
} else if(prev === "r"){
return select("adegilmnotuvxyz");
} else if(prev === "s"){
return select("acehiklmnopqtuw");
} else if(prev === "t"){
return select("aehioruwy");
} else if(prev === "u"){
return select("aeio");
} else if(prev === "v"){
return select("aeiory");
} else if(prev === "w"){
return select("aehio");
} else if(prev === "x"){
return select("aei");
} else if(prev === "y"){
return select("aeo");
} else if(prev === "z"){
return select(vowels);
}
return char;
} else {
return char;
}
return "";
}
function generate(){
name = "";
found = "";
while(name.length < Math.floor(Math.random()*5)+4){
prev = name[name.length-1];
do {
if(name.length === 0)
char = select("abcdfghijklmnopqrstvwxyz");
else
char = select(chars);
} while((found = valid(char, name)) === "");
char = found;
if(name.length === 0)char = char.toUpperCase();
name += char;
}
name += " "+(Math.floor(Math.random()*10)+Math.floor(Math.random()*10));
name += ".";
name += Math.floor(Math.random()*10).toString()+Math.floor(Math.random()*10);
document.querySelector("span.output").innerText = name;
}
generate();
<script src="https://cdnjs.cloudflare.com/ajax/libs/trianglify/0.2.1/trianglify.min.js"></script>
@import url(https://fonts.googleapis.com/css?family=Open+Sans);
canvas {
width: 100vw;
height: 100vh;
position: fixed;
top: 0;
left: 0;
z-index: 0;
}
.wrapper {
background: rgba(0, 0, 0, .5);
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
z-index: 1;
text-align: center;
padding: 16px;
width: 240px;
height: 160px
}
div.output {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
}
span {
white-space: nowrap;
font: 2em "Open Sans", Verdana, sans-serif;
font-weight: 300;
display: block;
color: #fff;
margin: 8px
}
button {
cursor: pointer;
font: 1em "Open Sans", Verdana, sans-serif;
border: 0;
outline: 0;
margin: 0;
padding: 0;
width: 160px;
height: 48px;
background: #3c6;
color: #fff;
border: thin solid #fff;
outline: thin solid #3c6;
transition: .25s ease-in-out;
text-transform: uppercase;
}
button:hover {
color: #3c6;
background: #fff;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment