faker 2.20.0 → 3.2.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +346 -7
- data/History.md +1 -1
- data/README.md +193 -107
- data/lib/faker/blockchain/aeternity.rb +1 -1
- data/lib/faker/blockchain/ethereum.rb +1 -1
- data/lib/faker/blockchain/tezos.rb +1 -1
- data/lib/faker/books/dune.rb +2 -10
- data/lib/faker/books/lovecraft.rb +7 -38
- data/lib/faker/default/address.rb +5 -25
- data/lib/faker/default/alphanumeric.rb +2 -8
- data/lib/faker/default/app.rb +1 -10
- data/lib/faker/default/avatar.rb +1 -12
- data/lib/faker/default/bank.rb +9 -17
- data/lib/faker/default/boolean.rb +1 -4
- data/lib/faker/default/chile_rut.rb +25 -25
- data/lib/faker/default/code.rb +68 -39
- data/lib/faker/default/color.rb +77 -6
- data/lib/faker/default/commerce.rb +3 -17
- data/lib/faker/default/company.rb +50 -19
- data/lib/faker/default/crypto_coin.rb +3 -15
- data/lib/faker/default/date.rb +65 -42
- data/lib/faker/default/demographic.rb +1 -5
- data/lib/faker/default/driving_licence.rb +20 -19
- data/lib/faker/default/drone.rb +1 -1
- data/lib/faker/default/file.rb +5 -24
- data/lib/faker/default/finance.rb +17 -7
- data/lib/faker/default/food.rb +14 -1
- data/lib/faker/default/hipster.rb +6 -45
- data/lib/faker/default/html.rb +230 -0
- data/lib/faker/default/id_number.rb +125 -14
- data/lib/faker/default/internet.rb +116 -111
- data/lib/faker/default/invoice.rb +4 -17
- data/lib/faker/default/json.rb +2 -20
- data/lib/faker/default/lorem.rb +25 -74
- data/lib/faker/default/lorem_flickr.rb +4 -32
- data/lib/faker/default/markdown.rb +6 -11
- data/lib/faker/default/marketing.rb +1 -1
- data/lib/faker/default/measurement.rb +16 -48
- data/lib/faker/default/name.rb +1 -5
- data/lib/faker/default/nhs.rb +2 -6
- data/lib/faker/default/number.rb +10 -55
- data/lib/faker/default/omniauth.rb +6 -40
- data/lib/faker/default/phone_number.rb +2 -6
- data/lib/faker/default/placeholdit.rb +1 -12
- data/lib/faker/default/relationship.rb +1 -5
- data/lib/faker/default/release notes.md +59 -0
- data/lib/faker/default/source.rb +3 -16
- data/lib/faker/default/string.rb +1 -5
- data/lib/faker/default/stripe.rb +4 -20
- data/lib/faker/default/time.rb +4 -32
- data/lib/faker/default/twitter.rb +7 -23
- data/lib/faker/default/types.rb +7 -28
- data/lib/faker/default/vehicle.rb +40 -51
- data/lib/faker/default/vulnerability_identifier.rb +23 -0
- data/lib/faker/default/world_cup.rb +2 -11
- data/lib/faker/games/clash_of_clans.rb +1 -1
- data/lib/faker/games/dnd.rb +49 -7
- data/lib/faker/games/dota.rb +1 -5
- data/lib/faker/games/final_fantasy_xiv.rb +73 -0
- data/lib/faker/games/minecraft.rb +1 -1
- data/lib/faker/games/myst.rb +1 -1
- data/lib/faker/games/tarkov.rb +205 -0
- data/lib/faker/japanese_media/cowboy_bebop.rb +61 -0
- data/lib/faker/japanese_media/kamen_rider.rb +2 -2
- data/lib/faker/japanese_media/one_piece.rb +1 -1
- data/lib/faker/movies/avatar.rb +49 -0
- data/lib/faker/movies/hackers.rb +48 -0
- data/lib/faker/movies/star_wars.rb +1 -5
- data/lib/faker/movies/tron.rb +161 -0
- data/lib/faker/quotes/quote.rb +13 -0
- data/lib/faker/sports/chess.rb +90 -0
- data/lib/faker/sports/mountaineering.rb +22 -0
- data/lib/faker/sports/sport.rb +116 -0
- data/lib/faker/travel/airport.rb +43 -0
- data/lib/faker/travel/train_station.rb +54 -0
- data/lib/faker/tv_shows/archer.rb +51 -0
- data/lib/faker/tv_shows/south_park.rb +15 -0
- data/lib/faker/tv_shows/spongebob.rb +50 -0
- data/lib/faker/version.rb +1 -1
- data/lib/faker.rb +26 -67
- data/lib/helpers/base58.rb +1 -1
- data/lib/helpers/positional_generator.rb +480 -0
- data/lib/helpers/unique_generator.rb +13 -11
- data/lib/locales/README.md +18 -2
- data/lib/locales/ar.yml +1 -0
- data/lib/locales/bg.yml +1 -1
- data/lib/locales/da-DK.yml +1 -1
- data/lib/locales/de-AT.yml +1 -2
- data/lib/locales/de-CH.yml +4336 -12
- data/lib/locales/de.yml +1 -1
- data/lib/locales/en/airport.yml +381 -0
- data/lib/locales/en/archer.yml +75 -0
- data/lib/locales/en/australia.yml +3 -4
- data/lib/locales/en/avatar.yml +31 -0
- data/lib/locales/en/chess.yml +103 -0
- data/lib/locales/en/company.yml +1 -0
- data/lib/locales/en/computer.yml +23 -4
- data/lib/locales/en/cowboy_bebop.yml +163 -0
- data/lib/locales/en/dnd.yml +186 -1
- data/lib/locales/en/dota.yml +113 -0
- data/lib/locales/en/file.yml +9 -1
- data/lib/locales/en/final_fantasy_xiv.yml +754 -0
- data/lib/locales/en/finance.yml +3 -1
- data/lib/locales/en/food.yml +12 -0
- data/lib/locales/en/game.yml +0 -1
- data/lib/locales/en/hackers.yml +53 -0
- data/lib/locales/en/heroes.yml +2 -2
- data/lib/locales/en/internet.yml +32 -0
- data/lib/locales/en/minecraft.yml +4 -4
- data/lib/locales/en/mitch_hedberg.yml +46 -0
- data/lib/locales/en/mountaineering.yml +14 -0
- data/lib/locales/en/movie.yml +2 -1
- data/lib/locales/en/naruto.yml +2 -3
- data/lib/locales/en/one_piece.yml +1 -1
- data/lib/locales/en/opera.yml +2 -2
- data/lib/locales/en/overwatch.yml +5 -7
- data/lib/locales/en/source.yml +5 -0
- data/lib/locales/en/south_park.yml +360 -2
- data/lib/locales/en/spongebob.yml +489 -0
- data/lib/locales/en/sport.yml +130 -0
- data/lib/locales/en/star_wars.yml +1 -1
- data/lib/locales/en/tarkov.yml +593 -0
- data/lib/locales/en/train_station.yml +280 -0
- data/lib/locales/en/tron.yml +227 -0
- data/lib/locales/en/vehicle.yml +2809 -75
- data/lib/locales/en-AU.yml +2 -2
- data/lib/locales/en-CA.yml +2 -1
- data/lib/locales/en-GB.yml +2 -1
- data/lib/locales/en-MS.yml +1 -0
- data/lib/locales/en-NG.yml +1 -0
- data/lib/locales/en-NZ.yml +1 -0
- data/lib/locales/en-PAK.yml +1 -0
- data/lib/locales/en-SG.yml +1 -0
- data/lib/locales/en-UG.yml +1 -0
- data/lib/locales/en-US.yml +1 -1
- data/lib/locales/en-ZA.yml +1 -1
- data/lib/locales/en-au-ocker.yml +2 -0
- data/lib/locales/es-AR.yml +3 -2
- data/lib/locales/es-MX.yml +1 -1
- data/lib/locales/es.yml +2 -2
- data/lib/locales/fi-FI.yml +3 -1
- data/lib/locales/fr/address.yml +0 -1
- data/lib/locales/fr/adjective.yml +266 -0
- data/lib/locales/fr/ancient.yml +141 -0
- data/lib/locales/fr/name.yml +2 -1
- data/lib/locales/fr-CA.yml +1 -1
- data/lib/locales/fr-CH.yml +1 -1
- data/lib/locales/hy.yml +2 -1
- data/lib/locales/it.yml +1 -0
- data/lib/locales/ja/adjective.yml +148 -0
- data/lib/locales/ja/dog.yml +1 -0
- data/lib/locales/ja/emotion.yml +51 -0
- data/lib/locales/ja/naruto.yml +230 -0
- data/lib/locales/ja/relationship.yml +10 -0
- data/lib/locales/ja/sport.yml +130 -0
- data/lib/locales/ja/super_mario.yml +1 -1
- data/lib/locales/ko.yml +1 -0
- data/lib/locales/lt.yml +0 -1
- data/lib/locales/mi-NZ.yml +2 -0
- data/lib/locales/nb-NO.yml +1 -0
- data/lib/locales/nl.yml +1 -0
- data/lib/locales/pl.yml +2 -2
- data/lib/locales/pt-BR.yml +1 -0
- data/lib/locales/pt.yml +1 -1
- data/lib/locales/ru.yml +1 -0
- data/lib/locales/sk.yml +1 -0
- data/lib/locales/sv.yml +1 -0
- data/lib/locales/th.yml +76 -76
- data/lib/locales/tr.yml +1 -0
- data/lib/locales/uk.yml +3 -0
- data/lib/locales/vi.yml +1 -0
- data/lib/locales/zh-CN.yml +1 -0
- data/lib/locales/zh-TW.yml +1 -0
- metadata +46 -127
- data/lib/faker/default/fillmurray.rb +0 -45
- data/lib/faker/default/lorem_pixel.rb +0 -70
- /data/lib/faker/default/{faker_adjective.rb → adjective.rb} +0 -0
|
@@ -15,6 +15,8 @@ module Faker
|
|
|
15
15
|
].each(&:freeze).freeze
|
|
16
16
|
|
|
17
17
|
class << self
|
|
18
|
+
extend Gem::Deprecate
|
|
19
|
+
|
|
18
20
|
##
|
|
19
21
|
# Returns the email address
|
|
20
22
|
#
|
|
@@ -25,16 +27,12 @@ module Faker
|
|
|
25
27
|
# @param domain [String]
|
|
26
28
|
#
|
|
27
29
|
# @example
|
|
28
|
-
# Faker::Internet.email #=> "
|
|
29
|
-
# Faker::Internet.email(name: 'smith') #=> "smith@
|
|
30
|
-
# Faker::Internet.email(name: 'sam smith', separators: ['-']) #=> "sam
|
|
31
|
-
# Faker::Internet.email(name: 'sam smith', separators: ['-'], domain: '
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
keywords << :name if legacy_name != NOT_GIVEN
|
|
35
|
-
keywords << :separators if legacy_separators != NOT_GIVEN
|
|
36
|
-
end
|
|
37
|
-
|
|
30
|
+
# Faker::Internet.email #=> "renee@zieme.test"
|
|
31
|
+
# Faker::Internet.email(name: 'smith') #=> "smith@bergnaum.test"
|
|
32
|
+
# Faker::Internet.email(name: 'sam smith', separators: ['-']) #=> "smith-sam@tromp.example"
|
|
33
|
+
# Faker::Internet.email(name: 'sam smith', separators: ['-'], domain: 'test') #=> "sam-smith@test.example"
|
|
34
|
+
# Faker::Internet.email(domain: 'gmail.com') #=> "foo@gmail.com"
|
|
35
|
+
def email(name: nil, separators: nil, domain: nil)
|
|
38
36
|
local_part = if separators
|
|
39
37
|
username(specifier: name, separators: separators)
|
|
40
38
|
else
|
|
@@ -42,7 +40,14 @@ module Faker
|
|
|
42
40
|
end
|
|
43
41
|
|
|
44
42
|
sanitized_local_part = sanitize_email_local_part(local_part)
|
|
45
|
-
|
|
43
|
+
|
|
44
|
+
generate_domain = if domain.nil?
|
|
45
|
+
domain_name
|
|
46
|
+
else
|
|
47
|
+
domain_name(domain: domain)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
construct_email(sanitized_local_part, generate_domain)
|
|
46
51
|
end
|
|
47
52
|
|
|
48
53
|
##
|
|
@@ -55,16 +60,13 @@ module Faker
|
|
|
55
60
|
# @example
|
|
56
61
|
# Faker::Internet.free_email #=> "samsmith@gmail.com"
|
|
57
62
|
# Faker::Internet.free_email(name: 'smith') #=> "smith@yahoo.com"
|
|
58
|
-
def free_email(
|
|
59
|
-
warn_for_deprecated_arguments do |keywords|
|
|
60
|
-
keywords << :name if legacy_name != NOT_GIVEN
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
+
def free_email(name: nil)
|
|
63
64
|
construct_email(
|
|
64
65
|
sanitize_email_local_part(username(specifier: name)),
|
|
65
66
|
fetch('internet.free_email')
|
|
66
67
|
)
|
|
67
68
|
end
|
|
69
|
+
deprecate :free_email, :email, 2023, 10
|
|
68
70
|
|
|
69
71
|
##
|
|
70
72
|
# Returns the email address with fixed domain name as 'example'
|
|
@@ -76,16 +78,13 @@ module Faker
|
|
|
76
78
|
# @example
|
|
77
79
|
# Faker::Internet.safe_email #=> "samsmith@example.com"
|
|
78
80
|
# Faker::Internet.safe_email(name: 'smith') #=> "smith@example.net"
|
|
79
|
-
def safe_email(
|
|
80
|
-
warn_for_deprecated_arguments do |keywords|
|
|
81
|
-
keywords << :name if legacy_name != NOT_GIVEN
|
|
82
|
-
end
|
|
83
|
-
|
|
81
|
+
def safe_email(name: nil)
|
|
84
82
|
construct_email(
|
|
85
83
|
sanitize_email_local_part(username(specifier: name)),
|
|
86
84
|
"example.#{sample(%w[org com net])}"
|
|
87
85
|
)
|
|
88
86
|
end
|
|
87
|
+
deprecate :safe_email, :email, 2023, 10
|
|
89
88
|
|
|
90
89
|
##
|
|
91
90
|
# Returns the username
|
|
@@ -100,12 +99,7 @@ module Faker
|
|
|
100
99
|
# Faker::Internet.username(specifier: 5..10) #=> "morris"
|
|
101
100
|
# Faker::Internet.username(specifier: 5..10) #=> "berryberry"
|
|
102
101
|
# Faker::Internet.username(specifier: 20, separators: ['-']) #=> "nikki_sawaynnikki_saway"
|
|
103
|
-
def username(
|
|
104
|
-
warn_for_deprecated_arguments do |keywords|
|
|
105
|
-
keywords << :specifier if legacy_specifier != NOT_GIVEN
|
|
106
|
-
keywords << :separators if legacy_separators != NOT_GIVEN
|
|
107
|
-
end
|
|
108
|
-
|
|
102
|
+
def username(specifier: nil, separators: %w[. _])
|
|
109
103
|
with_locale(:en) do
|
|
110
104
|
return shuffle(specifier.scan(/[[:word:]]+/)).join(sample(separators)).downcase if specifier.respond_to?(:scan)
|
|
111
105
|
|
|
@@ -142,8 +136,6 @@ module Faker
|
|
|
142
136
|
end
|
|
143
137
|
end
|
|
144
138
|
|
|
145
|
-
# rubocop:disable Metrics/ParameterLists
|
|
146
|
-
|
|
147
139
|
##
|
|
148
140
|
# Produces a randomized string of characters suitable for passwords
|
|
149
141
|
#
|
|
@@ -166,43 +158,55 @@ module Faker
|
|
|
166
158
|
# Faker::Internet.password(min_length: 10, max_length: 20, mix_case: true, special_characters: true) #=> "*%NkOnJsH4"
|
|
167
159
|
#
|
|
168
160
|
# @faker.version 2.1.3
|
|
169
|
-
def password(
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
keywords << :max_length if legacy_max_length != NOT_GIVEN
|
|
173
|
-
keywords << :mix_case if legacy_mix_case != NOT_GIVEN
|
|
174
|
-
keywords << :special_characters if legacy_special_characters != NOT_GIVEN
|
|
175
|
-
end
|
|
161
|
+
def password(min_length: 8, max_length: 16, mix_case: true, special_characters: false)
|
|
162
|
+
raise ArgumentError, 'min_length and max_length must be greater than or equal to one' if min_length < 1 || max_length < 1
|
|
163
|
+
raise ArgumentError, 'min_length must be smaller than or equal to max_length' unless min_length <= max_length
|
|
176
164
|
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
diff_length = max_length - min_length
|
|
165
|
+
character_types = []
|
|
166
|
+
required_min_length = 0
|
|
180
167
|
|
|
181
|
-
if
|
|
182
|
-
|
|
183
|
-
|
|
168
|
+
if mix_case
|
|
169
|
+
character_types << :mix_case
|
|
170
|
+
required_min_length += 2
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
if special_characters
|
|
174
|
+
character_types << :special_characters
|
|
175
|
+
required_min_length += 1
|
|
184
176
|
end
|
|
185
177
|
|
|
178
|
+
raise ArgumentError, "min_length should be at least #{required_min_length} to enable #{character_types.join(', ')} configuration" if min_length < required_min_length
|
|
179
|
+
|
|
180
|
+
target_length = rand(min_length..max_length)
|
|
181
|
+
|
|
182
|
+
password = []
|
|
183
|
+
character_bag = []
|
|
184
|
+
|
|
185
|
+
# use lower_chars by default and add upper_chars if mix_case
|
|
186
|
+
lower_chars = self::LLetters
|
|
187
|
+
password << sample(lower_chars)
|
|
188
|
+
character_bag += lower_chars
|
|
189
|
+
|
|
190
|
+
digits = ('0'..'9').to_a
|
|
191
|
+
password << sample(digits)
|
|
192
|
+
character_bag += digits
|
|
193
|
+
|
|
186
194
|
if mix_case
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
temp[index] = char.upcase if alpha_count.even?
|
|
191
|
-
alpha_count += 1
|
|
192
|
-
end
|
|
193
|
-
end
|
|
195
|
+
upper_chars = self::ULetters
|
|
196
|
+
password << sample(upper_chars)
|
|
197
|
+
character_bag += upper_chars
|
|
194
198
|
end
|
|
195
199
|
|
|
196
200
|
if special_characters
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
end
|
|
201
|
+
special_chars = %w[! @ # $ % ^ & *]
|
|
202
|
+
password << sample(special_chars)
|
|
203
|
+
character_bag += special_chars
|
|
201
204
|
end
|
|
202
205
|
|
|
203
|
-
|
|
206
|
+
password << sample(character_bag) while password.length < target_length
|
|
207
|
+
|
|
208
|
+
shuffle(password).join
|
|
204
209
|
end
|
|
205
|
-
# rubocop:enable Metrics/ParameterLists
|
|
206
210
|
|
|
207
211
|
##
|
|
208
212
|
# Returns the domain name
|
|
@@ -213,27 +217,31 @@ module Faker
|
|
|
213
217
|
# @param domain [String]
|
|
214
218
|
#
|
|
215
219
|
# @example
|
|
216
|
-
# Faker::Internet.domain_name
|
|
217
|
-
# Faker::Internet.domain_name(subdomain: true)
|
|
218
|
-
# Faker::Internet.domain_name(subdomain: true, domain: '
|
|
219
|
-
# Faker::Internet.domain_name(domain: 'faker')
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
end
|
|
224
|
-
|
|
220
|
+
# Faker::Internet.domain_name #=> "altenwerth-gerhold.example"
|
|
221
|
+
# Faker::Internet.domain_name(subdomain: true) #=> "metz.mclaughlin-brekke.test"
|
|
222
|
+
# Faker::Internet.domain_name(subdomain: true, domain: 'faker') #=> "foo.faker.test"
|
|
223
|
+
# Faker::Internet.domain_name(domain: 'faker-ruby.org') #=> "faker-ruby.org"
|
|
224
|
+
# Faker::Internet.domain_name(subdomain: true, domain: 'faker-ruby.org') #=> "foo.faker-ruby.org"
|
|
225
|
+
# Faker::Internet.domain_name(subdomain: true, domain: 'faker.faker-ruby.org') #=> "faker.faker-ruby.org"
|
|
226
|
+
def domain_name(subdomain: false, domain: nil)
|
|
225
227
|
with_locale(:en) do
|
|
226
228
|
if domain
|
|
227
229
|
domain
|
|
228
230
|
.split('.')
|
|
229
231
|
.map { |domain_part| Char.prepare(domain_part) }
|
|
230
232
|
.tap do |domain_elements|
|
|
231
|
-
|
|
232
|
-
|
|
233
|
+
if domain_elements.length < 2
|
|
234
|
+
domain_elements << domain_suffix(safe: true)
|
|
235
|
+
end
|
|
236
|
+
if subdomain && domain_elements.length < 3
|
|
237
|
+
domain_elements.unshift(Char.prepare(domain_word))
|
|
238
|
+
end
|
|
233
239
|
end.join('.')
|
|
234
240
|
else
|
|
235
|
-
[domain_word, domain_suffix].tap do |domain_elements|
|
|
236
|
-
|
|
241
|
+
[domain_word, domain_suffix(safe: true)].tap do |domain_elements|
|
|
242
|
+
if subdomain
|
|
243
|
+
domain_elements.unshift(Char.prepare(domain_word))
|
|
244
|
+
end
|
|
237
245
|
end.join('.')
|
|
238
246
|
end
|
|
239
247
|
end
|
|
@@ -250,11 +258,7 @@ module Faker
|
|
|
250
258
|
# Faker::Internet.fix_umlauts #=> ""
|
|
251
259
|
# Faker::Internet.fix_umlauts(string: 'faker') #=> "faker"
|
|
252
260
|
# Faker::Internet.fix_umlauts(string: 'faküer') #=> "fakueer"
|
|
253
|
-
def fix_umlauts(
|
|
254
|
-
warn_for_deprecated_arguments do |keywords|
|
|
255
|
-
keywords << :string if legacy_string != NOT_GIVEN
|
|
256
|
-
end
|
|
257
|
-
|
|
261
|
+
def fix_umlauts(string: '')
|
|
258
262
|
Char.fix_umlauts(string)
|
|
259
263
|
end
|
|
260
264
|
|
|
@@ -266,7 +270,7 @@ module Faker
|
|
|
266
270
|
# @example
|
|
267
271
|
# Faker::Internet.domain_word #=> "senger"
|
|
268
272
|
def domain_word
|
|
269
|
-
with_locale(:en) { Char.prepare(Company.name.split
|
|
273
|
+
with_locale(:en) { Char.prepare(Company.name.split.first) }
|
|
270
274
|
end
|
|
271
275
|
|
|
272
276
|
## Returns the domain suffix e.g. com, org, co, biz, info etc.
|
|
@@ -274,10 +278,16 @@ module Faker
|
|
|
274
278
|
# @return [String]
|
|
275
279
|
#
|
|
276
280
|
# @example
|
|
277
|
-
# Faker::Internet.domain_suffix
|
|
278
|
-
# Faker::Internet.domain_suffix
|
|
279
|
-
|
|
280
|
-
|
|
281
|
+
# Faker::Internet.domain_suffix #=> "com"
|
|
282
|
+
# Faker::Internet.domain_suffix #=> "biz"
|
|
283
|
+
# Faker::Internet.domain_suffix(safe: true) #=> "example"
|
|
284
|
+
# Faker::Internet.domain_suffix(safe: true) #=> "test"
|
|
285
|
+
def domain_suffix(safe: nil)
|
|
286
|
+
if safe
|
|
287
|
+
fetch('internet.safe_domain_suffix')
|
|
288
|
+
else
|
|
289
|
+
fetch('internet.domain_suffix')
|
|
290
|
+
end
|
|
281
291
|
end
|
|
282
292
|
|
|
283
293
|
##
|
|
@@ -290,11 +300,7 @@ module Faker
|
|
|
290
300
|
# Faker::Internet.mac_address(prefix: 'a') #=> "0a:91:ce:24:89:3b"
|
|
291
301
|
# Faker::Internet.mac_address(prefix: 'aa') #=> "aa:38:a0:3e:e8:41"
|
|
292
302
|
# Faker::Internet.mac_address(prefix: 'aa:44') #=> "aa:44:30:88:6e:95"
|
|
293
|
-
def mac_address(
|
|
294
|
-
warn_for_deprecated_arguments do |keywords|
|
|
295
|
-
keywords << :prefix if legacy_prefix != NOT_GIVEN
|
|
296
|
-
end
|
|
297
|
-
|
|
303
|
+
def mac_address(prefix: '')
|
|
298
304
|
prefix_digits = prefix.split(':').map { |d| d.to_i(16) }
|
|
299
305
|
address_digits = Array.new((6 - prefix_digits.size)) { rand(256) }
|
|
300
306
|
(prefix_digits + address_digits).map { |d| format('%02x', d) }.join(':')
|
|
@@ -436,8 +442,6 @@ module Faker
|
|
|
436
442
|
"#{ip_v6_address}/#{rand(1..127)}"
|
|
437
443
|
end
|
|
438
444
|
|
|
439
|
-
# rubocop:disable Metrics/ParameterLists
|
|
440
|
-
|
|
441
445
|
##
|
|
442
446
|
# Returns URL
|
|
443
447
|
#
|
|
@@ -448,20 +452,13 @@ module Faker
|
|
|
448
452
|
# @param scheme [String]
|
|
449
453
|
#
|
|
450
454
|
# @example
|
|
451
|
-
# Faker::Internet.url #=> "http://
|
|
455
|
+
# Faker::Internet.url #=> "http://treutel.test/demarcus"
|
|
452
456
|
# Faker::Internet.url(host: 'faker') #=> "http://faker/shad"
|
|
453
|
-
# Faker::Internet.url(host: 'faker', path: '/
|
|
454
|
-
# Faker::Internet.url(host: 'faker', path: '/
|
|
455
|
-
def url(
|
|
456
|
-
warn_for_deprecated_arguments do |keywords|
|
|
457
|
-
keywords << :host if legacy_host != NOT_GIVEN
|
|
458
|
-
keywords << :path if legacy_path != NOT_GIVEN
|
|
459
|
-
keywords << :scheme if legacy_scheme != NOT_GIVEN
|
|
460
|
-
end
|
|
461
|
-
|
|
457
|
+
# Faker::Internet.url(host: 'faker', path: '/docs') #=> "http://faker/docs"
|
|
458
|
+
# Faker::Internet.url(host: 'faker', path: '/docs', scheme: 'https') #=> "https://faker/docs"
|
|
459
|
+
def url(host: domain_name, path: "/#{username}", scheme: 'http')
|
|
462
460
|
"#{scheme}://#{host}#{path}"
|
|
463
461
|
end
|
|
464
|
-
# rubocop:enable Metrics/ParameterLists
|
|
465
462
|
|
|
466
463
|
##
|
|
467
464
|
# Returns unique string in URL
|
|
@@ -476,12 +473,7 @@ module Faker
|
|
|
476
473
|
# Faker::Internet.slug(words: 'test, faker') #=> "test-faker"
|
|
477
474
|
# Faker::Internet.slug(words: 'test. faker') #=> "test-faker"
|
|
478
475
|
# Faker::Internet.slug(words: 'test. faker', glue: '$') #=> "test$faker"
|
|
479
|
-
def slug(
|
|
480
|
-
warn_for_deprecated_arguments do |keywords|
|
|
481
|
-
keywords << :words if legacy_words != NOT_GIVEN
|
|
482
|
-
keywords << :glue if legacy_glue != NOT_GIVEN
|
|
483
|
-
end
|
|
484
|
-
|
|
476
|
+
def slug(words: nil, glue: nil)
|
|
485
477
|
glue ||= sample(%w[- _])
|
|
486
478
|
return words.delete(',.').gsub(' ', glue).downcase unless words.nil?
|
|
487
479
|
|
|
@@ -511,16 +503,29 @@ module Faker
|
|
|
511
503
|
# Faker::Internet.user_agent(vendor: 'chrome') #=> "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36"
|
|
512
504
|
# Faker::Internet.user_agent(vendor: 'safari') #=> "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.75.14 (KHTML, like Gecko) Version/7.0.3 Safari/7046A194A"
|
|
513
505
|
# Faker::Internet.user_agent(vendor: 'faker') #=> "Mozilla/5.0 (Windows; U; Win 9x 4.90; SG; rv:1.9.2.4) Gecko/20101104 Netscape/9.1.0285"
|
|
514
|
-
def user_agent(
|
|
515
|
-
warn_for_deprecated_arguments do |keywords|
|
|
516
|
-
keywords << :vendor if legacy_vendor != NOT_GIVEN
|
|
517
|
-
end
|
|
518
|
-
|
|
506
|
+
def user_agent(vendor: nil)
|
|
519
507
|
agent_hash = translate('faker.internet.user_agent')
|
|
520
508
|
agents = vendor.respond_to?(:to_sym) && agent_hash[vendor.to_sym] || agent_hash[sample(agent_hash.keys)]
|
|
521
509
|
sample(agents)
|
|
522
510
|
end
|
|
523
511
|
|
|
512
|
+
##
|
|
513
|
+
# Generate Web Crawler's user agents
|
|
514
|
+
#
|
|
515
|
+
# @return [String]
|
|
516
|
+
#
|
|
517
|
+
# @param vendor [String] Name of vendor, supported vendors are googlebot, bingbot, duckduckbot, baiduspider, yandexbot
|
|
518
|
+
#
|
|
519
|
+
# @example
|
|
520
|
+
# Faker::Internet.bot_user_agent #=> "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)"
|
|
521
|
+
# Faker::Internet.bot_user_agent(vendor: 'googlebot') #=> "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Googlebot/2.1; +http://www.google.com/bot.html) Chrome/99.0.4844.84 Safari/537.36"
|
|
522
|
+
# Faker::Internet.bot_user_agent(vendor: 'bingbot') #=> "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm) Chrome/86.0.4240.68 Safari/537.36 Edg/86.0.622.31"
|
|
523
|
+
def bot_user_agent(vendor: nil)
|
|
524
|
+
agent_hash = translate('faker.internet.bot_user_agent')
|
|
525
|
+
agents = vendor.respond_to?(:to_sym) && agent_hash[vendor.to_sym] || agent_hash[sample(agent_hash.keys)]
|
|
526
|
+
sample(agents)
|
|
527
|
+
end
|
|
528
|
+
|
|
524
529
|
##
|
|
525
530
|
# Generated universally unique identifier
|
|
526
531
|
#
|
|
@@ -568,10 +573,10 @@ module Faker
|
|
|
568
573
|
##
|
|
569
574
|
# Produces a randomized hash of internet user details
|
|
570
575
|
# @example
|
|
571
|
-
# Faker::Internet.user #=> { username: 'alexie', email: '
|
|
576
|
+
# Faker::Internet.user #=> { username: 'alexie', email: 'trudie@grant.test' }
|
|
572
577
|
#
|
|
573
578
|
# @example
|
|
574
|
-
# Faker::Internet.user('username', 'email', 'password') #=> { username: 'alexie', email: '
|
|
579
|
+
# Faker::Internet.user('username', 'email', 'password') #=> { username: 'alexie', email: 'gayle@kohler.test', password: 'DtEf9P8wS31iMyC' }
|
|
575
580
|
#
|
|
576
581
|
# @return [hash]
|
|
577
582
|
#
|
|
@@ -592,10 +597,10 @@ module Faker
|
|
|
592
597
|
Array('0'..'9'),
|
|
593
598
|
Array('A'..'Z'),
|
|
594
599
|
Array('a'..'z'),
|
|
595
|
-
"!#$%&'*+-/=?^_`{|}~.".
|
|
600
|
+
"!#$%&'*+-/=?^_`{|}~.".chars
|
|
596
601
|
].flatten
|
|
597
602
|
|
|
598
|
-
local_part.
|
|
603
|
+
local_part.chars.map do |char|
|
|
599
604
|
char_range.include?(char) ? char : '#'
|
|
600
605
|
end.join
|
|
601
606
|
end
|
|
@@ -17,12 +17,7 @@ module Faker
|
|
|
17
17
|
# Faker::Finance.amount_between(0, 10) #=> 4.33
|
|
18
18
|
#
|
|
19
19
|
# @faker.version 1.9.0
|
|
20
|
-
def amount_between(
|
|
21
|
-
warn_for_deprecated_arguments do |keywords|
|
|
22
|
-
keywords << :from if legacy_from != NOT_GIVEN
|
|
23
|
-
keywords << :to if legacy_to != NOT_GIVEN
|
|
24
|
-
end
|
|
25
|
-
|
|
20
|
+
def amount_between(from: 0, to: 0)
|
|
26
21
|
Faker::Base.rand_in_range(from, to).round(2)
|
|
27
22
|
end
|
|
28
23
|
|
|
@@ -36,11 +31,7 @@ module Faker
|
|
|
36
31
|
# Faker::Invoice.creditor_reference #=> "RF34118592570724925498"
|
|
37
32
|
#
|
|
38
33
|
# @faker.version 1.9.0
|
|
39
|
-
def creditor_reference(
|
|
40
|
-
warn_for_deprecated_arguments do |keywords|
|
|
41
|
-
keywords << :ref if legacy_ref != NOT_GIVEN
|
|
42
|
-
end
|
|
43
|
-
|
|
34
|
+
def creditor_reference(ref: '')
|
|
44
35
|
ref = reference if ref.empty?
|
|
45
36
|
|
|
46
37
|
"RF#{iban_checksum('RF', ref)}#{ref}"
|
|
@@ -56,11 +47,7 @@ module Faker
|
|
|
56
47
|
# Faker::Invoice.reference #=> "45656646957845"
|
|
57
48
|
#
|
|
58
49
|
# @faker.version 1.9.0
|
|
59
|
-
def reference(
|
|
60
|
-
warn_for_deprecated_arguments do |keywords|
|
|
61
|
-
keywords << :ref if legacy_ref != NOT_GIVEN
|
|
62
|
-
end
|
|
63
|
-
|
|
50
|
+
def reference(ref: '')
|
|
64
51
|
pattern = fetch('invoice.reference.pattern')
|
|
65
52
|
|
|
66
53
|
ref = Base.regexify(/#{pattern}/) if ref.empty?
|
|
@@ -115,7 +102,7 @@ module Faker
|
|
|
115
102
|
mod10_remainder(weighted_sum)
|
|
116
103
|
end
|
|
117
104
|
|
|
118
|
-
# Calculates
|
|
105
|
+
# Calculates weighted sum
|
|
119
106
|
#
|
|
120
107
|
# For example with 12345678, [1,2]
|
|
121
108
|
# Ref.num. 1 2 3 4 5 6 7 8
|
data/lib/faker/default/json.rb
CHANGED
|
@@ -20,12 +20,7 @@ module Faker
|
|
|
20
20
|
# something to eat - it's all been wrong."}
|
|
21
21
|
#
|
|
22
22
|
# @faker.version 1.9.2
|
|
23
|
-
def shallow_json(
|
|
24
|
-
warn_for_deprecated_arguments do |keywords|
|
|
25
|
-
keywords << :width if legacy_width != NOT_GIVEN
|
|
26
|
-
keywords << :options if legacy_options != NOT_GIVEN
|
|
27
|
-
end
|
|
28
|
-
|
|
23
|
+
def shallow_json(width: 3, options: { key: 'Name.first_name', value: 'Name.first_name' })
|
|
29
24
|
options[:key] = "Faker::#{options[:key]}"
|
|
30
25
|
options[:value] = "Faker::#{options[:value]}"
|
|
31
26
|
|
|
@@ -33,8 +28,6 @@ module Faker
|
|
|
33
28
|
JSON.generate(hash)
|
|
34
29
|
end
|
|
35
30
|
|
|
36
|
-
# rubocop:disable Metrics/ParameterLists
|
|
37
|
-
|
|
38
31
|
##
|
|
39
32
|
# Produces a random nested JSON formatted string that can take JSON as an additional argument.
|
|
40
33
|
#
|
|
@@ -73,17 +66,7 @@ module Faker
|
|
|
73
66
|
# {"Rick":"Wiza","Bonita":"Bayer","Gardner":"Auer","Felicity":"Abbott"}}}
|
|
74
67
|
#
|
|
75
68
|
# @faker.version 1.9.2
|
|
76
|
-
def add_depth_to_json(
|
|
77
|
-
warn_for_deprecated_arguments do |keywords|
|
|
78
|
-
keywords << :json if legacy_json != NOT_GIVEN
|
|
79
|
-
end
|
|
80
|
-
warn_for_deprecated_arguments do |keywords|
|
|
81
|
-
keywords << :width if legacy_width != NOT_GIVEN
|
|
82
|
-
end
|
|
83
|
-
warn_for_deprecated_arguments do |keywords|
|
|
84
|
-
keywords << :options if legacy_options != NOT_GIVEN
|
|
85
|
-
end
|
|
86
|
-
|
|
69
|
+
def add_depth_to_json(json: shallow_json, width: 3, options: { key: 'Name.first_name', value: 'Name.first_name' })
|
|
87
70
|
options[:key] = "Faker::#{options[:key]}"
|
|
88
71
|
options[:value] = "Faker::#{options[:value]}"
|
|
89
72
|
|
|
@@ -93,7 +76,6 @@ module Faker
|
|
|
93
76
|
end
|
|
94
77
|
JSON.generate(hash)
|
|
95
78
|
end
|
|
96
|
-
# rubocop:enable Metrics/ParameterLists
|
|
97
79
|
|
|
98
80
|
private
|
|
99
81
|
|