faker 2.15.1 → 3.4.2
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 +848 -34
- data/README.md +225 -103
- data/lib/faker/blockchain/aeternity.rb +1 -1
- data/lib/faker/blockchain/bitcoin.rb +2 -2
- data/lib/faker/blockchain/ethereum.rb +1 -1
- data/lib/faker/blockchain/tezos.rb +31 -3
- data/lib/faker/books/dune.rb +2 -10
- data/lib/faker/books/lovecraft.rb +9 -41
- data/lib/faker/books/the_kingkiller_chronicle.rb +61 -0
- data/lib/faker/creature/bird.rb +203 -0
- data/lib/faker/default/address.rb +7 -27
- 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 +25 -17
- data/lib/faker/default/barcode.rb +33 -22
- data/lib/faker/default/boolean.rb +1 -4
- data/lib/faker/default/cannabis.rb +10 -0
- data/lib/faker/default/chile_rut.rb +25 -25
- data/lib/faker/default/chuck_norris.rb +1 -0
- data/lib/faker/default/code.rb +71 -42
- data/lib/faker/default/color.rb +77 -6
- data/lib/faker/default/commerce.rb +31 -17
- data/lib/faker/default/company.rb +137 -22
- data/lib/faker/default/crypto.rb +26 -4
- 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 -18
- data/lib/faker/default/drone.rb +1 -1
- data/lib/faker/default/educator.rb +13 -0
- data/lib/faker/default/emotion.rb +33 -0
- data/lib/faker/default/file.rb +5 -22
- data/lib/faker/default/finance.rb +30 -7
- data/lib/faker/default/food.rb +27 -1
- data/lib/faker/default/hipster.rb +8 -48
- data/lib/faker/default/hobby.rb +22 -0
- data/lib/faker/default/html.rb +230 -0
- data/lib/faker/default/id_number.rb +175 -27
- data/lib/faker/default/internet.rb +333 -114
- data/lib/faker/default/invoice.rb +4 -17
- data/lib/faker/default/json.rb +4 -21
- data/lib/faker/default/lorem.rb +175 -73
- data/lib/faker/default/lorem_flickr.rb +4 -37
- data/lib/faker/default/markdown.rb +10 -13
- 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/nation.rb +0 -3
- data/lib/faker/default/{nhs.rb → national_health_service.rb} +9 -8
- data/lib/faker/default/number.rb +33 -61
- data/lib/faker/default/omniauth.rb +55 -52
- data/lib/faker/default/phone_number.rb +36 -21
- data/lib/faker/default/placeholdit.rb +10 -20
- data/lib/faker/default/relationship.rb +1 -5
- data/lib/faker/default/religion.rb +6 -0
- data/lib/faker/default/science.rb +108 -0
- data/lib/faker/default/source.rb +3 -16
- data/lib/faker/default/south_africa.rb +3 -3
- data/lib/faker/default/string.rb +1 -7
- data/lib/faker/default/stripe.rb +4 -20
- data/lib/faker/default/tea.rb +41 -0
- data/lib/faker/{music/show.rb → default/theater.rb} +11 -8
- data/lib/faker/default/time.rb +4 -34
- data/lib/faker/default/twitter.rb +7 -23
- data/lib/faker/default/types.rb +12 -34
- data/lib/faker/default/vehicle.rb +44 -54
- 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 +14 -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/games/touhou.rb +75 -0
- data/lib/faker/games/witcher.rb +39 -0
- data/lib/faker/japanese_media/cowboy_bebop.rb +61 -0
- data/lib/faker/japanese_media/fullmetal_alchemist_brotherhood.rb +51 -0
- data/lib/faker/japanese_media/kamen_rider.rb +102 -0
- data/lib/faker/japanese_media/one_piece.rb +1 -1
- data/lib/faker/locations/australia.rb +52 -0
- data/lib/faker/movies/avatar.rb +49 -0
- data/lib/faker/movies/hackers.rb +48 -0
- data/lib/faker/movies/star_wars.rb +73 -5
- data/lib/faker/movies/{room.rb → the_room.rb} +4 -4
- data/lib/faker/movies/tron.rb +161 -0
- data/lib/faker/music/hiphop.rb +3 -3
- data/lib/faker/music/music.rb +12 -0
- data/lib/faker/music/rock_band.rb +12 -0
- data/lib/faker/music/smashing_pumpkins.rb +64 -0
- data/lib/faker/quotes/quote.rb +13 -0
- data/lib/faker/quotes/rajnikanth.rb +1 -0
- data/lib/faker/quotes/shakespeare.rb +34 -0
- data/lib/faker/religion/bible.rb +50 -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/big_bang_theory.rb +1 -1
- data/lib/faker/tv_shows/brooklyn_nine_nine.rb +38 -0
- data/lib/faker/tv_shows/michael_scott.rb +0 -3
- data/lib/faker/tv_shows/south_park.rb +15 -0
- data/lib/faker/tv_shows/spongebob.rb +50 -0
- data/lib/faker/tv_shows/suits.rb +1 -1
- data/lib/faker/tv_shows/supernatural.rb +48 -0
- data/lib/faker/tv_shows/the_office.rb +37 -0
- data/lib/faker/version.rb +2 -2
- data/lib/faker.rb +26 -67
- data/lib/helpers/base58.rb +1 -1
- data/lib/helpers/deprecator.rb +53 -0
- data/lib/helpers/positional_generator.rb +480 -0
- data/lib/helpers/unique_generator.rb +13 -14
- data/lib/locales/README.md +18 -2
- data/lib/locales/ar.yml +6 -1
- data/lib/locales/bg.yml +1 -2
- data/lib/locales/da-DK.yml +529 -35
- data/lib/locales/de-AT.yml +3487 -27
- data/lib/locales/de-CH.yml +4328 -12
- data/lib/locales/de.yml +7185 -99
- data/lib/locales/ee.yml +0 -1
- data/lib/locales/en/address.yml +1826 -562
- data/lib/locales/en/airport.yml +381 -0
- data/lib/locales/en/animal.yml +1 -1
- data/lib/locales/en/archer.yml +75 -0
- data/lib/locales/en/australia.yml +108 -0
- data/lib/locales/en/avatar.yml +31 -0
- data/lib/locales/en/bank.yml +1 -1
- data/lib/locales/en/bible.yml +90 -0
- data/lib/locales/en/bird.yml +1281 -0
- data/lib/locales/en/book.yml +487 -3
- data/lib/locales/en/brooklyn_nine_nine.yml +35 -0
- data/lib/locales/en/cat.yml +1 -1
- data/lib/locales/en/chess.yml +103 -0
- data/lib/locales/en/coffee.yml +1 -1
- data/lib/locales/en/commerce.yml +17 -0
- data/lib/locales/en/community.yml +17 -17
- 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/device.yml +112 -4
- data/lib/locales/en/dnd.yml +186 -1
- data/lib/locales/en/dog.yml +262 -7
- data/lib/locales/en/dota.yml +173 -0
- data/lib/locales/en/dune.yml +266 -397
- data/lib/locales/en/educator.yml +6 -0
- data/lib/locales/en/emotion.yml +480 -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 +27 -4
- data/lib/locales/en/food.yml +1067 -10
- data/lib/locales/en/football.yml +3 -3
- data/lib/locales/en/fullmetal_alchemist_brotherhood.yml +78 -0
- data/lib/locales/en/game.yml +11 -0
- data/lib/locales/en/hackers.yml +53 -0
- data/lib/locales/en/harry_potter.yml +1 -1
- data/lib/locales/en/heroes.yml +2 -2
- data/lib/locales/en/hobby.yml +171 -0
- data/lib/locales/en/horse.yml +2 -2
- data/lib/locales/en/id_number.yml +1 -1
- data/lib/locales/en/internet.yml +136 -3
- data/lib/locales/en/kamen_rider.yml +452 -0
- data/lib/locales/en/kpop.yml +7 -7
- data/lib/locales/en/lebowski.yml +1 -1
- data/lib/locales/en/lovecraft.yml +76 -6
- data/lib/locales/en/minecraft.yml +4 -4
- data/lib/locales/en/mitch_hedberg.yml +46 -0
- data/lib/locales/en/mountain.yml +14 -1
- data/lib/locales/en/mountaineering.yml +14 -0
- data/lib/locales/en/movie.yml +2 -1
- data/lib/locales/en/music.yml +152 -142
- 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/phone_number.yml +78 -3
- data/lib/locales/en/rock_band.yml +1 -0
- data/lib/locales/en/science.yml +481 -3
- data/lib/locales/en/shakespeare.yml +21 -24
- data/lib/locales/en/smashing_pumpkins.yml +382 -0
- data/lib/locales/en/source.yml +5 -0
- data/lib/locales/en/south_park.yml +360 -2
- data/lib/locales/en/space.yml +1 -1
- 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/stranger_thing.yml +1 -1
- data/lib/locales/en/super_smash_bros.yml +7 -2
- data/lib/locales/en/supernatural.yml +141 -0
- data/lib/locales/en/tarkov.yml +593 -0
- data/lib/locales/en/tea.yml +172 -0
- data/lib/locales/en/the_kingkiller_chronicle.yml +56 -0
- data/lib/locales/en/the_office.yml +86 -0
- data/lib/locales/en/{room.yml → the_room.yml} +1 -1
- data/lib/locales/en/{show.yml → theater.yml} +1 -1
- data/lib/locales/en/touhou.yml +839 -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/witcher.yml +37 -0
- data/lib/locales/en-AU.yml +718 -47
- data/lib/locales/en-CA.yml +373 -18
- data/lib/locales/en-GB.yml +116 -8
- data/lib/locales/en-IND.yml +1259 -17
- data/lib/locales/en-KE.yml +212 -0
- data/lib/locales/en-MS.yml +364 -17
- data/lib/locales/en-NEP.yml +212 -38
- data/lib/locales/en-NG.yml +1 -0
- data/lib/locales/en-NZ.yml +1153 -123
- data/lib/locales/en-PAK.yml +369 -10
- data/lib/locales/en-SG.yml +581 -16
- data/lib/locales/en-UG.yml +1 -0
- data/lib/locales/en-US.yml +6914 -74
- data/lib/locales/en-ZA.yml +1 -1
- data/lib/locales/en-au-ocker.yml +266 -22
- data/lib/locales/es-AR.yml +4570 -0
- data/lib/locales/es-MX.yml +1 -2
- data/lib/locales/es.yml +2 -3
- data/lib/locales/fi-FI.yml +3 -1
- data/lib/locales/fr/address.yml +20 -0
- data/lib/locales/fr/adjective.yml +266 -0
- data/lib/locales/fr/ancient.yml +141 -0
- data/lib/locales/fr/animal.yml +5 -0
- data/lib/locales/fr/appliance.yml +4 -0
- data/lib/locales/fr/book.yml +7 -0
- data/lib/locales/fr/color.yml +4 -0
- data/lib/locales/fr/company.yml +17 -0
- data/lib/locales/fr/compass.yml +23 -0
- data/lib/locales/fr/demographic.yml +4 -0
- data/lib/locales/fr/gender.yml +6 -0
- data/lib/locales/fr/internet.yml +4 -0
- data/lib/locales/fr/lorem.yml +5 -0
- data/lib/locales/fr/measurement.yml +7 -0
- data/lib/locales/fr/name.yml +22 -0
- data/lib/locales/fr/phone_number.yml +7 -0
- data/lib/locales/fr/pokemon.yml +7 -0
- data/lib/locales/fr-CA.yml +2733 -44
- data/lib/locales/fr-CH.yml +1 -2
- data/lib/locales/fr.yml +2 -118
- data/lib/locales/hy.yml +3624 -119
- data/lib/locales/id.yml +839 -12
- data/lib/locales/it.yml +1304 -32
- data/lib/locales/ja/README.md +13 -0
- data/lib/locales/ja/address.yml +120539 -0
- data/lib/locales/ja/adjective.yml +148 -0
- data/lib/locales/ja/ancient.yml +4 -0
- data/lib/locales/ja/animal.yml +5 -0
- data/lib/locales/ja/bank.yml +4 -0
- data/lib/locales/ja/book.yml +7 -0
- data/lib/locales/ja/cat.yml +5 -0
- data/lib/locales/ja/coffee.yml +4 -0
- data/lib/locales/ja/color.yml +4 -0
- data/lib/locales/ja/commerce.yml +11 -0
- data/lib/locales/ja/company.yml +8 -0
- data/lib/locales/ja/dog.yml +6 -0
- data/lib/locales/ja/emotion.yml +51 -0
- data/lib/locales/ja/food.yml +4 -0
- data/lib/locales/ja/football.yml +115 -0
- data/lib/locales/ja/gender.yml +4 -0
- data/lib/locales/ja/lorem.yml +9 -0
- data/lib/locales/ja/name.yml +13 -0
- data/lib/locales/ja/naruto.yml +230 -0
- data/lib/locales/ja/overwatch.yml +5 -0
- data/lib/locales/ja/phone_number.yml +7 -0
- data/lib/locales/ja/pokemon.yml +7 -0
- data/lib/locales/ja/relationship.yml +10 -0
- data/lib/locales/ja/restaurant.yml +11 -0
- data/lib/locales/ja/space.yml +5 -0
- data/lib/locales/ja/sport.yml +130 -0
- data/lib/locales/ja/studio_ghibli.yml +112 -0
- data/lib/locales/ja/subscription.yml +8 -0
- data/lib/locales/ja/super_mario.yml +9 -0
- data/lib/locales/ja/super_smash_bros.yml +8 -0
- data/lib/locales/ja/touhou.yml +466 -0
- data/lib/locales/ja/university.yml +9 -0
- data/lib/locales/ja/zelda.yml +5 -0
- data/lib/locales/ko.yml +1361 -20
- data/lib/locales/lt.yml +315 -0
- data/lib/locales/lv.yml +1 -2
- data/lib/locales/mi-NZ.yml +283 -0
- data/lib/locales/nb-NO.yml +518 -29
- data/lib/locales/nl.yml +1 -1
- data/lib/locales/pl.yml +1 -2
- data/lib/locales/pt-BR.yml +8157 -660
- data/lib/locales/pt.yml +844 -45
- data/lib/locales/ru.yml +1355 -32
- data/lib/locales/sk.yml +4410 -43
- data/lib/locales/sv.yml +100 -0
- data/lib/locales/th.yml +76 -76
- data/lib/locales/tr.yml +1 -2
- data/lib/locales/uk.yml +1808 -44
- data/lib/locales/vi.yml +1 -0
- data/lib/locales/zh-CN/bank.yml +17 -0
- data/lib/locales/zh-CN.yml +1 -0
- data/lib/locales/zh-TW.yml +1 -0
- metadata +134 -133
- data/History.md +0 -176
- data/lib/faker/default/fillmurray.rb +0 -45
- data/lib/faker/default/lorem_pixel.rb +0 -69
- data/lib/locales/ja.yml +0 -105
- /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
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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
|
-
|
|
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.
|
|
51
|
+
# Faker::Vehicle.manufacturer #=> "Lamborghini"
|
|
35
52
|
#
|
|
36
53
|
# @faker.version 1.6.4
|
|
37
|
-
def
|
|
38
|
-
fetch('vehicle.
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
def
|
|
310
|
-
|
|
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
|
-
|
|
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(' ', '-').
|
|
332
|
-
padded_digits = format('%04d', plate_number[/\d+/]).
|
|
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.
|
|
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(
|
|
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(
|
|
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
|
data/lib/faker/games/dnd.rb
CHANGED
|
@@ -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
|
-
|
|
125
|
-
#
|
|
163
|
+
##
|
|
164
|
+
# Produces a last name from Dungeons and Dragons.
|
|
126
165
|
#
|
|
127
|
-
# @
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
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
|
data/lib/faker/games/dota.rb
CHANGED
|
@@ -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(
|
|
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
|
data/lib/faker/games/myst.rb
CHANGED
|
@@ -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
|