Class: Seira::Random

Inherits:
Object
  • Object
show all
Defined in:
lib/seira/random.rb

Constant Summary collapse

MAX_UNIQUE_NAME_ATTEMPTS =
10

Class Method Summary collapse

Class Method Details

.adjectiveObject



27
28
29
30
# File 'lib/seira/random.rb', line 27

def self.adjective
  adjectives_lis_file = File.join(File.expand_path('../..', File.dirname(__FILE__)), 'resources', 'adjectives.txt')
  CSV.open(adjectives_lis_file, "r").map(&:first).map(&:chomp).map(&:strip).sample
end

.animalObject



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
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
# File 'lib/seira/random.rb', line 32

def self.animal
  %w[
    aardvark
    abyssinian
    affenpinscher
    akbash
    akita
    albatross
    alligator
    alpaca
    angelfish
    ant
    anteater
    antelope
    ape
    armadillo
    avocet
    axolotl
    baboon
    badger
    balinese
    bandicoot
    barb
    barnacle
    barracuda
    bat
    beagle
    bear
    beaver
    bee
    beetle
    binturong
    bird
    birman
    bison
    bloodhound
    boar
    bobcat
    bombay
    bongo
    bonobo
    budgerigar
    buffalo
    bulldog
    bullfrog
    burmese
    butterfly
    caiman
    camel
    capybara
    caracal
    caribou
    cassowary
    cat
    caterpillar
    catfish
    cattle
    centipede
    chameleon
    chamois
    cheetah
    chicken
    chihuahua
    chimpanzee
    chinchilla
    chinook
    chipmunk
    chough
    cichlid
    clam
    coati
    cobra
    cockroach
    cod
    collie
    coral
    cormorant
    cougar
    cow
    coyote
    crab
    crane
    crocodile
    crow
    curlew
    cuscus
    cuttlefish
    dachshund
    dalmatian
    deer
    dingo
    dinosaur
    discus
    dodo
    dog
    dogfish
    dolphin
    donkey
    dormouse
    dotterel
    dove
    dragonfly
    drever
    duck
    dugong
    dunker
    dunlin
    eagle
    earwig
    echidna
    eel
    eland
    elephant
    elk
    emu
    falcon
    ferret
    finch
    fish
    flamingo
    flounder
    fly
    fossa
    fox
    frigatebird
    frog
    galago
    gar
    gaur
    gazelle
    gecko
    gerbil
    gharial
    gibbon
    giraffe
    gnat
    gnu
    goat
    goldfinch
    goldfish
    goose
    gopher
    gorilla
    goshawk
    grasshopper
    greyhound
    grouse
    guanaco
    gull
    guppy
    hamster
    hare
    harrier
    havanese
    hawk
    hedgehog
    heron
    herring
    himalayan
    hippopotamus
    hornet
    horse
    hummingbird
    hyena
    ibis
    iguana
    impala
    indri
    insect
    jackal
    jaguar
    javanese
    jay
    jellyfish
    kakapo
    kangaroo
    kingfisher
    kiwi
    koala
    kouprey
    kudu
    labradoodle
    ladybird
    lapwing
    lark
    lemming
    lemur
    leopard
    liger
    lion
    lionfish
    lizard
    llama
    lobster
    locust
    loris
    louse
    lynx
    lyrebird
    macaw
    magpie
    mallard
    maltese
    manatee
    mandrill
    markhor
    marten
    mastiff
    mayfly
    meerkat
    millipede
    mink
    mole
    molly
    mongoose
    mongrel
    monkey
    moorhen
    moose
    mosquito
    moth
    mouse
    mule
    narwhal
    newt
    nightingale
    numbat
    ocelot
    octopus
    okapi
    olm
    opossum
    orang-utan
    oryx
    ostrich
    otter
    owl
    ox
    oyster
    pademelon
    panther
    parrot
    partridge
    peacock
    peafowl
    pekingese
    pelican
    penguin
    persian
    pheasant
    pig
    pigeon
    pika
    pike
    piranha
    platypus
    pointer
    pony
    poodle
    porcupine
    porpoise
    possum
    prawn
    puffin
    pug
    puma
    quail
    quelea
    quetzal
    quokka
    quoll
    rabbit
    raccoon
    ragdoll
    rail
    ram
    rat
    rattlesnake
    raven
    reindeer
    rhinoceros
    robin
    rook
    rottweiler
    ruff
    salamander
    salmon
    sandpiper
    saola
    sardine
    scorpion
    seahorse
    seal
    serval
    shark
    sheep
    shrew
    shrimp
    siamese
    siberian
    skunk
    sloth
    snail
    snake
    snowshoe
    somali
    sparrow
    spider
    sponge
    squid
    squirrel
    starfish
    starling
    stingray
    stinkbug
    stoat
    stork
    swallow
    swan
    tang
    tapir
    tarsier
    termite
    tetra
    tiffany
    tiger
    toad
    tortoise
    toucan
    tropicbird
    trout
    tuatara
    turkey
    turtle
    uakari
    uguisu
    umbrellabird
    unicorn
    viper
    vulture
    wallaby
    walrus
    warthog
    wasp
    weasel
    whale
    whippet
    wildebeest
    wolf
    wolverine
    wombat
    woodcock
    woodlouse
    woodpecker
    worm
    wrasse
    wren
    yak
    zebra
    zebu
    zonkey
    zorse
  ].sample
end

.unallowed_name?(name) ⇒ Boolean

Returns:

  • (Boolean)


19
20
21
22
23
24
# File 'lib/seira/random.rb', line 19

def self.unallowed_name?(name)
  # Robin always keeps his cool
  return true if name == "exasperated-robin"

  false
end

.unique_name(existing = []) ⇒ Object



8
9
10
11
12
13
14
15
16
17
# File 'lib/seira/random.rb', line 8

def self.unique_name(existing = [])
  attempts = 0
  loop do
    name = "#{adjective}-#{animal}"
    attempts += 1
    return name unless existing.include? name
    return name unless unallowed_name?(name)
    fail "Too many failed unique name attempts" if attempts > MAX_UNIQUE_NAME_ATTEMPTS
  end
end