zfaker 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/lib/zfaker/data/internet/hosts +3 -0
- data/lib/zfaker/data/name/first_names +3008 -0
- data/lib/zfaker/data/name/last_names +467 -0
- data/lib/zfaker/internet.rb +49 -0
- data/lib/zfaker/name.rb +29 -0
- data/lib/zfaker/utils/array_utils.rb +48 -0
- data/lib/zfaker/utils/module_utils.rb +70 -0
- data/lib/zfaker.rb +34 -0
- metadata +51 -0
@@ -0,0 +1,467 @@
|
|
1
|
+
Abbott
|
2
|
+
Abernathy
|
3
|
+
Abshire
|
4
|
+
Adams
|
5
|
+
Altenwerth
|
6
|
+
Anderson
|
7
|
+
Ankunding
|
8
|
+
Armstrong
|
9
|
+
Auer
|
10
|
+
Aufderhar
|
11
|
+
Bahringer
|
12
|
+
Bailey
|
13
|
+
Balistreri
|
14
|
+
Barrows
|
15
|
+
Bartell
|
16
|
+
Bartoletti
|
17
|
+
Barton
|
18
|
+
Bashirian
|
19
|
+
Batz
|
20
|
+
Bauch
|
21
|
+
Baumbach
|
22
|
+
Bayer
|
23
|
+
Beahan
|
24
|
+
Beatty
|
25
|
+
Bechtelar
|
26
|
+
Becker
|
27
|
+
Bednar
|
28
|
+
Beer
|
29
|
+
Beier
|
30
|
+
Berge
|
31
|
+
Bergnaum
|
32
|
+
Bergstrom
|
33
|
+
Bernhard
|
34
|
+
Bernier
|
35
|
+
Bins
|
36
|
+
Blanda
|
37
|
+
Blick
|
38
|
+
Block
|
39
|
+
Bode
|
40
|
+
Boehm
|
41
|
+
Bogan
|
42
|
+
Bogisich
|
43
|
+
Borer
|
44
|
+
Bosco
|
45
|
+
Botsford
|
46
|
+
Boyer
|
47
|
+
Boyle
|
48
|
+
Bradtke
|
49
|
+
Brakus
|
50
|
+
Braun
|
51
|
+
Breitenberg
|
52
|
+
Brekke
|
53
|
+
Brown
|
54
|
+
Bruen
|
55
|
+
Buckridge
|
56
|
+
Carroll
|
57
|
+
Carter
|
58
|
+
Cartwright
|
59
|
+
Casper
|
60
|
+
Cassin
|
61
|
+
Champlin
|
62
|
+
Christiansen
|
63
|
+
Cole
|
64
|
+
Collier
|
65
|
+
Collins
|
66
|
+
Conn
|
67
|
+
Connelly
|
68
|
+
Conroy
|
69
|
+
Considine
|
70
|
+
Corkery
|
71
|
+
Cormier
|
72
|
+
Corwin
|
73
|
+
Cremin
|
74
|
+
Crist
|
75
|
+
Crona
|
76
|
+
Cronin
|
77
|
+
Crooks
|
78
|
+
Cruickshank
|
79
|
+
Cummerata
|
80
|
+
Cummings
|
81
|
+
Dach
|
82
|
+
Daniel
|
83
|
+
Dare
|
84
|
+
Daugherty
|
85
|
+
Davis
|
86
|
+
Deckow
|
87
|
+
Denesik
|
88
|
+
Dibbert
|
89
|
+
Dickens
|
90
|
+
Dicki
|
91
|
+
Dickinson
|
92
|
+
Dietrich
|
93
|
+
Donnelly
|
94
|
+
Dooley
|
95
|
+
Douglas
|
96
|
+
Doyle
|
97
|
+
DuBuque
|
98
|
+
Durgan
|
99
|
+
Ebert
|
100
|
+
Effertz
|
101
|
+
Eichmann
|
102
|
+
Emard
|
103
|
+
Emmerich
|
104
|
+
Erdman
|
105
|
+
Ernser
|
106
|
+
Fadel
|
107
|
+
Fahey
|
108
|
+
Farrell
|
109
|
+
Fay
|
110
|
+
Feeney
|
111
|
+
Feest
|
112
|
+
Feil
|
113
|
+
Ferry
|
114
|
+
Fisher
|
115
|
+
Flatley
|
116
|
+
Frami
|
117
|
+
Franecki
|
118
|
+
Friesen
|
119
|
+
Fritsch
|
120
|
+
Funk
|
121
|
+
Gerhold
|
122
|
+
Gerlach
|
123
|
+
Gibson
|
124
|
+
Gislason
|
125
|
+
Gleason
|
126
|
+
Gleichner
|
127
|
+
Glover
|
128
|
+
Goldner
|
129
|
+
Goodwin
|
130
|
+
Gorczany
|
131
|
+
Gottlieb
|
132
|
+
Goyette
|
133
|
+
Grady
|
134
|
+
Graham
|
135
|
+
Grant
|
136
|
+
Green
|
137
|
+
Greenfelder
|
138
|
+
Greenholt
|
139
|
+
Grimes
|
140
|
+
Gulgowski
|
141
|
+
Gusikowski
|
142
|
+
Gutkowski
|
143
|
+
Gutmann
|
144
|
+
Haag
|
145
|
+
Hackett
|
146
|
+
Hagenes
|
147
|
+
Hahn
|
148
|
+
Haley
|
149
|
+
Halvorson
|
150
|
+
Hamill
|
151
|
+
Hammes
|
152
|
+
Hand
|
153
|
+
Hane
|
154
|
+
Hansen
|
155
|
+
Harber
|
156
|
+
Harris
|
157
|
+
Hartmann
|
158
|
+
Harvey
|
159
|
+
Hauck
|
160
|
+
Hayes
|
161
|
+
Heaney
|
162
|
+
Heathcote
|
163
|
+
Hegmann
|
164
|
+
Heidenreich
|
165
|
+
Heller
|
166
|
+
Herman
|
167
|
+
Hermann
|
168
|
+
Hermiston
|
169
|
+
Herzog
|
170
|
+
Hessel
|
171
|
+
Hettinger
|
172
|
+
Hickle
|
173
|
+
Hill
|
174
|
+
Hills
|
175
|
+
Hilpert
|
176
|
+
Hintz
|
177
|
+
Hirthe
|
178
|
+
Hodkiewicz
|
179
|
+
Hoeger
|
180
|
+
Homenick
|
181
|
+
Hoppe
|
182
|
+
Howe
|
183
|
+
Howell
|
184
|
+
Hudson
|
185
|
+
Huel
|
186
|
+
Huels
|
187
|
+
Hyatt
|
188
|
+
Jacobi
|
189
|
+
Jacobs
|
190
|
+
Jacobson
|
191
|
+
Jakubowski
|
192
|
+
Jaskolski
|
193
|
+
Jast
|
194
|
+
Jenkins
|
195
|
+
Jerde
|
196
|
+
Jewess
|
197
|
+
Johns
|
198
|
+
Johnson
|
199
|
+
Johnston
|
200
|
+
Jones
|
201
|
+
Kassulke
|
202
|
+
Kautzer
|
203
|
+
Keebler
|
204
|
+
Keeling
|
205
|
+
Kemmer
|
206
|
+
Kerluke
|
207
|
+
Kertzmann
|
208
|
+
Kessler
|
209
|
+
Kiehn
|
210
|
+
Kihn
|
211
|
+
Kilback
|
212
|
+
King
|
213
|
+
Kirlin
|
214
|
+
Klein
|
215
|
+
Kling
|
216
|
+
Klocko
|
217
|
+
Koch
|
218
|
+
Koelpin
|
219
|
+
Koepp
|
220
|
+
Kohler
|
221
|
+
Konopelski
|
222
|
+
Koss
|
223
|
+
Kovacek
|
224
|
+
Kozey
|
225
|
+
Krajcik
|
226
|
+
Kreiger
|
227
|
+
Kris
|
228
|
+
Kshlerin
|
229
|
+
Kub
|
230
|
+
Kuhic
|
231
|
+
Kuhlman
|
232
|
+
Kuhn
|
233
|
+
Kulas
|
234
|
+
Kunde
|
235
|
+
Kunze
|
236
|
+
Kuphal
|
237
|
+
Kutch
|
238
|
+
Kuvalis
|
239
|
+
Labadie
|
240
|
+
Lakin
|
241
|
+
Lang
|
242
|
+
Langosh
|
243
|
+
Langworth
|
244
|
+
Larkin
|
245
|
+
Larson
|
246
|
+
Leannon
|
247
|
+
Lebsack
|
248
|
+
Ledner
|
249
|
+
Leffler
|
250
|
+
Legros
|
251
|
+
Lehner
|
252
|
+
Lemke
|
253
|
+
Lesch
|
254
|
+
Leuschke
|
255
|
+
Lind
|
256
|
+
Lindgren
|
257
|
+
Littel
|
258
|
+
Little
|
259
|
+
Lockman
|
260
|
+
Lowe
|
261
|
+
Lubowitz
|
262
|
+
Lueilwitz
|
263
|
+
Luettgen
|
264
|
+
Lynch
|
265
|
+
Macejkovic
|
266
|
+
Maggio
|
267
|
+
Mann
|
268
|
+
Mante
|
269
|
+
Marks
|
270
|
+
Marquardt
|
271
|
+
Marvin
|
272
|
+
Mayer
|
273
|
+
Mayert
|
274
|
+
McClure
|
275
|
+
McCullough
|
276
|
+
McDermott
|
277
|
+
McGlynn
|
278
|
+
McKenzie
|
279
|
+
McLaughlin
|
280
|
+
Medhurst
|
281
|
+
Mertz
|
282
|
+
Metz
|
283
|
+
Miller
|
284
|
+
Mills
|
285
|
+
Mitchell
|
286
|
+
Moen
|
287
|
+
Mohr
|
288
|
+
Monahan
|
289
|
+
Moore
|
290
|
+
Morar
|
291
|
+
Morissette
|
292
|
+
Mosciski
|
293
|
+
Mraz
|
294
|
+
Mueller
|
295
|
+
Muller
|
296
|
+
Murazik
|
297
|
+
Murphy
|
298
|
+
Murray
|
299
|
+
Nader
|
300
|
+
Nicolas
|
301
|
+
Nienow
|
302
|
+
Nikolaus
|
303
|
+
Nitzsche
|
304
|
+
Nolan
|
305
|
+
Oberbrunner
|
306
|
+
Oga
|
307
|
+
Okuneva
|
308
|
+
Olson
|
309
|
+
Ondricka
|
310
|
+
Orn
|
311
|
+
Ortiz
|
312
|
+
Osinski
|
313
|
+
Pacocha
|
314
|
+
Padberg
|
315
|
+
Pagac
|
316
|
+
Parisian
|
317
|
+
Parker
|
318
|
+
Paucek
|
319
|
+
Pfannerstill
|
320
|
+
Pfeffer
|
321
|
+
Pollich
|
322
|
+
Pouros
|
323
|
+
Powlowski
|
324
|
+
Predovic
|
325
|
+
Price
|
326
|
+
Prohaska
|
327
|
+
Prosacco
|
328
|
+
Purdy
|
329
|
+
Quigley
|
330
|
+
Quitzon
|
331
|
+
Rath
|
332
|
+
Ratke
|
333
|
+
Rau
|
334
|
+
Raynor
|
335
|
+
Reichel
|
336
|
+
Reichert
|
337
|
+
Reilly
|
338
|
+
Reinger
|
339
|
+
Rempel
|
340
|
+
Renner
|
341
|
+
Reynolds
|
342
|
+
Rice
|
343
|
+
Rippin
|
344
|
+
Ritchie
|
345
|
+
Robel
|
346
|
+
Roberts
|
347
|
+
Rodriguez
|
348
|
+
Rogahn
|
349
|
+
Rohan
|
350
|
+
Rolfson
|
351
|
+
Romaguera
|
352
|
+
Roob
|
353
|
+
Rosenbaum
|
354
|
+
Rowe
|
355
|
+
Ruecker
|
356
|
+
Runolfsdottir
|
357
|
+
Runolfsson
|
358
|
+
Runte
|
359
|
+
Russel
|
360
|
+
Rutherford
|
361
|
+
Ryan
|
362
|
+
Sanford
|
363
|
+
Satterfield
|
364
|
+
Sauer
|
365
|
+
Sawayn
|
366
|
+
Schaden
|
367
|
+
Schaefer
|
368
|
+
Schamberger
|
369
|
+
Schiller
|
370
|
+
Schimmel
|
371
|
+
Schinner
|
372
|
+
Schmeler
|
373
|
+
Schmidt
|
374
|
+
Schmitt
|
375
|
+
Schneider
|
376
|
+
Schoen
|
377
|
+
Schowalter
|
378
|
+
Schroeder
|
379
|
+
Schulist
|
380
|
+
Schultz
|
381
|
+
Schumm
|
382
|
+
Schuppe
|
383
|
+
Schuster
|
384
|
+
Senger
|
385
|
+
Shanahan
|
386
|
+
Shields
|
387
|
+
Simonis
|
388
|
+
Sipes
|
389
|
+
Skiles
|
390
|
+
Smith
|
391
|
+
Smitham
|
392
|
+
Spencer
|
393
|
+
Spinka
|
394
|
+
Sporer
|
395
|
+
Stamm
|
396
|
+
Stanton
|
397
|
+
Stark
|
398
|
+
Stehr
|
399
|
+
Steuber
|
400
|
+
Stiedemann
|
401
|
+
Stokes
|
402
|
+
Stoltenberg
|
403
|
+
Stracke
|
404
|
+
Streich
|
405
|
+
Stroman
|
406
|
+
Strosin
|
407
|
+
Swaniawski
|
408
|
+
Swift
|
409
|
+
Terry
|
410
|
+
Thiel
|
411
|
+
Thompson
|
412
|
+
Tillman
|
413
|
+
Torp
|
414
|
+
Torphy
|
415
|
+
Towne
|
416
|
+
Toy
|
417
|
+
Trantow
|
418
|
+
Tremblay
|
419
|
+
Treutel
|
420
|
+
Tromp
|
421
|
+
Turcotte
|
422
|
+
Turner
|
423
|
+
Ullrich
|
424
|
+
Upton
|
425
|
+
Vandervort
|
426
|
+
Veum
|
427
|
+
Volkman
|
428
|
+
Von
|
429
|
+
VonRueden
|
430
|
+
Waelchi
|
431
|
+
Walker
|
432
|
+
Walsh
|
433
|
+
Walter
|
434
|
+
Ward
|
435
|
+
Waters
|
436
|
+
Watsica
|
437
|
+
Weber
|
438
|
+
Wehner
|
439
|
+
Weimann
|
440
|
+
Weissnat
|
441
|
+
Welch
|
442
|
+
West
|
443
|
+
White
|
444
|
+
Wiegand
|
445
|
+
Wilderman
|
446
|
+
Wilkinson
|
447
|
+
Will
|
448
|
+
Williamson
|
449
|
+
Willms
|
450
|
+
Windler
|
451
|
+
Wintheiser
|
452
|
+
Wisoky
|
453
|
+
Wisozk
|
454
|
+
Witting
|
455
|
+
Wiza
|
456
|
+
Wolf
|
457
|
+
Wolff
|
458
|
+
Wuckert
|
459
|
+
Wunsch
|
460
|
+
Wyman
|
461
|
+
Yost
|
462
|
+
Yundt
|
463
|
+
Zboncak
|
464
|
+
Zemlak
|
465
|
+
Ziemann
|
466
|
+
Zieme
|
467
|
+
Zulauf
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module ZFaker
|
4
|
+
# Internet Module
|
5
|
+
module Internet
|
6
|
+
extend ModuleUtils
|
7
|
+
extend self
|
8
|
+
|
9
|
+
@emails = []
|
10
|
+
@filler = ''
|
11
|
+
@links = ''
|
12
|
+
|
13
|
+
def email(name = nil)
|
14
|
+
unique_sample(@emails) { [user_name(name), email_domain].join('@') }
|
15
|
+
end
|
16
|
+
|
17
|
+
def user_name(name = nil)
|
18
|
+
if name
|
19
|
+
input = name.split(' ')
|
20
|
+
case rand(18)
|
21
|
+
when 0..3 then parts = input.shuffle.join('_')
|
22
|
+
when 4..6 then parts = input[0].to_s + input[1].to_s
|
23
|
+
when 7..9 then parts = input[0][0].to_s + input[1].to_s
|
24
|
+
when 10..12 then parts = input[0].to_s + input[1][0].to_s
|
25
|
+
when 13..15 then parts = input[1].to_s
|
26
|
+
else parts = input[0].to_s
|
27
|
+
end
|
28
|
+
parts.to_s.downcase
|
29
|
+
else
|
30
|
+
case rand(2)
|
31
|
+
when 0
|
32
|
+
Name.first_name.gsub(/\W/, '').downcase
|
33
|
+
when 1
|
34
|
+
parts = [Name.first_name, Name.last_name].map { |n| n.gsub(/\W/, '') }
|
35
|
+
parts = parts.join(%w(. _).sample)
|
36
|
+
parts.downcase
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def email_domain
|
42
|
+
"#{host}"
|
43
|
+
end
|
44
|
+
|
45
|
+
def host
|
46
|
+
HOSTS.sample
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
data/lib/zfaker/name.rb
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module ZFaker
|
4
|
+
# Name Module
|
5
|
+
module Name
|
6
|
+
extend ModuleUtils
|
7
|
+
extend self
|
8
|
+
|
9
|
+
@names = []
|
10
|
+
|
11
|
+
def name(first = nil, last = nil)
|
12
|
+
case [first.nil?, last.nil?]
|
13
|
+
when [true, true] then unique_sample(@names) { "#{first_name} #{last_name}" }
|
14
|
+
when [false, true] then unique_sample(@names) { "#{first} #{last_name}" }
|
15
|
+
when [true, false] then unique_sample(@names) { "#{first_name} #{last}" }
|
16
|
+
when [false, false] then unique_sample(@names) { "#{first} #{last}" }
|
17
|
+
else fail
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def first_name
|
22
|
+
FIRST_NAMES.sample
|
23
|
+
end
|
24
|
+
|
25
|
+
def last_name
|
26
|
+
LAST_NAMES.sample
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
module ZFaker
|
2
|
+
# Module ArrayUtils
|
3
|
+
module ArrayUtils
|
4
|
+
def self.const_array(argument)
|
5
|
+
array = argument.is_a?(Array) ? argument : argument.to_a
|
6
|
+
array.extend ArrayUtils
|
7
|
+
freeze_all(array)
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.random_pick(array, n)
|
11
|
+
warn '[ArrayUtils.random_pick] is deprecated. Please use the Array#sample method'
|
12
|
+
array.sample(n)
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.rand(array)
|
16
|
+
warn '[ArrayUtils.rand] is deprecated. Please use the Array#sample method'
|
17
|
+
array.sample
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.freeze_all(array)
|
21
|
+
array.each(&:freeze)
|
22
|
+
array.freeze
|
23
|
+
array
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.shuffle(array)
|
27
|
+
array.sort_by { Kernel.rand }
|
28
|
+
end
|
29
|
+
|
30
|
+
def random_pick(n)
|
31
|
+
warn '[ArrayUtils#random_pick] is deprecated. Please use the Array#sample method'
|
32
|
+
sample(n)
|
33
|
+
end
|
34
|
+
|
35
|
+
def rand
|
36
|
+
warn '[ArrayUtils#rand] is deprecated. Please use the Array#sample method'
|
37
|
+
sample
|
38
|
+
end
|
39
|
+
|
40
|
+
def freeze_all
|
41
|
+
ArrayUtils.freeze_all(self)
|
42
|
+
end
|
43
|
+
|
44
|
+
def shuffle
|
45
|
+
ArrayUtils.shuffle(self)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
require_relative './array_utils'
|
2
|
+
|
3
|
+
module ZFaker
|
4
|
+
# Module ModuleUtils
|
5
|
+
module ModuleUtils
|
6
|
+
def k(arg) ZFaker::ArrayUtils.const_array(arg)
|
7
|
+
end
|
8
|
+
|
9
|
+
def const_missing(const_name)
|
10
|
+
if const_name =~ /[a-z]/ # Not a constant, probably a class/module name.
|
11
|
+
super const_name
|
12
|
+
else
|
13
|
+
mod_name = ancestors.first.to_s.split('::').last
|
14
|
+
data_path = "#{ZFaker::BASE_LIB_PATH}/zfaker/data/#{underscore(mod_name)}/#{underscore(const_name.to_s)}"
|
15
|
+
reader = k File.read(data_path).split("\n")
|
16
|
+
arrout = []
|
17
|
+
reader.each do |x|
|
18
|
+
cut = x.split(' ')
|
19
|
+
if cut.size > 1 && cut[0].integer?
|
20
|
+
weight = cut[0].to_i
|
21
|
+
element = cut[1..-1].join(' ')
|
22
|
+
element = '' if element == '<blank>'
|
23
|
+
else
|
24
|
+
weight = 1
|
25
|
+
element = cut[0..-1].join(' ')
|
26
|
+
end
|
27
|
+
weight.times { arrout.push(element) }
|
28
|
+
end
|
29
|
+
const_set const_name, arrout
|
30
|
+
arrout
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def underscore(string)
|
35
|
+
string.gsub(/::/, '/')
|
36
|
+
.gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
|
37
|
+
.gsub(/([a-z\d])([A-Z])/, '\1_\2')
|
38
|
+
.tr('-', '_')
|
39
|
+
.downcase
|
40
|
+
end
|
41
|
+
|
42
|
+
def unique_sample(arr)
|
43
|
+
sample = ''
|
44
|
+
collisions = 0
|
45
|
+
loop do
|
46
|
+
sample = yield
|
47
|
+
break unless arr.include? sample
|
48
|
+
collisions += 1
|
49
|
+
fail 'Too Many Collisions: ' + collisions.to_s if collisions > (arr.size + 50) * 10
|
50
|
+
end
|
51
|
+
arr.push sample
|
52
|
+
sample
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
# String Class
|
58
|
+
class String
|
59
|
+
def integer?
|
60
|
+
[ # In descending order of likeliness:
|
61
|
+
/^[-+]?[1-9]([0-9]*)?$/, # decimal
|
62
|
+
/^0[0-7]+$/, # octal
|
63
|
+
/^0x[0-9A-Fa-f]+$/, # hexadecimal
|
64
|
+
/^0b[01]+$/ # binary
|
65
|
+
].each do |match_pattern|
|
66
|
+
return true if self =~ match_pattern
|
67
|
+
end
|
68
|
+
false
|
69
|
+
end
|
70
|
+
end
|
data/lib/zfaker.rb
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
# ZFaker Module
|
2
|
+
module ZFaker
|
3
|
+
require_relative 'zfaker/utils/array_utils'
|
4
|
+
require_relative 'zfaker/utils/module_utils'
|
5
|
+
|
6
|
+
extend ModuleUtils
|
7
|
+
|
8
|
+
BASE_LIB_PATH = File.expand_path('..', __FILE__)
|
9
|
+
|
10
|
+
LETTERS = [*'a'..'z']
|
11
|
+
|
12
|
+
HEX = %w(0 1 2 3 4 5 6 7 8 9 A B C D E F)
|
13
|
+
|
14
|
+
def self.hexify(*masks)
|
15
|
+
masks.flatten.sample.gsub(/#/) { HEX.sample }
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.numerify(*masks)
|
19
|
+
masks.flatten.sample.gsub(/#/) { rand(10).to_s }
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.letterify(*masks)
|
23
|
+
masks.flatten.sample.gsub(/\?/) { LETTERS.sample }
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.bothify(masks)
|
27
|
+
letterify(numerify(masks))
|
28
|
+
end
|
29
|
+
|
30
|
+
# Load all constants.
|
31
|
+
Dir["#{BASE_LIB_PATH}/zfaker/*.rb"].sort.each do |f|
|
32
|
+
require_relative "zfaker/#{File.basename(f, '.rb')}"
|
33
|
+
end
|
34
|
+
end
|