DC Database
Advertisement

Documentation for this module may be created at Module:ComicsInfobox/Race/doc

local valid = {
["Abaddonusian"] = "Abaddonusians",
["Acheronian"] = "Acheronians",
["Aegenan"] = "Aegenans",
["Aellan"] = "Aellans",
["Aelphian"] = "Aelphians",
["Aerosian"] = "Aerosians",
["Aesir"] = "Aesirs",
["Alephian"] = "Alephians",
["Alligator"] = "Alligators",
["Almeracian"] = "Almeracians",
["Alstairian"] = "Alstairians",
["Altrosian"] = "Altrosians",
["Amadusian"] = "Amadusians",
["Amazon"] = "Amazons",
["Android"] = "Androids",
["Angel"] = "Angels",
["Angorian"] = "Angorians",
["Angtuan"] = "Angtuans",
["Animal"] = "Animals",
["Annunake"] = "Annunake",
["Antarean"] = "Antareans",
["Apiatonian"] = "Apiatonians",
["Apokoliptian"] = "Apokoliptians",
["Appellaxian"] = "Appellaxians",
["Archai"] = "The Archai",
["Argoan"] = "Argoans",
["Arguvian"] = "Arguvians",
["Asgardian"] = "Asgardians",
["Atlantean"] = "Atlanteans",
["Avian"] = "Avians",
["Avalonian"] = "Avalonians",
["Azarathian"] = "Azarathians",
["Baaldurian"] = "Baaldurians",
["Baaltarian"] = "Baaltarians",
["Bear"] = "Bears",
["Beaver"] = "Beavers",
["Bellatrixian"] = "Bellatrixians",
["Betrassian"] = "Betrassians",
["Bgztlian"] = "Bgztlians",
["Binderaanian"] = "Binderaanians",
["Bird"] = "Birds",
["Bismollian"] = "Bismollians",
["Bizarro"] = "Bizarros",
["Bleedbug"] = "Bleedbugs",
["Blorian"] = "Blorians",
["Blue"] = "Blues",
["Bolovaxian"] = "Bolovaxians",
["Borgonian"] = "Borgonians",
["Borialosaurus"] = "Borialosauruses",
["Braalian"] = "Braalians",
["Branx"] = "Branx",
["Bug of New Genesis"] = "Bugs of New Genesis",
["Bummb'l"] = "Bummb'ls",
["Byrnian"] = "Byrnians",
["Cairnian"] = "Cairnians",
["Calatonian"] = "Calatonians",
["Canopean"] = "Canopeans",
["Carggite"] = "Carggites",
["Cat"] = "Cats",
["Celtic God"] = "Celtic Gods",
["Centaur"] = "Centaurs",
["Cepheid"] = "Cepheids",
["Chameleon"] = "Chameleons",
["Changralynian"] = "Changralynians",
["Chicken"] = "Chickens",
["Chimpanzee"] = "Chimpanzees",
["Chthostosian"] = "Chthostosians",
["Cintosian"] = "Cintosians",
["Circadian"] = "Circadians",
["Cironielian"] = "Cironielians",
["Citadelian"] = "Citadelians",
["Coluan"] = "Coluans",
["Coludroid"] = "Coludroids",
["Competalian"] = "Competalians",
["Cow"] = "Cows",
["Curatti"] = "Curatti",
["Cyborg"] = "Cyborgs",
["Cyclops"] = "Cyclopes",
["Cygnian"] = "Cygnians",
["Czarnian"] = "Czarnians",
["Daemonite"] = "Daemonites",
["Dalwythian"] = "Dalwythans",
["Daxamite"] = "Daxamites",
["Deer"] = "Deer",
["Demons"] = "Demons",
["Demigod"] = "Demigods",
["Dheronian"] = "Dheronians",
["Dhorian"] = "Dhorians",
["Diib"] = "Diibs",
["Diasporan"] = "Diasporans",
["Djinn"] = "Djinns",
["DNAlien"] = "DNAliens",
["Dog"] = "Dogs",
["Dokris"] = "Dokris",
["Dolphin"] = "Dolphins",
["Dominator"] = "Dominators",
["Doopa"] = "Doopas",
["Draaga"] = "Draagas",
["Dragon"] = "Dragons",
["Dryad"] = "Dryads",
["Duck"] = "Ducks",
["Durlan"] = "Durlans",
["Dwarf"] = "Dwarves",
["Eagle"] = "Eagles",
["Egregore"] = "Egregores",
["Eigessan"] = "Eigessans",
["Elephant"] = "Elephants",
["Enelsian"] = "Enelsians",
["Erinyes"] = "Erinyes",
["Euphorian"] = "Euphorians",
["Exxorian"] = "Exxorians",
["Fable"] = "Fables",
["Fairy"] = "Fairies",
["Farfarmniflatch"] = "Farfarmniflatches",
["Fire Troll"] = "Fire Trolls",
["Fish"] = "Fishes",
["Fluviaat"] = "Fluviaats",
["Forerunner"] = "Forerunners",
["Fp'yian"] = "Fp'yians",
["Fresishian"] = "Fresishians",
["Frog"] = "Frogs",
["Frost Giant"] = "Frost Giants",
["Fuginaut"] = "Fuginauts",
["Fwangian"] = "Fwangians",
["G'newtian"] = "G'newtians",
["Gargarean"] = "Gargareans",
["Gargoyle"] = "Gargoyles",
["Geequoan"] = "Geequoans",
["Giant"] = "Giants",
["Gil'Dishpan"] = "Gil'Dishpan",
["Glazzonion"] = "Glazzonions",
["Goat"] = "Goats",
["Gobdorian"] = "Gobdorians",
["God"] = "Gods",
["God of Africa"] = "Gods of Africa",
["God of Egypt"] = "Gods of Egypt",
["God of Mexico"] = "Gods of Mexico",
["God of Olympus"] = "Gods of Olympus",
["Gordanian"] = "Gordanians",
["Gorgon"] = "Gorgons",
["Gorilla"] = "Gorillas",
["Graxosian"] = "Graxosians",
["Grendan"] = "Grendans",
["Groundhog"] = "Groundhogs",
["Grxyorian"] = "Grxyorians",
["Gryxian"] = "Gryxians",
["H'lvenite"] = "H'lvenites",
["H'San Natall"] = "H'San Natalls",
["Hajorian"] = "Hajorians",
["Hatorian"] = "Hatorians",
["Havanian"] = "Havanians",
["Hawkmen"] = "Hawkmen",
["Hecatonchire"] = "Hecatonchires",
["Hepvestusan"] = "Hepvestusans",
["Hindu God"] = "Hindu Gods",
["Hippopotamus"] = "Hippopotamuses",
["Homo Magi"] = "Homo Magi",
["Horse"] = "Horses",
["Human"] = "Humans",
["Human/Alien Hybrid"] = "Human/Alien Hybrids",
["Human/Demon Hybrid"] = "Human/Demon Hybrids",
["Hyena"] = "Hyenas",
["Hykraian"] = "Hykraians",
["Imp"] = "Imps",
["Imskian"] = "Imskians",
["I'noxian"] = "I'noxians",
["Janusian"] = "Janusians",
["Jaquaan"] = "Jaquaans",
["Jaydian"] = "Jaydians",
["Jotun"] = "Jotuns",
["Kaffarian"] = "Kaffarians",
["Kahloan"] = "Kahloans",
["Kalanorian"] = "Kalanorians",
["Kamburu"] = "Kamburus",
["Kangaroo"] = "Kangaroos",
["Karnan"] = "Karnans",
["Karrakanian"] = "Karrakanians",
["Katarthan"] = "Katarthans",
["Kathoonian"] = "Kathoonians",
["Kherubim"] = "Kherubim",
["Khund"] = "Khunds",
["Klarmarian"] = "Klarmarians",
["Korugaran"] = "Korugarans",
["Kranaltinian"] = "Kranaltinians",
["Kreel"] = "Kreels",
["Krolotean"] = "Kroloteans",
["Kryptonian"] = "Kryptonians",
["Kryptonian Canine"] = "Kryptonian Canines",
["Kryptonian God"] = "Kryptonian Gods",
["Kwai"] = "Kwai",
["Kwyzz"] = "Kwyzz",
["LaBurbian"] = "LaBurbians",
["Lallorian"] = "Lallorians",
["Lanothian"] = "Lanothians",
["Lemur"] = "Lemurs",
["Leprechaun"] = "Leprechauns",
["Lexorian"] = "Lexorians",
["Liger"] = "Ligers",
["Lilliputian"] = "Lilliputians",
["Lion"] = "Lions",
["Lisnarian"] = "Lisnarians",
["Living Star"] = "Living Stars",
["Lizarkon"] = "Lizarkons",
["Llaran"] = "Llarans",
["Loranean"] = "Loraneans",
["Lurker"] = "Lurkers",
["Makkoran"] = "Makkorans",
["Maltusian"] = "Maltusians",
["Manatee"] = "Manatees",
["Manhawk"] = "Manhawks",
["Manhunter"] = "Manhunters",
["Markian"] = "Markians",
["Martian"] = "Martians",
["Megan"] = "Megans",
["Mercurian"] = "Mercurians",
["Merpeople"] = "Merpeople",
["Metahuman"] = "Metahumans",
["Metan"] = "Metans",
["Minotaur"] = "Minotaurs",
["Mongoose"] = "Mongooses",
["Monitor"] = "Monitors",
["Monkey"] = "Monkeys",
["Moose"] = "Moose",
["Mosteelian"] = "Mosteelians",
["Motusian"] = "Motusians",
["Mouse"] = "Mice",
["Muldroogan"] = "Muldroogans",
["Mummy"] = "Mummies",
["Murrian"] = "Murrians",
["Muscarian"] = "Muscarians",
["Mutant"] = "Mutants",
["Myrg"] = "Myrgs",
["N'cronian"] = "N'cronians",
["Naktosian"] = "Naktosians",
["Naltorian"] = "Naltorians",
["Neanderthal"] = "Neanderthals",
["Nekromnian"] = "Nekromnians",
["Neonian"] = "Neonians",
["Neptunian"] = "Neptunians",
["New Asgardian"] = "New Asgardians",
["New God"] = "New Gods",
["Ngoan"] = "Ngoans",
["Noc'sagian"] = "Noc'sagians",
["Norman"] = "Norman",
["Numericonian"] = "Numericonians",
["Ny'L'Uylian"] = "Ny'L'Uylians",
["Nymph"] = "Nymphs",
["Oan"] = "Oans",
["Obsidian-Folk"] = "Obsidian-Folk",
["Octopus"] = "Octopuses",
["Odilinian"] = "Odilinians",
["Ogoroan"] = "Ogoroans",
["Ogre"] = "Ogres",
["Okaaran"] = "Okaarans",
["Old God"] = "Old Gods",
["Olympian"] = "Gods of Olympus",
["Oompanian"] = "Oompanians",
["Orandan"] = "Orandans",
["Oranxian"] = "Oranxians",
["Orazan"] = "Orazans",
["Orck"] = "Orcks",
["Oursian"] = "Oursians",
["Ovacronian"] = "Ovacronians",
["Owl"] = "Owls",
["Ozimanian"] = "Ozimanians",
["Ozyronian"] = "Ozyronians",
["Parademon"] = "Parademons",
["Pegacorn"] = "Pegacorns",
["Pegasus"] = "Pegasi",
["Pharman"] = "Pharmans",
["Phlonian"] = "Phlonians",
["Phytarian"] = "Phytarians",
["Pig"] = "Pigs",
["Placentamorph"] = "Placentamorphs",
["Plutonian"] = "Plutonians",
["Porpoise"] = "Porpoises",
["Preztorian"] = "Preztorians",
["Protean"] = "Proteans",
["Psion"] = "Psions",
["Pumice Person"] = "Pumice People",
["Punkusian"] = "Punkusians",
["Qwardian"] = "Qwardians",
["Rabbit"] = "Rabbits",
["Ramoxian"] = "Ramoxians",
["Rannian"] = "Rannians",
["Rat"] = "Rats",
["Reach"] = "The Reach",
["Red Saturnian"] = "Red Saturnians",
["White Saturnian"] = "White Saturnians",
["Saturnian"] = "Saturnians",
["Reptile"] = "Reptiles",
["Rhoonian"] = "Rhoonians",
["Rhormorid"] = "Rhormorids",
["Rimborian"] = "Rimborians",
["Robot"] = "Robots",
["Roguian"] = "Roguians",
["Rojiran"] = "Rojirans",
["Satyr"] = "Satyrs",
["Savothian"] = "Savothians",
["Sddire"] = "Sddires",
["Seal"] = "Seals",
["Selachian"] = "Selachians",
["Simballian"] = "Simballians",
["Shark"] = "Sharks",
["Shayol"] = "Shayol",
["Sheeda"] = "Sheeda",
["Sher'Hedeen"] = "Sher'Hedeens",
["Sh'pilkuzzian"] = "Sh'pilkuzzian",
["Shwarian"] = "Shwarians",
["Siamgemian"] = "Siamgemians",
["Sirkian"] = "Sirkians",
["Sklarian"] = "Sklarians",
["Skor"] = "Skors",
["Skrull"] = "Skrulls",
["Sky Kanga"] = "Sky Kangas",
["Slyggian"] = "Slyggians",
["Snow Elf"] = "Snow Elves",
["Solarian"] = "Solarians",
["Somahturan"] = "Somahturans",
["Space Kraken"] = "Space Krakens",
["Spitroid"] = "Spitroids",
["Squirrel"] = "Squirrels",
["Star Conqueror"] = "Star Conquerors",
["Starhavenite"] = "Starhavenites",
["Stratan"] = "Stratans",
["Succubus"] = "Succubi",
["Suirpalamanian"] = "Suirpalamanians",
["Sun-Eater"] = "Sun-Eaters",
["Synriannaquian"] = "Synriannaquians",
["Talokite"] = "Talokites",
["Talynian"] = "Talynians",
["Tamaranean"] = "Tamaraneans",
["Tamojoranian"] = "Tamojoranians",
["Tanjentan"] = "Tanjentans",
["Tartarian"] = "Tartarians",
["Tchk-Tchk"] = "Tchk-Tchks",
["Teallian"] = "Teallians",
["Terminan"] = "Terminans",
["Terran"] = "Terrans",
["Terravore"] = "Terravores",
["Thanagarian"] = "Thanagarians",
["Tharrian"] = "Tharrians",
["Thronnian"] = "Thronnians",
["Tiger"] = "Tigers",
["Tir Na Nóg"] = "Tir Na Nógs",
["Titan of Myth"] = "Titans of Myth",
["Titanian"] = "Titanians",
["Toomeyan"] = "Toomeyans",
["Tormock"] = "Tormocks",
["Tortugan"] = "Tortugans",
["Tree"] = "Trees",
["Trench"] = "Trench",
["Trewskian"] = "Trewskians",
["Tritonian"] = "Tritonians",
["Trogkian Mammoth"] = "Trogkian Mammoths",
["Trommite"] = "Trommites",
["Trontian"] = "Trontians",
["Tsauronian"] = "Tsauronians",
["Turtle"] = "Turtles",
["Tymmxan"] = "Tymmxan",
["Tyrrazian"] = "Tyrrazians",
["Ungaran"] = "Ungarans",
["Unicorn"] = "Unicorns",
["Un-Man"] = "Un-Men",
["Urgrundian"] = "Urgrundians",
["Uxorian"] = "Uxorians",
["Vaikean"] = "Vaikeans",
["Valeronian"] = "Valeronians",
["Valkyrie"] = "Valkyries",
["Vampire"] = "Vampires",
["Van'nian"] = "Van'nians",
["Varidian"] = "Varidians",
["Varvan"] = "Varvans",
["Velosian"] = "Velosians",
["Venegarian"] = "Venegarians",
["Venturan"] = "Venturans",
["Venusian"] = "Venusians",
["Volkregian"] = "Volkregians",
["Voranian"] = "Voranians",
["Vornian"] = "Vornians",
["Vulcan"] = "Vulcans",
["Vuldarian"] = "Vuldarians",
["Vyrgan"] = "Vyrgans",
["Weasel"] = "Weasels",
["Werewolf"] = "Werewolves",
["Whale"] = "Whales",
["White Martian"] = "White Martians",
["Winathian"] = "Winathians",
["Wolf"] = "Wolves", 
["Xanshian"] = "Xanshians",
["Xanthuan"] = "Xanthuans",
["Xarapion"] = "Xarapions",
["Xardan"] = "Xardans",
["Xenusian"] = "Xenusians",
["Xibalban"] = "Xibalbans",
["Xudarian"] = "Xudarians",
["Yodix"] = "The Yodix",
["Youngenian"] = "Youngenians",
["Zadronian"] = "Zadronians",
["Zamaron"] = "Zamarons",
["Zambaii"] = "Zambaii",
["Zarolatt"] = "Zarolatts",
["Zaronian"] = "Zaronians",
["Zaroxian"] = "Zaroxians",
["Zeroxian"] = "Zeroxians",
["Zezzite"] = "Zezzites",
["Zirandian"] = "Zirandians",
["Zoan"] = "Zoans",
["Zombie"] = "Zombies",
["Zsiglonian"] = "Zsiglonians",
["Zuunian"] = "Zuunians",
["Zwenian"] = "Zwenians",
["Zymian"] = "Zymians",
}

local substitutes = {
["abaddonusians"] = "Abaddonusian",
["acheronians"] = "Acheronian",
["aegenans"] = "Aegenan",
["aellan"] = "Aellan",
["aerosians"] = "Aerosian",
["aisir"] = "Aesir",
["alephians"] = "Alephian",
["aelphians"] = "Alephian",
["alligators"] = "Alligator",
["almeracians"] = "Almeracian",
["alstairians"] = "Alstairian",
["altrosians"] = "Altrosian",
["asir"] = "Aesir",
["amadusians"] = "Amadusian",
["amazons"] = "Amazon",
["androids"] = "Android",
["animal"] = "Animal",
["angels"] = "Angel",
["angorians"] = "Angorian",
["angor"] = "Angorian",
["angtuans"] = "Angtuan",
["annunake"] = "Annunake",
["antareans"] = "Antarean",
["apiatonians"] = "Apiatonian",
["apokalptian"] = "Apokoliptian",
["apocalyptian"] = "Apokoliptian",
["appellaxians"] = "Appellaxian",
["the archai"] = "Archai",
["argoans"] = "Argoan",
["arguvians"] = "Arguvian",
["asgardan"] = "Asgardian",
["azgardian"] = "Asgardian",
["atlanteans"] = "Atlantean",
["atlantians"] = "Atlantean",
["atlantian"] = "Atlantean",
["avians"] = "Avian",
["avalonians"] = "Avalonian",
["azarathians"] = "Azarathian",
["baaldurians"] = "Baaldurian",
["baalterian"] = "Baaltarian",
["baltarian"] = "Baaltarian",
["bears"] = "Bear",
["beavers"] = "Beaver",
["belatrixan"] = "Bellatrixian",
["belatrixian"] = "Bellatrixian",
["betrassians"] = "Betrassian",
["bgtzlian"] = "Bgztlian",
["bgztlan"] = "Bgztlian",
["binderaanians"] = "Binderaanian",
["birds"] = "Bird",
["bismollians"] = "Bismollian",
["bizzaro"] = "Bizarro",
["bizzarro"] = "Bizarro",
["bizaro"] = "Bizarro",
["bleedbugs"] = "Bleedbug",
["blorians"] = "Blorian",
["blues"] = "Blue",
["bolovaxians"] = "Bolovaxian",
["borgonians"] = "Borgonian",
["borialosauruses"] = "Borialosaurus",
["braalians"] = "Braalian",
["branx"] = "Branx",
["bug"] = "Bug of New Genesis",
["bugs of new genesis"] = "Bug of New Genesis",
["bummb'ls"] = "Bummb'l",
["byrnians"] = "Byrnian",
["cairnians"] = "Cairnian",
["calatonians"] = "Calatonian",
["canopeans"] = "Canopean",
["carggites"] = "Carggite",
["cats"] = "Cat",
["celtic gods"] = "Celtic God",
["centaurs"] = "Centaur",
["cepheids"] = "Cepheid",
["chameleons"] = "Chameleon",
["changralynians"] = "Changralynian",
["chickens"] = "Chicken",
["chimpanzees"] = "Chimpanzee",
["chimp"] = "Chimpanzee",
["chimps"] = "Chimpanzee",
["chthostosians"] = "Chthostosian",
["cintosians"] = "Cintosian",
["circadians"] = "Circadian",
["cironielians"] = "Cironielian",
["citadelians"] = "Citadelian",
["coluans"] = "Coluan",
["coludroids"] = "Coludroid",
["competalians"] = "Competalian",
["cows"] = "Cow",
["curatti"] = "Curatti",
["cyborg"] = "Cyborg",
["cyborgs"] = "Cyborg",
["cyclopes"] = "Cyclops",
["cygnians"] = "Cygnian",
["cazarnan"] = "Czarnian",
["czarnians"] = "Czarnian",
["daemonites"] = "Daemonite",
["dalwythians"] = "Dalwythian",
["daxam"] = "Daxamite",
["daxamites"] = "Daxamite",
["deer"] = "Deer",
["demon"] = "Demons",
["demons"] = "Demons",
["demigod"] = "Demigods",
["dheronians"] = "Dheronian",
["dhoran"] = "Dhorian",
["diibs"] = "Diib",
["diasporans"] = "Diasporan",
["djinns"] = "Djinn",
["dnaliens"] = "DNAlien",
["dogs"] = "Dog",
["dokris"] = "Dokris",
["dolphins"] = "Dolphin",
["dominators"] = "Dominator",
["doopas"] = "Doopa",
["dragaas"] = "Draaga",
["dragons"] = "Dragon",
["dryads"] = "Dryad",
["ducks"] = "Duck",
["durlian"] = "Durlan",
["dwarves"] = "Dwarf",
["dwarfs"] = "Dwarf",
["eagles"] = "Eagle",
["egregores"] = "Egregore",
["eigessans"] = "Eigessan",
["elephants"] = "Elephant",
["enelsians"] = "Enelsian",
["erinyes"] = "Erinyes",
["euphorians"] = "Euphorian",
["exorian"] = "Exxorian",
["exxorrian"] = "Exxorian",
["exoran"] = "Exxorian",
["exxoran"] = "Exxorian",
["fables"] = "Fable",
["fable"] = "Fable",
["fairies"] = "Fairy",
["farfarmniflatches"] = "Farfarmniflatch",
["fire trolls"] = "Fire Troll",
["fish"] = "Fish",
["fishes"] = "Fish",
["fluviaats"] = "Fluviaat",
["forerunners"] = "Forerunner",
["fp'yians"] = "Fp'yian",
["frogs"] = "Frog",
["frost giants"] = "Frost Giant",
["fresishians"] = "Fresishian",
["fuginauts"] = "Fuginaut",
["fwangians"] = "Fwangian",
["G'newt"] = "G'newtian",
["G'newtians"] = "G'newtian",
["gargareans"] = "Gargarean",
["gargoyles"] = "Gargoyle",
["geequoans"] = "Geequoan",
["giants"] = "Giant",
["gil'dishpan"] = "Gil'Dishpan",
["glazzonians"] = "Glazzonion",
["glazzonions"] = "Glazzonion",
["goats"] = "Goat",
["gobdorians"] = "Gobdorian",
["gods"] = "God",
["gods of africa"] = "God of Africa",
["african gods"] = "God of Africa",
["gods of egypt"] = "God of Egypt",
["egyptian gods"] = "God of Egypt",
["gods of mexico"] = "Gods of Mexico",
["mexican gods"] = "Gods of Mexico",
["gods of olympus"] = "God of Olympus",
["gordanians"] = "Gordanian",
["gorgons"] = "Gorgon",
["gorillas"] = "Gorilla",
["graxosians"] = "Graxosian",
["grendans"] = "Grendan",
["groundhogs"] = "Groundhog",
["grxyorians"] = "Grxyorian",
["gryxians"] = "Gryxian",
["h'lven"] = "H'lvenite",
["h'lvenites"] = "H'lvenite",
["h'san natalls"] = "H'San Natall",
["hajorians"] = "Hajorian",
["hatorians"] = "Hatorian",
["havanians"] = "Havanian",
["havania"] = "Havanian",
["hawkmen"] = "Hawkmen", 
["hecatonchires"] = "Hecatonchire",
["hepvestusans"] = "Hepvestusan",
["hindu gods"] = "Hindu God",
["hippopotamuses"] = "Hippopotamus",
["homomagi"] = "Homo Magi",
["homomagian"] = "Homo Magi",
["homo magian"] = "Homo Magi",
["horses"] = "Horse",
["human being"] = "Human",
["human beings"] = "Human",
["humans"] = "Human",
["human"] = "Human",
["human/alien hybrid"] = "Human/Alien Hybrids",
["human/alien hybrids"] = "Human/Alien Hybrids",
["human/demon hybrid"] = "Human/Demon Hybrids",
["human/demon hybrids"] = "Human/Demon Hybrids",
["hyenas"] = "Hyena",
["hykraians"] = "Hykraian",
["imps"] = "Imp",
["imskians"] = "Imskian",
["i'noxians"] = "I'noxian",
["jaden"] = "Jaydian",
["jadian"] = "Jaydian",
["janusians"] = "Janusian",
["jaquaans"] = "Jaquaan",
["jayden"] = "Jaydian",
["jaydan"] = "Jaydian",
["jotuns"] = "Jotun",
["kaffarians"] = "Kaffarian",
["kahloans"] = "Kahloan",
["kalanoran"] = "Kalanorian",
["kamburus"] = "Kamburu",
["kangaroos"] = "Kangaroo",
["karnans"] = "Karnan",
["karrakanians"] = "Karrakanian",
["katarthans"] = "Katarthan",
["kathoonians"] = "Kathoonian",
["kherubim"] = "Kherubim",
["khundia"] = "Khund",
["khunds"] = "Khund",
["klarmarians"] = "Klarmarian",
["korgu"] = "Korugaran",
["korugar"] = "Korugaran",
["korugarian"] = "Korugaran",
["kranaltinians"] = "Kranaltinian",
["kreels"] = "Kreel",
["kroloteans"] = "Krolotean",
["kriptonan"] = "Kryptonian",
["kriptonian"] = "Kryptonian",
["kryptonan"] = "Kryptonian",
["kryptonian"] = "Kryptonian",
["kryptonian canine"] = "Kryptonian Canines",
["kryptonian god"] = "Kryptonian Gods",
["kwai"] = "Kwai",
["kwyzz"] = "Kwyzz",
["laburbians"] = "LaBurbian",
["lallorians"] = "Lallorian",
["lanothians"] = "Lanothian",
["lemurs"] = "Lemur",
["leprechauns"] = "Leprechaun",
["lexoran"] = "Lexorian",
["lexorian"] = "Lexorian",
["ligers"] = "Liger",
["lilliputians"] = "Lilliputian",
["lions"] = "Lion",
["lisnarians"] = "Lisnarians",
["living stars"] = "Living Star",
["lizarkons"] = "Lizarkon",
["llarans"] = "Llaran",
["loraneans"] = "Loranean",
["lurkers"] = "Lurker",
["makkorans"] = "Makkoran",
["maltusians"] = "Maltusian",
["maltus"] = "Maltusian",
["manatees"] = "Manatee",
["manhawks"] = "Manhawk",
["manhunter"] = "Manhunter",
["man hunter"] = "Manhunter",
["man hunters"] = "Manhunter",
["man-hunter "] = "Manhunter",
["man-hunters"] = "Manhunter",
["markians"] = "Markian",
["marsian"] = "Martian",
["marshan "] = "Martian",
["marsian "] = "Martian",
["martians"] = "Martian",
["meganian"] = "Megan",
["mercurians"] = "Mercurian",
["mermaid"] = "Merpeople",
["merman"] = "Merpeople",
["merpeople"] = "Merpeople",
["metahuman"] = "Metahuman",
["metans"] = "Metan",
["mice"] = "Mouse",
["minotaurs"] = "Minotaur",
["mongooses"] = "Mongoose",
["monitors"] = "Monitor",
["monkeys"] = "Monkey",
["moose"] = "Moose",
["mosteelians"] = "Mosteelian",
["motusians"] = "Motusian",
["muldroogans"] = "Muldroogan",
["mummies"] = "Mummy",
["murrians"] = "Murrian",
["muscaran"] = "Muscarian",
["mutants"] = "Mutant",
["mutant"] = "Mutant",
["myrgs"] = "Myrg",
["n'cronians"] = "N'cronian",
["new asgardians"] = "New Asgardian",
["new genesis bug"] = "Bug of New Genesis",
["new genesis bugs"] = "Bug of New Genesis",
["nacktosian"] = "Naktosian",
["naktosan"] = "Naktosian",
["naltoran"] = "Naltorian",
["neanderthals"] = "Neanderthal",
["nekromnians"] = "Nekromnian",
["neonians"] = "Neonian",
["neptunians"] = "Neptunian",
["new genesis"] = "New Gods",
["new gods"] = "New God",
["new-god"] = "New God",
["new-gods"] = "New God",
["ngoans"] = "Ngoan",
["noc'sagians"] = "Noc'sagian",
["norman"] = "Norman",
["numericonians"] = "Numericonian",
["ny'l'uylians"] = "Ny'L'Uylian",
["nymphs"] = "Nymph",
["oanian"] = "Oan",
["oans"] = "Oan",
["obsidian-folk"] = "Obsidian-Folk",
["octopuses"] = "Octopus",
["odilinians"] = "Odilinian",
["ogoroans"] = "Ogoroan",
["ogres"] = "Ogre",
["okaran"] = "Okaaran",
["okarian"] = "Okaaran",
["okaarian"] = "Okaaran",
["old gods"] = "Old God",
["olympians"] = "God of Olympus",
["olympian gods"] = "God of Olympus",
["gods of olympus"] = "God of Olympus",
["oompanians"] = "Oompanian",
["orandans"] = "Oradan",
["oranxians"] = "Oranxian",
["orazans"] = "Orazan",
["orcks"] = "Orck",
["oursians"] = "Oursian",
["ovacronians"] = "Ovacronian",
["owls"] = "Owl",
["ozimanians"] = "Ozimanian",
["ozyronians"] = "Ozyronian",
["parademons"] = "Parademon",
["pegacorns"] = "Pegacorn",
["pegasi"] = "Pegasus",
["pharmans"] = "Pharman",
["phlonians"] = "Phlonian",
["phytarians"] = "Phytarian",
["pigs"] = "Pig",
["placentamorphs"] = "Placentamorph",
["plutonians"] = "Plutonian",
["porpoises"] = "Porpoise",
["preztorians"] = "Preztorian",
["proteans"] = "Protean",
["psions"] = "Psion",
["pumician"] = "Pumice Person",
["pumice"] = "Pumice Person",
["pumice people"] = "Pumice Person",
["pumican"] = "Pumice Person",
["punkusians"] = "Punkusian",
["qwardians"] = "Qwardian",
["rabbits"] = "Rabbit",
["ramoxians"] = "Ramoxian",
["ranian"] = "Rannian",
["raanian"] = "Rannian",
["rannan"] = "Rannian",
["rann"] = "Rannian",
["rats"] = "Rat",
["the reach"] = "Reach",
["red saturnians"] = "Red Saturnian",
["white saturnians"] = "White Saturnian",
["saturnians"] = "Saturnian",
["reptiles"] = "Reptile",
["rhoonians"] = "Rhoonian",
["rhormorids"] = "Rhormorid",
["rimboran"] = "Rimborian",
["rimborians"] = "Rimborian",
["robots"] = "Robot",
["roguians"] = "Roguian",
["rojirans"] = "Rojiran",
["satyrs"] = "Satyr",
["slavothian"] = "Savothian",
["slavothan "] = "Savothian",
["savothan"] = "Savothian",
["sddires"] = "Sddire",
["seals"] = "Seal",
["selachians"] = "Selachian",
["sharks"] = "Shark",
["shayol"] = "Shayol",
["sheeda"] = "Sheeda",
["sher'hedeens"] = "Sher'Hedeen",
["sh'pilkuzzians"] = "Sh'pilkuzzian",
["shwarians"] = "Shwarian",
["siamgemians"] = "Siamgemian",
["simballians"] = "Simballian",
["sirkians"] = "Sirkian",
["sklarians"] = "Sklarian",
["skors"] = "Skor",
["skrulls"] = "Skrull",
["sky kangas"] = "Sky Kanga",
["slyggians"] = "Slyggian",
["snow elves"] = "Snow Elf",
["solarians"] = "Solarian",
["somahturans"] = "Somahturan",
["space krakens"] = "Space Kraken",
["spitroid"] = "Spitroid",
["spitroid"] = "Spitroid",
["squirrels"] = "Squirrel",
["star conquerors"] = "Star Conqueror",
["starhavenite"] = "Starhavenites",
["stratans"] = "Stratan",
["succubi"] = "Succubus",
["suirpalamanians"] = "Suirpalamanian",
["sun-eaters"] = "Sun-Eater",
["synriannaquians"] = "Synriannaquian",
["talokites"] = "Talokite",
["talokians"] = "Talokite",
["talynians"] = "Talynian",
["tamareneans"] = "Tamaranean",
["tamaraneans"] = "Tamaranean",
["tamojoranians"] = "Tamojoranian",
["tanjentans"] = "Tanjentan",
["tartarians"] = "Tartarian",
["tchk-tchks"] = "Tchk-Tchk",
["teallians"] = "Teallian",
["terminans"] = "Terminan",
["terrans"] = "Terran",
["terravores"] = "Terravore",
["thanagar"] = "Thanagarian",
["thanagarians"] = "Thanagarian",
["tharrians"] = "Tharrian",
["tharr"] = "Tharrian",
["thronnians"] = "Thronnian",
["tigers"] = "Tiger",
["tigres"] = "Tiger",
["tigre"] = "Tiger",
["tir na nógs"] = "Tir Na Nóg",
["titan of myth"] = "Titans of Myth",
["titans of myth"] = "Titans of Myth",
["titan"] = "Titanian",
["titanan"] = "Titanian",
["toomeyans"] = "Toomeyan",
["tormocks"] = "Tormock",
["tortugans"] = "Tortugan",
["trees"] = "Tree",
["trench"] = "Trench",
["trewskians"] = "Trewskian",
["tritonians"] = "Tritonian",
["trogkian mammoths"] = "Trogkian Mammoth",
["trommites"] = "Trommite",
["tront"] = "Trontian",
["trontians"] = "Trontian",
["tsauronians"] = "Tsauronian",
["turtles"] = "Turtle",
["tymmxans"] = "Tymmxan",
["tyrrazians"] = "Tyrrazian",
["ungara"] = "Ungaran",
["unicorns"] = "Unicorn",
["unmen"] = "Un-Man",
["unman"] = "Un-Man",
["un men"] = "Un-Man",
["un man"] = "Un-Man",
["un-man"] = "Un-Man",
["un-manian"] = "Un-Man",
["urgrundians"] = "Urgrundian",
["uxorians"] = "Uxorian",
["uxor"] = "Uxorian",
["vaikeans"] = "Vaikean",
["valeronians"] = "Valeronian",
["valkyries"] = "Valkyrie",
["vampire"] = "Vampire",
["vampires"] = "Vampire",
["van'nians"] = "Van'nian",
["varidians"] = "Varidian",
["varvans"] = "Varvan",
["velosians"] = "Velosian",
["venegarians"] = "Venegarian",
["venturans"] = "Venturan",
["venturians"] = "Venturan",
["venusians"] = "Venusian",
["venerians"] = "Venusian",
["volkregians"] = "Volkregian",
["voranians"] = "Voranian",
["vornians"] = "Vornian",
["vulcans"] = "Vulcan",
["vuldarians"] = "Vuldarian",
["vyrgans"] = "Vyrgan",
["weasels"] = "Weasel",
["werewolf"] = "Werewolf",
["wherewolf"] = "Werewolf",
["wherewolves"] = "Werewolf",
["werewolves"] = "Werewolf",
["whales"] = "Whale",
["white martians"] = "White Martian",
["winathians"] = "Winathian",
["wolves"] = "Wolf",
["xanshan"] = "Xanshian",
["xanthuans"] = "Xanthuan",
["xarapions"] = "Xarapion",
["xardans"] = "Xardan",
["xenusians"] = "Xenusian",
["xibalbans"] = "Xibalban",
["xudarians"] = "Xudarian",
["the yodix"] = "Yodix",
["youngenians"] = "Youngenian",
["zadronians"] = "Zadronian",
["zamarons"] = "Zamaron",
["zambaii"] = "Zambaii",
["zarolatts"] = "Zarolatt",
["zaronians"] = "Zaronian",
["zaroxians"] = "Zaroxian",
["zeroxians"] = "Zeroxian",
["zezzites"] = "Zezzite",
["zirandians"] = "Zirandians",
["zoans"] = "Zoan",
["zombies"] = "Zombie",
["zsiglonians"] = "Zsiglonian",
["zuunians"] = "Zuunian",
["zwenians"] = "Zwenian",
["zymians"] = "Zymian"
}

race_table = {
	["valid"] = valid,
	["substitutes"] = substitutes
}

----------------------------
-- Libraries of functions --
----------------------------
-- stands for High Frequency
local HF = require('Module:ComicsHF')
-- Parses invocation parameters, trims whitespace, and removes blanks.
local getArgs = require('Dev:Arguments').getArgs
-- Gives the name of the current page. It's expensive, so we only do it once.
-- The _G then makes it global, available to all page functions.
_G.vars = { Pagename = mw.title.getCurrentTitle().text }

----------------------------------------------------------
-- Public functions (called from a Template or article) --
----------------------------------------------------------

-- There is no standalone template, so no public functions.

--------------------------------------------------------
-- Internal functions (used in this and other Modules --
--------------------------------------------------------
function valid:in_database( name )
    if type( self[ name ] ) == 'string' then
        return true
    else
        return nil
    end
end

function valid:pluralize( name )
    if self:in_database ( name ) then
        return self[name]
    else
        -- Brute force method of making a singular plural
        name = name:gsub( 's$', 'es' )
        name = name:gsub( 'x$', 'es' )
        name = name:gsub( 'z$', 'es' )
        name = name:gsub( 'ch$', 'es' )
        name = name:gsub( 'sh$', 'es' )
        name = name:gsub( 'y$', 'ies' )
        name = name:gsub( 'f$', 'ves' )
        name = name:gsub( 'fe$', 'ves' )
        name = name:gsub( '[^s]$', '%1s' )
        return name
    end
end

function valid:link( race )
    return HF.CategoryLink( self:pluralize(race), vars.Pagename, race )
end

function substitutes:in_list( name )
    if type( self[ string.lower( name ) ] ) == 'string' then
        return true
    else
        return nil
    end
end

function substitutes:sub( name )
    if self:in_list( name ) then
        return self[ string.lower( name ) ]
    else
        return nil
    end
end

function substitutes:link( name )
    return HF.CategoryLink( valid[name], vars.Pagename, name )
end

function race_table._Race( field, vars )
    local output = ''
    local o = {}
    -- Check for multiple values separated with commas
    local values = HF.explode( ',', field.Value )
    
    for i, v in ipairs( values ) do
        v = HF.trim( v )
        if valid:in_database( v ) then
            -- Check if it's a valid race with a plural form.
            -- If yes - add category links
            table.insert(o, valid:link( v ) )
        elseif substitutes:sub( v ) then
            -- If it's not valid, check for a direct substitution
            -- If there's one in the database, use the corrected one
            table.insert(o, valid:link( substitutes:sub( v ) ) )
        elseif string.match( v, '%[%[.*%]%]' ) then
            -- If it's already a link, leave it alone.
            table.insert(o, v)
        else
            -- 3. If no substitution is found
            -- fallback to a common grammar rules
            -- and add a page to a Category:Needs valid race
            table.insert( o , valid:link( v ) ..
                HF.Category( "Needs valid race", vars.Pagename )
            )
        end
    end
    
    -- If Value2 or ValueRef is provided
    -- concatenate them to the output
    if not HF.isempty( field.Value2 ) then
        output = output .. " " .. field.Value2
    end
    if not HF.isempty( field.ValueRef ) then
        output = output .. " " .. field.ValueRef
    end
    
    return table.concat(o, ' · ') .. output
end

-------------------------------------------------
-- Output (send it back to whatever called it) --
-------------------------------------------------
return race_table
Advertisement