File Coverage

blib/lib/Game/CharacterSheetGenerator/DwarfNames.pm
Criterion Covered Total %
statement 11 11 100.0
branch n/a
condition 1 3 33.3
subroutine 4 4 100.0
pod 0 2 0.0
total 16 20 80.0


line stmt bran cond sub pod time code
1             #!/usr/bin/env perl
2             # Copyright (C) 2012-2022 Alex Schroeder
3              
4             # This program is free software: you can redistribute it and/or modify it under
5             # the terms of the GNU General Public License as published by the Free Software
6             # Foundation, either version 3 of the License, or (at your option) any later
7             # version.
8             #
9             # This program is distributed in the hope that it will be useful, but WITHOUT
10             # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11             # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
12             #
13             # You should have received a copy of the GNU General Public License along with
14             # this program. If not, see .
15              
16             =encoding utf8
17              
18             =head1 NAME
19              
20             Game::CharacterSheetGenerator::DwarfName - return a dwarf name
21              
22             =head1 SYNOPSIS
23              
24             use Game::CharacterSheetGenerator::DwarfName qw(dwarf_name);
25             # returns both $name and $gender (F, M, or ?)
26             my ($name, $gender) = dwarf_name();
27             # returns the same name and its gender
28             ($name, $gender) = dwarf_name("Alex");
29              
30             =head1 DESCRIPTION
31              
32             This package has one function that returns a dwarf name and a gender. The gender
33             returned is "M", "F", or "?".
34              
35             If a name is provided, the gender is returned.
36              
37             =cut
38              
39             package Game::CharacterSheetGenerator::DwarfNames;
40 9     9   65 use Modern::Perl;
  9         16  
  9         57  
41 9     9   1002 use utf8;
  9         20  
  9         42  
42              
43             require Exporter;
44             our @ISA = qw(Exporter);
45             our @EXPORT_OK = qw(dwarf_name);
46              
47             sub one {
48 36     36 0 140 my $i = int(rand(scalar @_));
49 36         143 return $_[$i];
50             }
51              
52             # https://dwarrowscholar.wordpress.com/general-documents/male-dwarf-outer-names/
53             # https://dwarrowscholar.wordpress.com/general-documents/female-dwarf-outer-names/
54              
55             my @names = qw{Aín M Áiskjald M Áispori M Áithrasir M Áivari M Ajar M Áki M
56             Albin M Alekin M Alf M Alfar M Alfi M Alfin M Alfskjald M Alfthrasir M Alfvari M
57             Althar M Althi M Althin M Althjof M Althskjald M Althspori M Alththrasir M
58             Althvari M Álvfinnur M Álvhethin M Alvi M Álvur M Ámundur M Anar M Andar M Andi
59             M Andin M Andri M Andskjald M Andspori M Andthrasir M Andvari M Ani M Anin M
60             Anskjald M Anspori M Anthrasir M Anvari M Ari M Ári M Aritur M Arnaldur M
61             Arnfinnur M Arnfríthur M Arngrímur M Arni M Árni M Arnlígur M Arnljótur M
62             Arnoddur M Arvinur M Ásbergur M Ásbrandur M Ásfinnur M Ásgrímur M Ási M Askur M
63             Áslakur M Ásleivur M Ásmóthur M Ásmundur M Ásvaldur M Ásvarthur M Atli M Aurar M
64             Auri M Aurin M Aurskjald M Aurspori M Aurthrasir M Aurvang M Aurvari M Austar M
65             Austi M Austin M Austri M Austskjald M Austspori M Austvari M Ávaldur M Balar M
66             Baldur M Baldvin M Bali M Balin M Bálli M Balskjald M Balspori M Balthrasir M
67             Balvari M Baraldur M Báraldur M Barinur M Bárivin M Bárthur M Bávurin M Beini M
68             Benrin M Bergfinnur M Bergfríthur M Bergleivur M Bergur M Bersi M Bessi M Bifar
69             M Bifi M Bifin M Bifskjald M Bifspori M Bifur M Bifvari M Bilar M Bilbur M Bildr
70             M Bili M Bilin M Billar M Billi M Billin M Billing M Billskjald M Billspori M
71             Billthrasir M Bilskjald M Bilthrasir M Bilvari M Birni M Bjarki M Bjarngrímur M
72             Bjarnhethin M Bjarni M Bjarnvarthur M Bjarti M Bjartur M Bjórgfinnur M
73             Bjórghethin M Bjórgolvur M Bjórgúlvur M Bofar M Bofi M Bofin M Bofskjald M
74             Bofspori M Bofthrasir M Bofur M Bofvari M Bogi M Bombar M Bombi M Bombin M
75             Bombskjald M Bombspori M Bombthrasir M Bombur M Bombvari M Bótolvur M Bragi M
76             Bráli M Brandur M Brávur M Bresti M Brialdur M Broddi M Broddur M Bróin M Bróri
77             M Brosi M Brunar M Bruni M Brunin M Brunskjald M Brunspori M Brunthrasir M Brúsi
78             M Brynjolvur M Brynleivur M Búgvi M Búi M Burar M Buri M Burin M Burinur M Bursi
79             M Burskjald M Burspori M Burthrasir M Dagbjartur M Dagfinnur M Dagur M Dáin M
80             Dár M Daskjald M Dávi M Dávur M Díthrikur M Ditleivur M Djóni M Dolgar M Dolgi M
81             Dolgin M Dolgskjald M Dolgspori M Dolgthrasir M Dolgvari M Dorar M Dori M Dorin
82             M Dorskjald M Dorspori M Dorthrasir M Dorvari M Draupar M Draupi M Draupin M
83             Draupnir M Draupskjald M Draupspori M Draupthrasir M Draupvari M Dróin M Drúinur
84             M Duf M Dufar M Dufi M Dufin M Dufskjald M Dufthrasir M Dufvari M Dunaldur M
85             Durar M Duri M Durinar M Durskjald M Durspori M Durthrasir M Durvari M Dwali M
86             Dwalin M Dwalskjald M Dwalspori M Dwalthrasir M Dwalur M Dwalvari M Dwárli M
87             Ebbi M Edmundur M Edvin M Egi M Egin M Eikar M Eiki M Eikin M Eikinskjaldi M
88             Eikskjald M Eikspori M Eikthrasir M Eikvari M Eilívur M Eindri M Eiri M Eirikur
89             M Eivindur M Eli M Ellindur M Enokur M Erlendur M Erlingur M Esmundur M Filar M
90             Fili M Filin M Filskjald M Filspori M Filthrasir M Filvari M Finn M Finnar M
91             Finnbogi M Finnfríthi M Finni M Finnin M Finnleivur M Finnskjald M Finnspori M
92             Finnur M Finnvari M Fjalar M Fjali M Fjalin M Fjalskjald M Fjalspori M
93             Fjalthrasir M Fjalvari M Fláim M Fláimingur M Flemmingur M Flói M Flóki M Flosi
94             M Flóvin M Fraeg M Fráin M Frar M Frár M Frarar M Frari M Frarin M Frarskjald M
95             Frarspori M Frarthrasir M Fraspori M Frathrasir M Fravari M Fridleivur M
96             Fríthálvur M Fríthbjartur M Fríthfinnur M Fríthi M Fríthmundur M Frítholvur M
97             Fríthrikur M Fríthur M Frostar M Frosti M Frostin M Frostskjald M Frostspori M
98             Frostthrasir M Frostvari M Fróthi M Fulla M Fundar M Fundi M Fundin M Fundskjald
99             M Fundspori M Fundthrasir M Fundvari M Ganar M Gani M Ganin M Ganskjald M
100             Ganthrasir M Geirbrandur M Geirfinnur M Geiri M Geirmundur M Geirolvur M Geirur
101             M Gestur M Gilli M Ginnar M Ginni M Ginnin M Ginnskjald M Ginnspori M
102             Ginnthrasir M Ginnvari M Gísli M Gissur M Gíti M Gloar M Glói M Glóin M Gloínur
103             M Glólin M Gloskjald M Glospori M Glothrasir M Glovari M Glúmur M Gormundur M
104             Gormur M Gráim M Greipur M Grímolvur M Grímur M Gripur M Gróim M Grómi M
105             Gudfinnur M Gudlígur M Gudmundur M Gulakur M Gullbrandur M Gundur M Gunnálvur M
106             Gunni M Gunnleikur M Gunnleivur M Gunnlígur M Gunnolvur M Gunnvaldur M Gusti M
107             Guthbjartur M Guthbrandur M Guthlakur M Gutti M Guttormur M Gylvi M Hábarthur M
108             Hagbarthur M Hallbergur M Hallfríthur M Hallgrímur M Hallmundur M Hallormur M
109             Hallur M Hallvarthur M Hámundur M Hannar M Hanni M Hannin M Hannskjald M
110             Hannspori M Hannthrasir M Hannvari M Haraldur M Hárikur M Haugar M Haugi M
111             Haugin M Haugskjald M Haugspori M Haugthrasir M Haugvari M Hávarthur M Havgrímur
112             M Havlithi M Heimurin M Heindrikur M Heini M Heinrikur M Heithrikur M Helgi M
113             Hemingur M Hemmingur M Hendrikur M Henningur M Heptar M Hepti M Heptin M
114             Heptskjald M Heptspori M Heptvari M Herálvur M Herbjartur M Herbrandur M
115             Herfinnur M Herfríthur M Hergrímur M Heri M Herjolvur M Herleivur M Herlígur M
116             Hermóthur M Hermundur M Herningur M Herolvur M Hervarthur M Hethin M
117             Hildibjartur M Hildibrandur M Hjalgrímur M Hjalti M Hjórgrímur M Hjórleivur M
118             Hjórmundur M Hjórtur M Hlear M Hlei M Hlein M Hleskjald M Hlespori M Hlevang M
119             Hlevari M Hlóin M Hógni M Hor M Hóraldur M Horar M Hori M Hóri M Horin M Hornar
120             M Hornbori M Horni M Hornin M Hornskjald M Hornthrasir M Horskjald M Horspori M
121             Horthrasir M Hórthur M Horvari M Hóskuldur M Hugi M Hugin M Húnbogi M Húni M
122             Ímundur M Ingálvur M Ingi M Ingibjartur M Ingileivur M Ingimundur M Ingivaldur M
123             Ingjaldur M Ingolvur M Ingvaldur M Ísakur M Ísleivur M Íthálvur M Íthbjartur M
124             Íthfinnur M Íthgrímur M Íthi M Íthleivur M Íthmundur M Ítholvur M Íthvarthur M
125             Jallgrímur M Jarar M Jari M Jarin M Jarleivur M Jarmundur M Jarskjald M Jarspori
126             M Jarthrasir M Jarvari M Jaspur M Jatmundur M Játmundur M Jatvarthur M Jófríthur
127             M Jónfinnur M Jónhethin M Jóni M Jónleivur M Jórmundur M Jórundur M Justi M
128             Jústi M Kai M Kálvur M Kári M Karstin M Kartni M Kilar M Kili M Kilin M
129             Kilskjald M Kilspori M Kilthrasir M Kilvari M Knútur M Kolfinnur M Kolgrímur M
130             Kolmundur M Koraldur M Kristin M Kristleivur M Kristmundur M Kristoffur M Kyrri
131             M Lassi M Leiki M Leivur M Levi M Lit M Litar M Liti M Litin M Litskjald M
132             Litthrasir M Lofar M Lofi M Lofin M Lofskjald M Lofspori M Loftur M Lofvari M
133             Lonar M Loni M Lonin M Lonskjald M Lonspori M Lonthrasir M Lonvari M Lothin M
134             Lýthur M Magni M Manni M Marni M Martur M Máur M Mjothar M Mjothi M Mjothin M
135             Mjothskjald M Mjothspori M Mjoththrasir M Mjothvari M Mjothvitnir M Módsognir M
136             Motar M Moti M Motin M Motsognir M Motspori M Motvari M Naddoddur M Naglur M
137             Náin M Nalar M Nali M Náli M Nalin M Nalskjald M Nalspori M Nalthrasir M Nar M
138             Nár M Narar M Nari M Narin M Narspori M Narthrasir M Narvari M Narvi M Naskjald
139             M Naspori M Niklái M Nipar M Nipi M Nipin M Niping M Nipskjald M Nipspori M
140             Nipthrasir M Nipvari M Nithar M Nithi M Nithin M Nithspori M Niththrasir M
141             Njálur M Nói M Norar M Nori M Norin M Norskjald M Norspori M Northar M Northi M
142             Northin M Northleivur M Northrasir M Northri M Northskjald M Norththrasir M
143             Norvari M Nyar M Nyr M Nyrar M Nyrath M Nyri M Nyrin M Nyrspori M Nyrthrasir M
144             Nyrvari M Nyskjald M Nyspori M Nythrasir M Nyvari M Oddfinnur M Oddfríthur M
145             Oddleivur M Oddmundur M Oddur M Oddvaldur M Ógmundur M Ógvaldur M Óigrímur M
146             Óileivur M Óilolvur M Óimundur M Oínur M Óivindur M Óksur M Ólavur M Óli M Ólin
147             M Olivur M Onar M Oni M Onin M Onskjald M Onthrasir M Onundur M Orar M Ori M
148             Orin M Órin M Ormur M Órnolvur M Orri M Orskjald M Orspori M Orthrasir M Órvur M
149             Óssur M Óthin M Ovi M Páitur M Palli M Pátrin M Petrur M Poli M Ragnvaldur M
150             Rani M Rathsar M Rathsin M Rathskjald M Rathspori M Rathsthrasir M Rathsvari M
151             Rathsvith M Ravnur M Regar M Regi M Regin M Regskjald M Regspori M Regthrasir M
152             Regvari M Reinaldur M Ríkaldur M Ríkin M Róaldur M Rodleivur M Rodmundur M
153             Rógnvaldur M Rógvi M Rói M Róin M Rókur M Róli M Rólvur M Rómundur M Ronni M
154             Rórin M Rósingur M Róthbjartur M Rótholvur M Rubekur M Rúni M Rúnolvur M
155             Sáifinnur M Sáimundur M Saksi M Salmundur M Sámur M Sandur M Servin M Sevrin M
156             Sigbjartur M Sigbrandur M Sigfríthur M Sighvatur M Sigmundur M Signhethin M
157             Sigvaldur M Sindrinur M Sjúrthi M Sjúrthur M Skafar M Skafi M Skafin M Skafith M
158             Skafthrasir M Skafvari M Skeggi M Skirfar M Skirfi M Skirfin M Skirfir M
159             Skirfskjald M Skirfthrasir M Skirfvari M Skofti M Skúvur M Snámiúlvur M Sniolvur
160             M Snorri M Sólbjartur M Sólfinnur M Sólmundur M Sólvi M Sonni M Sórin M Sórkvi M
161             Sórli M Sproti M Steinfinnur M Steingrímur M Steinmundur M Steinoddur M
162             Steinolvur M Steinur M Stígur M Sudri M Summaldur M Summarlithi M Suni M Súni M
163             Súnmundur M Sunnleivur M Suthar M Suthi M Suthin M Suthri M Suthskjald M
164             Suthspori M Suththrasir M Suthvari M Sveinungur M Sveinur M Svenningur M Sverri
165             M Svín M Sviskjald M Svispori M Svithrasir M Sviur M Svivari M Svjar M Teitur M
166             Terji M Thekk M Thekkar M Thekki M Thekkin M Thekkskjald M Thekkspori M
167             Thekkvari M Thorar M Thori M Thorin M Thornur M Thorskjald M Thorspori M
168             Thorthrasir M Thorvari M Thráim M Thráin M Thrárin M Thraskjald M Thraspori M
169             Thravari M Thrór M Throrar M Throri M Throrin M Throrskjald M Throrspori M
170             Throrthrasir M Throrvari M Títhrikur M Tjálvi M Tjótholvur M Tóki M Tollakur M
171             Tonni M Tóraldur M Tórálvur M Tórarin M Torbergur M Torbrandur M Torfinnur M
172             Torfríthur M Torgestur M Torgrímur M Tórhallur M Tórhethin M Tóri M Torleivur M
173             Torlígur M Tormóthur M Tormundur M Tóroddur M Tórolvur M Torri M Tórthur M Tórur
174             M Torvaldur M Tóti M Tráin M Tráli M Trísti M Tróndur M Tróstur M Trygvi M Tyrni
175             M Týrur M Uggi M Úlvhethin M Úlvur M Uni M Vagnur M Valbergur M Valbrandur M
176             Valdi M Vermundur M Vestar M Vesti M Vestin M Vestri M Vestskjald M Vestspori M
177             Vestthrasir M Vestvari M Veturlithi M Vígbaldur M Vígbrandur M Vigg M Viggar M
178             Viggi M Viggin M Víggrímur M Viggskjald M Viggspori M Viggthrasir M Viggvari M
179             Vígúlvur M Vilar M Vilbergur M Vilhjálmur M Vili M Vilin M Viljormur M Villi M
180             Vilmundur M Vilskjald M Vilspori M Vilthrasir M Vilvari M Vinar M Vindalf M Vini
181             M Vinin M Vinsi M Vinskjald M Vinspori M Vinthrasir M Virfar M Virfi M Virfin M
182             Virfir M Virfskjald M Virfspori M Virfthrasir M Virfvari M Vistri M Vit M Vóggur
183             M Vólundur M Vónbjartur M Wali M Yngvi M Ábria F Agda F Aí F Aís F Alda F Aldís
184             F Alma F Alrún F Álvdís F Ánania F Anís F Anní F Arís F Arna F Árna F Arndís F
185             Arnina F Arnóra F Arnvór F Ása F Ásbera F Ásdís F Áshild F Ásla F Áslíg F Asta F
186             Ásta F Ásvór F Ata F Báldís F Bára F Barba F Beinta F Bera F Bergní F Betta F
187             Bettí F Billa F Bina F Birna F Birta F Bís F Bjalla F Bjarma F Bjarta F Bjólla F
188             Borgní F Bórka F Brá F Brynja F Bylgja F Dagní F Dagrún F Dagunn F Dái F Dania F
189             Danvór F Dina F Dinna F Dís F Dógg F Drós F Durís F Durita F Duruta F Ebba F
190             Edda F Eilin F Eina F Eir F Elsba F Elspa F Elsuba F Embla F Enna F Erla F Erna
191             F Esta F Ester F Estur F Fanní F Fía F Fípa F Fís F Fjóla F Flykra F Fólva F
192             Frái F Fróia F Frótha F Geira F Gís F Glóa F Gortra F Gróa F Gudní F Gudvór F
193             Gunn F Gunna F Gunnvá F Gurli F Gylta F Halda F Havdís F Henní F Hera F Herta F
194             Hervór F Hildur F Hjalma F Hjordís F Hulda F Ida F Ina F Ingrún F Ingunn F Ingvá
195             F Ingvór F Inna F Irena F Íth F Ithunn F Íthunn F Íthur F Janna F Jansí F
196             Járndís F Jensa F Jensia F Jódís F Jóhild F Jónvár F Jórunn F Jovina F Jóvór F
197             Jústa F Jútta F Kaia F Kamma F Kára F Kárunn F Katla F Lí F Lilja F Lín F Lís F
198             Lívói F Lóa F Lona F Lovisa F Lula F Lusia F Magga F Malja F Malla F Marí F
199             Marjun F Marna F Masa F Merrí F Metta F Milja F Mina F Minna F Mira F Myrna F
200             Nái F Naina F Nanna F Nanní F Nís F Nísi F Nita F Nomi F Oda F Oddní F Oddrún F
201             Oddvá F Oddvór F Óidís F Óigló F Óilíg F Óivór F Oluffa F Óluva F Píl F Ragna F
202             Rakul F Randi F Rannvá F Revna F Rikka F Ritva F Ró F Róa F Roda F Róskva F
203             Rótha F Rún F Rúna F Saldís F Salní F Salvór F Sanna F Sigga F Signa F Signí F
204             Sigrun F Sigvór F Sissal F Siv F Sól F Sóldís F Sólja F Sólrun F Sólva F Sólvá F
205             Sólvór F Stina F Suffía F Súna F Sunnvá F Svanna F Sváva F Svelldís F Sví F
206             Talita F Thrái F Tíra F Tordís F Torní F Tórunn F Torvór F Tóta F Tova F Tóva F
207             Turith F Ulla F Una F Unn F Unna F Unnur F Urth F Urtha F Vagna F Valdís F Vár F
208             Várdís F Vígdís F Vinní F Vís F Vísi F Vón F Yngva F Yrsa F};
209              
210             # This slow setting allows us to find errors.
211             my %names;
212             my $last = "";
213             while (@names) {
214             my $key = shift(@names);
215             my $val = shift(@names);
216             die "$last $key" unless $val =~ /^[FM?]$/;
217             $names{$key} = $val;
218             $last = $val;
219             }
220              
221             sub dwarf_name {
222 36   33 36 0 9525 my $name = shift || one(keys %names);
223 36         1637 my $gender = $names{$name};
224 36         198 return ($name, $gender);
225             }
226              
227             1;