randchar: a fun start
This commit is contained in:
parent
4d6fad59c9
commit
ccceccbb25
4 changed files with 262 additions and 3 deletions
|
@ -431,7 +431,6 @@ export const string_split_once = (
|
||||||
return [str.slice(0, idx), str.slice(idx + on.length)];
|
return [str.slice(0, idx), str.slice(idx + on.length)];
|
||||||
};
|
};
|
||||||
|
|
||||||
// TODO: not stringly-typed style
|
|
||||||
export const HomestuckSpan = ({
|
export const HomestuckSpan = ({
|
||||||
children,
|
children,
|
||||||
color,
|
color,
|
||||||
|
|
259
html/random-character.tsx
Normal file
259
html/random-character.tsx
Normal file
|
@ -0,0 +1,259 @@
|
||||||
|
import { JSX } from "preact/jsx-runtime";
|
||||||
|
import { render_and_copy } from "./common.tsx";
|
||||||
|
|
||||||
|
// let's do 100 first and last names OKAY
|
||||||
|
//
|
||||||
|
// cat ~/Documents/dictionary.txt | grep -e '^.\{6,7\}$' | shuf | head -n 100
|
||||||
|
// okay let's be a bit more selective yikes
|
||||||
|
// cat ~/Documents/dictionary.txt | grep -E '^....$' | shuf | head -n 100 | awk 'BEGIN {print("[")} {print(" \"" $1 "\",")} END {print("]")}' | xsel -ib
|
||||||
|
// cat ~/Documents/dictionary.txt | grep -E '^[^n][^i][^g]....?$' | shuf | head -n 100 | awk 'BEGIN {print("[")} {print(" \"" $1 "\",")} END {print("]")}' | xsel -ib
|
||||||
|
// that is a COMPREHENSIVE dictionary D:
|
||||||
|
|
||||||
|
const FIRST_NAMES = [
|
||||||
|
"tree",
|
||||||
|
"saka",
|
||||||
|
"pass",
|
||||||
|
"kexy",
|
||||||
|
"pici",
|
||||||
|
"kurd",
|
||||||
|
"xxii",
|
||||||
|
"lide",
|
||||||
|
"huke",
|
||||||
|
"palm",
|
||||||
|
"levi",
|
||||||
|
"dago",
|
||||||
|
"they",
|
||||||
|
"smut",
|
||||||
|
"filt",
|
||||||
|
"cump",
|
||||||
|
"upgo",
|
||||||
|
"zoid",
|
||||||
|
"army",
|
||||||
|
"anta",
|
||||||
|
"arbs",
|
||||||
|
"ferv",
|
||||||
|
"stan",
|
||||||
|
"wabe",
|
||||||
|
"jami",
|
||||||
|
"purs",
|
||||||
|
"deys",
|
||||||
|
"vamp",
|
||||||
|
"mese",
|
||||||
|
"migs",
|
||||||
|
"pile",
|
||||||
|
"susu",
|
||||||
|
"olio",
|
||||||
|
"ipse",
|
||||||
|
"gelt",
|
||||||
|
"idem",
|
||||||
|
"eden",
|
||||||
|
"pont",
|
||||||
|
"vica",
|
||||||
|
"corv",
|
||||||
|
"kell",
|
||||||
|
"elul",
|
||||||
|
"ecod",
|
||||||
|
"maid",
|
||||||
|
"kays",
|
||||||
|
"fine",
|
||||||
|
"taws",
|
||||||
|
"coul",
|
||||||
|
"shag",
|
||||||
|
"aren",
|
||||||
|
"ruse",
|
||||||
|
"anre",
|
||||||
|
"spex",
|
||||||
|
"perp",
|
||||||
|
"koff",
|
||||||
|
"west",
|
||||||
|
"sild",
|
||||||
|
"vina",
|
||||||
|
"itch",
|
||||||
|
"neal",
|
||||||
|
"jhow",
|
||||||
|
"cozy",
|
||||||
|
"moun",
|
||||||
|
"copy",
|
||||||
|
"fict",
|
||||||
|
"gulp",
|
||||||
|
"slon",
|
||||||
|
"tuny",
|
||||||
|
"tolt",
|
||||||
|
"erns",
|
||||||
|
"eyas",
|
||||||
|
"thro",
|
||||||
|
"reno",
|
||||||
|
"warm",
|
||||||
|
"lone",
|
||||||
|
"erst",
|
||||||
|
"koel",
|
||||||
|
"vila",
|
||||||
|
"rump",
|
||||||
|
"kmet",
|
||||||
|
"drow",
|
||||||
|
"polt",
|
||||||
|
"orts",
|
||||||
|
"hlqn",
|
||||||
|
"adib",
|
||||||
|
"dabb",
|
||||||
|
"dhak",
|
||||||
|
"tyke",
|
||||||
|
"arni",
|
||||||
|
"bagh",
|
||||||
|
"holt",
|
||||||
|
"wart",
|
||||||
|
"bull",
|
||||||
|
"mayo",
|
||||||
|
"tiam",
|
||||||
|
"dose",
|
||||||
|
"dogs",
|
||||||
|
"dine",
|
||||||
|
"wych",
|
||||||
|
"poet",
|
||||||
|
"meh",
|
||||||
|
].map(name => name[0].toUpperCase() + name.slice(1));
|
||||||
|
|
||||||
|
const LAST_NAMES = [
|
||||||
|
"paragon",
|
||||||
|
"phossy",
|
||||||
|
"burghal",
|
||||||
|
"templum",
|
||||||
|
"osteome",
|
||||||
|
"deicide",
|
||||||
|
"lockrum",
|
||||||
|
"inhale",
|
||||||
|
"celoms",
|
||||||
|
"outsit",
|
||||||
|
"plaints",
|
||||||
|
"stubby",
|
||||||
|
"flabrum",
|
||||||
|
"elcaja",
|
||||||
|
"thrang",
|
||||||
|
"caretta",
|
||||||
|
"retune",
|
||||||
|
"unplace",
|
||||||
|
"adlumin",
|
||||||
|
"garcon",
|
||||||
|
"brainy",
|
||||||
|
"slyest",
|
||||||
|
"tsktsks",
|
||||||
|
"bodock",
|
||||||
|
"crummer",
|
||||||
|
"actions",
|
||||||
|
"wrapped",
|
||||||
|
"emeril",
|
||||||
|
"traneen",
|
||||||
|
"wrought",
|
||||||
|
"detinue",
|
||||||
|
"ascarid",
|
||||||
|
"swimbel",
|
||||||
|
"leaped",
|
||||||
|
"ericoid",
|
||||||
|
"solano",
|
||||||
|
"barware",
|
||||||
|
"infarce",
|
||||||
|
"bullets",
|
||||||
|
"frankly",
|
||||||
|
"euboean",
|
||||||
|
"jymold",
|
||||||
|
"besugo",
|
||||||
|
"smaragd",
|
||||||
|
"suiting",
|
||||||
|
"muconic",
|
||||||
|
"goujay",
|
||||||
|
"caynard",
|
||||||
|
"pupped",
|
||||||
|
"verdict",
|
||||||
|
"brangle",
|
||||||
|
"potions",
|
||||||
|
"touart",
|
||||||
|
"fraena",
|
||||||
|
"peising",
|
||||||
|
"replial",
|
||||||
|
"unbaste",
|
||||||
|
"sandbug",
|
||||||
|
"roosed",
|
||||||
|
"refind",
|
||||||
|
"illipe",
|
||||||
|
"runner",
|
||||||
|
"implate",
|
||||||
|
"atoxyl",
|
||||||
|
"favous",
|
||||||
|
"opcode",
|
||||||
|
"fuegian",
|
||||||
|
"cadging",
|
||||||
|
"soapbox",
|
||||||
|
"fessed",
|
||||||
|
"deworm",
|
||||||
|
"browzer",
|
||||||
|
"uncurl",
|
||||||
|
"toelike",
|
||||||
|
"posnet",
|
||||||
|
"mortem",
|
||||||
|
"whippa",
|
||||||
|
"invests",
|
||||||
|
"aphagia",
|
||||||
|
"attent",
|
||||||
|
"esopgi",
|
||||||
|
"resorb",
|
||||||
|
"succula",
|
||||||
|
"levulic",
|
||||||
|
"enlace",
|
||||||
|
"busbars",
|
||||||
|
"rocket",
|
||||||
|
"sexuous",
|
||||||
|
"provers",
|
||||||
|
"condole",
|
||||||
|
"caveman",
|
||||||
|
"cattily",
|
||||||
|
"buddie",
|
||||||
|
"trikaya",
|
||||||
|
"ladlers",
|
||||||
|
"gorbet",
|
||||||
|
"tarkani",
|
||||||
|
"acquit",
|
||||||
|
"shohjis",
|
||||||
|
"shilloo",
|
||||||
|
"bark",
|
||||||
|
].map(name => name[0].toUpperCase() + name.slice(1));
|
||||||
|
|
||||||
|
// has some defaults
|
||||||
|
export const Prngnoun = ({
|
||||||
|
prns,
|
||||||
|
style = {},
|
||||||
|
}: {
|
||||||
|
prns: string[];
|
||||||
|
style?: JSX.CSSProperties;
|
||||||
|
}) => (
|
||||||
|
<img
|
||||||
|
src={`https://pyrope.net/prngnouns?p=${prns.join("&p=")}`}
|
||||||
|
style={{
|
||||||
|
display: "inline",
|
||||||
|
height: "0.9rem",
|
||||||
|
...style,
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
|
||||||
|
// what is gained from having this on cohost... hm
|
||||||
|
// export const InlineRandImage
|
||||||
|
// because the randomly generated parts are so nicely integrated (if you have courier)
|
||||||
|
// i'm thinking i'll frame it like "your guy is ..." instead of "you are ..."
|
||||||
|
// idk
|
||||||
|
|
||||||
|
render_and_copy(
|
||||||
|
<p
|
||||||
|
style={{
|
||||||
|
lineHeight: "1rem",
|
||||||
|
fontFamily: "courier-std, courier, monospace",
|
||||||
|
fontWeight: "bold",
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
Your name is <Prngnoun prns={FIRST_NAMES} />{" "}
|
||||||
|
<Prngnoun prns={LAST_NAMES} />. You are{" "}
|
||||||
|
<Prngnoun
|
||||||
|
prns={Array.from({ length: 200 }).map((_, i) => i.toString())}
|
||||||
|
/>{" "}
|
||||||
|
years old. Cool!
|
||||||
|
</p>
|
||||||
|
);
|
|
@ -62,7 +62,7 @@ async function get_pronoun_image(prn: string): Promise<Uint8Array> {
|
||||||
const MAX_PRN_LENGTH = 32;
|
const MAX_PRN_LENGTH = 32;
|
||||||
const MAX_PRN_CACHE = 64;
|
const MAX_PRN_CACHE = 64;
|
||||||
// shouldn't really be a problem
|
// shouldn't really be a problem
|
||||||
const MAX_PRN_CHOICES = 128;
|
const MAX_PRN_CHOICES = 256;
|
||||||
|
|
||||||
function clean_up() {
|
function clean_up() {
|
||||||
if (images.size <= MAX_PRN_CACHE) {
|
if (images.size <= MAX_PRN_CACHE) {
|
||||||
|
|
|
@ -153,7 +153,8 @@ const secret_messages = [
|
||||||
"it would be cool if floppies were actually reliable",
|
"it would be cool if floppies were actually reliable",
|
||||||
"epic win! this message has a 1% chance of appearing! share with your friends",
|
"epic win! this message has a 1% chance of appearing! share with your friends",
|
||||||
"you should try curling terezi.pyrope.net",
|
"you should try curling terezi.pyrope.net",
|
||||||
"caltrop.dev has a ton of cool stuff; the caltrop.dev/meta/map helps",
|
"Stubborn tiny lights vs. clustering darkness forever ok?",
|
||||||
|
// "caltrop.dev has a ton of cool stuff; the caltrop.dev/meta/map helps",
|
||||||
"i used a typescript type error to track my progress to one hundred messages",
|
"i used a typescript type error to track my progress to one hundred messages",
|
||||||
"haskell...",
|
"haskell...",
|
||||||
"lean4...",
|
"lean4...",
|
||||||
|
|
Loading…
Reference in a new issue