faker 2.19.0 → 3.2.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.
Files changed (185) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +346 -7
  3. data/History.md +1 -1
  4. data/README.md +198 -104
  5. data/lib/faker/blockchain/aeternity.rb +1 -1
  6. data/lib/faker/blockchain/ethereum.rb +1 -1
  7. data/lib/faker/blockchain/tezos.rb +1 -1
  8. data/lib/faker/books/dune.rb +2 -10
  9. data/lib/faker/books/lovecraft.rb +7 -38
  10. data/lib/faker/books/the_kingkiller_chronicle.rb +61 -0
  11. data/lib/faker/default/address.rb +5 -25
  12. data/lib/faker/default/alphanumeric.rb +2 -8
  13. data/lib/faker/default/app.rb +1 -10
  14. data/lib/faker/default/avatar.rb +1 -12
  15. data/lib/faker/default/bank.rb +9 -17
  16. data/lib/faker/default/boolean.rb +1 -4
  17. data/lib/faker/default/chile_rut.rb +8 -14
  18. data/lib/faker/default/code.rb +11 -24
  19. data/lib/faker/default/color.rb +77 -6
  20. data/lib/faker/default/commerce.rb +3 -17
  21. data/lib/faker/default/company.rb +23 -20
  22. data/lib/faker/default/crypto_coin.rb +3 -15
  23. data/lib/faker/default/date.rb +5 -38
  24. data/lib/faker/default/demographic.rb +1 -5
  25. data/lib/faker/default/driving_licence.rb +1 -11
  26. data/lib/faker/default/drone.rb +1 -1
  27. data/lib/faker/default/file.rb +5 -24
  28. data/lib/faker/default/finance.rb +17 -7
  29. data/lib/faker/default/food.rb +14 -1
  30. data/lib/faker/default/hipster.rb +6 -45
  31. data/lib/faker/default/id_number.rb +108 -11
  32. data/lib/faker/default/internet.rb +168 -129
  33. data/lib/faker/default/invoice.rb +4 -17
  34. data/lib/faker/default/json.rb +2 -20
  35. data/lib/faker/default/lorem.rb +20 -76
  36. data/lib/faker/default/lorem_flickr.rb +4 -32
  37. data/lib/faker/default/markdown.rb +6 -11
  38. data/lib/faker/default/marketing.rb +1 -1
  39. data/lib/faker/default/measurement.rb +16 -48
  40. data/lib/faker/default/name.rb +1 -5
  41. data/lib/faker/default/nation.rb +0 -3
  42. data/lib/faker/default/nhs.rb +2 -6
  43. data/lib/faker/default/number.rb +10 -55
  44. data/lib/faker/default/omniauth.rb +51 -41
  45. data/lib/faker/default/phone_number.rb +2 -6
  46. data/lib/faker/default/placeholdit.rb +1 -12
  47. data/lib/faker/default/relationship.rb +1 -5
  48. data/lib/faker/default/religion.rb +6 -0
  49. data/lib/faker/default/source.rb +3 -16
  50. data/lib/faker/default/string.rb +1 -8
  51. data/lib/faker/default/stripe.rb +4 -20
  52. data/lib/faker/default/time.rb +4 -34
  53. data/lib/faker/default/twitter.rb +7 -23
  54. data/lib/faker/default/types.rb +5 -27
  55. data/lib/faker/default/vehicle.rb +29 -51
  56. data/lib/faker/default/vulnerability_identifier.rb +23 -0
  57. data/lib/faker/default/world_cup.rb +2 -11
  58. data/lib/faker/games/clash_of_clans.rb +1 -1
  59. data/lib/faker/games/dnd.rb +49 -7
  60. data/lib/faker/games/dota.rb +1 -5
  61. data/lib/faker/games/minecraft.rb +1 -1
  62. data/lib/faker/games/myst.rb +1 -1
  63. data/lib/faker/games/tarkov.rb +205 -0
  64. data/lib/faker/japanese_media/cowboy_bebop.rb +61 -0
  65. data/lib/faker/japanese_media/fullmetal_alchemist_brotherhood.rb +48 -0
  66. data/lib/faker/japanese_media/kamen_rider.rb +102 -0
  67. data/lib/faker/japanese_media/one_piece.rb +1 -1
  68. data/lib/faker/movies/avatar.rb +49 -0
  69. data/lib/faker/movies/hackers.rb +48 -0
  70. data/lib/faker/movies/star_wars.rb +1 -5
  71. data/lib/faker/movies/tron.rb +161 -0
  72. data/lib/faker/quotes/quote.rb +13 -0
  73. data/lib/faker/religion/bible.rb +50 -0
  74. data/lib/faker/sports/chess.rb +90 -0
  75. data/lib/faker/sports/mountaineering.rb +22 -0
  76. data/lib/faker/sports/sport.rb +116 -0
  77. data/lib/faker/travel/airport.rb +43 -0
  78. data/lib/faker/tv_shows/brooklyn_nine_nine.rb +38 -0
  79. data/lib/faker/tv_shows/michael_scott.rb +0 -3
  80. data/lib/faker/tv_shows/spongebob.rb +50 -0
  81. data/lib/faker/version.rb +1 -1
  82. data/lib/faker.rb +15 -64
  83. data/lib/helpers/base58.rb +1 -1
  84. data/lib/helpers/unique_generator.rb +13 -11
  85. data/lib/locales/ar.yml +6 -1
  86. data/lib/locales/bg.yml +1 -1
  87. data/lib/locales/da-DK.yml +1 -1
  88. data/lib/locales/de-AT.yml +3 -4
  89. data/lib/locales/de-CH.yml +1 -1
  90. data/lib/locales/de.yml +1 -1
  91. data/lib/locales/en/address.yml +2 -3
  92. data/lib/locales/en/airport.yml +381 -0
  93. data/lib/locales/en/australia.yml +3 -4
  94. data/lib/locales/en/avatar.yml +31 -0
  95. data/lib/locales/en/bible.yml +90 -0
  96. data/lib/locales/en/brooklyn_nine_nine.yml +35 -0
  97. data/lib/locales/en/cat.yml +1 -1
  98. data/lib/locales/en/chess.yml +103 -0
  99. data/lib/locales/en/coffee.yml +1 -1
  100. data/lib/locales/en/company.yml +1 -0
  101. data/lib/locales/en/computer.yml +23 -4
  102. data/lib/locales/en/cowboy_bebop.yml +163 -0
  103. data/lib/locales/en/dnd.yml +186 -1
  104. data/lib/locales/en/dota.yml +113 -0
  105. data/lib/locales/en/file.yml +9 -1
  106. data/lib/locales/en/finance.yml +3 -1
  107. data/lib/locales/en/fma_brotherhood.yml +78 -0
  108. data/lib/locales/en/food.yml +12 -0
  109. data/lib/locales/en/game.yml +11 -0
  110. data/lib/locales/en/hackers.yml +53 -0
  111. data/lib/locales/en/heroes.yml +2 -2
  112. data/lib/locales/en/internet.yml +140 -3
  113. data/lib/locales/en/kamen_rider.yml +452 -0
  114. data/lib/locales/en/mitch_hedberg.yml +46 -0
  115. data/lib/locales/en/mountain.yml +14 -1
  116. data/lib/locales/en/mountaineering.yml +14 -0
  117. data/lib/locales/en/movie.yml +2 -1
  118. data/lib/locales/en/naruto.yml +2 -3
  119. data/lib/locales/en/one_piece.yml +1 -1
  120. data/lib/locales/en/opera.yml +1 -1
  121. data/lib/locales/en/overwatch.yml +5 -7
  122. data/lib/locales/en/source.yml +5 -0
  123. data/lib/locales/en/spongebob.yml +489 -0
  124. data/lib/locales/en/sport.yml +130 -0
  125. data/lib/locales/en/star_wars.yml +1 -1
  126. data/lib/locales/en/stranger_thing.yml +1 -1
  127. data/lib/locales/en/super_smash_bros.yml +2 -0
  128. data/lib/locales/en/tarkov.yml +593 -0
  129. data/lib/locales/en/the_kingkiller_chronicle.yml +56 -0
  130. data/lib/locales/en/tron.yml +227 -0
  131. data/lib/locales/en/vehicle.yml +2809 -75
  132. data/lib/locales/en-AU.yml +2 -2
  133. data/lib/locales/en-CA.yml +2 -1
  134. data/lib/locales/en-GB.yml +2 -1
  135. data/lib/locales/en-MS.yml +1 -0
  136. data/lib/locales/en-NG.yml +1 -0
  137. data/lib/locales/en-NZ.yml +1 -0
  138. data/lib/locales/en-PAK.yml +1 -0
  139. data/lib/locales/en-SG.yml +1 -0
  140. data/lib/locales/en-UG.yml +1 -0
  141. data/lib/locales/en-US.yml +2 -2
  142. data/lib/locales/en-ZA.yml +1 -1
  143. data/lib/locales/en-au-ocker.yml +2 -0
  144. data/lib/locales/es-AR.yml +3 -2
  145. data/lib/locales/es-MX.yml +1 -1
  146. data/lib/locales/es.yml +2 -2
  147. data/lib/locales/fi-FI.yml +3 -1
  148. data/lib/locales/fr/address.yml +0 -1
  149. data/lib/locales/fr/adjective.yml +266 -0
  150. data/lib/locales/fr/ancient.yml +141 -0
  151. data/lib/locales/fr-CA.yml +1 -1
  152. data/lib/locales/fr-CH.yml +1 -1
  153. data/lib/locales/hy.yml +2 -1
  154. data/lib/locales/it.yml +1 -0
  155. data/lib/locales/ja/address.yml +258 -4169
  156. data/lib/locales/ja/adjective.yml +148 -0
  157. data/lib/locales/ja/dog.yml +1 -0
  158. data/lib/locales/ja/emotion.yml +51 -0
  159. data/lib/locales/ja/lorem.yml +2 -2
  160. data/lib/locales/ja/naruto.yml +230 -0
  161. data/lib/locales/ja/relationship.yml +10 -0
  162. data/lib/locales/ja/super_mario.yml +1 -1
  163. data/lib/locales/ja/super_smash_bros.yml +8 -0
  164. data/lib/locales/ko.yml +1 -0
  165. data/lib/locales/lt.yml +34 -0
  166. data/lib/locales/lv.yml +1 -1
  167. data/lib/locales/mi-NZ.yml +283 -0
  168. data/lib/locales/nb-NO.yml +1 -0
  169. data/lib/locales/nl.yml +1 -0
  170. data/lib/locales/pl.yml +2 -2
  171. data/lib/locales/pt-BR.yml +5 -0
  172. data/lib/locales/pt.yml +1 -1
  173. data/lib/locales/ru.yml +1 -0
  174. data/lib/locales/sk.yml +1 -0
  175. data/lib/locales/sv.yml +1 -0
  176. data/lib/locales/th.yml +76 -76
  177. data/lib/locales/tr.yml +1 -0
  178. data/lib/locales/uk.yml +1 -0
  179. data/lib/locales/vi.yml +1 -0
  180. data/lib/locales/zh-CN.yml +1 -0
  181. data/lib/locales/zh-TW.yml +1 -0
  182. metadata +96 -33
  183. data/lib/faker/default/fillmurray.rb +0 -45
  184. data/lib/faker/default/lorem_pixel.rb +0 -70
  185. /data/lib/faker/default/{faker_adjective.rb → adjective.rb} +0 -0
@@ -16,11 +16,7 @@ module Faker
16
16
  # Faker::Types.rb_string #=> "foobar"
17
17
  #
18
18
  # @faker.version 1.8.6
19
- def rb_string(legacy_words = NOT_GIVEN, words: 1)
20
- warn_for_deprecated_arguments do |keywords|
21
- keywords << :words if legacy_words != NOT_GIVEN
22
- end
23
-
19
+ def rb_string(words: 1)
24
20
  resolved_num = resolve(words)
25
21
  word_list =
26
22
  translate('faker.lorem.words')
@@ -51,12 +47,7 @@ module Faker
51
47
  # Faker::Types.rb_integer #=> 1
52
48
  #
53
49
  # @faker.version 1.8.6
54
- def rb_integer(legacy_from = NOT_GIVEN, legacy_to = NOT_GIVEN, from: 0, to: 100)
55
- warn_for_deprecated_arguments do |keywords|
56
- keywords << :from if legacy_from != NOT_GIVEN
57
- keywords << :to if legacy_to != NOT_GIVEN
58
- end
59
-
50
+ def rb_integer(from: 0, to: 100)
60
51
  rand(from..to).to_i
61
52
  end
62
53
 
@@ -72,12 +63,7 @@ module Faker
72
63
  # Faker::Types.rb_hash(number: 2) #=> {name: "bob", last: "marley"}
73
64
  #
74
65
  # @faker.version 1.8.6
75
- def rb_hash(legacy_number = NOT_GIVEN, legacy_type = NOT_GIVEN, number: 1, type: -> { random_type })
76
- warn_for_deprecated_arguments do |keywords|
77
- keywords << :number if legacy_number != NOT_GIVEN
78
- keywords << :type if legacy_type != NOT_GIVEN
79
- end
80
-
66
+ def rb_hash(number: 1, type: -> { random_type })
81
67
  {}.tap do |hsh|
82
68
  Lorem.words(number: number * 2).uniq.first(number).each do |s|
83
69
  value = type.is_a?(Proc) ? type.call : type
@@ -98,11 +84,7 @@ module Faker
98
84
  # Faker::Types.complex_rb_hash(number: 2) #=> {user: {first: "bob", last: "marley"}, son: ["damien", "marley"]}
99
85
  #
100
86
  # @faker.version 1.8.6
101
- def complex_rb_hash(legacy_number = NOT_GIVEN, number: 1)
102
- warn_for_deprecated_arguments do |keywords|
103
- keywords << :number if legacy_number != NOT_GIVEN
104
- end
105
-
87
+ def complex_rb_hash(number: 1)
106
88
  rb_hash(number: number, type: -> { random_complex_type })
107
89
  end
108
90
 
@@ -117,11 +99,7 @@ module Faker
117
99
  # Faker::Types.rb_array(len: 4) #=> ["a", 1, 2, "bob"]
118
100
  #
119
101
  # @faker.version 1.8.6
120
- def rb_array(legacy_len = NOT_GIVEN, len: 1)
121
- warn_for_deprecated_arguments do |keywords|
122
- keywords << :len if legacy_len != NOT_GIVEN
123
- end
124
-
102
+ def rb_array(len: 1)
125
103
  [].tap do |ar|
126
104
  len.times do
127
105
  ar.push random_type
@@ -6,10 +6,9 @@ module Faker
6
6
 
7
7
  MILEAGE_MIN = 10_000
8
8
  MILEAGE_MAX = 90_000
9
- VIN_LETTERS = 'ABCDEFGHJKLMNPRSTUVWXYZ'
10
- VIN_MAP = '0123456789X'
11
- VIN_WEIGHTS = '8765432X098765432'
12
- VIN_REGEX = /^[A-Z0-9]{3}[A-Z0-9]{5}[A-Z0-9]{1}[A-Z0-9]{1}[A-Z0-0]{1}[A-Z0-9]{1}\d{5}$/.freeze
9
+ VIN_KEYSPACE = %w[A B C D E F G H J K L M N P R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9].freeze
10
+ VIN_TRANSLITERATION = { A: 1, B: 2, C: 3, D: 4, E: 5, F: 6, G: 7, H: 8, J: 1, K: 2, L: 3, M: 4, N: 5, P: 7, R: 9, S: 2, T: 3, U: 4, V: 5, W: 6, X: 7, Y: 8, Z: 9 }.freeze
11
+ VIN_WEIGHT = [8, 7, 6, 5, 4, 3, 2, 10, 0, 9, 8, 7, 6, 5, 4, 3, 2].freeze
13
12
  SG_CHECKSUM_WEIGHTS = [3, 14, 2, 12, 2, 11, 1].freeze
14
13
  SG_CHECKSUM_CHARS = 'AYUSPLJGDBZXTRMKHEC'
15
14
 
@@ -23,7 +22,14 @@ module Faker
23
22
  #
24
23
  # @faker.version 1.6.4
25
24
  def vin
26
- regexify(VIN_REGEX)
25
+ front = 8.times.map { VIN_KEYSPACE.sample(random: Faker::Config.random) }.join
26
+ back = 8.times.map { VIN_KEYSPACE.sample(random: Faker::Config.random) }.join
27
+ checksum = "#{front}A#{back}".chars.each_with_index.map do |char, i|
28
+ value = (char =~ /\A\d\z/ ? char.to_i : VIN_TRANSLITERATION[char.to_sym])
29
+ value * VIN_WEIGHT[i]
30
+ end.inject(:+) % 11
31
+ checksum = 'X' if checksum == 10
32
+ "#{front}#{checksum}#{back}"
27
33
  end
28
34
 
29
35
  # Produces a random vehicle manufacturer.
@@ -62,11 +68,7 @@ module Faker
62
68
  # Faker::Vehicle.model(make_of_model: 'Toyota') #=> "Prius"
63
69
  #
64
70
  # @faker.version 1.6.4
65
- def model(legacy_make_of_model = NOT_GIVEN, make_of_model: '')
66
- warn_for_deprecated_arguments do |keywords|
67
- keywords << :make_of_model if legacy_make_of_model != NOT_GIVEN
68
- end
69
-
71
+ def model(make_of_model: '')
70
72
  return fetch("vehicle.models_by_make.#{make}") if make_of_model.empty?
71
73
 
72
74
  fetch("vehicle.models_by_make.#{make_of_model}")
@@ -249,12 +251,7 @@ module Faker
249
251
  # Faker::Vehicle.kilometrage #=> 35378
250
252
  #
251
253
  # @faker.version 1.6.4
252
- def mileage(legacy_min = NOT_GIVEN, legacy_max = NOT_GIVEN, min: MILEAGE_MIN, max: MILEAGE_MAX)
253
- warn_for_deprecated_arguments do |keywords|
254
- keywords << :min if legacy_min != NOT_GIVEN
255
- keywords << :max if legacy_max != NOT_GIVEN
256
- end
257
-
254
+ def mileage(min: MILEAGE_MIN, max: MILEAGE_MAX)
258
255
  rand_in_range(min, max)
259
256
  end
260
257
 
@@ -271,11 +268,7 @@ module Faker
271
268
  # Faker::Vehicle.license_plate(state_abbreviation: 'FL') #=> "977 UNU"
272
269
  #
273
270
  # @faker.version 1.6.4
274
- def license_plate(legacy_state_abreviation = NOT_GIVEN, state_abbreviation: '')
275
- warn_for_deprecated_arguments do |keywords|
276
- keywords << :state_abbreviation if legacy_state_abreviation != NOT_GIVEN
277
- end
278
-
271
+ def license_plate(state_abbreviation: '')
279
272
  return regexify(bothify(fetch('vehicle.license_plate'))) if state_abbreviation.empty?
280
273
 
281
274
  key = "vehicle.license_plate_by_state.#{state_abbreviation}"
@@ -297,45 +290,30 @@ module Faker
297
290
  "#{plate_number}#{singapore_checksum(plate_number)}"
298
291
  end
299
292
 
300
- private
301
-
302
- def first_eight(number)
303
- return number[0...8] unless number.nil?
304
-
305
- regexify(VIN_REGEX)
306
- end
307
- alias last_eight first_eight
308
-
309
- def calculate_vin_check_digit(vin)
310
- sum = 0
311
-
312
- vin.each_char.with_index do |c, i|
313
- n = vin_char_to_number(c).to_i
314
- weight = VIN_WEIGHTS[i].to_i
315
- sum += weight * n
316
- end
317
-
318
- mod = sum % 11
319
- mod == 10 ? 'X' : mod
293
+ ##
294
+ # Produces a car version
295
+ #
296
+ # @return [String]
297
+ #
298
+ # @example
299
+ # Faker::Vehicle.version #=> "40 TFSI Premium"
300
+ #
301
+ # @faker.version next
302
+ def version
303
+ fetch('vehicle.version')
320
304
  end
321
305
 
322
- def vin_char_to_number(char)
323
- index = VIN_LETTERS.split('').index(char)
324
-
325
- return char.to_i if index.nil?
326
-
327
- VIN_MAP[index]
328
- end
306
+ private
329
307
 
330
308
  def singapore_checksum(plate_number)
331
- padded_alphabets = format('%3s', plate_number[/^[A-Z]+/]).tr(' ', '-').split('')
332
- padded_digits = format('%04d', plate_number[/\d+/]).split('').map(&:to_i)
309
+ padded_alphabets = format('%3s', plate_number[/^[A-Z]+/]).tr(' ', '-').chars
310
+ padded_digits = format('%04d', plate_number[/\d+/]).chars.map(&:to_i)
333
311
  sum = [*padded_alphabets, *padded_digits].each_with_index.reduce(0) do |memo, (char, i)|
334
312
  value = char.is_a?(Integer) ? char : char.ord - 64
335
313
  memo + (SG_CHECKSUM_WEIGHTS[i] * value)
336
314
  end
337
315
 
338
- SG_CHECKSUM_CHARS.split('')[sum % 19]
316
+ SG_CHECKSUM_CHARS.chars[sum % 19]
339
317
  end
340
318
  end
341
319
  end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class VulnerabilityIdentifier < Base
5
+ class << self
6
+ ##
7
+ # Produces a Common Vulnerabilities and Exposures (CVE) identifier.
8
+ #
9
+ # @param year [Integer] The year-part of the CVE identifier (defaults to the current year)
10
+ # @return [String]
11
+ #
12
+ # @example
13
+ # Faker::VulnerabilityIdentifier.cve #=> "CVE-2021-1337"
14
+ # Faker::VulnerabilityIdentifier.cve(year: 1999) #=> "CVE-1999-0523"
15
+ #
16
+ # @faker.version next
17
+ def cve(year: ::Date.today.year)
18
+ index = rand_in_range(1, 99_999).to_s.rjust(4, '0')
19
+ "CVE-#{year}-#{index}"
20
+ end
21
+ end
22
+ end
23
+ end
@@ -53,11 +53,7 @@ module Faker
53
53
  # Faker::WorldCup.group #=> "Russia"
54
54
  #
55
55
  # @faker.version 2.13.0
56
- def group(legacy_group = NOT_GIVEN, group: 'group_A')
57
- warn_for_deprecated_arguments do |keywords|
58
- keywords << :group if legacy_group != NOT_GIVEN
59
- end
60
-
56
+ def group(group: 'group_A')
61
57
  fetch("world_cup.groups.#{group}")
62
58
  end
63
59
 
@@ -73,12 +69,7 @@ module Faker
73
69
  # Faker::WorldCup.roster(country: 'Spain', type: 'forwards') #=> "Diego Costa"
74
70
  #
75
71
  # @faker.version 2.13.0
76
- def roster(legacy_country = NOT_GIVEN, legacy_type = NOT_GIVEN, country: 'Egypt', type: 'coach')
77
- warn_for_deprecated_arguments do |keywords|
78
- keywords << :country if legacy_country != NOT_GIVEN
79
- keywords << :type if legacy_type != NOT_GIVEN
80
- end
81
-
72
+ def roster(country: 'Egypt', type: 'coach')
82
73
  fetch("world_cup.rosters.#{country}.#{type}")
83
74
  end
84
75
  end
@@ -31,7 +31,7 @@ module Faker
31
31
  end
32
32
 
33
33
  ##
34
- # Produces the name of a defensive buiding from Clash Of Clans.
34
+ # Produces the name of a defensive building from Clash Of Clans.
35
35
  #
36
36
  # @return [String]
37
37
  #
@@ -43,6 +43,19 @@ module Faker
43
43
  fetch('dnd.cities')
44
44
  end
45
45
 
46
+ ##
47
+ # Produces the first name of a character or monster from Dungeons and Dragons.
48
+ #
49
+ # @return [String]
50
+ #
51
+ # @example
52
+ # Faker::Games::DnD.name #=> "Eilonwy"
53
+ #
54
+ # @faker.version next
55
+ def first_name
56
+ fetch('dnd.name.first_name')
57
+ end
58
+
46
59
  ##
47
60
  # Produces the name of a class from Dungeons and Dragons (PHB).
48
61
  #
@@ -69,6 +82,19 @@ module Faker
69
82
  fetch('dnd.languages')
70
83
  end
71
84
 
85
+ ##
86
+ # Produces a last name from Dungeons and Dragons.
87
+ #
88
+ # @return [String]
89
+ #
90
+ # @example
91
+ # Faker::Games::DnD.last_name #=> "Leafwhisper"
92
+ #
93
+ # @faker.version next
94
+ def last_name
95
+ fetch('dnd.name.last_name')
96
+ end
97
+
72
98
  ##
73
99
  # Produces the name of a melee weapon from Dungeons and Dragons.
74
100
  #
@@ -95,6 +121,19 @@ module Faker
95
121
  fetch('dnd.monsters')
96
122
  end
97
123
 
124
+ ##
125
+ # Produces a full name from Dungeons and Dragons.
126
+ #
127
+ # @return [String]
128
+ #
129
+ # @example
130
+ # Faker::Games::DnD.name #=> "Drakon Blackthorn"
131
+ #
132
+ # @faker.version next
133
+ def name
134
+ "#{fetch('dnd.name.first_name')} #{fetch('dnd.name.last_name')}"
135
+ end
136
+
98
137
  ##
99
138
  # Produces the name of a race from Dungeons and Dragons (PHB).
100
139
  #
@@ -121,14 +160,17 @@ module Faker
121
160
  fetch('dnd.ranged_weapons')
122
161
  end
123
162
 
124
- # This method is deprecated. The implementation will be removed in a near future release.
125
- # Use `DnD.race` instead.
163
+ ##
164
+ # Produces a last name from Dungeons and Dragons.
126
165
  #
127
- # @deprecated Use {#race} instead.
128
- def species
129
- warn '`DnD.species` is deprecated. Use `DnD.race` instead.'
130
-
131
- super
166
+ # @return [String]
167
+ #
168
+ # @example
169
+ # Faker::Games::DnD.title_name #=> "Corvus the Cunning"
170
+ #
171
+ # @faker.version next
172
+ def title_name
173
+ "#{fetch('dnd.name.first_name')} #{fetch('dnd.name.title')}"
132
174
  end
133
175
  end
134
176
  end
@@ -80,11 +80,7 @@ module Faker
80
80
  # Faker::Games::Dota.quote(hero: 'alchemist') #=> "Better living through alchemy!"
81
81
  #
82
82
  # @faker.version 1.9.0
83
- def quote(legacy_hero = NOT_GIVEN, hero: 'abaddon')
84
- warn_for_deprecated_arguments do |keywords|
85
- keywords << :hero if legacy_hero != NOT_GIVEN
86
- end
87
-
83
+ def quote(hero: 'abaddon')
88
84
  fetch("games.dota.#{hero}.quote")
89
85
  end
90
86
  end
@@ -88,7 +88,7 @@ module Faker
88
88
  # @return [String]
89
89
  #
90
90
  # @example
91
- # Faker::Games::Minecraft.item #=> "Sheep"
91
+ # Faker::Games::Minecraft.mob #=> "Sheep"
92
92
  #
93
93
  # @faker.version 2.13.0
94
94
  def mob
@@ -44,7 +44,7 @@ module Faker
44
44
  end
45
45
 
46
46
  ##
47
- # Produces the name of a chracter from Myst.
47
+ # Produces the name of a character from Myst.
48
48
  #
49
49
  # @return [String]
50
50
  #
@@ -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
@@ -0,0 +1,61 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class JapaneseMedia
5
+ class CowboyBebop < Base
6
+ class << self
7
+ ##
8
+ # Produces a character from Cowboy Bebop.
9
+ #
10
+ # @return [String]
11
+ #
12
+ # @example
13
+ # Faker::JapaneseMedia::CowboyBebop.character #=> "Spike Spiegel"
14
+ #
15
+ # @faker.version next
16
+ def character
17
+ fetch('cowboy_bebop.character')
18
+ end
19
+
20
+ ##
21
+ # Produces an episode from Cowboy Bebop.
22
+ #
23
+ # @return [String]
24
+ #
25
+ # @example
26
+ # Faker::JapaneseMedia::CowboyBebop.episode #=> "Honky Tonk Women"
27
+ #
28
+ # @faker.version next
29
+ def episode
30
+ fetch('cowboy_bebop.episode')
31
+ end
32
+
33
+ ##
34
+ # Produces a song title from Cowboy Bebop.
35
+ #
36
+ # @return [String]
37
+ #
38
+ # @example
39
+ # Faker::JapaneseMedia::CowboyBebop.songs #=> "Live in Baghdad"
40
+ #
41
+ # @faker.version next
42
+ def song
43
+ fetch('cowboy_bebop.song')
44
+ end
45
+
46
+ ##
47
+ # Produces a quote from Cowboy Bebop.
48
+ #
49
+ # @return [String]
50
+ #
51
+ # @example
52
+ # Faker::JapaneseMedia::CowboyBebop.quote #=> "Bang!!!"
53
+ #
54
+ # @faker.version next
55
+ def quote
56
+ fetch('cowboy_bebop.quote')
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class JapaneseMedia
5
+ class FmaBrotherhood < Base
6
+ class << self
7
+ ##
8
+ # Produces a character from FmaBrotherhood.
9
+ #
10
+ # @return [String]
11
+ #
12
+ # @example
13
+ # Faker::JapaneseMedia::FmaBrotherhood.character #=> "Edward Elric"
14
+ #
15
+ # @faker.version next
16
+ def character
17
+ fetch('fma_brotherhood.characters')
18
+ end
19
+
20
+ ##
21
+ # Produces a cities from FmaBrotherhood.
22
+ #
23
+ # @return [String]
24
+ #
25
+ # @example
26
+ # Faker::JapaneseMedia::FmaBrotherhood.city #=> "Central City"
27
+ #
28
+ # @faker.version next
29
+ def city
30
+ fetch('fma_brotherhood.cities')
31
+ end
32
+
33
+ ##
34
+ # Produces a country from FmaBrotherhood.
35
+ #
36
+ # @return [String]
37
+ #
38
+ # @example
39
+ # Faker::JapaneseMedia::FmaBrotherhood.country #=> "Xing"
40
+ #
41
+ # @faker.version next
42
+ def country
43
+ fetch('fma_brotherhood.countries')
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end