factory-helper 1.6.7 → 1.7.0
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.
- checksums.yaml +13 -5
- data/README.md +25 -4
- data/lib/factory-helper.rb +20 -13
- data/lib/factory-helper/address.rb +2 -2
- data/lib/factory-helper/bitcoin.rb +3 -2
- data/lib/factory-helper/commerce.rb +2 -2
- data/lib/factory-helper/company.rb +6 -6
- data/lib/factory-helper/date.rb +4 -4
- data/lib/factory-helper/finance.rb +1 -1
- data/lib/factory-helper/hacker.rb +5 -5
- data/lib/factory-helper/internet.rb +34 -24
- data/lib/factory-helper/lorem.rb +10 -8
- data/lib/factory-helper/number.rb +5 -5
- data/lib/factory-helper/phone_number.rb +1 -1
- data/lib/factory-helper/string.rb +23 -19
- data/lib/factory-helper/team.rb +1 -1
- data/lib/factory-helper/time.rb +4 -3
- data/lib/factory-helper/version.rb +1 -1
- metadata +18 -18
checksums.yaml
CHANGED
@@ -1,7 +1,15 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
NjVhZTJiYjU2NDQ5YmIzY2EwOTZlYmI0Zjc1NzljZjhhZTZlODY0NA==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
OGE5NmYyOTBhODJhZGU4NDcyYWYyNzE3ZDY1NzA4OWQ3Mzc2NDcyNA==
|
5
7
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
YzVlNDIxZDZiZTgxMWVmNmQ1MDdhYjkzODI4OTRiMDU3ODY3ZmZmZjY3ZDMx
|
10
|
+
MDc5NWNjY2EyNmU1ODkyZGM0ZjliY2VjNTg4MGFhZjA0MDQ4ODY2OTM3MGYz
|
11
|
+
MzY3OWE2NjQ5NzZmN2Y3ZWM5MzI0ZjJiZGNmNjY1MGY2NTMzYzI=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
YmNhN2VkYWI0ZDViMGE1ODIzYTcxNzQxM2NiMTRlNjllZTI5NzZkYTVlZDU5
|
14
|
+
NmZmNzA1NTdmODM5YzdhODA2MGEwYzZjNTJkNjYzMDM5MTk5YzI2MjkwYzMw
|
15
|
+
MDdkY2NkN2I2MzcwN2QyMTEzYTgyM2YzMTBmOGM5MmM3YTY3OTI=
|
data/README.md
CHANGED
@@ -35,9 +35,29 @@ FactoryHelper::Name.name #=> "Christophe Bartell"
|
|
35
35
|
FactoryHelper::Internet.email #=> "kirsten.greenholt@corkeryfisher.info"
|
36
36
|
```
|
37
37
|
|
38
|
+
###Seeding
|
39
|
+
----------
|
40
|
+
FactoryHelper now supports seeding of Ruby's pseudo-random number generator
|
41
|
+
(PRNG) to provide deterministic output of repeated method calls.
|
42
|
+
|
43
|
+
```ruby
|
44
|
+
FactoryHelper::Config.seed = 99
|
45
|
+
FactoryHelper::Company.bs #=> "utilize real-time functionalities"
|
46
|
+
FactoryHelper::Company.bs #=> "orchestrate wireless web-readiness"
|
47
|
+
|
48
|
+
FactoryHelper::Config.seed = 99
|
49
|
+
FactoryHelper::Company.bs #=> "utilize real-time functionalities"
|
50
|
+
FactoryHelper::Company.bs #=> "orchestrate wireless web-readiness"
|
51
|
+
|
52
|
+
FactoryHelper::Config.seed = nil # seeds the PRNG with Ruby's default entropy source
|
53
|
+
|
54
|
+
FactoryHelper::Config.random.seed #=> 57010835277627224902731113142647237214
|
55
|
+
|
56
|
+
FactoryHelper::Company.bs #=> "revolutionize plug-and-play architectures"
|
57
|
+
```
|
58
|
+
|
38
59
|
###FactoryHelper::String
|
39
60
|
-----------------
|
40
|
-
|
41
61
|
Random UTF-8 string with an optional length argument
|
42
62
|
|
43
63
|
```ruby
|
@@ -297,9 +317,11 @@ FactoryHelper::Avatar.image("my-own-slug", "50x50", "bmp") #=> "http://robohash.
|
|
297
317
|
----------------
|
298
318
|
|
299
319
|
```ruby
|
300
|
-
#
|
320
|
+
# Optional parameter: digits
|
301
321
|
FactoryHelper::Number.number(10) #=> "1968353479"
|
302
322
|
|
323
|
+
FactoryHelper::Number.hexadecimal(10) #=> "9b7b26aa4c"
|
324
|
+
|
303
325
|
FactoryHelper::Number.digit #=> "1"
|
304
326
|
```
|
305
327
|
|
@@ -404,7 +426,6 @@ FactoryHelper::App.author #=> "Daphne Swift"
|
|
404
426
|
|
405
427
|
###FactoryHelper::SlackEmoji
|
406
428
|
-----------------
|
407
|
-
|
408
429
|
Random Slack Emoji
|
409
430
|
|
410
431
|
```ruby
|
@@ -468,7 +489,7 @@ See [CONTRIBUTING.md](https://github.com/factory-helper/factory-helper/blob/mast
|
|
468
489
|
|
469
490
|
Contact
|
470
491
|
-------
|
471
|
-
Comments and feedback are welcome
|
492
|
+
Comments and feedback are welcome via GitHub Issues.
|
472
493
|
|
473
494
|
License
|
474
495
|
-------
|
data/lib/factory-helper.rb
CHANGED
@@ -17,12 +17,19 @@ I18n.load_path += Dir[File.join(mydir, 'locales', '*.yml')]
|
|
17
17
|
module FactoryHelper
|
18
18
|
class Config
|
19
19
|
@locale = nil
|
20
|
+
@random = Random.new
|
20
21
|
|
21
22
|
class << self
|
22
23
|
attr_writer :locale
|
24
|
+
attr_reader :random
|
25
|
+
|
23
26
|
def locale
|
24
27
|
@locale || I18n.locale
|
25
28
|
end
|
29
|
+
|
30
|
+
def seed=(seed)
|
31
|
+
@random = seed ? Random.new(seed) : Random.new
|
32
|
+
end
|
26
33
|
end
|
27
34
|
end
|
28
35
|
|
@@ -34,11 +41,11 @@ module FactoryHelper
|
|
34
41
|
class << self
|
35
42
|
## make sure numerify results doesn’t start with a zero
|
36
43
|
def numerify(number_string)
|
37
|
-
number_string.sub(/#/) { (rand(9)+1).to_s }.gsub(/#/) { rand(10).to_s }
|
44
|
+
number_string.sub(/#/) { (FactoryHelper::Config.random.rand(9)+1).to_s }.gsub(/#/) { FactoryHelper::Config.random.rand(10).to_s }
|
38
45
|
end
|
39
46
|
|
40
47
|
def letterify(letter_string)
|
41
|
-
letter_string.gsub(/\?/) { ULetters.sample }
|
48
|
+
letter_string.gsub(/\?/) { ULetters.sample(:random => FactoryHelper::Config.random) }
|
42
49
|
end
|
43
50
|
|
44
51
|
def bothify(string)
|
@@ -69,21 +76,21 @@ module FactoryHelper
|
|
69
76
|
re.
|
70
77
|
gsub(/^\/?\^?/, '').gsub(/\$?\/?$/, ''). # Ditch the anchors
|
71
78
|
gsub(/\{(\d+)\}/, '{\1,\1}').gsub(/\?/, '{0,1}'). # All {2} become {2,2} and ? become {0,1}
|
72
|
-
gsub(/(\[[^\]]+\])\{(\d+),(\d+)\}/) {|match| $1 * Array(Range.new($2.to_i, $3.to_i)).sample }. # [12]{1,2} becomes [12] or [12][12]
|
73
|
-
gsub(/(\([^\)]+\))\{(\d+),(\d+)\}/) {|match| $1 * Array(Range.new($2.to_i, $3.to_i)).sample }. # (12|34){1,2} becomes (12|34) or (12|34)(12|34)
|
74
|
-
gsub(/(\\?.)\{(\d+),(\d+)\}/) {|match| $1 * Array(Range.new($2.to_i, $3.to_i)).sample }. # A{1,2} becomes A or AA or \d{3} becomes \d\d\d
|
75
|
-
gsub(/\((.*?)\)/) {|match| match.gsub(/[\(\)]/, '').split('|').sample }. # (this|that) becomes 'this' or 'that'
|
76
|
-
gsub(/\[([^\]]+)\]/) {|match| match.gsub(/(\w\-\w)/) {|range| Array(Range.new(*range.split('-'))).sample } }. # All A-Z inside of [] become C (or X, or whatever)
|
77
|
-
gsub(/\[([^\]]+)\]/) {|match| $1.split('').sample }. # All [ABC] become B (or A or C)
|
78
|
-
gsub('\d') {|match| Numbers.sample }.
|
79
|
-
gsub('\w') {|match| Letters.sample }
|
79
|
+
gsub(/(\[[^\]]+\])\{(\d+),(\d+)\}/) {|match| $1 * Array(Range.new($2.to_i, $3.to_i)).sample(:random => FactoryHelper::Config.random) }. # [12]{1,2} becomes [12] or [12][12]
|
80
|
+
gsub(/(\([^\)]+\))\{(\d+),(\d+)\}/) {|match| $1 * Array(Range.new($2.to_i, $3.to_i)).sample(:random => FactoryHelper::Config.random) }. # (12|34){1,2} becomes (12|34) or (12|34)(12|34)
|
81
|
+
gsub(/(\\?.)\{(\d+),(\d+)\}/) {|match| $1 * Array(Range.new($2.to_i, $3.to_i)).sample(:random => FactoryHelper::Config.random) }. # A{1,2} becomes A or AA or \d{3} becomes \d\d\d
|
82
|
+
gsub(/\((.*?)\)/) {|match| match.gsub(/[\(\)]/, '').split('|').sample(:random => FactoryHelper::Config.random) }. # (this|that) becomes 'this' or 'that'
|
83
|
+
gsub(/\[([^\]]+)\]/) {|match| match.gsub(/(\w\-\w)/) {|range| Array(Range.new(*range.split('-'))).sample(:random => FactoryHelper::Config.random) } }. # All A-Z inside of [] become C (or X, or whatever)
|
84
|
+
gsub(/\[([^\]]+)\]/) {|match| $1.split('').sample(:random => FactoryHelper::Config.random) }. # All [ABC] become B (or A or C)
|
85
|
+
gsub('\d') {|match| Numbers.sample(:random => FactoryHelper::Config.random) }.
|
86
|
+
gsub('\w') {|match| Letters.sample(:random => FactoryHelper::Config.random) }
|
80
87
|
end
|
81
88
|
|
82
89
|
# Helper for the common approach of grabbing a translation
|
83
90
|
# with an array of values and selecting one of them.
|
84
91
|
def fetch(key)
|
85
92
|
fetched = translate("factory_helper.#{key}")
|
86
|
-
fetched = fetched.sample if fetched.respond_to?(:sample)
|
93
|
+
fetched = fetched.sample(:random => FactoryHelper::Config.random) if fetched.respond_to?(:sample)
|
87
94
|
if fetched.match(/^\//) and fetched.match(/\/$/) # A regex
|
88
95
|
regexify(fetched)
|
89
96
|
else
|
@@ -141,7 +148,7 @@ module FactoryHelper
|
|
141
148
|
|
142
149
|
# Use the alternate form of translate to get a nil rather than a "missing translation" string
|
143
150
|
if translation = translate(:factory_helper)[@flexible_key][m]
|
144
|
-
translation.respond_to?(:sample) ? translation.sample : translation
|
151
|
+
translation.respond_to?(:sample) ? translation.sample(:random => FactoryHelper::Config.random) : translation
|
145
152
|
else
|
146
153
|
super
|
147
154
|
end
|
@@ -150,7 +157,7 @@ module FactoryHelper
|
|
150
157
|
# Generates a random value between the interval
|
151
158
|
def rand_in_range(from, to)
|
152
159
|
from, to = to, from if to < from
|
153
|
-
|
160
|
+
FactoryHelper::Config.random.rand(from..to)
|
154
161
|
end
|
155
162
|
end
|
156
163
|
end
|
@@ -47,11 +47,11 @@ module FactoryHelper
|
|
47
47
|
def country_code; fetch('address.country_code'); end
|
48
48
|
|
49
49
|
def latitude
|
50
|
-
((rand * 180) - 90).to_s
|
50
|
+
((FactoryHelper::Config.random.rand * 180) - 90).to_s
|
51
51
|
end
|
52
52
|
|
53
53
|
def longitude
|
54
|
-
((rand * 360) - 180).to_s
|
54
|
+
((FactoryHelper::Config.random.rand * 360) - 180).to_s
|
55
55
|
end
|
56
56
|
|
57
57
|
end
|
@@ -18,7 +18,7 @@ module FactoryHelper
|
|
18
18
|
address_for(:testnet)
|
19
19
|
end
|
20
20
|
|
21
|
-
|
21
|
+
private
|
22
22
|
|
23
23
|
def base58(str)
|
24
24
|
alphabet = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
|
@@ -38,8 +38,9 @@ module FactoryHelper
|
|
38
38
|
end
|
39
39
|
|
40
40
|
def address_for(network)
|
41
|
+
hex_160_bit = 0xffffffffffffffffffffffffffffffffffffffff
|
41
42
|
version = PROTOCOL_VERSIONS.fetch(network)
|
42
|
-
hash =
|
43
|
+
hash = FactoryHelper::Config.random.rand(hex_160_bit).to_s(16)
|
43
44
|
packed = version.chr + [hash].pack("H*")
|
44
45
|
checksum = Digest::SHA2.digest(Digest::SHA2.digest(packed))[0..3]
|
45
46
|
base58(packed + checksum)
|
@@ -8,7 +8,7 @@ module FactoryHelper
|
|
8
8
|
|
9
9
|
def department(max = 3, fixed_amount = false)
|
10
10
|
num = max if fixed_amount
|
11
|
-
num ||= 1 + rand(max)
|
11
|
+
num ||= 1 + FactoryHelper::Config.random.rand(max)
|
12
12
|
|
13
13
|
categories = categories(num)
|
14
14
|
|
@@ -28,7 +28,7 @@ module FactoryHelper
|
|
28
28
|
end
|
29
29
|
|
30
30
|
def price
|
31
|
-
random =
|
31
|
+
random = FactoryHelper::Config.random
|
32
32
|
(random.rand(0..100.0) * 100).floor/100.0
|
33
33
|
end
|
34
34
|
|
@@ -13,29 +13,29 @@ module FactoryHelper
|
|
13
13
|
|
14
14
|
# Generate a buzzword-laden catch phrase.
|
15
15
|
def catch_phrase
|
16
|
-
translate('factory_helper.company.buzzwords').collect {|list| list.sample }.join(' ')
|
16
|
+
translate('factory_helper.company.buzzwords').collect {|list| list.sample(:random => FactoryHelper::Config.random) }.join(' ')
|
17
17
|
end
|
18
18
|
|
19
19
|
def buzzword
|
20
|
-
translate('factory_helper.company.buzzwords').flatten.sample
|
20
|
+
translate('factory_helper.company.buzzwords').flatten.sample(:random => FactoryHelper::Config.random)
|
21
21
|
end
|
22
22
|
|
23
23
|
# When a straight answer won't do, BS to the rescue!
|
24
24
|
def bs
|
25
|
-
translate('factory_helper.company.bs').collect {|list| list.sample }.join(' ')
|
25
|
+
translate('factory_helper.company.bs').collect {|list| list.sample(:random => FactoryHelper::Config.random) }.join(' ')
|
26
26
|
end
|
27
27
|
|
28
28
|
def ein
|
29
|
-
('%09d' % rand(10 ** 9)).gsub(/(\d\d)(\d\d\d\d\d\d\d)/, '\\1-\\2')
|
29
|
+
('%09d' % FactoryHelper::Config.random.rand(10 ** 9)).gsub(/(\d\d)(\d\d\d\d\d\d\d)/, '\\1-\\2')
|
30
30
|
end
|
31
31
|
|
32
32
|
def duns_number
|
33
|
-
('%09d' % rand(10 ** 9)).gsub(/(\d\d)(\d\d\d)(\d\d\d\d)/, '\\1-\\2-\\3')
|
33
|
+
('%09d' % FactoryHelper::Config.random.rand(10 ** 9)).gsub(/(\d\d)(\d\d\d)(\d\d\d\d)/, '\\1-\\2-\\3')
|
34
34
|
end
|
35
35
|
|
36
36
|
# Get a random company logo url in PNG format.
|
37
37
|
def logo
|
38
|
-
rand_num =
|
38
|
+
rand_num = FactoryHelper::Config.random.rand(13) + 1
|
39
39
|
"http://pigment.github.io/fake-logos/logos/medium/color/#{rand_num}.png"
|
40
40
|
end
|
41
41
|
end
|
data/lib/factory-helper/date.rb
CHANGED
@@ -3,7 +3,7 @@ module FactoryHelper
|
|
3
3
|
|
4
4
|
class << self
|
5
5
|
|
6
|
-
def between(from, to)
|
6
|
+
def between(from=::Date.today-10, to=::Date.today+10)
|
7
7
|
from = get_date_object(from)
|
8
8
|
to = get_date_object(to)
|
9
9
|
|
@@ -25,9 +25,9 @@ module FactoryHelper
|
|
25
25
|
end
|
26
26
|
|
27
27
|
def birthday(min_age = 18, max_age = 65)
|
28
|
-
|
29
|
-
from =
|
30
|
-
to =
|
28
|
+
today= ::Date.today
|
29
|
+
from = ::Date.new(today.year - min_age, today.month, today.day) - 1
|
30
|
+
to = ::Date.new(today.year - max_age, today.month, today.day) + 1
|
31
31
|
|
32
32
|
between(from, to).to_date
|
33
33
|
end
|
@@ -5,7 +5,7 @@ module FactoryHelper
|
|
5
5
|
class << self
|
6
6
|
def credit_card(*types)
|
7
7
|
types = CREDIT_CARD_TYPES if types.empty?
|
8
|
-
type = types.sample
|
8
|
+
type = types.sample(:random => FactoryHelper::Config.random)
|
9
9
|
template = numerify(fetch("credit_card.#{type}"))
|
10
10
|
|
11
11
|
# calculate the luhn checksum digit
|
@@ -2,18 +2,18 @@
|
|
2
2
|
module FactoryHelper
|
3
3
|
class Hacker < Base
|
4
4
|
flexible :hacker
|
5
|
-
|
5
|
+
|
6
6
|
class << self
|
7
7
|
def say_something_smart
|
8
|
-
phrases.sample
|
8
|
+
phrases.sample(:random => FactoryHelper::Config.random)
|
9
9
|
end
|
10
|
-
|
10
|
+
|
11
11
|
def abbreviation; fetch('hacker.abbreviation'); end
|
12
12
|
def adjective; fetch('hacker.adjective'); end
|
13
13
|
def noun; fetch('hacker.noun'); end
|
14
14
|
def verb; fetch('hacker.verb'); end
|
15
15
|
def ingverb; fetch('hacker.ingverb'); end
|
16
|
-
|
16
|
+
|
17
17
|
def phrases
|
18
18
|
[ "If we #{verb} the #{noun}, we can get to the #{abbreviation} #{noun} through the #{adjective} #{abbreviation} #{noun}!",
|
19
19
|
"We need to #{verb} the #{adjective} #{abbreviation} #{noun}!",
|
@@ -22,7 +22,7 @@ module FactoryHelper
|
|
22
22
|
"Use the #{adjective} #{abbreviation} #{noun}, then you can #{verb} the #{adjective} #{noun}!",
|
23
23
|
"The #{abbreviation} #{noun} is down, #{verb} the #{adjective} #{noun} so we can #{verb} the #{abbreviation} #{noun}!",
|
24
24
|
"#{ingverb} the #{noun} won't do anything, we need to #{verb} the #{adjective} #{abbreviation} #{noun}!",
|
25
|
-
"I'll #{verb} the #{adjective} #{abbreviation} #{noun}, that should #{noun} the #{abbreviation} #{noun}!"
|
25
|
+
"I'll #{verb} the #{adjective} #{abbreviation} #{noun}, that should #{noun} the #{abbreviation} #{noun}!"
|
26
26
|
]
|
27
27
|
end
|
28
28
|
end
|
@@ -11,12 +11,19 @@ module FactoryHelper
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def safe_email(name = nil)
|
14
|
-
[
|
14
|
+
[
|
15
|
+
user_name(name),
|
16
|
+
'example.'+ %w[org com net].
|
17
|
+
shuffle(:random => FactoryHelper::Config.random).first
|
18
|
+
].join('@')
|
15
19
|
end
|
16
20
|
|
17
21
|
def user_name(specifier = nil, separators = %w(. _))
|
18
22
|
if specifier.kind_of? ::String
|
19
|
-
return specifier.scan(/\w+/).
|
23
|
+
return specifier.scan(/\w+/).
|
24
|
+
shuffle(:random => FactoryHelper::Config.random).
|
25
|
+
join(separators.sample(:random => FactoryHelper::Config.random)).
|
26
|
+
downcase
|
20
27
|
elsif specifier.kind_of? Integer
|
21
28
|
tries = 0 # Don't try forever in case we get something like 1_000_000.
|
22
29
|
begin
|
@@ -41,15 +48,15 @@ module FactoryHelper
|
|
41
48
|
Proc.new {
|
42
49
|
[ Name.first_name, Name.last_name ].map {|n|
|
43
50
|
n.gsub(/\W/, '')
|
44
|
-
}.join(separators.sample).downcase }
|
45
|
-
].sample.call)
|
51
|
+
}.join(separators.sample(:random => FactoryHelper::Config.random)).downcase }
|
52
|
+
].sample(:random => FactoryHelper::Config.random).call)
|
46
53
|
end
|
47
54
|
|
48
55
|
def password(min_length = 8, max_length = 16)
|
49
56
|
temp = Lorem.characters(min_length)
|
50
57
|
diff_length = max_length - min_length
|
51
58
|
if diff_length > 0
|
52
|
-
diff_rand = rand(diff_length + 1)
|
59
|
+
diff_rand = FactoryHelper::Config.random.rand(diff_length + 1)
|
53
60
|
temp += Lorem.characters(diff_rand)
|
54
61
|
end
|
55
62
|
temp = temp[0..min_length] if min_length > 0
|
@@ -60,17 +67,6 @@ module FactoryHelper
|
|
60
67
|
[ fix_umlauts(domain_word), domain_suffix ].join('.')
|
61
68
|
end
|
62
69
|
|
63
|
-
def fix_umlauts(string)
|
64
|
-
string.gsub(/[äöüß]/i) do |match|
|
65
|
-
case match.downcase
|
66
|
-
when "ä" 'ae'
|
67
|
-
when "ö" 'oe'
|
68
|
-
when "ü" 'ue'
|
69
|
-
when "ß" 'ss'
|
70
|
-
end
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
70
|
def domain_word
|
75
71
|
Company.name.split(' ').first.gsub(/\W/, '').downcase
|
76
72
|
end
|
@@ -81,21 +77,25 @@ module FactoryHelper
|
|
81
77
|
|
82
78
|
def mac_address(prefix='')
|
83
79
|
prefix_digits = prefix.split(':').map{ |d| d.to_i(16) }
|
84
|
-
address_digits = (6 - prefix_digits.size).times.map
|
80
|
+
address_digits = (6 - prefix_digits.size).times.map do
|
81
|
+
FactoryHelper::Config.random.rand(256)
|
82
|
+
end
|
85
83
|
(prefix_digits + address_digits).map{ |d| '%02x' % d }.join(':')
|
86
84
|
end
|
87
85
|
|
88
86
|
def ip_v4_address
|
89
87
|
ary = (2..254).to_a
|
90
|
-
[ary.sample,
|
91
|
-
ary.sample,
|
92
|
-
ary.sample,
|
93
|
-
ary.sample].join('.')
|
88
|
+
[ary.sample(:random => FactoryHelper::Config.random),
|
89
|
+
ary.sample(:random => FactoryHelper::Config.random),
|
90
|
+
ary.sample(:random => FactoryHelper::Config.random),
|
91
|
+
ary.sample(:random => FactoryHelper::Config.random)].join('.')
|
94
92
|
end
|
95
93
|
|
96
94
|
def ip_v6_address
|
97
95
|
@@ip_v6_space ||= (0..65535).to_a
|
98
|
-
container = (1..8).map
|
96
|
+
container = (1..8).map do |_|
|
97
|
+
@@ip_v6_space.sample(:random => FactoryHelper::Config.random)
|
98
|
+
end
|
99
99
|
container.map{ |n| n.to_s(16) }.join(':')
|
100
100
|
end
|
101
101
|
|
@@ -104,13 +104,23 @@ module FactoryHelper
|
|
104
104
|
end
|
105
105
|
|
106
106
|
def slug(words = nil, glue = nil)
|
107
|
-
glue ||= %w[- _ .].sample
|
107
|
+
glue ||= %w[- _ .].sample(:random => FactoryHelper::Config.random)
|
108
108
|
(words || FactoryHelper::Lorem::words(2).join(' ')).gsub(' ', glue).downcase
|
109
109
|
end
|
110
110
|
|
111
111
|
def device_token
|
112
|
-
rand(16 ** 64).to_s(16).rjust(64, '0').
|
112
|
+
FactoryHelper::Config.random.rand(16 ** 64).to_s(16).rjust(64, '0').
|
113
|
+
chars.to_a.shuffle(:random => FactoryHelper::Config.random).join
|
113
114
|
end
|
115
|
+
|
116
|
+
def fix_umlauts(string= '')
|
117
|
+
{"ä" => 'ae', "ö" => 'oe', "ü" => 'ue', "ß" => 'ss'}.each do |key, val|
|
118
|
+
string.gsub!(key.downcase, val.downcase)
|
119
|
+
string.gsub!(key.upcase, val.upcase)
|
120
|
+
end
|
121
|
+
string
|
122
|
+
end
|
123
|
+
|
114
124
|
end
|
115
125
|
end
|
116
126
|
end
|
data/lib/factory-helper/lorem.rb
CHANGED
@@ -3,7 +3,7 @@ module FactoryHelper
|
|
3
3
|
class Lorem < Base
|
4
4
|
class << self
|
5
5
|
def word
|
6
|
-
translate('factory_helper.lorem.words').sample
|
6
|
+
translate('factory_helper.lorem.words').sample(:random => FactoryHelper::Config.random)
|
7
7
|
end
|
8
8
|
|
9
9
|
def words(num = 3, supplemental = false)
|
@@ -13,21 +13,23 @@ module FactoryHelper
|
|
13
13
|
(supplemental ? translate('factory_helper.lorem.supplemental') : [])
|
14
14
|
)
|
15
15
|
word_list = word_list * ((resolved_num / word_list.length) + 1)
|
16
|
-
word_list.shuffle[0, resolved_num]
|
16
|
+
word_list.shuffle(:random => FactoryHelper::Config.random)[0, resolved_num]
|
17
17
|
end
|
18
18
|
|
19
19
|
def character
|
20
20
|
characters(1)
|
21
21
|
end
|
22
22
|
|
23
|
-
def characters(char_count
|
23
|
+
def characters(char_count= 255)
|
24
24
|
return '' if char_count.respond_to?(:to_i) && char_count.to_i < 1
|
25
25
|
char_count = resolve(char_count)
|
26
|
-
rand(36**char_count).to_s(36).
|
26
|
+
FactoryHelper::Config.random.rand(36**char_count).to_s(36).
|
27
|
+
rjust(char_count, '0').chars.to_a.
|
28
|
+
shuffle(:random => FactoryHelper::Config.random).join
|
27
29
|
end
|
28
30
|
|
29
31
|
def sentence(word_count = 4, supplemental = false, random_words_to_add = 6)
|
30
|
-
words(word_count + rand(random_words_to_add.to_i).to_i, supplemental).join(' ').capitalize + '.'
|
32
|
+
words(word_count + FactoryHelper::Config.random.rand(random_words_to_add.to_i).to_i, supplemental).join(' ').capitalize + '.'
|
31
33
|
end
|
32
34
|
|
33
35
|
def sentences(sentence_count = 3, supplemental = false)
|
@@ -39,7 +41,7 @@ module FactoryHelper
|
|
39
41
|
end
|
40
42
|
|
41
43
|
def paragraph(sentence_count = 3, supplemental = false, random_sentences_to_add = 3)
|
42
|
-
sentences(resolve(sentence_count) + rand(random_sentences_to_add.to_i).to_i, supplemental).join(' ')
|
44
|
+
sentences(resolve(sentence_count) + FactoryHelper::Config.random.rand(random_sentences_to_add.to_i).to_i, supplemental).join(' ')
|
43
45
|
end
|
44
46
|
|
45
47
|
def paragraphs(paragraph_count = 3, supplemental = false)
|
@@ -56,8 +58,8 @@ module FactoryHelper
|
|
56
58
|
# All other values are simply returned.
|
57
59
|
def resolve(value)
|
58
60
|
case value
|
59
|
-
when Array then value[rand(value.size)]
|
60
|
-
when Range then rand((value.last+1) - value.first) + value.first
|
61
|
+
when Array then value[FactoryHelper::Config.random.rand(value.size)]
|
62
|
+
when Range then FactoryHelper::Config.random.rand((value.last+1) - value.first) + value.first
|
61
63
|
else value
|
62
64
|
end
|
63
65
|
end
|
@@ -1,23 +1,23 @@
|
|
1
1
|
module FactoryHelper
|
2
2
|
class Number < Base
|
3
3
|
class << self
|
4
|
-
def number(digits)
|
4
|
+
def number(digits=10)
|
5
5
|
(1..digits).collect {digit}.join
|
6
6
|
end
|
7
7
|
|
8
|
-
def decimal(l_digits, r_digits = 2)
|
8
|
+
def decimal(l_digits=5, r_digits = 2)
|
9
9
|
l_d = self.number(l_digits)
|
10
10
|
r_d = self.number(r_digits)
|
11
11
|
"#{l_d}.#{r_d}"
|
12
12
|
end
|
13
13
|
|
14
14
|
def digit
|
15
|
-
(rand() * 9).round.to_s
|
15
|
+
(FactoryHelper::Config.random.rand() * 9).round.to_s
|
16
16
|
end
|
17
17
|
|
18
|
-
def hexadecimal(digits)
|
18
|
+
def hexadecimal(digits=6)
|
19
19
|
hex = ""
|
20
|
-
digits.times { hex += rand(15).to_s(16) }
|
20
|
+
digits.times { hex += FactoryHelper::Config.random.rand(15).to_s(16) }
|
21
21
|
hex
|
22
22
|
end
|
23
23
|
|
@@ -40,7 +40,7 @@ module FactoryHelper
|
|
40
40
|
# Since extensions can be of variable length, this method taks a length parameter
|
41
41
|
def subscriber_number(length = 4)
|
42
42
|
begin
|
43
|
-
rand.to_s[2..(1 + length)]
|
43
|
+
FactoryHelper::Config.random.rand.to_s[2..(1 + length)]
|
44
44
|
rescue I18n::MissingTranslationData
|
45
45
|
nil
|
46
46
|
end
|
@@ -1,28 +1,32 @@
|
|
1
1
|
module FactoryHelper
|
2
2
|
class String
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
else
|
7
|
-
utf8string length
|
3
|
+
class << self
|
4
|
+
def random(length= 32)
|
5
|
+
utf8string select_a length
|
8
6
|
end
|
9
|
-
end
|
10
7
|
|
11
|
-
|
8
|
+
private
|
12
9
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
10
|
+
def select_a length
|
11
|
+
if length.class.included_modules.include? Enumerable
|
12
|
+
select_a length.to_enum.to_a.sample(:random => FactoryHelper::Config.random)
|
13
|
+
else
|
14
|
+
length
|
15
|
+
end
|
16
|
+
end
|
18
17
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
18
|
+
def utf8string(length)
|
19
|
+
(1..length.to_i).map{ utf8character }.join
|
20
|
+
end
|
21
|
+
|
22
|
+
def utf8character
|
23
|
+
[
|
24
|
+
FactoryHelper::Config.random.rand(59)+ 32, # latin alphabet
|
25
|
+
FactoryHelper::Config.random.rand(128), # 7-bit ASCII
|
26
|
+
FactoryHelper::Config.random.rand(0xd800), # utf-8 codepoints below utf-16 surrogate halves
|
27
|
+
FactoryHelper::Config.random.rand(0x102000)+ 0xe000 # utf-8 codepoints above utf-16 surrogate halves
|
28
|
+
].sample(:random => FactoryHelper::Config.random).chr(Encoding::UTF_8)
|
29
|
+
end
|
26
30
|
end
|
27
31
|
end
|
28
32
|
end
|
data/lib/factory-helper/team.rb
CHANGED
data/lib/factory-helper/time.rb
CHANGED
@@ -11,7 +11,8 @@ module FactoryHelper
|
|
11
11
|
}
|
12
12
|
|
13
13
|
class << self
|
14
|
-
|
14
|
+
|
15
|
+
def between(from=::Time.at(0), to=::Time.now, period = :all)
|
15
16
|
super(from, to).to_time + random_time(period)
|
16
17
|
end
|
17
18
|
|
@@ -31,7 +32,7 @@ module FactoryHelper
|
|
31
32
|
|
32
33
|
def hours(period)
|
33
34
|
raise ArgumentError, 'invalid period' unless TIME_RANGES.has_key? period
|
34
|
-
hour_at_period = TIME_RANGES[period].to_a.sample
|
35
|
+
hour_at_period = TIME_RANGES[period].to_a.sample(:random => FactoryHelper::Config.random)
|
35
36
|
|
36
37
|
(60 * 60 * hour_at_period)
|
37
38
|
end
|
@@ -41,7 +42,7 @@ module FactoryHelper
|
|
41
42
|
end
|
42
43
|
|
43
44
|
def seconds
|
44
|
-
(0..59).to_a.sample
|
45
|
+
(0..59).to_a.sample(:random => FactoryHelper::Config.random)
|
45
46
|
end
|
46
47
|
end
|
47
48
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: factory-helper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brian Giaraffa
|
@@ -9,93 +9,93 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-
|
12
|
+
date: 2015-06-08 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
|
-
- -
|
18
|
+
- - ~>
|
19
19
|
- !ruby/object:Gem::Version
|
20
20
|
version: '1.7'
|
21
21
|
type: :development
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
|
-
- -
|
25
|
+
- - ~>
|
26
26
|
- !ruby/object:Gem::Version
|
27
27
|
version: '1.7'
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: rake
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
31
31
|
requirements:
|
32
|
-
- -
|
32
|
+
- - ~>
|
33
33
|
- !ruby/object:Gem::Version
|
34
34
|
version: '10.0'
|
35
35
|
type: :development
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
|
-
- -
|
39
|
+
- - ~>
|
40
40
|
- !ruby/object:Gem::Version
|
41
41
|
version: '10.0'
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
43
|
name: pry
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
|
-
- -
|
46
|
+
- - ~>
|
47
47
|
- !ruby/object:Gem::Version
|
48
48
|
version: '0.10'
|
49
49
|
type: :development
|
50
50
|
prerelease: false
|
51
51
|
version_requirements: !ruby/object:Gem::Requirement
|
52
52
|
requirements:
|
53
|
-
- -
|
53
|
+
- - ~>
|
54
54
|
- !ruby/object:Gem::Version
|
55
55
|
version: '0.10'
|
56
56
|
- !ruby/object:Gem::Dependency
|
57
57
|
name: coveralls
|
58
58
|
requirement: !ruby/object:Gem::Requirement
|
59
59
|
requirements:
|
60
|
-
- -
|
60
|
+
- - ~>
|
61
61
|
- !ruby/object:Gem::Version
|
62
62
|
version: '0.8'
|
63
63
|
type: :development
|
64
64
|
prerelease: false
|
65
65
|
version_requirements: !ruby/object:Gem::Requirement
|
66
66
|
requirements:
|
67
|
-
- -
|
67
|
+
- - ~>
|
68
68
|
- !ruby/object:Gem::Version
|
69
69
|
version: '0.8'
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: rspec
|
72
72
|
requirement: !ruby/object:Gem::Requirement
|
73
73
|
requirements:
|
74
|
-
- -
|
74
|
+
- - ~>
|
75
75
|
- !ruby/object:Gem::Version
|
76
76
|
version: '3.2'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
79
|
version_requirements: !ruby/object:Gem::Requirement
|
80
80
|
requirements:
|
81
|
-
- -
|
81
|
+
- - ~>
|
82
82
|
- !ruby/object:Gem::Version
|
83
83
|
version: '3.2'
|
84
84
|
- !ruby/object:Gem::Dependency
|
85
85
|
name: i18n
|
86
86
|
requirement: !ruby/object:Gem::Requirement
|
87
87
|
requirements:
|
88
|
-
- -
|
88
|
+
- - ~>
|
89
89
|
- !ruby/object:Gem::Version
|
90
90
|
version: '0.7'
|
91
91
|
type: :runtime
|
92
92
|
prerelease: false
|
93
93
|
version_requirements: !ruby/object:Gem::Requirement
|
94
94
|
requirements:
|
95
|
-
- -
|
95
|
+
- - ~>
|
96
96
|
- !ruby/object:Gem::Version
|
97
97
|
version: '0.7'
|
98
|
-
description: 'Easily generate fake data: names, addresses, phone numbers, etc.'
|
98
|
+
description: ! 'Easily generate fake data: names, addresses, phone numbers, etc.'
|
99
99
|
email:
|
100
100
|
- factory-helper@googlegroups.com
|
101
101
|
executables: []
|
@@ -165,17 +165,17 @@ require_paths:
|
|
165
165
|
- lib
|
166
166
|
required_ruby_version: !ruby/object:Gem::Requirement
|
167
167
|
requirements:
|
168
|
-
- -
|
168
|
+
- - ! '>='
|
169
169
|
- !ruby/object:Gem::Version
|
170
170
|
version: 1.9.3
|
171
171
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
172
172
|
requirements:
|
173
|
-
- -
|
173
|
+
- - ! '>='
|
174
174
|
- !ruby/object:Gem::Version
|
175
175
|
version: '0'
|
176
176
|
requirements: []
|
177
177
|
rubyforge_project:
|
178
|
-
rubygems_version: 2.4.
|
178
|
+
rubygems_version: 2.4.3
|
179
179
|
signing_key:
|
180
180
|
specification_version: 4
|
181
181
|
summary: Easily generate fake data
|