/
generator.go
228 lines (217 loc) · 2.33 KB
/
generator.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
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
package randomword
import (
"fmt"
"math/rand"
"strings"
"time"
)
const adjectives = `accountable
active
agile
anxious
appreciative
balanced
boisterous
bold
boring
brash
brave
bright
busy
chatty
cheerful
chipper
comedic
courteous
daring
delightful
empathic
excellent
exhausted
fantastic
fearless
fluent
forgiving
friendly
funny
generous
grateful
grouchy
grumpy
happy
hilarious
humble
impressive
insightful
intelligent
interested
kind
lean
nice
noisy
optimistic
patient
persistent
proud
quick
quiet
reflective
relaxed
reliable
responsible
responsive
rested
restless
shiny
shy
silly
sleepy
smart
spontaneous
surprised
sweet
talkative
terrific
thankful
timely
tired
turbulent
unexpected
wacky
wise
zany`
const nouns = `aardvark
alligator
antelope
baboon
badger
bandicoot
bat
bear
bilby
bongo
bonobo
buffalo
bushbuck
camel
cassowary
cat
cheetah
chimpanzee
chipmunk
civet
crane
crocodile
dingo
dog
dugong
duiker
echidna
eland
elephant
emu
fossa
fox
gazelle
gecko
gelada
genet
gerenuk
giraffe
gnu
gorilla
grysbok
hartebeest
hedgehog
hippopotamus
hyena
hyrax
impala
jackal
jaguar
kangaroo
klipspringer
koala
kob
kookaburra
kudu
lemur
leopard
lion
lizard
llama
lynx
manatee
mandrill
meerkat
mongoose
mouse
numbat
nyala
okapi
oribi
oryx
ostrich
otter
panda
pangolin
panther
parrot
platypus
porcupine
possum
puku
quokka
quoll
rabbit
ratel
raven
reedbuck
rhinoceros
roan
sable
serval
shark
sitatunga
springhare
squirrel
swan
tasmaniandevil
tiger
topi
toucan
turtle
wallaby
warthog
waterbuck
wildebeest
wolf
wolverine
wombat
zebra`
type Generator struct {
r *rand.Rand
}
func NewGenerator() Generator {
return Generator{r: rand.New(rand.NewSource(time.Now().UnixNano()))}
}
func (gen Generator) Babble() string {
return fmt.Sprintf("%s-%s-%s", gen.RandomAdjective(), gen.RandomNoun(), gen.RandomTwoLetters())
}
func (gen Generator) RandomAdjective() string {
return randomElement(gen.r, adjectives)
}
func (gen Generator) RandomNoun() string {
return randomElement(gen.r, nouns)
}
func (gen Generator) RandomTwoLetters() string {
var asciiLetterA = 97
letterOne := string(rune(gen.r.Intn(26) + asciiLetterA))
letterTwo := string(rune(gen.r.Intn(26) + asciiLetterA))
return letterOne + letterTwo
}
func randomElement(r *rand.Rand, fullList string) string {
wordList := strings.Split(fullList, "\n")
randomWordIndex := r.Int() % len(wordList)
return wordList[randomWordIndex]
}