-
Notifications
You must be signed in to change notification settings - Fork 1
/
symtab.go
163 lines (138 loc) · 4.23 KB
/
symtab.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
package fantasyname
import (
"fmt"
"github.com/s0rg/fantasyname/stringers"
)
var (
syllables = []string{
// a
"ach", "ack", "ad", "age", "ald", "ale", "an", "ang", "ar", "ard", "as", "ash", "at", "ath", "augh", "aw",
// b
"ban", "bel", "bur",
// c
"cer", "cha", "che",
// d
"dan", "dar", "del", "den", "dra", "dyn",
// e
"ech", "eld", "elm", "em", "en", "end", "eng", "enth", "er", "ess", "est", "et",
// g
"gar", "gha",
// h
"hat", "hin", "hon",
// i
"ia", "ight", "ild", "im", "ina", "ine", "ing", "ir", "is", "iss", "it",
// k
"kal", "kel", "kim", "kin",
// l
"ler", "lor", "lye",
// m
"mor", "mos",
// n
"nal", "ny", "nys",
// o
"old", "om", "on", "or", "orm", "os", "ough",
// p
"per", "pol",
// q
"qua", "que",
// r
"rad", "rak", "ran", "ray", "ril", "ris", "rod", "roth", "ryn",
// s
"sam", "say", "ser", "shy", "skel", "sul",
// t
"tai", "tan", "tas", "ther", "tia", "tin", "ton", "tor", "tur",
// u
"um", "und", "unt", "urn", "usk", "ust",
// v
"ver", "ves", "vor",
// w
"war", "wor",
// y
"yer",
}
vowels = []string{
"a", "e", "i", "o", "u", "y",
}
vowelsCombo = []string{
"ae", "ai", "au", "ay", "ea", "ee", "ei", "eu", "ey", "ia", "ie", "oe", "oi", "oo", "ou", "ui",
}
consonantsBase = []string{
"b", "c", "d", "f", "g", "h", "k", "l", "m", "n", "p", "r", "s", "t", "v", "w", "y", "z",
}
consonantsComboBase = []string{
"ch", "ll", "ph", "sh", "st", "th",
}
consonantsBegin = []string{
"bl", "br", "chr", "cl", "cr", "dr", "qu", "rh", "sch", "sl", "sm", "sn", "str", "sw", "thr", "tr", "wh", "zh",
}
consonantsAny = []string{
"ck", "gh", "ld", "lt", "nd", "nn", "nt", "rd", "rr", "rt", "ss",
}
consonantsExtra = []string{
"j", "q", "x",
}
consonants = merge(consonantsBase, consonantsExtra)
consonantsComboBegin = merge(
append(consonantsBase, consonantsExtra[0]),
consonantsComboBase,
consonantsBegin,
)
consonantsComboAny = merge(
append(consonantsBase, consonantsExtra[1]),
consonantsComboBase,
consonantsAny,
)
consonantsStupid = []string{
"b", "d", "f", "g", "h", "j", "k", "m", "n", "p", "w", "bl", "br", "cl", "fl", "fr", "gh", "gl", "gr", "kl",
"th",
}
insults = []string{
"air", "ankle", "ball", "beef", "bone", "bum", "bumble", "bump", "cheese", "clod", "clot", "clown", "corn",
"dip", "dolt", "doof", "dork", "dumb", "face", "finger", "foot", "fumble", "goof", "grumble", "head", "knock",
"knocker", "knuckle", "loaf", "lump", "lunk", "meat", "muck", "munch", "nit", "numb", "pin", "puff", "skull",
"snark", "sneeze", "thimble", "twerp", "twit", "wad", "wimp", "wipe",
}
mushies = []string{
"baby", "booble", "bunker", "cuddle", "cuddly", "cutie", "doodle", "foofie", "gooble", "honey", "kissie",
"lover", "lovey", "moofie", "mooglie", "moopie", "moopsie", "nookum", "poochie", "poof", "poofie", "pookie",
"schmoopie", "schnoogle", "schnookie", "schnookum", "smooch", "smoochie", "smoosh", "snoogle", "snoogy",
"snookie", "snookum", "snuggy", "sweetie", "woogle", "woogy", "wookie", "wookum", "wuddle", "wuddly", "wuggy",
"wunny",
}
mushiesEnds = []string{
"boo", "bunch", "bunny", "cake", "cakes", "cute", "darling", "dumpling", "dumplings", "face", "foof", "goo",
"head", "kin", "kins", "lips", "love", "mush", "pie", "poo", "pooh", "pook", "pums",
}
syllablesStupid = []string{
"elch", "idiot", "ob", "og", "ok", "olph", "olt", "omph", "ong", "onk", "oo", "oob", "oof", "oog", "ook",
"ooz", "org", "ork", "orm", "oron", "ub", "uck", "ug", "ulf", "ult", "um", "umb", "ump", "umph", "un", "unb",
"ung", "unk", "unph", "unt", "uzz",
}
symbolMap = map[rune][]fmt.Stringer{
's': convert(syllables),
'v': convert(vowels),
'V': convert(merge(vowels, vowelsCombo)),
'c': convert(consonants),
'B': convert(consonantsComboBegin),
'C': convert(consonantsComboAny),
'i': convert(insults),
'm': convert(mushies),
'M': convert(mushiesEnds),
'D': convert(consonantsStupid),
'd': convert(syllablesStupid),
}
)
func convert(in []string) (rv []fmt.Stringer) {
rv = make([]fmt.Stringer, len(in))
for i, s := range in {
rv[i] = stringers.Literal(s)
}
return rv
}
func merge(a []string, b ...[]string) (rv []string) {
rv = a
for _, v := range b {
rv = append(rv, v...)
}
return rv
}