zfaker 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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
@@ -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