faker 2.15.1 → 3.4.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (305) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +848 -34
  3. data/README.md +225 -103
  4. data/lib/faker/blockchain/aeternity.rb +1 -1
  5. data/lib/faker/blockchain/bitcoin.rb +2 -2
  6. data/lib/faker/blockchain/ethereum.rb +1 -1
  7. data/lib/faker/blockchain/tezos.rb +31 -3
  8. data/lib/faker/books/dune.rb +2 -10
  9. data/lib/faker/books/lovecraft.rb +9 -41
  10. data/lib/faker/books/the_kingkiller_chronicle.rb +61 -0
  11. data/lib/faker/creature/bird.rb +203 -0
  12. data/lib/faker/default/address.rb +7 -27
  13. data/lib/faker/default/alphanumeric.rb +2 -8
  14. data/lib/faker/default/app.rb +1 -10
  15. data/lib/faker/default/avatar.rb +1 -12
  16. data/lib/faker/default/bank.rb +25 -17
  17. data/lib/faker/default/barcode.rb +33 -22
  18. data/lib/faker/default/boolean.rb +1 -4
  19. data/lib/faker/default/cannabis.rb +10 -0
  20. data/lib/faker/default/chile_rut.rb +25 -25
  21. data/lib/faker/default/chuck_norris.rb +1 -0
  22. data/lib/faker/default/code.rb +71 -42
  23. data/lib/faker/default/color.rb +77 -6
  24. data/lib/faker/default/commerce.rb +31 -17
  25. data/lib/faker/default/company.rb +137 -22
  26. data/lib/faker/default/crypto.rb +26 -4
  27. data/lib/faker/default/crypto_coin.rb +3 -15
  28. data/lib/faker/default/date.rb +65 -42
  29. data/lib/faker/default/demographic.rb +1 -5
  30. data/lib/faker/default/driving_licence.rb +20 -18
  31. data/lib/faker/default/drone.rb +1 -1
  32. data/lib/faker/default/educator.rb +13 -0
  33. data/lib/faker/default/emotion.rb +33 -0
  34. data/lib/faker/default/file.rb +5 -22
  35. data/lib/faker/default/finance.rb +30 -7
  36. data/lib/faker/default/food.rb +27 -1
  37. data/lib/faker/default/hipster.rb +8 -48
  38. data/lib/faker/default/hobby.rb +22 -0
  39. data/lib/faker/default/html.rb +230 -0
  40. data/lib/faker/default/id_number.rb +175 -27
  41. data/lib/faker/default/internet.rb +333 -114
  42. data/lib/faker/default/invoice.rb +4 -17
  43. data/lib/faker/default/json.rb +4 -21
  44. data/lib/faker/default/lorem.rb +175 -73
  45. data/lib/faker/default/lorem_flickr.rb +4 -37
  46. data/lib/faker/default/markdown.rb +10 -13
  47. data/lib/faker/default/marketing.rb +1 -1
  48. data/lib/faker/default/measurement.rb +16 -48
  49. data/lib/faker/default/name.rb +1 -5
  50. data/lib/faker/default/nation.rb +0 -3
  51. data/lib/faker/default/{nhs.rb → national_health_service.rb} +9 -8
  52. data/lib/faker/default/number.rb +33 -61
  53. data/lib/faker/default/omniauth.rb +55 -52
  54. data/lib/faker/default/phone_number.rb +36 -21
  55. data/lib/faker/default/placeholdit.rb +10 -20
  56. data/lib/faker/default/relationship.rb +1 -5
  57. data/lib/faker/default/religion.rb +6 -0
  58. data/lib/faker/default/science.rb +108 -0
  59. data/lib/faker/default/source.rb +3 -16
  60. data/lib/faker/default/south_africa.rb +3 -3
  61. data/lib/faker/default/string.rb +1 -7
  62. data/lib/faker/default/stripe.rb +4 -20
  63. data/lib/faker/default/tea.rb +41 -0
  64. data/lib/faker/{music/show.rb → default/theater.rb} +11 -8
  65. data/lib/faker/default/time.rb +4 -34
  66. data/lib/faker/default/twitter.rb +7 -23
  67. data/lib/faker/default/types.rb +12 -34
  68. data/lib/faker/default/vehicle.rb +44 -54
  69. data/lib/faker/default/vulnerability_identifier.rb +23 -0
  70. data/lib/faker/default/world_cup.rb +2 -11
  71. data/lib/faker/games/clash_of_clans.rb +1 -1
  72. data/lib/faker/games/dnd.rb +49 -7
  73. data/lib/faker/games/dota.rb +14 -5
  74. data/lib/faker/games/final_fantasy_xiv.rb +73 -0
  75. data/lib/faker/games/minecraft.rb +1 -1
  76. data/lib/faker/games/myst.rb +1 -1
  77. data/lib/faker/games/tarkov.rb +205 -0
  78. data/lib/faker/games/touhou.rb +75 -0
  79. data/lib/faker/games/witcher.rb +39 -0
  80. data/lib/faker/japanese_media/cowboy_bebop.rb +61 -0
  81. data/lib/faker/japanese_media/fullmetal_alchemist_brotherhood.rb +51 -0
  82. data/lib/faker/japanese_media/kamen_rider.rb +102 -0
  83. data/lib/faker/japanese_media/one_piece.rb +1 -1
  84. data/lib/faker/locations/australia.rb +52 -0
  85. data/lib/faker/movies/avatar.rb +49 -0
  86. data/lib/faker/movies/hackers.rb +48 -0
  87. data/lib/faker/movies/star_wars.rb +73 -5
  88. data/lib/faker/movies/{room.rb → the_room.rb} +4 -4
  89. data/lib/faker/movies/tron.rb +161 -0
  90. data/lib/faker/music/hiphop.rb +3 -3
  91. data/lib/faker/music/music.rb +12 -0
  92. data/lib/faker/music/rock_band.rb +12 -0
  93. data/lib/faker/music/smashing_pumpkins.rb +64 -0
  94. data/lib/faker/quotes/quote.rb +13 -0
  95. data/lib/faker/quotes/rajnikanth.rb +1 -0
  96. data/lib/faker/quotes/shakespeare.rb +34 -0
  97. data/lib/faker/religion/bible.rb +50 -0
  98. data/lib/faker/sports/chess.rb +90 -0
  99. data/lib/faker/sports/mountaineering.rb +22 -0
  100. data/lib/faker/sports/sport.rb +116 -0
  101. data/lib/faker/travel/airport.rb +43 -0
  102. data/lib/faker/travel/train_station.rb +54 -0
  103. data/lib/faker/tv_shows/archer.rb +51 -0
  104. data/lib/faker/tv_shows/big_bang_theory.rb +1 -1
  105. data/lib/faker/tv_shows/brooklyn_nine_nine.rb +38 -0
  106. data/lib/faker/tv_shows/michael_scott.rb +0 -3
  107. data/lib/faker/tv_shows/south_park.rb +15 -0
  108. data/lib/faker/tv_shows/spongebob.rb +50 -0
  109. data/lib/faker/tv_shows/suits.rb +1 -1
  110. data/lib/faker/tv_shows/supernatural.rb +48 -0
  111. data/lib/faker/tv_shows/the_office.rb +37 -0
  112. data/lib/faker/version.rb +2 -2
  113. data/lib/faker.rb +26 -67
  114. data/lib/helpers/base58.rb +1 -1
  115. data/lib/helpers/deprecator.rb +53 -0
  116. data/lib/helpers/positional_generator.rb +480 -0
  117. data/lib/helpers/unique_generator.rb +13 -14
  118. data/lib/locales/README.md +18 -2
  119. data/lib/locales/ar.yml +6 -1
  120. data/lib/locales/bg.yml +1 -2
  121. data/lib/locales/da-DK.yml +529 -35
  122. data/lib/locales/de-AT.yml +3487 -27
  123. data/lib/locales/de-CH.yml +4328 -12
  124. data/lib/locales/de.yml +7185 -99
  125. data/lib/locales/ee.yml +0 -1
  126. data/lib/locales/en/address.yml +1826 -562
  127. data/lib/locales/en/airport.yml +381 -0
  128. data/lib/locales/en/animal.yml +1 -1
  129. data/lib/locales/en/archer.yml +75 -0
  130. data/lib/locales/en/australia.yml +108 -0
  131. data/lib/locales/en/avatar.yml +31 -0
  132. data/lib/locales/en/bank.yml +1 -1
  133. data/lib/locales/en/bible.yml +90 -0
  134. data/lib/locales/en/bird.yml +1281 -0
  135. data/lib/locales/en/book.yml +487 -3
  136. data/lib/locales/en/brooklyn_nine_nine.yml +35 -0
  137. data/lib/locales/en/cat.yml +1 -1
  138. data/lib/locales/en/chess.yml +103 -0
  139. data/lib/locales/en/coffee.yml +1 -1
  140. data/lib/locales/en/commerce.yml +17 -0
  141. data/lib/locales/en/community.yml +17 -17
  142. data/lib/locales/en/company.yml +1 -0
  143. data/lib/locales/en/computer.yml +23 -4
  144. data/lib/locales/en/cowboy_bebop.yml +163 -0
  145. data/lib/locales/en/device.yml +112 -4
  146. data/lib/locales/en/dnd.yml +186 -1
  147. data/lib/locales/en/dog.yml +262 -7
  148. data/lib/locales/en/dota.yml +173 -0
  149. data/lib/locales/en/dune.yml +266 -397
  150. data/lib/locales/en/educator.yml +6 -0
  151. data/lib/locales/en/emotion.yml +480 -0
  152. data/lib/locales/en/file.yml +9 -1
  153. data/lib/locales/en/final_fantasy_xiv.yml +754 -0
  154. data/lib/locales/en/finance.yml +27 -4
  155. data/lib/locales/en/food.yml +1067 -10
  156. data/lib/locales/en/football.yml +3 -3
  157. data/lib/locales/en/fullmetal_alchemist_brotherhood.yml +78 -0
  158. data/lib/locales/en/game.yml +11 -0
  159. data/lib/locales/en/hackers.yml +53 -0
  160. data/lib/locales/en/harry_potter.yml +1 -1
  161. data/lib/locales/en/heroes.yml +2 -2
  162. data/lib/locales/en/hobby.yml +171 -0
  163. data/lib/locales/en/horse.yml +2 -2
  164. data/lib/locales/en/id_number.yml +1 -1
  165. data/lib/locales/en/internet.yml +136 -3
  166. data/lib/locales/en/kamen_rider.yml +452 -0
  167. data/lib/locales/en/kpop.yml +7 -7
  168. data/lib/locales/en/lebowski.yml +1 -1
  169. data/lib/locales/en/lovecraft.yml +76 -6
  170. data/lib/locales/en/minecraft.yml +4 -4
  171. data/lib/locales/en/mitch_hedberg.yml +46 -0
  172. data/lib/locales/en/mountain.yml +14 -1
  173. data/lib/locales/en/mountaineering.yml +14 -0
  174. data/lib/locales/en/movie.yml +2 -1
  175. data/lib/locales/en/music.yml +152 -142
  176. data/lib/locales/en/naruto.yml +2 -3
  177. data/lib/locales/en/one_piece.yml +1 -1
  178. data/lib/locales/en/opera.yml +2 -2
  179. data/lib/locales/en/overwatch.yml +5 -7
  180. data/lib/locales/en/phone_number.yml +78 -3
  181. data/lib/locales/en/rock_band.yml +1 -0
  182. data/lib/locales/en/science.yml +481 -3
  183. data/lib/locales/en/shakespeare.yml +21 -24
  184. data/lib/locales/en/smashing_pumpkins.yml +382 -0
  185. data/lib/locales/en/source.yml +5 -0
  186. data/lib/locales/en/south_park.yml +360 -2
  187. data/lib/locales/en/space.yml +1 -1
  188. data/lib/locales/en/spongebob.yml +489 -0
  189. data/lib/locales/en/sport.yml +130 -0
  190. data/lib/locales/en/star_wars.yml +1 -1
  191. data/lib/locales/en/stranger_thing.yml +1 -1
  192. data/lib/locales/en/super_smash_bros.yml +7 -2
  193. data/lib/locales/en/supernatural.yml +141 -0
  194. data/lib/locales/en/tarkov.yml +593 -0
  195. data/lib/locales/en/tea.yml +172 -0
  196. data/lib/locales/en/the_kingkiller_chronicle.yml +56 -0
  197. data/lib/locales/en/the_office.yml +86 -0
  198. data/lib/locales/en/{room.yml → the_room.yml} +1 -1
  199. data/lib/locales/en/{show.yml → theater.yml} +1 -1
  200. data/lib/locales/en/touhou.yml +839 -0
  201. data/lib/locales/en/train_station.yml +280 -0
  202. data/lib/locales/en/tron.yml +227 -0
  203. data/lib/locales/en/vehicle.yml +2809 -75
  204. data/lib/locales/en/witcher.yml +37 -0
  205. data/lib/locales/en-AU.yml +718 -47
  206. data/lib/locales/en-CA.yml +373 -18
  207. data/lib/locales/en-GB.yml +116 -8
  208. data/lib/locales/en-IND.yml +1259 -17
  209. data/lib/locales/en-KE.yml +212 -0
  210. data/lib/locales/en-MS.yml +364 -17
  211. data/lib/locales/en-NEP.yml +212 -38
  212. data/lib/locales/en-NG.yml +1 -0
  213. data/lib/locales/en-NZ.yml +1153 -123
  214. data/lib/locales/en-PAK.yml +369 -10
  215. data/lib/locales/en-SG.yml +581 -16
  216. data/lib/locales/en-UG.yml +1 -0
  217. data/lib/locales/en-US.yml +6914 -74
  218. data/lib/locales/en-ZA.yml +1 -1
  219. data/lib/locales/en-au-ocker.yml +266 -22
  220. data/lib/locales/es-AR.yml +4570 -0
  221. data/lib/locales/es-MX.yml +1 -2
  222. data/lib/locales/es.yml +2 -3
  223. data/lib/locales/fi-FI.yml +3 -1
  224. data/lib/locales/fr/address.yml +20 -0
  225. data/lib/locales/fr/adjective.yml +266 -0
  226. data/lib/locales/fr/ancient.yml +141 -0
  227. data/lib/locales/fr/animal.yml +5 -0
  228. data/lib/locales/fr/appliance.yml +4 -0
  229. data/lib/locales/fr/book.yml +7 -0
  230. data/lib/locales/fr/color.yml +4 -0
  231. data/lib/locales/fr/company.yml +17 -0
  232. data/lib/locales/fr/compass.yml +23 -0
  233. data/lib/locales/fr/demographic.yml +4 -0
  234. data/lib/locales/fr/gender.yml +6 -0
  235. data/lib/locales/fr/internet.yml +4 -0
  236. data/lib/locales/fr/lorem.yml +5 -0
  237. data/lib/locales/fr/measurement.yml +7 -0
  238. data/lib/locales/fr/name.yml +22 -0
  239. data/lib/locales/fr/phone_number.yml +7 -0
  240. data/lib/locales/fr/pokemon.yml +7 -0
  241. data/lib/locales/fr-CA.yml +2733 -44
  242. data/lib/locales/fr-CH.yml +1 -2
  243. data/lib/locales/fr.yml +2 -118
  244. data/lib/locales/hy.yml +3624 -119
  245. data/lib/locales/id.yml +839 -12
  246. data/lib/locales/it.yml +1304 -32
  247. data/lib/locales/ja/README.md +13 -0
  248. data/lib/locales/ja/address.yml +120539 -0
  249. data/lib/locales/ja/adjective.yml +148 -0
  250. data/lib/locales/ja/ancient.yml +4 -0
  251. data/lib/locales/ja/animal.yml +5 -0
  252. data/lib/locales/ja/bank.yml +4 -0
  253. data/lib/locales/ja/book.yml +7 -0
  254. data/lib/locales/ja/cat.yml +5 -0
  255. data/lib/locales/ja/coffee.yml +4 -0
  256. data/lib/locales/ja/color.yml +4 -0
  257. data/lib/locales/ja/commerce.yml +11 -0
  258. data/lib/locales/ja/company.yml +8 -0
  259. data/lib/locales/ja/dog.yml +6 -0
  260. data/lib/locales/ja/emotion.yml +51 -0
  261. data/lib/locales/ja/food.yml +4 -0
  262. data/lib/locales/ja/football.yml +115 -0
  263. data/lib/locales/ja/gender.yml +4 -0
  264. data/lib/locales/ja/lorem.yml +9 -0
  265. data/lib/locales/ja/name.yml +13 -0
  266. data/lib/locales/ja/naruto.yml +230 -0
  267. data/lib/locales/ja/overwatch.yml +5 -0
  268. data/lib/locales/ja/phone_number.yml +7 -0
  269. data/lib/locales/ja/pokemon.yml +7 -0
  270. data/lib/locales/ja/relationship.yml +10 -0
  271. data/lib/locales/ja/restaurant.yml +11 -0
  272. data/lib/locales/ja/space.yml +5 -0
  273. data/lib/locales/ja/sport.yml +130 -0
  274. data/lib/locales/ja/studio_ghibli.yml +112 -0
  275. data/lib/locales/ja/subscription.yml +8 -0
  276. data/lib/locales/ja/super_mario.yml +9 -0
  277. data/lib/locales/ja/super_smash_bros.yml +8 -0
  278. data/lib/locales/ja/touhou.yml +466 -0
  279. data/lib/locales/ja/university.yml +9 -0
  280. data/lib/locales/ja/zelda.yml +5 -0
  281. data/lib/locales/ko.yml +1361 -20
  282. data/lib/locales/lt.yml +315 -0
  283. data/lib/locales/lv.yml +1 -2
  284. data/lib/locales/mi-NZ.yml +283 -0
  285. data/lib/locales/nb-NO.yml +518 -29
  286. data/lib/locales/nl.yml +1 -1
  287. data/lib/locales/pl.yml +1 -2
  288. data/lib/locales/pt-BR.yml +8157 -660
  289. data/lib/locales/pt.yml +844 -45
  290. data/lib/locales/ru.yml +1355 -32
  291. data/lib/locales/sk.yml +4410 -43
  292. data/lib/locales/sv.yml +100 -0
  293. data/lib/locales/th.yml +76 -76
  294. data/lib/locales/tr.yml +1 -2
  295. data/lib/locales/uk.yml +1808 -44
  296. data/lib/locales/vi.yml +1 -0
  297. data/lib/locales/zh-CN/bank.yml +17 -0
  298. data/lib/locales/zh-CN.yml +1 -0
  299. data/lib/locales/zh-TW.yml +1 -0
  300. metadata +134 -133
  301. data/History.md +0 -176
  302. data/lib/faker/default/fillmurray.rb +0 -45
  303. data/lib/faker/default/lorem_pixel.rb +0 -69
  304. data/lib/locales/ja.yml +0 -105
  305. /data/lib/faker/default/{faker_adjective.rb → adjective.rb} +0 -0
@@ -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,25 @@ module Faker
23
22
  #
24
23
  # @faker.version 1.6.4
25
24
  def vin
26
- regexify(VIN_REGEX)
25
+ generate(:string) do |g|
26
+ g.letter(name: :wmi, ranges: ['100'..'199', '400'..'499', '500'..'599', '700'..'799', '7A0'..'7F9'])
27
+ g.letter(name: :vds, length: 5, ranges: [VIN_KEYSPACE])
28
+ g.computed(name: :checksum, deps: %i[wmi vds model_year plant_code vis]) do |wmi, vds, model_year, plant_code, vis|
29
+ checksum = "#{wmi}#{vds}0#{model_year}#{plant_code}#{vis}".chars.each_with_index.map do |char, i|
30
+ value = (char =~ /\A\d\z/ ? char.to_i : VIN_TRANSLITERATION[char.to_sym])
31
+ value * VIN_WEIGHT[i]
32
+ end.inject(:+) % 11
33
+
34
+ if checksum == 10
35
+ 'X'
36
+ else
37
+ checksum
38
+ end
39
+ end
40
+ g.letter(name: :model_year, length: 1, ranges: [VIN_KEYSPACE - %w[U Z 0]])
41
+ g.letter(name: :plant_code, length: 1, ranges: [VIN_KEYSPACE])
42
+ g.int(name: :vis, length: 6)
43
+ end
27
44
  end
28
45
 
29
46
  # Produces a random vehicle manufacturer.
@@ -31,12 +48,13 @@ module Faker
31
48
  # @return [String]
32
49
  #
33
50
  # @example
34
- # Faker::Vehicle.manufacture #=> "Lamborghini"
51
+ # Faker::Vehicle.manufacturer #=> "Lamborghini"
35
52
  #
36
53
  # @faker.version 1.6.4
37
- def manufacture
38
- fetch('vehicle.manufacture')
54
+ def manufacturer
55
+ fetch('vehicle.manufacturer')
39
56
  end
57
+ alias manufacture manufacturer
40
58
 
41
59
  ##
42
60
  # Produces a random vehicle make.
@@ -62,11 +80,7 @@ module Faker
62
80
  # Faker::Vehicle.model(make_of_model: 'Toyota') #=> "Prius"
63
81
  #
64
82
  # @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
-
83
+ def model(make_of_model: '')
70
84
  return fetch("vehicle.models_by_make.#{make}") if make_of_model.empty?
71
85
 
72
86
  fetch("vehicle.models_by_make.#{make_of_model}")
@@ -249,12 +263,7 @@ module Faker
249
263
  # Faker::Vehicle.kilometrage #=> 35378
250
264
  #
251
265
  # @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
-
266
+ def mileage(min: MILEAGE_MIN, max: MILEAGE_MAX)
258
267
  rand_in_range(min, max)
259
268
  end
260
269
 
@@ -271,11 +280,7 @@ module Faker
271
280
  # Faker::Vehicle.license_plate(state_abbreviation: 'FL') #=> "977 UNU"
272
281
  #
273
282
  # @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
-
283
+ def license_plate(state_abbreviation: '')
279
284
  return regexify(bothify(fetch('vehicle.license_plate'))) if state_abbreviation.empty?
280
285
 
281
286
  key = "vehicle.license_plate_by_state.#{state_abbreviation}"
@@ -297,45 +302,30 @@ module Faker
297
302
  "#{plate_number}#{singapore_checksum(plate_number)}"
298
303
  end
299
304
 
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
305
+ ##
306
+ # Produces a car version
307
+ #
308
+ # @return [String]
309
+ #
310
+ # @example
311
+ # Faker::Vehicle.version #=> "40 TFSI Premium"
312
+ #
313
+ # @faker.version next
314
+ def version
315
+ fetch('vehicle.version')
320
316
  end
321
317
 
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
318
+ private
329
319
 
330
320
  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)
321
+ padded_alphabets = format('%3s', plate_number[/^[A-Z]+/]).tr(' ', '-').chars
322
+ padded_digits = format('%04d', plate_number[/\d+/]).chars.map(&:to_i)
333
323
  sum = [*padded_alphabets, *padded_digits].each_with_index.reduce(0) do |memo, (char, i)|
334
324
  value = char.is_a?(Integer) ? char : char.ord - 64
335
325
  memo + (SG_CHECKSUM_WEIGHTS[i] * value)
336
326
  end
337
327
 
338
- SG_CHECKSUM_CHARS.split('')[sum % 19]
328
+ SG_CHECKSUM_CHARS.chars[sum % 19]
339
329
  end
340
330
  end
341
331
  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
@@ -4,6 +4,19 @@ module Faker
4
4
  class Games
5
5
  class Dota < Base
6
6
  class << self
7
+ ##
8
+ # Produces the name of a building from Dota.
9
+ #
10
+ # @return [String]
11
+ #
12
+ # @example
13
+ # Faker::Games::Dota.building #=> "Tower"
14
+ #
15
+ # @faker.version 1.9.0
16
+ def building
17
+ fetch('games.dota.building')
18
+ end
19
+
7
20
  ##
8
21
  # Produces the name of a hero from Dota.
9
22
  #
@@ -67,11 +80,7 @@ module Faker
67
80
  # Faker::Games::Dota.quote(hero: 'alchemist') #=> "Better living through alchemy!"
68
81
  #
69
82
  # @faker.version 1.9.0
70
- def quote(legacy_hero = NOT_GIVEN, hero: 'abaddon')
71
- warn_for_deprecated_arguments do |keywords|
72
- keywords << :hero if legacy_hero != NOT_GIVEN
73
- end
74
-
83
+ def quote(hero: 'abaddon')
75
84
  fetch("games.dota.#{hero}.quote")
76
85
  end
77
86
  end
@@ -0,0 +1,73 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Games
5
+ class FinalFantasyXIV < Base
6
+ class << self
7
+ ##
8
+ # Produces the name of a character from FFXIV.
9
+ #
10
+ # @return [String]
11
+ #
12
+ # @example
13
+ # Faker::Games::FinalFantasyXIV.character #=> "Y'shtola Rhul"
14
+ #
15
+ # @faker.version next
16
+ def character
17
+ fetch('games.final_fantasy_xiv.characters')
18
+ end
19
+
20
+ ##
21
+ # Produces a job name from Final Fantasy XIV. Either a battle or non-battle playable job.
22
+ #
23
+ # @return [String]
24
+ #
25
+ # @example
26
+ # Faker::Games::FinalFantasyXIV.job #=> "Paladin"
27
+ #
28
+ # @faker.version next
29
+ def job
30
+ fetch('games.final_fantasy_xiv.jobs')
31
+ end
32
+
33
+ # Produces the name of a playable race from Final Fantasy XIV.
34
+ #
35
+ # @return [String]
36
+ #
37
+ # @example
38
+ # Faker::Games::FinalFantasyXIV.race #=> "Miqo'te"
39
+ #
40
+ # @faker.version next
41
+ def race
42
+ fetch('games.final_fantasy_xiv.races')
43
+ end
44
+
45
+ ##
46
+ # Produces a data center from Final Fantasy XIV.
47
+ #
48
+ # @return [String]
49
+ #
50
+ # @example
51
+ # Faker::Games::FinalFantasyXIV.data_center #=> "Aether"
52
+ #
53
+ # @faker.version next
54
+ def data_center
55
+ fetch('games.final_fantasy_xiv.data_centers')
56
+ end
57
+
58
+ ##
59
+ # Produces a geographical zone from Final Fantasy XIV.
60
+ #
61
+ # @return [String]
62
+ #
63
+ # @example
64
+ # Faker::Games::FinalFantasyXIV.zone #=> "Eastern La Noscea"
65
+ #
66
+ # @faker.version next
67
+ def zone
68
+ fetch('games.final_fantasy_xiv.zones')
69
+ end
70
+ end
71
+ end
72
+ end
73
+ 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