Current section
Files
Jump to
Current section
Files
lib/silly.ex
defmodule Silly do
@moduledoc """
Documentation for `Silly`.
"""
# despite the fact that the language natively supports random selection from linked lists
# I think we'd rather use a tuple here, right? random access from a tuple should be O(1)
# and it's not like we're going to ever change this list
@names {
"curtis",
"curt",
"cortez",
"dan",
"daniel",
"jenn",
"jennifer",
"bennifer",
"nick",
"nikki",
"nicholas",
"jason",
"jayson",
"jesse",
"ron",
"ronald",
"graham",
"gramm",
"seanna",
"burnt umber",
"neil",
"kneel",
"gunter",
"gunther",
"goonter",
"kyle",
"kial",
"ashley",
"bashley",
"mashley",
"bryan",
"brian",
"broin",
"calle",
"chris",
"christopher",
"kris",
"criss",
"kriss",
"alex",
"pontus",
"thomas",
"tomas",
"isaac",
"euan",
"herman",
"gorman",
"craig",
"crag",
"todd",
"tod",
"ars",
"rich",
"richard",
"richie",
"alexis",
"alexo",
"cody",
"codee",
"john",
"jonn",
"fred",
"frod",
"sarah",
"sara",
"sharrah",
"django",
#adventures times
"jake",
"jork",
"marcelline",
"finn",
#grumps
"barry",
"ross",
"russ",
"arin",
"aron",
"danny",
"denny",
"suzy",
"sooze",
#2020's horrifying baby names
"sekani",
"ermias",
"amias",
"kyro",
"ambrose",
"amoura",
"theodora",
"navy",
"emani",
"yaritza",
"zara",
"mila",
"cora",
"bode",
"zaid",
"jaxton",
"bryson",
"chad",
"bowie",
"coen",
"emmarie",
"saniyah",
"tatiana",
"zhavia",
"jayden",
"linua",
"luna",
"linux",
"maeve",
"aurora",
"olive garden",
"ilsa",
"isla",
"milo",
"asher",
"atticus",
"oliver",
"levi",
"ellis",
"phoenix",
"remy",
"romy",
"ramy",
"raimi",
"michelle",
"marlowe",
"shea",
"sebastian",
"sheabastian",
"seb",
# worst baby names
"lexi",
"bort",
"gorb",
"barf",
"barfinkel",
"boomquisha",
"jorberto",
"wenderrl",
"chervy",
"jamantha",
"hamantha",
"squorindo",
"callibeth",
"ezlithaborb",
"elizabreth",
"elizabeth",
"amamba",
"amambo",
"amoeba",
"amooba",
"awooga",
"shorbert",
"clarm",
"janarthanon",
"crabitha",
"tressica",
"surfbort",
"jennennifer",
"benjammin",
"robot",
"tomtom",
"carome",
"pubert",
"olga",
"alicia",
"eugene",
"fluffy",
"boris",
"ian",
"eeyore",
"tula",
"melfrid",
"mike",
"mork",
"felicity",
"erwin",
"bartholemew",
"melvin",
"malvin",
"mackenzie",
"esmeralda",
"gil",
"sasha",
"barney",
"shaniqua",
"sherlock",
"shylock",
"boy",
"baby",
"uthgherd",
"missing texture",
"meldor",
"olivia",
"maverick",
"beberly",
"danger",
"merika",
"yunique",
"shakira",
"beyonce",
"vejonica",
"derfla",
"phelony",
"moxie",
"garden",
"jammy",
"mazen",
"hunk",
"prince",
"cameron",
"blanket",
"jermajesty",
"moon unit",
"kimmy",
"billy bob",
"winifred",
"wilford",
"sandford",
"gertrude",
"pillow",
"pill",
"jessifer",
"brick",
"hope",
"jack",
"keith",
"helga",
"tiny",
"willy",
"lawrence",
"jessica",
"king",
"yoshi",
"ichiro",
"angus",
"natasha",
"alice",
"lilly",
"astrid",
"saga",
"freja",
"wilma",
"stella",
"molly",
"leah",
"ines",
"sigrid",
"celine",
"lykke",
"joline",
"amanda",
"marco",
"lorenzo",
"antonio",
"vito",
"norberto",
"diego",
"luca",
"giovanni",
"stefano",
"laura",
"rosa",
"gianna",
"pietro",
"zhang wei",
"liu wei",
"li qiang",
"chuck",
"trent",
"trenton",
"chad",
"chadwick",
"ermagerd",
"harry",
"steve",
"yolanda",
"tara",
"rusty",
"ivana",
"owin",
"owen",
"testy",
"carl",
"albert",
"cornelius",
"timothy",
"kiko",
"wilhelm",
"pierre",
"tiffany",
"ben",
"bento",
"heather",
"travis",
"courteney",
"tracy",
"yang",
"vivian",
"ryan",
"shirley",
"phil",
"andy",
"spalding",
"joao",
"gabriel",
"lucas",
"matheus",
"victor",
"luiz",
"noah",
"benjamin",
"sophia",
"emma",
"liam",
"garol",
"jimothy",
"tedward",
"ted",
"jacob",
"logan",
"chloe",
"samuel",
"jayden",
"hannah",
"avery",
"zoe",
"madison",
"carter",
"felix",
"leo",
"charles",
"korg",
"thor",
"brincely",
"quim",
"aria",
"grace",
"hunter",
"dylan",
"audrey",
"austin",
"jaxon",
"nora",
"ivy",
"romy",
"levi",
"juliet",
"parker",
"piper",
"sara",
"cole",
"ryder",
"simon",
"lauren",
"fyodor",
"mark",
"quigley",
"ender",
#simpsons
"homer",
"marge",
"lisa",
"bart",
"ralph",
"seymour",
"chalmers",
"nancy",
"moe",
"edna",
"nelson",
"milhouse",
"ned",
"waylon",
"martin",
"willie",
#ranks
"captain",
"marshal",
"lieutenant",
"mister",
"mr",
"doctor",
"missus",
"ms",
"mrs",
"lady",
"dr",
"lord",
"leftenant",
"ensign",
"admiral",
"officer",
"wing commander",
"vice admiral",
"emperor",
"super emperor",
"rear admiral",
"commodore",
"colonel",
"major general",
"general",
"corporal",
"sargeant",
"sergeant",
"major",
"private",
"queen",
"earl",
"duke",
"professor",
# vaguely strippery names
"chardonnay",
"crystal",
"brandy",
"lola",
"angel",
"anastasia",
"cherry",
"destiny",
"raven",
"scarlett",
"scarlet",
"layla",
"tawny",
"trinity",
"lexus",
#futuramas
"zaph",
"zapp",
"fry",
"leela",
"leeloo",
"kif",
"scruffy",
"morbo",
"nibbler",
"farnsworth",
# bojacks
"bojack",
"carolyn",
"mr peanutbutter",
#avatars
"aang",
"katara",
"toph",
"zuko",
"sokka",
"iroh",
"appa",
"azula",
#ricks
"morty",
"rick",
#uncles
"buck",
"sam",
"tom",
"fatih",
#dunes
"chani",
"paul",
"atriedes",
"kwisatz",
"haderach",
"harkonnen",
# sandersons
"adolin",
"kholin",
"sorin",
# songs of ice and fire
"littlefinger",
"daenarys",
"khal",
"sansa",
"cersei",
"gregor",
"tyrion",
"arya",
"hodor",
"petyr",
"brienne",
"robb",
"daario",
"bran",
# stars war
"luke",
"leia",
"chewie",
"han",
"solo",
"ben",
"darth",
# homestucks
"sassacre",
"jegus",
"egbert",
"karkat",
"gamzee",
"vriska",
"terezi",
"equius",
"rose",
"sollux",
"caliborn",
"jade",
"kanaya",
"feferi",
"aradia",
"rufioh",
"eridan",
"roxy",
"spades",
"diamonds",
"hearts",
"clubs",
"boxcars",
"meenah",
"scratch",
"english",
# treks
"jean luc",
"james",
"scotty",
"pavel",
"spock",
"spop",
"worf",
"picard",
"crusher",
"data",
"geordi",
"beverly",
"wesley",
# sitcoms
"tobias",
"funke",
"gob",
"bluth",
"annyong",
"ann",
"tony",
"oscar",
"maeby",
"swanson",
"leslie",
"ann",
"traeger",
"meagle",
"pam",
"jim",
"angela",
"toby",
"jan",
"michael",
"scott",
"kevin",
"dwight",
"creed",
"meredith",
"nellie",
"darryl",
"roy",
"karen",
"stanley",
#unpopular names
"weston",
"declan",
"xander",
"theodore",
"rowan",
"austin",
"evan",
"emerson",
"quinn",
"quentin",
"quinns",
"daria",
"jocelyn",
"willow",
"allison",
"delilah",
"chastity",
"captain jack",
"teddy",
"tandy",
# pratchett
"vimes",
"prime",
# greeks
"hades",
"artemis",
"zagreus",
"charon",
"sharon",
"zeus",
"poseidon",
"hermes",
"hercules",
# pines
"soos",
"dipper",
"mabel",
"celestabellebethabelle",
"stanford",
"stan",
# months
"smarch",
"january",
"february",
"march",
"april",
"may",
"june",
"july",
"august",
"september",
"october",
"november",
"december",
# transformers
"optimus",
"megatron",
"mega",
"tron",
"starscream",
"rodimus",
"kup",
"jazz",
"arcee",
"blurr",
"magnus",
"springer",
# games
"nobuo",
"zelda",
"terra",
"locke",
"sabin",
"edgar",
"celes",
"celeste",
"lara",
"croft",
"samus",
"kratos",
"nathan",
"drake",
"snake",
"cloud",
"tifa",
"aeris",
"barrett",
"gordon",
"ezio",
"ryu",
"chun li",
"e honda",
"zangief",
"ryu",
"ken",
"guile",
"dhalsim",
"isabelle",
"sephiroth",
"leon",
"niko",
"morrigan",
"aloy",
"batman",
"joker",
"baron",
"callie",
"marie",
"catherine",
"clementine",
"dutch",
"edith",
"sonya",
"agent",
"mario",
"luigi",
"peach",
"toad",
"vocaloid",
"sans",
"papyrus",
"toriel",
"grillby",
"skeleton",
"blook",
"lemming",
"glados",
"cave",
"johnson",
#muppets
"kermit",
"animal",
"gonzo",
"walter",
"fozzie",
"beaker",
"honeydew",
"benson",
"rowlf",
"piggy",
#countries and places
"britain",
"edinburgh",
"london",
"france",
"paris",
"nice",
"germany",
"munich",
"italy",
"rome",
"spain",
"pamplona",
"greece",
"armenia",
"holland",
"amsterdam",
"switzerland",
"poland",
"belgium",
"waffle",
"syrup",
"canada",
"alberta",
"nunavut",
"squamish",
"richmond",
"langley",
"burnaby",
"westminster",
"victoria",
"vancouver",
"poco",
"coquitlam",
"kensington",
"kits",
"surrey",
"kelowna",
"osoyoos",
"delta",
"merritt",
"penticton",
"alberni",
"duncan",
"dawson",
"creek",
"grand",
"forks",
"prince",
"george",
"rupert",
"revel",
"stoke",
"trail",
"tofino",
"saanich",
"nanaimo",
"toronto",
"montreal",
"whistler",
"quebec",
"newfie",
"saskatchewan",
"australia",
"mexico",
"chile",
"peru",
"argentina",
"belize",
"sweden",
"norway",
"florida",
"vermont",
"maine",
"wisconsin",
"montana",
"jersey",
"hampshire",
"louis",
"iana",
"georgia",
"kentucky",
"colorado",
"carolina",
"kansas",
"ohio",
"idaho",
"oregon",
"nevada",
"york",
"dakota",
"conneticut",
"california",
"vermont",
"wyoming",
"puerto",
"rico",
"suave",
"portugal",
"brazil",
"paolo",
"curitiba",
"joao",
"japan",
"pan",
"hokkaido",
"tokyo",
"ichiro",
"chihiro",
"korea",
"koko",
"coco",
"uganda",
"antigua",
"barbuda",
"barbie",
"barb",
"arb",
"arbys",
"angola",
"austria",
"belize",
"bolivia",
"bulgaria",
"cuba",
"czech",
"djibouti",
"estonia",
"fiji",
"guyana",
"hungary",
"jamaica",
"jordan",
"kenya",
"laos",
"latvia",
"yemen",
"tuvalu",
"turkey",
"tonga",
"togo",
"tonka",
"texas",
"singapore",
"sierra",
"leone",
"sepia",
"senegal",
"marino",
"samoa",
"lucia",
"vincent",
"vince",
#softwares
"rands",
"joel",
#divinity
"fane",
"lohse",
"sebille",
# ---- END OF NAMES
}
@things {
"arelli",
"omoto",
"slick",
"slack",
"ware",
"puzzle",
"bobble",
"kart",
"kirby",
"katamari",
"shovel",
"knight",
# planets
"mercury",
"venus",
"earth",
"mars",
"moon",
"prism",
"power",
"jupiter",
"uranus",
"neptune",
"pluto",
# marketing buzzwords
"brand",
"synergy",
"analytics",
"clickbait",
"disrupt",
"viral",
"freemium",
"growth",
"hacking",
"hyper",
"local",
"innovate",
"innovator",
"ideate",
"jacking",
"key",
"performance",
"initiative",
"agile",
"modern",
"swift",
"integration",
"inter",
"low hanging fruit",
"millenial",
"demographic",
"demo",
"graphic",
"optimized",
"omni",
"channel",
"placement",
"engagement",
"snackable",
"content",
"transparent",
"leader",
"entrepreneur",
"wearable",
#monsters
"goblin",
"zombie",
"mummy",
"orc",
"mirage",
"bear",
"demon",
"gorgon",
"yeti",
"beast",
"golem",
# proglangs
"erlang",
"elixir",
"python",
"ruby",
"malbolge",
"fortran",
"rust",
"go",
"ecma",
"java",
"type",
"script",
# nonsense
"squidge",
"futter",
"fram",
"mc",
"og",
"gog",
"wonk",
"clorb",
"churb",
"squimp",
"imple",
"clarp",
"flam",
"shorp",
"squiff",
"splarf",
"erang",
"copter",
"boom",
"topia",
"mazing",
"tastic",
"squim",
"angle",
"able",
"ting",
"booty",
"pow",
"mint",
"chunk",
"chunky",
"whong",
"focky",
"dongl",
"cronch",
#ideophone
"crunch",
"boing",
"swish",
"thud",
"twinkle",
"doki",
"bang",
#onomatopoeia
"moo",
"quack",
"woof",
"meow",
"hiss",
"oink",
"chirp",
"roar",
"cluck",
"baa",
"splat",
#adjectives
"bad",
"good",
"great",
"small",
"ugly",
"fat",
"childish",
"fussy",
"soft",
"chubby",
"huge",
"odd",
"sad",
"round",
"vast",
"dirty",
"ripe",
"broad",
"damp",
"wet",
"smelly",
"funky",
"fast",
"speedy",
"cavernous",
"soupy",
"happy",
"stuffy",
"shifty",
"tangy",
"thrifty",
"eggy",
"soggy",
# rude boys
"crap",
"poop",
"toot",
"poot",
"dump",
"toilet",
"poopfart",
"shart",
"stink",
"stinky",
"stank",
"stanky",
"butt",
"fart",
"fartfart",
"fartfartfart",
"farty",
"dang",
"darn",
"booger",
"snot",
"cough",
"bastard",
# foods
"food",
"candy",
"wheat",
"bulgur",
"quinoa",
"cupcake",
"muffin",
"cookie",
"loaf",
"lard",
"flank",
"dough",
"sugar",
"flour",
"baking",
"soda",
"licious",
"squeeze",
"lunchable",
"warhead",
"daddy",
"quaker",
"oat",
"jet",
"puffed",
"dunkaroo",
"spank",
"orbit",
"laffy",
"taffy",
"gusher",
"meal",
"oatmeal",
"swirler",
"dorito",
"bubble",
"shark",
"bites",
"marsh",
"shmallow",
"mallow",
"powder",
"cucumber",
"pickle",
"kale",
"onion",
"potato",
"beet",
"yam",
"shallot",
"ginger",
"garlic",
"sesame",
"rice",
"burger",
"ham",
"beef",
"chicken",
"pork",
"lamb",
"bison",
"coffee",
"tea",
"cola",
"chocolate",
"vanilla",
"strawberry",
"straw",
"raspberry",
"rasp",
"berry",
"velvet",
"nyan",
# tech
"stack",
"overflow",
"under",
"over",
"flow",
"hack",
"cyber",
"truck",
"techno",
"video",
"audio",
"micro",
"armor",
"astro",
"mono",
"meta",
"morph",
"nano",
"chloro",
"nega",
"open",
"navi",
"co",
"null",
"plasma",
"ram",
"eva",
"mecha",
"retro",
"super",
"sub",
"hexa",
"synchro",
"synth",
"thermo",
"solid",
"static",
"section",
"tank",
"radio",
"pack",
"mass",
"jig",
"jug",
"jag",
"zig",
"latch",
"implant",
"heavy",
"fluid",
"gel",
"drill",
"cube",
"cone",
"pyramid",
"tower",
"hedron",
"buoy",
"baffle",
"bank",
"stream",
"time",
"tractor",
"vial",
"vertex",
"point",
"wave",
"weave",
"wand",
"e-cybo",
"pooch",
"crypto",
# misc
"stain",
"spot",
"creep",
"trap",
"tarp",
"shop",
"load",
"fudge",
"blister",
"bill",
"bone",
"bugle",
"card",
"cannon",
"celery",
"chance",
"chord",
"child",
"cloak",
"copy",
"cow",
"frog",
"deer",
"ape",
"donkey",
"carp",
"crappie",
"minnow",
"squirrel",
"vole",
"mole",
"dirt",
"dust",
"dog",
"shep",
"dragon",
"drake",
"drop",
"drug",
"duck",
"edge",
"elbow",
"error",
"fibre",
"finger",
"flax",
"flood",
"foam",
"fog",
#songs
"music",
"trumpet",
"clarinet",
"tuba",
"french",
"horn",
"bass",
"timpani",
"cymbals",
"trombone",
"ham-flute",
"wii-u",
"gerudo",
"monsta",
"mash",
"buttsweat",
"grove",
"classic",
"rule",
"world",
"duran",
"graffiti",
"safe",
"sound",
"astronaut",
"panic",
"disco",
"psycho",
"killer",
"solar",
"stone",
"stocking",
"garter",
"belt",
"burning",
"spider",
"empty",
"threat",
"cherry",
"star",
"scream",
"knuckles",
"fruit",
"gallon",
"game",
"goose",
"geese",
"ghost",
"gold",
"grease",
"gym",
"helmet",
"hemp",
"ice",
"icon",
"island",
"jacket",
"karate",
"kick",
"kidney",
"latex",
"lunch",
"lettuce",
"mallet",
"march",
"organ",
"panther",
"panties",
"panty",
"undies",
"knickers",
"boxers",
"underoo",
"emoji",
"motion",
"smarmy",
"pear",
"pig",
"pizza",
"bagel",
"pop",
"pound",
"propane",
"accessories",
"rhythm",
"rock",
"roll",
"saxophone",
"ophone",
"seagull",
"spaghetti",
"spaghett",
"ravioli",
"fusilli",
"chef",
"boyardee",
"tuna",
"umbrella",
"wig",
"zipper",
"britches",
"mystery",
"bench",
"secret",
"mouse",
"house",
"thunder",
"hunter",
"fisher",
"hook",
"bean",
"harvest",
"mixer",
"hand",
"finger",
"nose",
"eye",
"belly",
"jean",
"plan",
"floppy",
"disk",
"drive",
"horse",
"horsehorse",
"horsehorsehorse",
"horsehorsehorsehorse",
"staple",
"face",
"ace",
"arm",
"ball",
"cheek",
"monkey",
"shin",
"shine",
"button",
"byte",
"canyon",
"dance",
"crayon",
"sausage",
"meat",
"bacon",
"wad",
"napkin",
"device",
"cape",
"chair",
"person",
"kitten",
"puppy",
"book",
"clamp",
"cloud",
"code",
"coast",
"coin",
"space",
"key",
"bucket",
"heart",
"stapler",
"mug",
"bottle",
"cable",
"note",
"lamp",
"shelf",
"dong",
"board",
"job",
"knife",
"thing",
"phone",
"sweat",
"pant",
"boot",
"sock",
"socks",
"hat",
"ring",
"wang",
"wrap",
"holder",
"pen",
"bag",
"sword",
"shield",
"spear",
"staff",
"shaft",
"slab",
"grub",
"song",
"axe",
"lamp",
"club",
"cage",
"hole",
"ass",
"chum",
"chump",
"champ",
"chomp",
"chimp",
"jerk",
"jork",
"jark",
"foot",
"spud",
"cord",
"light",
"tree",
"place",
"bag",
"grime",
"sludge",
"cloth",
# verbs
"jump",
"hop",
"aggrieve",
"abscond",
"twirl",
"spin",
"smell",
"slap",
"smack",
"poke",
"prod",
"drop",
"punch",
"grab",
"throw",
"thrust",
"slide",
"dunk",
"braise",
"crisp",
"roast",
"boil",
"poach",
"bake",
"fry",
"sizzle",
"saute",
"shake",
"werkt",
"scatter",
"slide",
"dice",
"hurl",
"buy",
"huck",
"toast",
"align",
"sell",
"move",
"shoop",
"trade",
"steal",
"flip",
"blast",
"clean",
"hide",
"pinch",
"grasp",
"palm",
"examine",
"taste",
"ingest",
"swallow",
"snort",
"juggle",
"lift",
"eat",
"quaff",
"chug",
"spine",
"crack",
"fear",
"assemble",
"chug",
"choogle",
#colors,
"green",
"magenta",
"royal",
"orange",
"purple",
"gron",
"blue",
"bloo",
"chartreuse",
"pink",
"plank",
"red",
"yellow",
"yollo",
"teal",
"teel",
"plaid",
"polka dot",
"polka",
"dot",
"chermise",
"stripe",
"striped",
# sounds
"oo",
"ooo",
"oooo",
"hu",
"froo",
"shu",
"mar",
"blib",
"mub",
"bluss",
"gya",
"dwaa",
"bor",
"flus",
"shurb",
"gub",
"goob",
"adze",
"poob",
"boop",
# random words
"bowl",
"quiet",
"bond",
"prestige",
"crude",
"hive",
"shiver",
"shudder",
"manage",
"wonder",
"wind",
"shape",
"industry",
"business",
"blade",
"sheath",
"diplo",
"mat",
"mart",
"check",
"balance",
"runner",
"walker",
"model",
"control",
"deport",
"report",
"port",
"tune",
"tone",
"bonk",
"bunk",
"golf",
"gulf",
"finance",
"fi",
"nance",
"flush",
"floosh",
"sacred",
"profane",
"traffic",
"truffle",
"summit",
"valley",
"sulphur",
"eggs",
"cottage",
"cabin",
"steam",
"punk",
"cope",
"rise",
"fall",
"sphere",
"gem",
"free",
"late",
"arch",
"pull",
"chord",
"blank",
"fax",
"like",
"weed",
"gloom",
"grudge",
"ridge",
"leash",
"route",
"stop",
"deluxe",
"supreme",
"width",
"height",
"pure",
"brouhaha",
"brou",
"haha",
"malarkey",
"ma",
"larkey",
"non",
"sense",
"wabbit",
"codswallop",
"mugwump",
"mug",
"wump",
"cods",
"wallop",
"nin",
"compoop",
"donny",
"brook",
"petti",
"shenanigan",
"she",
"nanigan",
"snolly",
"goster",
"ulence",
"gubbin",
"doozy",
"fard",
"bumber",
"shoot",
"fuddy",
"duddy",
"buddy",
"gobbledy",
"troglo",
"vomit",
"widder",
"shins",
"bloviate",
"gym",
"squat",
"rack",
"weight",
"heavy",
"mat",
"matt",
"tamarind",
"efficient",
"desert",
"rain",
"miss",
"you",
"everything",
"girl",
"boy",
"cantankerous",
"callipygian",
"dudgeon",
"firkin",
"folderol",
"squish",
"squash",
"moosh",
"mayonnaise",
"mayo",
"naise",
"gravy",
"butter",
"catsup",
"relish",
"kraut",
"mustard",
"ketchup",
"vinegar",
"socks",
"shorts",
"flummox",
"hoosegow",
"ornery",
"orrery",
"ordinary",
"nary",
"regular",
"boring",
"mediocre",
"forgettable",
"fancy",
"namby",
"pamby",
"goober",
"yahoo",
"horror",
"comedy",
"tragedy",
"bibble",
"yule",
"hole",
"hum",
"zinger",
"hammer",
"loquent",
"mania",
"frenzy",
"madness",
"snicker",
"snack",
"slash",
"swoosh",
"galumph",
"frisson",
"fudge",
"quaff",
"freude",
"family",
"feud",
"jeopardy",
"lethal",
"bang",
"shot",
"down",
"smart",
"smort",
"salt",
"pepper",
"boye",
"wing",
"love",
"what",
"who",
"where",
"why",
"when",
"goop",
"gump",
"glamp",
"squink",
"mimi",
"chart",
"chaff",
"wily",
"wobbly",
"wibbly",
"timey",
"wimey",
"surprise",
"find",
"watch",
"event",
"travel",
"health",
"joke",
"glass",
"tumbler",
"policy",
"letter",
"floor",
"group",
"term",
"boat",
"street"
}
@tld {
"mil",
"gov",
"org",
"edu",
"com",
"net",
"af",
"ca",
"co.uk",
"ru",
"pizza",
"online",
"biz",
"plumbing",
}
@alphanum {
"1", "2", "3", "4", "5", "6", "7", "8", "9",
"a", "b", "c", "d", "e", "f", "g", "h", "i",
"j", "k", "l", "m", "n", "o", "p", "q", "r",
"s", "t", "u", "v", "w", "x", "y", "z",
"A", "B", "C", "D", "E", "F", "G", "H", "I",
"J", "K", "L", "M", "N", "O", "P", "Q", "R",
"S", "T", "U", "V", "W", "X", "Y", "Z"
}
defp number_of_things do
tuple_size @things
end
@doc """
raindrops on roses and whiskers on kittens
bright copper kettles and warm woolen mittens
brown paper packages tied up with strings
this is a tuple just loaded with things
when the dog bits
or the bee stings
or the dog bites a bee
I think about some of my favorite things
and bite the dog back
"""
def things do
@things
end
@doc """
Pull a random thing out of the set
## Examples
Test that we get a word from the list of words.
iex> Enum.member?(Tuple.to_list(Silly.things), Silly.random_thing())
true
"""
def random_thing do
elem(things(), :rand.uniform(number_of_things()-1))
end
defp number_of_names do
tuple_size @names
end
@doc """
Get a tuple containing all the names
"""
def names do
@names
end
@doc """
Pull a random name out of the set
## Examples
Test that we get a word from the list of words.
iex> Enum.member?(Tuple.to_list(Silly.names), Silly.random_name())
true
"""
def random_name do
elem(names(), :rand.uniform(number_of_names()-1))
end
@doc """
return true or false, at about equal probability
100 coin flips should contain both a true AND a false value
iex> Enum.member?(Enum.map(1..100, fn _ -> Silly.coin_toss() end), true)
true
iex> Enum.member?(Enum.map(1..100, fn _ -> Silly.coin_toss() end), false)
true
"""
def coin_toss do
:rand.uniform(2) == 2
end
@doc """
Just grab a word, at random
"""
def random_word do
if coin_toss(), do: random_name(), else: random_thing()
end
@doc """
Generate a random name, like "chastity truckagile"
"""
def name do
"#{random_name()} #{random_thing()}#{random_thing()}"
end
@doc """
Generate a random slug, like "chastity-truckagile"
"""
def slug do
String.replace(name(), " ", "-")
end
@doc """
A tuple containing both letters AND numbers
"""
def alphanums do
@alphanum
end
defp number_of_alphanums do
tuple_size @alphanum
end
@doc """
You know, like "a", or "S", or "7"
"""
def random_alphanum do
elem(alphanums(), :rand.uniform(number_of_alphanums()-1))
end
@doc """
a word and three alphanumeric characters, like "spud-92D" or "fart-8dF"
"""
def short do
short_str = "#{random_word()} #{random_alphanum()}#{random_alphanum()}#{random_alphanum()}"
String.replace(short_str, " ", "-")
end
@doc """
a name and four alphanumeric characters, like "grizzle-beefshanks-A2dD"
"""
def long do
long_str = "#{name()} #{random_alphanum()}#{random_alphanum()}#{random_alphanum()}#{random_alphanum()}"
String.replace(long_str, " ", "-")
end
@doc """
a tld, like "gov" or "mil", or "edu"
"""
def tld do
elem(@tld, :rand.uniform(tuple_size(@tld) - 1))
end
@doc """
a domain, like "socks.edu" or "mustard.gov"
"""
def domain do
if coin_toss() do
"#{String.replace(random_word(), " ", "-")}.#{tld()}"
else
"#{String.replace(random_word(), " ", "-")}.#{String.replace(random_word(), " ", "-")}.#{tld()}"
end
end
@doc """
an email address, like michael-roundfortran-IfgB@cage.blook.af
"""
def email do
"#{long()}@#{domain()}"
end
end