faker 2.22.0 → 3.0.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 +4 -4
- data/CHANGELOG.md +88 -7
- data/History.md +1 -1
- data/README.md +11 -5
- 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 +8 -14
- data/lib/faker/default/code.rb +10 -23
- data/lib/faker/default/color.rb +77 -6
- data/lib/faker/default/commerce.rb +3 -17
- data/lib/faker/default/company.rb +6 -14
- data/lib/faker/default/crypto_coin.rb +3 -15
- data/lib/faker/default/date.rb +5 -38
- data/lib/faker/default/demographic.rb +1 -5
- data/lib/faker/default/driving_licence.rb +1 -11
- data/lib/faker/default/file.rb +5 -24
- data/lib/faker/default/fillmurray.rb +1 -10
- data/lib/faker/default/finance.rb +17 -7
- data/lib/faker/default/hipster.rb +6 -45
- data/lib/faker/default/id_number.rb +108 -11
- data/lib/faker/default/internet.rb +17 -71
- data/lib/faker/default/invoice.rb +3 -16
- data/lib/faker/default/json.rb +2 -20
- data/lib/faker/default/lorem.rb +9 -66
- data/lib/faker/default/lorem_flickr.rb +4 -32
- data/lib/faker/default/lorem_pixel.rb +4 -10
- data/lib/faker/default/markdown.rb +4 -9
- data/lib/faker/default/measurement.rb +8 -40
- 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 +5 -39
- data/lib/faker/default/phone_number.rb +1 -5
- data/lib/faker/default/placeholdit.rb +1 -12
- data/lib/faker/default/relationship.rb +1 -5
- 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 +3 -17
- data/lib/faker/default/types.rb +5 -27
- data/lib/faker/default/vehicle.rb +21 -21
- data/lib/faker/default/vulnerability_identifier.rb +23 -0
- data/lib/faker/default/world_cup.rb +2 -11
- data/lib/faker/games/dota.rb +1 -5
- data/lib/faker/games/tarkov.rb +205 -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/hackers.rb +48 -0
- data/lib/faker/movies/star_wars.rb +1 -5
- data/lib/faker/sports/sport.rb +110 -0
- data/lib/faker/version.rb +1 -1
- data/lib/faker.rb +15 -63
- data/lib/helpers/base58.rb +1 -1
- data/lib/helpers/unique_generator.rb +13 -11
- data/lib/locales/en/computer.yml +23 -4
- data/lib/locales/en/file.yml +9 -1
- data/lib/locales/en/finance.yml +3 -1
- data/lib/locales/en/hackers.yml +53 -0
- data/lib/locales/en/heroes.yml +2 -2
- data/lib/locales/en/one_piece.yml +1 -1
- data/lib/locales/en/opera.yml +1 -1
- data/lib/locales/en/overwatch.yml +5 -7
- data/lib/locales/en/source.yml +5 -0
- data/lib/locales/en/sport.yml +130 -0
- data/lib/locales/en/tarkov.yml +593 -0
- data/lib/locales/en/vehicle.yml +2809 -75
- data/lib/locales/en-CA.yml +1 -0
- data/lib/locales/es-AR.yml +2 -2
- data/lib/locales/fi-FI.yml +2 -1
- data/lib/locales/fr/ancient.yml +141 -0
- data/lib/locales/hy.yml +1 -1
- data/lib/locales/th.yml +76 -76
- metadata +50 -19
@@ -0,0 +1,205 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Faker
|
4
|
+
class Games
|
5
|
+
class Tarkov < Base
|
6
|
+
class << self
|
7
|
+
##
|
8
|
+
# Produces a random location from Escape from Tarkov.
|
9
|
+
#
|
10
|
+
# @return [String]
|
11
|
+
#
|
12
|
+
# @example
|
13
|
+
# Faker::Games::Tarkov.location #=> "Customs"
|
14
|
+
#
|
15
|
+
# @faker.version next
|
16
|
+
def location
|
17
|
+
fetch('tarkov.locations')
|
18
|
+
end
|
19
|
+
|
20
|
+
##
|
21
|
+
# Produces a random trader from Escape from Tarkov.
|
22
|
+
#
|
23
|
+
# @return [String]
|
24
|
+
#
|
25
|
+
# @example
|
26
|
+
# Faker::Games::Tarkov.trader #=> "Prapor"
|
27
|
+
#
|
28
|
+
# @faker.version next
|
29
|
+
def trader
|
30
|
+
fetch('tarkov.traders')
|
31
|
+
end
|
32
|
+
|
33
|
+
##
|
34
|
+
# Produces a random item from Escape from Tarkov.
|
35
|
+
#
|
36
|
+
# @return [String]
|
37
|
+
#
|
38
|
+
# @example
|
39
|
+
# Faker::Games::Tarkov.item #=> "Diary"
|
40
|
+
#
|
41
|
+
# @faker.version next
|
42
|
+
def item
|
43
|
+
fetch('tarkov.items')
|
44
|
+
end
|
45
|
+
|
46
|
+
##
|
47
|
+
# Produces a random weapon from Escape from Tarkov.
|
48
|
+
#
|
49
|
+
# @return [String]
|
50
|
+
#
|
51
|
+
# @example
|
52
|
+
# Faker::Games::Tarkov.weapon #=> "AK-74N"
|
53
|
+
#
|
54
|
+
# @faker.version next
|
55
|
+
def weapon
|
56
|
+
fetch('tarkov.weapons')
|
57
|
+
end
|
58
|
+
|
59
|
+
##
|
60
|
+
# Produces a random boss from Escape from Tarkov.
|
61
|
+
#
|
62
|
+
# @return [String]
|
63
|
+
#
|
64
|
+
# @example
|
65
|
+
# Faker::Games::Tarkov.boss #=> "Tagilla"
|
66
|
+
#
|
67
|
+
# @faker.version next
|
68
|
+
def boss
|
69
|
+
fetch('tarkov.bosses')
|
70
|
+
end
|
71
|
+
|
72
|
+
##
|
73
|
+
# Produces a random faction from Escape from Tarkov.
|
74
|
+
#
|
75
|
+
# @return [String]
|
76
|
+
#
|
77
|
+
# @example
|
78
|
+
# Faker::Games::Tarkov.faction #=> "USEC"
|
79
|
+
#
|
80
|
+
# @faker.version next
|
81
|
+
def faction
|
82
|
+
fetch('tarkov.factions')
|
83
|
+
end
|
84
|
+
|
85
|
+
##
|
86
|
+
# Produces a random quest from a random trader from Escape from Tarkov.
|
87
|
+
#
|
88
|
+
# @return [String]
|
89
|
+
#
|
90
|
+
# @example
|
91
|
+
# Faker::Games::Tarkov.quest #=> "The Key to Success"
|
92
|
+
#
|
93
|
+
# @faker.version next
|
94
|
+
def quest
|
95
|
+
@traders = %w[prapor therapist skier peacekeeper mechanic ragman jaeger fence]
|
96
|
+
fetch("tarkov.quests.#{@traders.sample}")
|
97
|
+
end
|
98
|
+
|
99
|
+
##
|
100
|
+
# Produces a random quest from Prapor from Escape from Tarkov.
|
101
|
+
#
|
102
|
+
# @return [String]
|
103
|
+
#
|
104
|
+
# @example
|
105
|
+
# Faker::Games::Tarkov.prapor_quest #=> "Easy Job - Part 2
|
106
|
+
#
|
107
|
+
# @faker.version next
|
108
|
+
def prapor_quest
|
109
|
+
fetch('tarkov.quests.prapor')
|
110
|
+
end
|
111
|
+
|
112
|
+
##
|
113
|
+
# Produces a random quest from Therapist from Escape from Tarkov.
|
114
|
+
#
|
115
|
+
# @return [String]
|
116
|
+
#
|
117
|
+
# @example
|
118
|
+
# Faker::Games::Tarkov.therapist_quest #=> "Supply Plans"
|
119
|
+
#
|
120
|
+
# @faker.version next
|
121
|
+
def therapist_quest
|
122
|
+
fetch('tarkov.quests.therapist')
|
123
|
+
end
|
124
|
+
|
125
|
+
##
|
126
|
+
# Produces a random quest from Skier from Escape from Tarkov.
|
127
|
+
#
|
128
|
+
# @return [String]
|
129
|
+
#
|
130
|
+
# @example
|
131
|
+
# Faker::Games::Tarkov.skier_quest #=> "Safe Corridor"
|
132
|
+
#
|
133
|
+
# @faker.version next
|
134
|
+
def skier_quest
|
135
|
+
fetch('tarkov.quests.skier')
|
136
|
+
end
|
137
|
+
|
138
|
+
##
|
139
|
+
# Produces a random quest from Peacekeeper from Escape from Tarkov.
|
140
|
+
#
|
141
|
+
# @return [String]
|
142
|
+
#
|
143
|
+
# @example
|
144
|
+
# Faker::Games::Tarkov.peacekeeper_quest #=> "Overpopulation"
|
145
|
+
#
|
146
|
+
# @faker.version next
|
147
|
+
def peacekeeper_quest
|
148
|
+
fetch('tarkov.quests.peacekeeper')
|
149
|
+
end
|
150
|
+
|
151
|
+
##
|
152
|
+
# Produces a random quest from Mechanic from Escape from Tarkov.
|
153
|
+
#
|
154
|
+
# @return [String]
|
155
|
+
#
|
156
|
+
# @example
|
157
|
+
# Faker::Games::Tarkov.mechanic_quest #=> "Signal - Part 4"
|
158
|
+
#
|
159
|
+
# @faker.version next
|
160
|
+
def mechanic_quest
|
161
|
+
fetch('tarkov.quests.mechanic')
|
162
|
+
end
|
163
|
+
|
164
|
+
##
|
165
|
+
# Produces a random quest from Ragman from Escape from Tarkov.
|
166
|
+
#
|
167
|
+
# @return [String]
|
168
|
+
#
|
169
|
+
# @example
|
170
|
+
# Faker::Games::Tarkov.ragman_quest #=> "Hot Delivery"
|
171
|
+
#
|
172
|
+
# @faker.version next
|
173
|
+
def ragman_quest
|
174
|
+
fetch('tarkov.quests.ragman')
|
175
|
+
end
|
176
|
+
|
177
|
+
##
|
178
|
+
# Produces a random quest from Jaeger from Escape from Tarkov.
|
179
|
+
#
|
180
|
+
# @return [String]
|
181
|
+
#
|
182
|
+
# @example
|
183
|
+
# Faker::Games::Tarkov.jaeger_quest #=> "The Tarkov Shooter - Part 1"
|
184
|
+
#
|
185
|
+
# @faker.version next
|
186
|
+
def jaeger_quest
|
187
|
+
fetch('tarkov.quests.jaeger')
|
188
|
+
end
|
189
|
+
|
190
|
+
##
|
191
|
+
# Produces a random quest from Fence from Escape from Tarkov.
|
192
|
+
#
|
193
|
+
# @return [String]
|
194
|
+
#
|
195
|
+
# @example
|
196
|
+
# Faker::Games::Tarkov.fence_quest #=> "Compensation for Damage - Wager"
|
197
|
+
#
|
198
|
+
# @faker.version next
|
199
|
+
def fence_quest
|
200
|
+
fetch('tarkov.quests.fence')
|
201
|
+
end
|
202
|
+
end
|
203
|
+
end
|
204
|
+
end
|
205
|
+
end
|
@@ -83,14 +83,14 @@ module Faker
|
|
83
83
|
end
|
84
84
|
|
85
85
|
def from_eras(*input_eras, field:)
|
86
|
-
selected_eras = (ERAS & input_eras).
|
86
|
+
selected_eras = (ERAS & input_eras).then do |selected|
|
87
87
|
selected.empty? ? eras : selected
|
88
88
|
end.dup
|
89
89
|
yield(selected_eras) if block_given?
|
90
90
|
|
91
91
|
raise UnavailableInEra, "#{field} is unavailable in the selected eras." if selected_eras.empty?
|
92
92
|
|
93
|
-
selected_eras.sample.
|
93
|
+
selected_eras.sample.then do |era|
|
94
94
|
fetch("kamen_rider.#{era}.#{field}")
|
95
95
|
end
|
96
96
|
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Faker
|
4
|
+
class Movies
|
5
|
+
class Hackers < Base
|
6
|
+
class << self
|
7
|
+
##
|
8
|
+
# Produces a real character name from Hackers.
|
9
|
+
#
|
10
|
+
# @return [String]
|
11
|
+
#
|
12
|
+
# @example
|
13
|
+
# Faker::Movies::Hackers.character #=> "Dade Murphy"
|
14
|
+
#
|
15
|
+
# @faker.version next
|
16
|
+
def character
|
17
|
+
fetch('hackers.characters')
|
18
|
+
end
|
19
|
+
|
20
|
+
##
|
21
|
+
# Produces a character hacker "handle" from Hackers.
|
22
|
+
#
|
23
|
+
# @return [String]
|
24
|
+
#
|
25
|
+
# @example
|
26
|
+
# Faker::Movies::Hackers.handle #=> "Zero Cool"
|
27
|
+
#
|
28
|
+
# @faker.version next
|
29
|
+
def handle
|
30
|
+
fetch('hackers.handles')
|
31
|
+
end
|
32
|
+
|
33
|
+
##
|
34
|
+
# Produces a quote from Hackers.
|
35
|
+
#
|
36
|
+
# @return [String]
|
37
|
+
#
|
38
|
+
# @example
|
39
|
+
# Faker::Movies::Hackers.quote #=> "Hack the Planet!"
|
40
|
+
#
|
41
|
+
# @faker.version next
|
42
|
+
def quote
|
43
|
+
fetch('hackers.quotes')
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -138,11 +138,7 @@ module Faker
|
|
138
138
|
# #=> "Aren't you a little short for a Stormtrooper?"
|
139
139
|
#
|
140
140
|
# @faker.version 1.6.2
|
141
|
-
def quote(
|
142
|
-
warn_for_deprecated_arguments do |keywords|
|
143
|
-
keywords << :character if legacy_character != NOT_GIVEN
|
144
|
-
end
|
145
|
-
|
141
|
+
def quote(character: nil)
|
146
142
|
quoted_characters = translate('faker.star_wars.quotes')
|
147
143
|
|
148
144
|
if character.nil?
|
@@ -0,0 +1,110 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Faker
|
4
|
+
class Sport < Base
|
5
|
+
class << self
|
6
|
+
##
|
7
|
+
# Produces a sport from the modern olympics or paralympics, summer or winter.
|
8
|
+
#
|
9
|
+
# @param include_ancient [Boolean] If true, may produce a sport from the ancient olympics
|
10
|
+
# @param include_unusual [Boolean] If true, may produce an unusual (definitely not olympic) sport
|
11
|
+
#
|
12
|
+
# @return [String]
|
13
|
+
#
|
14
|
+
# @example
|
15
|
+
# Faker::Sport.sport #=> "Football"
|
16
|
+
# @example
|
17
|
+
# Faker::Sport.sport(include_ancient: true) #=> "Chariot racing"
|
18
|
+
# @example
|
19
|
+
# Faker::Sport.sport(include_unsual: true) #=> "Flugtag/Birdman"
|
20
|
+
# @example
|
21
|
+
# Faker::Sport.sport(include_ancient:true, include_unusual: true) #=> "Water polo"
|
22
|
+
#
|
23
|
+
# @faker.version next
|
24
|
+
def sport(include_ancient: false, include_unusual: false)
|
25
|
+
sports = fetch_all('sport.summer_olympics') + fetch_all('sport.winter_olympics') + fetch_all('sport.summer_paralympics') + fetch_all('sport.winter_paralympics')
|
26
|
+
sports << fetch_all('sport.ancient_olympics') if include_ancient
|
27
|
+
sports << fetch_all('sport.unusual') if include_unusual
|
28
|
+
sample(sports)
|
29
|
+
end
|
30
|
+
|
31
|
+
##
|
32
|
+
# Produces a sport from the summer olympics.
|
33
|
+
#
|
34
|
+
# @return [String]
|
35
|
+
#
|
36
|
+
# @example
|
37
|
+
# Faker::Sport.summer_olympics_sport #=> "Archery"
|
38
|
+
#
|
39
|
+
# @faker.version next
|
40
|
+
def summer_olympics_sport
|
41
|
+
fetch('sport.summer_olympics')
|
42
|
+
end
|
43
|
+
|
44
|
+
##
|
45
|
+
# Produces a sport from the winter olympics.
|
46
|
+
#
|
47
|
+
# @return [String]
|
48
|
+
#
|
49
|
+
# @example
|
50
|
+
# Faker::Sport.winter_olympics_sport #=> "Bobsleigh"
|
51
|
+
#
|
52
|
+
# @faker.version next
|
53
|
+
def winter_olympics_sport
|
54
|
+
fetch('sport.winter_olympics')
|
55
|
+
end
|
56
|
+
|
57
|
+
##
|
58
|
+
# Produces a sport from the summer paralympics.
|
59
|
+
#
|
60
|
+
# @return [String]
|
61
|
+
#
|
62
|
+
# @example
|
63
|
+
# Faker::Sport.summer_paralympics_sport #=> "Wheelchair Basketball"
|
64
|
+
#
|
65
|
+
# @faker.version next
|
66
|
+
def summer_paralympics_sport
|
67
|
+
fetch('sport.summer_paralympics')
|
68
|
+
end
|
69
|
+
|
70
|
+
##
|
71
|
+
# Produces a sport from the winter paralympics.
|
72
|
+
#
|
73
|
+
# @return [String]
|
74
|
+
#
|
75
|
+
# @example
|
76
|
+
# Faker::Sport.winter_paralympics_sport #=> "Para Ice Hockey"
|
77
|
+
#
|
78
|
+
# @faker.version next
|
79
|
+
def winter_paralympics_sport
|
80
|
+
fetch('sport.winter_paralympics')
|
81
|
+
end
|
82
|
+
|
83
|
+
##
|
84
|
+
# Produces an unusual sport.
|
85
|
+
#
|
86
|
+
# @return [String]
|
87
|
+
#
|
88
|
+
# @example
|
89
|
+
# Faker::Sport.unusual_sport #=> "Camel Jumping"
|
90
|
+
#
|
91
|
+
# @faker.version next
|
92
|
+
def unusual_sport
|
93
|
+
fetch('sport.unusual')
|
94
|
+
end
|
95
|
+
|
96
|
+
##
|
97
|
+
# Produces a sport from the ancient olympics.
|
98
|
+
#
|
99
|
+
# @return [String]
|
100
|
+
#
|
101
|
+
# @example
|
102
|
+
# Faker::Sport.ancient_olympics_sport #=> "Pankration"
|
103
|
+
#
|
104
|
+
# @faker.version next
|
105
|
+
def ancient_olympics_sport
|
106
|
+
fetch('sport.ancient_olympics')
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
data/lib/faker/version.rb
CHANGED
data/lib/faker.rb
CHANGED
@@ -4,7 +4,6 @@ mydir = __dir__
|
|
4
4
|
|
5
5
|
require 'psych'
|
6
6
|
require 'i18n'
|
7
|
-
require 'set' # Fixes a bug in i18n 0.6.11
|
8
7
|
|
9
8
|
Dir.glob(File.join(mydir, 'helpers', '*.rb')).sort.each { |file| require file }
|
10
9
|
|
@@ -13,23 +12,26 @@ I18n.reload! if I18n.backend.initialized?
|
|
13
12
|
|
14
13
|
module Faker
|
15
14
|
module Config
|
16
|
-
@locale = nil
|
17
|
-
@random = nil
|
18
|
-
|
19
15
|
class << self
|
20
|
-
|
16
|
+
def locale=(new_locale)
|
17
|
+
Thread.current[:faker_config_locale] = new_locale
|
18
|
+
end
|
21
19
|
|
22
20
|
def locale
|
23
21
|
# Because I18n.locale defaults to :en, if we don't have :en in our available_locales, errors will happen
|
24
|
-
|
22
|
+
Thread.current[:faker_config_locale] || (I18n.available_locales.include?(I18n.locale) ? I18n.locale : I18n.available_locales.first)
|
25
23
|
end
|
26
24
|
|
27
25
|
def own_locale
|
28
|
-
|
26
|
+
Thread.current[:faker_config_locale]
|
27
|
+
end
|
28
|
+
|
29
|
+
def random=(new_random)
|
30
|
+
Thread.current[:faker_config_random] = new_random
|
29
31
|
end
|
30
32
|
|
31
33
|
def random
|
32
|
-
|
34
|
+
Thread.current[:faker_config_random] || Random
|
33
35
|
end
|
34
36
|
end
|
35
37
|
end
|
@@ -41,6 +43,8 @@ module Faker
|
|
41
43
|
Letters = ULetters + LLetters
|
42
44
|
|
43
45
|
class << self
|
46
|
+
attr_reader :flexible_key
|
47
|
+
|
44
48
|
NOT_GIVEN = Object.new
|
45
49
|
|
46
50
|
## by default numerify results do not start with a zero
|
@@ -87,7 +91,7 @@ module Faker
|
|
87
91
|
.gsub(/(\\?.)\{(\d+),(\d+)\}/) { |_match| Regexp.last_match(1) * sample(Array(Range.new(Regexp.last_match(2).to_i, Regexp.last_match(3).to_i))) } # A{1,2} becomes A or AA or \d{3} becomes \d\d\d
|
88
92
|
.gsub(/\((.*?)\)/) { |match| sample(match.gsub(/[()]/, '').split('|')) } # (this|that) becomes 'this' or 'that'
|
89
93
|
.gsub(/\[([^\]]+)\]/) { |match| match.gsub(/(\w-\w)/) { |range| sample(Array(Range.new(*range.split('-')))) } } # All A-Z inside of [] become C (or X, or whatever)
|
90
|
-
.gsub(/\[([^\]]+)\]/) { |_match| sample(Regexp.last_match(1).
|
94
|
+
.gsub(/\[([^\]]+)\]/) { |_match| sample(Regexp.last_match(1).chars) } # All [ABC] become B (or A or C)
|
91
95
|
.gsub('\d') { |_match| sample(Numbers) }
|
92
96
|
.gsub('\w') { |_match| sample(Letters) }
|
93
97
|
end
|
@@ -185,9 +189,9 @@ module Faker
|
|
185
189
|
# girls_name: ["Alice", "Cheryl", "Tatiana"]
|
186
190
|
# Then you can call Faker::Name.girls_name and it will act like #first_name
|
187
191
|
def method_missing(mth, *args, &block)
|
188
|
-
super unless
|
192
|
+
super unless flexible_key
|
189
193
|
|
190
|
-
if (translation = translate("faker.#{
|
194
|
+
if (translation = translate("faker.#{flexible_key}.#{mth}"))
|
191
195
|
sample(translation)
|
192
196
|
else
|
193
197
|
super
|
@@ -255,58 +259,6 @@ module Faker
|
|
255
259
|
ensure
|
256
260
|
I18n.enforce_available_locales = old_enforce_available_locales
|
257
261
|
end
|
258
|
-
|
259
|
-
private
|
260
|
-
|
261
|
-
def warn_for_deprecated_arguments
|
262
|
-
keywords = []
|
263
|
-
yield(keywords)
|
264
|
-
|
265
|
-
return if keywords.empty?
|
266
|
-
|
267
|
-
method_name = caller.first.match(/`(?<method_name>.*)'/)[:method_name]
|
268
|
-
|
269
|
-
keywords.each.with_index(1) do |keyword, index|
|
270
|
-
i = case index
|
271
|
-
when 1 then '1st'
|
272
|
-
when 2 then '2nd'
|
273
|
-
when 3 then '3rd'
|
274
|
-
else "#{index}th"
|
275
|
-
end
|
276
|
-
|
277
|
-
warn_with_uplevel(<<~MSG, uplevel: 5)
|
278
|
-
Passing `#{keyword}` with the #{i} argument of `#{method_name}` is deprecated. Use keyword argument like `#{method_name}(#{keyword}: ...)` instead.
|
279
|
-
MSG
|
280
|
-
end
|
281
|
-
|
282
|
-
warn(<<~MSG)
|
283
|
-
|
284
|
-
To automatically update from positional arguments to keyword arguments,
|
285
|
-
install rubocop-faker and run:
|
286
|
-
|
287
|
-
rubocop \\
|
288
|
-
--require rubocop-faker \\
|
289
|
-
--only Faker/DeprecatedArguments \\
|
290
|
-
--auto-correct
|
291
|
-
|
292
|
-
MSG
|
293
|
-
end
|
294
|
-
|
295
|
-
# Workaround for emulating `warn '...', uplevel: 1` in Ruby 2.4 or lower.
|
296
|
-
def warn_with_uplevel(message, uplevel: 1)
|
297
|
-
at = parse_caller(caller[uplevel]).join(':')
|
298
|
-
warn "#{at}: #{message}"
|
299
|
-
end
|
300
|
-
|
301
|
-
def parse_caller(at)
|
302
|
-
# rubocop:disable Style/GuardClause
|
303
|
-
if /^(.+?):(\d+)(?::in `.*')?/ =~ at
|
304
|
-
file = Regexp.last_match(1)
|
305
|
-
line = Regexp.last_match(2).to_i
|
306
|
-
[file, line]
|
307
|
-
end
|
308
|
-
# rubocop:enable Style/GuardClause
|
309
|
-
end
|
310
262
|
end
|
311
263
|
end
|
312
264
|
end
|
data/lib/helpers/base58.rb
CHANGED
@@ -2,16 +2,9 @@
|
|
2
2
|
|
3
3
|
module Faker
|
4
4
|
class UniqueGenerator
|
5
|
-
@marked_unique = Set.new # Holds names of generators with unique values
|
6
|
-
|
7
|
-
class << self
|
8
|
-
attr_reader :marked_unique
|
9
|
-
end
|
10
|
-
|
11
5
|
def initialize(generator, max_retries)
|
12
6
|
@generator = generator
|
13
7
|
@max_retries = max_retries
|
14
|
-
@previous_results = Hash.new { |hash, key| hash[key] = Set.new }
|
15
8
|
end
|
16
9
|
|
17
10
|
def method_missing(name, *arguments)
|
@@ -20,9 +13,9 @@ module Faker
|
|
20
13
|
@max_retries.times do
|
21
14
|
result = @generator.public_send(name, *arguments)
|
22
15
|
|
23
|
-
next if
|
16
|
+
next if previous_results[[name, arguments]].include?(result)
|
24
17
|
|
25
|
-
|
18
|
+
previous_results[[name, arguments]] << result
|
26
19
|
return result
|
27
20
|
end
|
28
21
|
|
@@ -39,8 +32,17 @@ module Faker
|
|
39
32
|
|
40
33
|
RetryLimitExceeded = Class.new(StandardError)
|
41
34
|
|
35
|
+
def previous_results
|
36
|
+
Thread.current[:faker_unique_generator_previous_results] ||= {}
|
37
|
+
Thread.current[:faker_unique_generator_previous_results][@generator] ||= Hash.new { |hash, key| hash[key] = Set.new }
|
38
|
+
end
|
39
|
+
|
42
40
|
def clear
|
43
|
-
|
41
|
+
previous_results.clear
|
42
|
+
end
|
43
|
+
|
44
|
+
def self.marked_unique
|
45
|
+
Thread.current[:faker_unique_generator_marked_unique] ||= Set.new
|
44
46
|
end
|
45
47
|
|
46
48
|
def self.clear
|
@@ -51,7 +53,7 @@ module Faker
|
|
51
53
|
def exclude(name, arguments, values)
|
52
54
|
values ||= []
|
53
55
|
values.each do |value|
|
54
|
-
|
56
|
+
previous_results[[name, arguments]] << value
|
55
57
|
end
|
56
58
|
end
|
57
59
|
end
|
data/lib/locales/en/computer.yml
CHANGED
@@ -4,30 +4,49 @@ en:
|
|
4
4
|
type:
|
5
5
|
- server
|
6
6
|
- workstation
|
7
|
-
platform:
|
7
|
+
platform:
|
8
8
|
- Linux
|
9
9
|
- macOS
|
10
10
|
- Windows
|
11
|
+
- OpenBSD
|
12
|
+
- TempleOS
|
13
|
+
- Plan 9
|
11
14
|
os:
|
12
15
|
linux:
|
13
|
-
- RHEL
|
16
|
+
- RHEL 9.0
|
14
17
|
- RHEL 7.7
|
15
|
-
-
|
18
|
+
- RHEL 6.10
|
19
|
+
- CentOS 8.5
|
16
20
|
- CentOS 7
|
17
21
|
- CentOS 6
|
22
|
+
- Debian 11.4.0
|
18
23
|
- Debian 10.10.3
|
19
24
|
- Debian 9.9.10
|
20
|
-
- Ubuntu Server
|
25
|
+
- Ubuntu Server 22.04
|
26
|
+
- Ubuntu Server 20.04
|
21
27
|
- Ubuntu Server 19.10
|
28
|
+
- Ubuntu Server 18.04
|
29
|
+
- ArchLinux 2022.08.05
|
22
30
|
- ArchLinux 2020.02.01
|
31
|
+
- openSUSE Leap 15.4
|
23
32
|
- openSUSE Leap 15.1
|
33
|
+
- Ubuntu Desktop 22.04
|
34
|
+
- Ubuntu Desktop 20.04
|
24
35
|
- Ubuntu Desktop 18.04
|
25
36
|
- Ubuntu Desktop 19.10
|
37
|
+
openbsd:
|
38
|
+
- OpenBSD 7.1
|
39
|
+
- OpenBSD 6
|
40
|
+
templeos:
|
41
|
+
- TempleOS 5.03
|
42
|
+
plan 9:
|
43
|
+
- Plan 9 Fourth Edition
|
26
44
|
macos:
|
27
45
|
- Catalina (10.15)
|
28
46
|
- Mojave (10.14)
|
29
47
|
- High Sierra (10.13)
|
30
48
|
windows:
|
49
|
+
- Windows 11
|
31
50
|
- Windows 10
|
32
51
|
- Windows 8.1
|
33
52
|
- Windows 7
|
data/lib/locales/en/file.yml
CHANGED
@@ -2,4 +2,12 @@ en:
|
|
2
2
|
faker:
|
3
3
|
file:
|
4
4
|
extension: ["flac", "mp3", "wav", "bmp", "gif", "jpeg", "jpg", "png", "tiff", "css", "csv", "html", "js", "json", "txt", "mp4", "avi", "mov", "webm", "doc", "docx", "xls", "xlsx", "ppt", "pptx", "odt", "ods", "odp", "pages", "numbers", "key", "pdf"]
|
5
|
-
mime_type:
|
5
|
+
mime_type:
|
6
|
+
application: ["application/atom+xml", "application/ecmascript", "application/EDI-X12", "application/EDIFACT", "application/json", "application/javascript", "application/ogg", "application/pdf", "application/postscript", "application/rdf+xml", "application/rss+xml", "application/soap+xml", "application/font-woff", "application/xhtml+xml", "application/xml-dtd", "application/xop+xml", "application/zip", "application/gzip"]
|
7
|
+
audio: ["audio/basic", "audio/L24", "audio/mp4", "audio/mpeg", "audio/ogg", "audio/vorbis", "audio/vnd.rn-realaudio", "audio/vnd.wave", "audio/webm"]
|
8
|
+
image: ["image/gif", "image/jpeg", "image/pjpeg", "image/png", "image/svg+xml", "image/tiff", "image/vnd.microsoft.icon"]
|
9
|
+
message: ["message/http", "message/imdn+xml", "message/partial", "message/rfc822"]
|
10
|
+
model: ["model/example", "model/iges", "model/mesh", "model/vrml", "model/x3d+binary", "model/x3d+vrml", "model/x3d+xml"]
|
11
|
+
multipart: ["multipart/mixed", "multipart/alternative", "multipart/related", "multipart/form-data", "multipart/signed", "multipart/encrypted"]
|
12
|
+
text: ["text/cmd", "text/css", "text/csv", "text/html", "text/javascript", "text/plain", "text/vcard", "text/xml"]
|
13
|
+
video: ["video/mpeg", "video/mp4", "video/ogg", "video/quicktime", "video/webm", "video/x-matroska", "video/x-ms-wmv", "video/x-flv"]
|