Skip to content

Instantly share code, notes, and snippets.

@Xevion
Created June 8, 2023 00:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Xevion/02048a3184db3546a6276a45e0fb918b to your computer and use it in GitHub Desktop.
Save Xevion/02048a3184db3546a6276a45e0fb918b to your computer and use it in GitHub Desktop.
adject = ['adult human', 'AFAB', 'alpha', 'AMAB', 'anime', 'biological', 'butch', 'cisgender', 'ex', 'failed', 'female', 'FtM', 'gamer', 'gay', 'gender neutral', 'it/its', 'male', 'MtF', 'neurodivergent', 'normal', 'non-binary', 'pathetic', 'punished', 'sigma', 'they/them', 'transgender', 'transsexual']
prefix = [ 'a', 'allo', 'andro', 'bi', 'boy', 'cat', 'cis', 'demi', 'dog', 'doll', 'fem', 'fluid', 'gender', 'girl', 'grey-a', 'guy', 'hetero', 'homo', 'him', 'inter', 'intra', 'les', 'lesbo', 'male', 'man', 'masc', 'macro', 'meta', 'micro', 'neo', 'neutro', 'non', 'nu', 'pan', 'poly', 'post', 'pre', 'she', 't', 'tom', 'trans', 'them', 'tri', 'x-', 'xirl'];
suffix = ['bian', 'binary', 'bo', 'boi', 'boy', 'butch', 'bxy', 'by', 'cat', 'dog', 'doll', 'fem', 'femme', 'friend', 'flux', 'fucky', 'gal', 'gender', 'girl', 'guy', 'gxrl', 'gyne', 'husband', 'lesbian', 'masc', 'male', 'man', 'moder', 'queer', 'sex', 'vir', 'wife', 'witch', 'woman', 'xirl'];
flags = {
nonbinary: ['#fcf434', '#fcfcfc', '#9c59d1', '#2c2c2c'],
transgender: ['#5bcefa', '#f5a9b8', 'white', '#f5a9b8', '#5bcefa'],
bigender: ['#c479a0', '#eca6cb', '#d5c7e8', 'white', '#d5c7e8', '#9ac7e8', '#6c83cf'],
genderqueer: ['#b57fdc', 'white', '#4b8124'],
genderfluid: ['#ff75a2', 'white', '#be18d6', 'black', '#333ebd'],
demiboy: ['#7f7f7f', '#c4c4c4', '#9ad9eb', 'white', '#9ad9eb', '#c4c4c4', '#7f7f7f'],
demigirl: ['#7f7f7f', '#c4c4c4', '#ffaec9', 'white', '#ffaec9', '#c4c4c4', '#7f7f7f'],
femboy: ['#d161a4', '#e4aecd', 'white', '#56cef7', 'white', '#e4aecd', '#d161a4'],
lesbian: ['#d52d00', '#ef7627', '#ff9a56', 'white', '#d162a4', '#b55690', '#a30262']
}
flags["adult human female"] = flags["genderqueer"];
flags["transgirl"] = flags["transfem"] = flags["transfemme"] = flags["transboy"] = flags["transmasc"] = flags["transgender"];
flags["bilesbian"] = flags["lesbian"];
bgFlag = "nonbinary";
gender = '';
function shareBut() {
navigator.clipboard.writeText(window.location.href + '#' + encodeURIComponent(gender));
if (document.getElementById('main').innerText == 'catboy' || document.getElementById('main').innerText == 'catgirl') {
document.getElementById('share').innerText = "nyaa~";
} else {
document.getElementById('share').innerText = "copied!";
}
setTimeout(()=>document.getElementById('share').innerText='share', 700);
}
function loader() {
if (window.location.hash.length > 0) {
gender = decodeURIComponent(window.location.hash.substring(1));
document.getElementById("main").innerText = gender
history.replaceState(null, null, ' ');
if (flags.hasOwnProperty(gender)) {
flagify(gender);
}
}
}
function flagify(backgroundFlag) {
document.documentElement.style.backgroundImage = "linear-gradient(" +
flags[backgroundFlag].map((clr, idx, arr) => `${clr} ${100 / arr.length * idx}% ${100 / arr.length * (idx + 1)}%`).join(',') + ")";
bgFlag = backgroundFlag;
}
function generate() {
adj = '';
if (Math.floor(Math.random() * 6) == 0) {
adj = adject[Math.floor(Math.random() * adject.length)] + ' ';
if (Math.floor(Math.random() * 10) == 0) {
adj = adj + adject[Math.floor(Math.random() * adject.length)] + ' ';
}
}
pre = prefix[Math.floor(Math.random() * prefix.length)];
suf = suffix[Math.floor(Math.random() * suffix.length)];
gender = pre + suf
if (Math.floor(Math.random() * 100) == 0) {
pre = ''; // because it's funny sometimes
}
// some things that probably shouldn't happen
if (gender == 'abo') {
pre = 'a-';
console.log("nope nope nope that's a slur, gotta fix that");
}
if (gender == 'nubian') {
pre = 'nu-';
}
if (gender == 'femmale') {
pre = 'fe';
}
gender = adj + pre + suf;
if (Math.floor(Math.random() * 12) == 0) {
pre = prefix[Math.floor(Math.random() * prefix.length)];
suf = suffix[Math.floor(Math.random() * suffix.length)];
gender = gender + " " + pre + suf;
}
document.getElementById('main').innerText=gender;
if (flags.hasOwnProperty(gender)) {
flagify(gender);
}
else if (bgFlag !== "nonbinary") {
flagify("nonbinary");
}
}
window.addEventListener('popstate', loader);
window.addEventListener('DOMContentLoaded', loader);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment