faker 2.11.0 → 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 +1131 -19
- data/README.md +249 -105
- data/lib/faker/blockchain/aeternity.rb +5 -5
- 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 +17 -12
- data/lib/faker/books/lovecraft.rb +16 -44
- data/lib/faker/books/the_kingkiller_chronicle.rb +61 -0
- data/lib/faker/creature/bird.rb +203 -0
- data/lib/faker/default/address.rb +42 -32
- data/lib/faker/default/adjective.rb +35 -0
- 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 +104 -19
- data/lib/faker/default/barcode.rb +165 -0
- data/lib/faker/default/beer.rb +3 -3
- data/lib/faker/default/blood.rb +48 -0
- data/lib/faker/default/boolean.rb +1 -4
- data/lib/faker/default/business.rb +1 -1
- data/lib/faker/default/camera.rb +46 -0
- data/lib/faker/default/cannabis.rb +10 -0
- data/lib/faker/default/chile_rut.rb +62 -18
- data/lib/faker/default/chuck_norris.rb +1 -0
- data/lib/faker/default/code.rb +162 -52
- data/lib/faker/default/color.rb +77 -6
- data/lib/faker/default/commerce.rb +105 -28
- data/lib/faker/default/company.rb +210 -28
- data/lib/faker/default/compass.rb +135 -0
- data/lib/faker/default/computer.rb +63 -0
- data/lib/faker/default/construction.rb +54 -0
- data/lib/faker/default/cosmere.rb +90 -0
- data/lib/faker/default/crypto.rb +26 -4
- data/lib/faker/default/crypto_coin.rb +48 -15
- data/lib/faker/default/date.rb +81 -54
- data/lib/faker/default/demographic.rb +1 -5
- data/lib/faker/default/driving_licence.rb +85 -18
- data/lib/faker/default/drone.rb +332 -0
- data/lib/faker/default/educator.rb +13 -0
- data/lib/faker/default/emotion.rb +33 -0
- data/lib/faker/default/file.rb +53 -21
- data/lib/faker/default/finance.rb +75 -7
- data/lib/faker/default/food.rb +28 -2
- data/lib/faker/default/gender.rb +1 -1
- data/lib/faker/default/hipster.rb +108 -51
- data/lib/faker/default/hobby.rb +22 -0
- data/lib/faker/default/html.rb +230 -0
- data/lib/faker/default/id_number.rb +251 -17
- data/lib/faker/default/internet.rb +361 -113
- data/lib/faker/default/internet_http.rb +48 -0
- data/lib/faker/default/invoice.rb +37 -23
- data/lib/faker/default/json.rb +63 -25
- data/lib/faker/default/lorem.rb +177 -75
- data/lib/faker/default/lorem_flickr.rb +69 -37
- data/lib/faker/default/markdown.rb +97 -11
- data/lib/faker/default/marketing.rb +1 -1
- data/lib/faker/default/measurement.rb +101 -42
- data/lib/faker/default/military.rb +26 -0
- data/lib/faker/default/mountain.rb +33 -0
- data/lib/faker/default/name.rb +99 -5
- data/lib/faker/default/nation.rb +0 -3
- data/lib/faker/default/{nhs.rb → national_health_service.rb} +26 -6
- data/lib/faker/default/number.rb +39 -69
- data/lib/faker/default/omniauth.rb +115 -57
- data/lib/faker/default/phone_number.rb +112 -14
- data/lib/faker/default/placeholdit.rb +23 -12
- data/lib/faker/default/relationship.rb +2 -6
- data/lib/faker/default/religion.rb +6 -0
- data/lib/faker/default/science.rb +108 -0
- data/lib/faker/default/slack_emoji.rb +81 -0
- data/lib/faker/default/source.rb +3 -16
- data/lib/faker/default/south_africa.rb +93 -3
- data/lib/faker/default/space.rb +1 -1
- data/lib/faker/default/string.rb +18 -8
- data/lib/faker/default/stripe.rb +68 -23
- data/lib/faker/default/tea.rb +41 -0
- data/lib/faker/default/theater.rb +52 -0
- data/lib/faker/default/time.rb +4 -34
- data/lib/faker/default/twitter.rb +42 -23
- data/lib/faker/default/types.rb +92 -34
- data/lib/faker/default/university.rb +45 -0
- data/lib/faker/default/vehicle.rb +227 -57
- data/lib/faker/default/verb.rb +45 -0
- data/lib/faker/default/vulnerability_identifier.rb +23 -0
- data/lib/faker/default/world_cup.rb +6 -15
- data/lib/faker/fantasy/tolkien.rb +67 -0
- data/lib/faker/games/clash_of_clans.rb +48 -0
- data/lib/faker/games/control.rb +113 -0
- data/lib/faker/games/dnd.rb +178 -0
- data/lib/faker/games/dota.rb +14 -5
- data/lib/faker/games/elder_scrolls.rb +26 -0
- data/lib/faker/games/final_fantasy_xiv.rb +73 -0
- data/lib/faker/games/heroes.rb +13 -0
- data/lib/faker/games/heroes_of_the_storm.rb +16 -5
- data/lib/faker/games/minecraft.rb +113 -0
- data/lib/faker/games/myst.rb +1 -1
- data/lib/faker/games/street_fighter.rb +61 -0
- data/lib/faker/games/super_mario.rb +48 -0
- data/lib/faker/games/tarkov.rb +205 -0
- data/lib/faker/games/touhou.rb +75 -0
- data/lib/faker/games/warhammer_fantasy.rb +74 -0
- data/lib/faker/games/witcher.rb +39 -0
- data/lib/faker/games/world_of_warcraft.rb +26 -1
- data/lib/faker/japanese_media/conan.rb +48 -0
- data/lib/faker/japanese_media/cowboy_bebop.rb +61 -0
- data/lib/faker/japanese_media/doraemon.rb +48 -0
- data/lib/faker/japanese_media/dragon_ball.rb +26 -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/naruto.rb +61 -0
- data/lib/faker/japanese_media/one_piece.rb +1 -1
- data/lib/faker/japanese_media/studio_ghibli.rb +48 -0
- data/lib/faker/locations/australia.rb +52 -0
- data/lib/faker/movies/avatar.rb +49 -0
- data/lib/faker/movies/departed.rb +49 -0
- data/lib/faker/movies/hackers.rb +48 -0
- data/lib/faker/movies/hobbit.rb +4 -4
- data/lib/faker/movies/how_to_train_your_dragon.rb +48 -0
- data/lib/faker/movies/lord_of_the_rings.rb +3 -3
- data/lib/faker/movies/movie.rb +13 -0
- data/lib/faker/movies/star_wars.rb +75 -7
- data/lib/faker/movies/the_room.rb +63 -0
- data/lib/faker/movies/tron.rb +161 -0
- data/lib/faker/music/hiphop.rb +48 -0
- data/lib/faker/music/music.rb +12 -0
- data/lib/faker/music/opera.rb +237 -1
- data/lib/faker/music/pearl_jam.rb +50 -0
- data/lib/faker/music/phish.rb +27 -1
- data/lib/faker/music/prince.rb +64 -0
- data/lib/faker/music/rock_band.rb +12 -0
- data/lib/faker/music/rush.rb +37 -0
- data/lib/faker/music/smashing_pumpkins.rb +64 -0
- data/lib/faker/quotes/quote.rb +93 -1
- data/lib/faker/quotes/rajnikanth.rb +1 -0
- data/lib/faker/quotes/shakespeare.rb +70 -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/sports/volleyball.rb +74 -0
- data/lib/faker/travel/airport.rb +43 -0
- data/lib/faker/travel/train_station.rb +54 -0
- data/lib/faker/tv_shows/aqua_teen_hunger_force.rb +13 -0
- data/lib/faker/tv_shows/archer.rb +51 -0
- data/lib/faker/tv_shows/big_bang_theory.rb +37 -0
- data/lib/faker/tv_shows/brooklyn_nine_nine.rb +38 -0
- data/lib/faker/tv_shows/buffy.rb +17 -4
- data/lib/faker/tv_shows/dr_who.rb +1 -1
- data/lib/faker/tv_shows/final_space.rb +51 -0
- data/lib/faker/tv_shows/futurama.rb +65 -0
- data/lib/faker/tv_shows/michael_scott.rb +0 -3
- data/lib/faker/tv_shows/simpsons.rb +14 -0
- 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 +37 -0
- data/lib/faker/tv_shows/supernatural.rb +48 -0
- data/lib/faker/tv_shows/the_fresh_prince_of_bel_air.rb +17 -4
- data/lib/faker/tv_shows/the_office.rb +37 -0
- data/lib/faker/version.rb +2 -2
- data/lib/faker.rb +51 -87
- data/lib/helpers/base58.rb +1 -1
- data/lib/helpers/char.rb +22 -27
- data/lib/helpers/deprecator.rb +53 -0
- data/lib/helpers/positional_generator.rb +480 -0
- data/lib/helpers/unique_generator.rb +13 -13
- 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 -25
- data/lib/locales/de-CH.yml +6020 -9
- data/lib/locales/de.yml +7185 -97
- data/lib/locales/ee.yml +0 -1
- data/lib/locales/en/address.yml +1828 -562
- data/lib/locales/en/adjective.yml +179 -0
- data/lib/locales/en/airport.yml +381 -0
- data/lib/locales/en/animal.yml +1 -1
- data/lib/locales/en/aqua_teen_hunger_force.yml +33 -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 +2 -2
- data/lib/locales/en/barcode.yml +24 -0
- data/lib/locales/en/bible.yml +90 -0
- data/lib/locales/en/big_bang_theory.yml +38 -0
- data/lib/locales/en/bird.yml +1281 -0
- data/lib/locales/en/blood.yml +13 -0
- data/lib/locales/en/book.yml +487 -3
- data/lib/locales/en/brooklyn_nine_nine.yml +35 -0
- data/lib/locales/en/buffy.yml +1 -1
- data/lib/locales/en/camera.yml +611 -0
- data/lib/locales/en/cat.yml +1 -1
- data/lib/locales/en/chess.yml +103 -0
- data/lib/locales/en/clash_of_clan.yml +101 -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 +3 -2
- data/lib/locales/en/computer.yml +55 -0
- data/lib/locales/en/conan.yml +171 -0
- data/lib/locales/en/control.yml +247 -0
- data/lib/locales/en/cowboy_bebop.yml +163 -0
- data/lib/locales/en/demographic.yml +218 -5
- data/lib/locales/en/departed.yml +50 -0
- data/lib/locales/en/device.yml +112 -4
- data/lib/locales/en/dnd.yml +636 -0
- data/lib/locales/en/dog.yml +262 -7
- data/lib/locales/en/doraemon.yml +286 -0
- data/lib/locales/en/dota.yml +704 -63
- data/lib/locales/en/dragon_ball.yml +243 -1
- data/lib/locales/en/driving_license.yml +181 -0
- data/lib/locales/en/drone.yml +95 -0
- data/lib/locales/en/dune.yml +270 -131
- data/lib/locales/en/educator.yml +6 -0
- data/lib/locales/en/elder_scrolls.yml +583 -9
- data/lib/locales/en/emotion.yml +480 -0
- data/lib/locales/en/fallout.yml +311 -133
- data/lib/locales/en/file.yml +9 -1
- data/lib/locales/en/final_fantasy_xiv.yml +754 -0
- data/lib/locales/en/final_space.yml +37 -0
- data/lib/locales/en/finance.yml +80 -4
- data/lib/locales/en/food.yml +1067 -10
- data/lib/locales/en/football.yml +3 -3
- data/lib/locales/en/fresh_prince_of_bel_air.yml +1 -1
- data/lib/locales/en/fullmetal_alchemist_brotherhood.yml +78 -0
- data/lib/locales/en/futurama.yml +344 -0
- data/lib/locales/en/game.yml +11 -0
- data/lib/locales/en/hackers.yml +53 -0
- data/lib/locales/en/half_life.yml +84 -3
- data/lib/locales/en/harry_potter.yml +1 -1
- data/lib/locales/en/heroes.yml +408 -3
- data/lib/locales/en/heroes_of_the_storm.yml +131 -4
- data/lib/locales/en/hobby.yml +171 -0
- data/lib/locales/en/horse.yml +2 -2
- data/lib/locales/en/house.yml +1 -1
- data/lib/locales/en/how_to_train_your_dragon.yml +174 -0
- data/lib/locales/en/id_number.yml +1 -1
- data/lib/locales/en/internet.yml +136 -3
- data/lib/locales/en/jack_handey.yml +54 -0
- data/lib/locales/en/kamen_rider.yml +452 -0
- data/lib/locales/en/kpop.yml +7 -7
- data/lib/locales/en/league_of_legends.yml +285 -6
- data/lib/locales/en/lebowski.yml +1 -1
- data/lib/locales/en/lovecraft.yml +76 -6
- data/lib/locales/en/military.yml +179 -5
- data/lib/locales/en/minecraft.yml +663 -0
- data/lib/locales/en/mitch_hedberg.yml +46 -0
- data/lib/locales/en/mountain.yml +171 -0
- data/lib/locales/en/mountaineering.yml +14 -0
- data/lib/locales/en/movie.yml +194 -2
- data/lib/locales/en/music.yml +461 -29
- data/lib/locales/en/myst.yml +87 -31
- data/lib/locales/en/name.yml +5 -4
- data/lib/locales/en/naruto.yml +230 -0
- data/lib/locales/en/one_piece.yml +2 -2
- data/lib/locales/en/opera.yml +169 -1
- data/lib/locales/en/overwatch.yml +2648 -2622
- data/lib/locales/en/pearl_jam.yml +213 -0
- data/lib/locales/en/phish.yml +392 -1
- data/lib/locales/en/phone_number.yml +78 -3
- data/lib/locales/en/pokemon.yml +417 -4
- data/lib/locales/en/prince.yml +227 -0
- data/lib/locales/en/quote.yml +692 -163
- data/lib/locales/en/rock_band.yml +1 -0
- data/lib/locales/en/rush.yml +32 -0
- data/lib/locales/en/science.yml +481 -3
- data/lib/locales/en/shakespeare.yml +21 -24
- data/lib/locales/en/simpsons.yml +668 -0
- data/lib/locales/en/smashing_pumpkins.yml +382 -0
- data/lib/locales/en/source.yml +35 -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_trek.yml +1 -1
- data/lib/locales/en/star_wars.yml +568 -220
- data/lib/locales/en/stranger_thing.yml +1 -1
- data/lib/locales/en/street_fighter.yml +1524 -0
- data/lib/locales/en/studio_ghibli.yml +107 -0
- data/lib/locales/en/suits.yml +45 -0
- data/lib/locales/en/super_mario.yml +58 -0
- data/lib/locales/en/super_smash_bros.yml +23 -6
- 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/the_room.yml +68 -0
- data/lib/locales/en/theater.yml +597 -0
- data/lib/locales/en/tolkien.yml +2453 -0
- 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/volleyball.yml +501 -0
- data/lib/locales/en/warhammer_fantasy.yml +582 -0
- data/lib/locales/en/witcher.yml +426 -7
- data/lib/locales/en/world_of_warcraft.yml +122 -4
- data/lib/locales/en/zelda.yml +962 -4
- data/lib/locales/en-AU.yml +728 -17
- data/lib/locales/en-CA.yml +373 -16
- data/lib/locales/en-GB.yml +116 -8
- data/lib/locales/en-IND.yml +1259 -16
- data/lib/locales/en-KE.yml +212 -0
- data/lib/locales/en-MS.yml +364 -16
- data/lib/locales/en-NEP.yml +212 -35
- data/lib/locales/en-NG.yml +1 -0
- data/lib/locales/en-NZ.yml +1153 -121
- data/lib/locales/en-PAK.yml +369 -9
- data/lib/locales/en-SG.yml +581 -15
- data/lib/locales/en-UG.yml +1 -0
- data/lib/locales/en-US.yml +6937 -71
- data/lib/locales/en-ZA.yml +1 -1
- data/lib/locales/en-au-ocker.yml +266 -21
- data/lib/locales/en.yml +0 -3
- data/lib/locales/es-AR.yml +4570 -0
- data/lib/locales/es-MX.yml +1 -2
- data/lib/locales/es.yml +58 -3
- data/lib/locales/fi-FI.yml +4 -2
- 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 +2748 -43
- data/lib/locales/fr-CH.yml +3 -4
- data/lib/locales/fr.yml +2 -112
- data/lib/locales/hy.yml +3624 -119
- data/lib/locales/id.yml +839 -10
- data/lib/locales/it.yml +1304 -31
- 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 +1450 -17
- 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 -27
- data/lib/locales/nl.yml +1 -1
- data/lib/locales/pl.yml +1 -2
- data/lib/locales/pt-BR.yml +8157 -659
- data/lib/locales/pt.yml +844 -43
- data/lib/locales/ru.yml +1355 -30
- data/lib/locales/sk.yml +4410 -41
- 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 +1810 -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 +192 -127
- data/History.md +0 -176
- data/lib/faker/default/fillmurray.rb +0 -45
- data/lib/faker/default/lorem_pixel.rb +0 -47
- data/lib/locales/en/hobbit.yml +0 -19
- data/lib/locales/en/lord_of_the_rings.yml +0 -6
- data/lib/locales/ja.yml +0 -101
|
@@ -3,15 +3,31 @@
|
|
|
3
3
|
module Faker
|
|
4
4
|
class Commerce < Base
|
|
5
5
|
class << self
|
|
6
|
+
##
|
|
7
|
+
# Produces a random color.
|
|
8
|
+
#
|
|
9
|
+
# @return [String]
|
|
10
|
+
#
|
|
11
|
+
# @example
|
|
12
|
+
# Faker::Commerce.color #=> "lavender"
|
|
13
|
+
#
|
|
14
|
+
# @faker.version 1.2.0
|
|
6
15
|
def color
|
|
7
16
|
fetch('color.name')
|
|
8
17
|
end
|
|
9
18
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
19
|
+
##
|
|
20
|
+
# Produces a random promotion code.
|
|
21
|
+
#
|
|
22
|
+
# @param digits [Integer] Updates the number of numerical digits used to generate the promotion code.
|
|
23
|
+
# @return [String]
|
|
24
|
+
#
|
|
25
|
+
# @example
|
|
26
|
+
# Faker::Commerce.promotion_code #=> "AmazingDeal829102"
|
|
27
|
+
# Faker::Commerce.promotion_code(digits: 2) #=> "AmazingPrice57"
|
|
28
|
+
#
|
|
29
|
+
# @faker.version 1.7.0
|
|
30
|
+
def promotion_code(digits: 6)
|
|
15
31
|
[
|
|
16
32
|
fetch('commerce.promotion_code.adjective'),
|
|
17
33
|
fetch('commerce.promotion_code.noun'),
|
|
@@ -19,54 +35,115 @@ module Faker
|
|
|
19
35
|
].join
|
|
20
36
|
end
|
|
21
37
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
38
|
+
##
|
|
39
|
+
# Produces a random department.
|
|
40
|
+
#
|
|
41
|
+
# @param max [Integer] Updates the maximum number of names used to generate the department name.
|
|
42
|
+
# @param fixed_amount [Boolean] Fixes the amount of departments to use instead of using a range.
|
|
43
|
+
# @return [String]
|
|
44
|
+
#
|
|
45
|
+
# @example
|
|
46
|
+
# Faker::Commerce.department #=> "Grocery, Health & Beauty"
|
|
47
|
+
# Faker::Commerce.department(max: 5) #=> "Grocery, Books, Health & Beauty"
|
|
48
|
+
# Faker::Commerce.department(max: 2, fixed_amount: true) #=> "Books & Tools"
|
|
49
|
+
#
|
|
50
|
+
# @faker.version 1.2.0
|
|
51
|
+
def department(max: 3, fixed_amount: false)
|
|
28
52
|
num = max if fixed_amount
|
|
29
53
|
num ||= 1 + rand(max)
|
|
30
54
|
|
|
31
55
|
categories = categories(num)
|
|
32
56
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
57
|
+
if categories.is_a?(Array)
|
|
58
|
+
if categories.length > 1
|
|
59
|
+
merge_categories(categories)
|
|
60
|
+
else
|
|
61
|
+
categories[0]
|
|
62
|
+
end
|
|
63
|
+
else
|
|
64
|
+
categories
|
|
65
|
+
end
|
|
36
66
|
end
|
|
37
67
|
|
|
68
|
+
##
|
|
69
|
+
# Produces a random product name.
|
|
70
|
+
#
|
|
71
|
+
# @return [String]
|
|
72
|
+
#
|
|
73
|
+
# @example
|
|
74
|
+
# Faker::Commerce.product_name #=> "Practical Granite Shirt"
|
|
75
|
+
#
|
|
76
|
+
# @faker.version 1.2.0
|
|
38
77
|
def product_name
|
|
39
78
|
"#{fetch('commerce.product_name.adjective')} #{fetch('commerce.product_name.material')} #{fetch('commerce.product_name.product')}"
|
|
40
79
|
end
|
|
41
80
|
|
|
81
|
+
##
|
|
82
|
+
# Produces a random material.
|
|
83
|
+
#
|
|
84
|
+
# @return [String]
|
|
85
|
+
#
|
|
86
|
+
# @example
|
|
87
|
+
# Faker::Commerce.material #=> "Plastic"
|
|
88
|
+
#
|
|
89
|
+
# @faker.version 1.5.0
|
|
42
90
|
def material
|
|
43
91
|
fetch('commerce.product_name.material')
|
|
44
92
|
end
|
|
45
93
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
94
|
+
##
|
|
95
|
+
# Produces a random product price.
|
|
96
|
+
#
|
|
97
|
+
# @param range [Range] A range to generate the random number within.
|
|
98
|
+
# @param as_string [Boolean] Changes the return value to [String].
|
|
99
|
+
# @return [Float]
|
|
100
|
+
#
|
|
101
|
+
# @example
|
|
102
|
+
# Faker::Commerce.price #=> 44.6
|
|
103
|
+
# Faker::Commerce.price(range: 0..10.0, as_string: true) #=> "2.18"
|
|
104
|
+
#
|
|
105
|
+
# @faker.version 1.2.0
|
|
106
|
+
def price(range: 0..100.0, as_string: false)
|
|
52
107
|
price = (rand(range) * 100).floor / 100.0
|
|
53
108
|
if as_string
|
|
54
109
|
price_parts = price.to_s.split('.')
|
|
55
|
-
price = price_parts[0]
|
|
110
|
+
price = "#{price_parts[0]}.#{price_parts[-1].ljust(2, '0')}"
|
|
56
111
|
end
|
|
57
112
|
price
|
|
58
113
|
end
|
|
59
114
|
|
|
115
|
+
##
|
|
116
|
+
# Produces a randomized string of a brand name
|
|
117
|
+
# @example
|
|
118
|
+
# Faker::Commerce.brand #=> 'Apple'
|
|
119
|
+
#
|
|
120
|
+
# @return [string]
|
|
121
|
+
#
|
|
122
|
+
# @faker.version next
|
|
123
|
+
#
|
|
124
|
+
##
|
|
125
|
+
def brand
|
|
126
|
+
fetch('commerce.brand')
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
##
|
|
130
|
+
# Produces a randomized string of a vendor name
|
|
131
|
+
# @example
|
|
132
|
+
# Faker::Commerce.vendor #=> 'Dollar General'
|
|
133
|
+
#
|
|
134
|
+
# @return [string]
|
|
135
|
+
#
|
|
136
|
+
# @faker.version next
|
|
137
|
+
#
|
|
138
|
+
##
|
|
139
|
+
def vendor
|
|
140
|
+
fetch('commerce.vendor')
|
|
141
|
+
end
|
|
142
|
+
|
|
60
143
|
private
|
|
61
144
|
|
|
62
145
|
def categories(num)
|
|
63
|
-
|
|
64
|
-
while categories.length < num
|
|
65
|
-
category = fetch('commerce.department')
|
|
66
|
-
categories << category unless categories.include?(category)
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
categories
|
|
146
|
+
sample(fetch_all('commerce.department'), num)
|
|
70
147
|
end
|
|
71
148
|
|
|
72
149
|
def merge_categories(categories)
|
|
@@ -151,6 +151,19 @@ module Faker
|
|
|
151
151
|
fetch('company.profession')
|
|
152
152
|
end
|
|
153
153
|
|
|
154
|
+
##
|
|
155
|
+
# Produces a company department.
|
|
156
|
+
#
|
|
157
|
+
# @return [String]
|
|
158
|
+
#
|
|
159
|
+
# @example
|
|
160
|
+
# Faker::Company.department #=> "Information Technology"
|
|
161
|
+
#
|
|
162
|
+
# @faker.version next
|
|
163
|
+
def department
|
|
164
|
+
fetch('company.department')
|
|
165
|
+
end
|
|
166
|
+
|
|
154
167
|
##
|
|
155
168
|
# Produces a company spanish organisation number.
|
|
156
169
|
#
|
|
@@ -162,12 +175,17 @@ module Faker
|
|
|
162
175
|
# @faker.version 1.8.5
|
|
163
176
|
#
|
|
164
177
|
# Get a random Spanish organization number. See more here https://es.wikipedia.org/wiki/N%C3%BAmero_de_identificaci%C3%B3n_fiscal
|
|
165
|
-
def spanish_organisation_number
|
|
178
|
+
def spanish_organisation_number(organization_type: nil)
|
|
166
179
|
# Valid leading character: A, B, C, D, E, F, G, H, J, N, P, Q, R, S, U, V, W
|
|
167
|
-
# 7 digit numbers
|
|
180
|
+
# format: 1 digit letter (organization type) + 7 digit numbers + 1 digit control (letter or number based on
|
|
181
|
+
# organization type)
|
|
168
182
|
letters = %w[A B C D E F G H J N P Q R S U V W]
|
|
169
|
-
|
|
170
|
-
|
|
183
|
+
|
|
184
|
+
organization_type = sample(letters) unless letters.include?(organization_type)
|
|
185
|
+
code = format('%07d', rand(10**7))
|
|
186
|
+
control = spanish_cif_control_digit(organization_type, code)
|
|
187
|
+
|
|
188
|
+
[organization_type, code, control].join
|
|
171
189
|
end
|
|
172
190
|
|
|
173
191
|
##
|
|
@@ -291,7 +309,7 @@ module Faker
|
|
|
291
309
|
result = Array.new(3) { rand(1..9) } + Array.new(7) { rand(10) }
|
|
292
310
|
break if (weight_sum(result, weights) % 11) == result[9]
|
|
293
311
|
end
|
|
294
|
-
result.join
|
|
312
|
+
result.join
|
|
295
313
|
end
|
|
296
314
|
|
|
297
315
|
##
|
|
@@ -304,11 +322,7 @@ module Faker
|
|
|
304
322
|
#
|
|
305
323
|
# @faker.version 1.9.1
|
|
306
324
|
# Get a random Polish register of national economy number. More info https://pl.wikipedia.org/wiki/REGON
|
|
307
|
-
def polish_register_of_national_economy(
|
|
308
|
-
warn_for_deprecated_arguments do |keywords|
|
|
309
|
-
keywords << :length if legacy_length != NOT_GIVEN
|
|
310
|
-
end
|
|
311
|
-
|
|
325
|
+
def polish_register_of_national_economy(length: 9)
|
|
312
326
|
raise ArgumentError, 'Length should be 9 or 14' unless [9, 14].include? length
|
|
313
327
|
|
|
314
328
|
random_digits = []
|
|
@@ -316,7 +330,7 @@ module Faker
|
|
|
316
330
|
random_digits = Array.new(length) { rand(10) }
|
|
317
331
|
break if collect_regon_sum(random_digits) == random_digits.last
|
|
318
332
|
end
|
|
319
|
-
random_digits.join
|
|
333
|
+
random_digits.join
|
|
320
334
|
end
|
|
321
335
|
|
|
322
336
|
##
|
|
@@ -329,7 +343,12 @@ module Faker
|
|
|
329
343
|
#
|
|
330
344
|
# @faker.version 1.9.2
|
|
331
345
|
def south_african_pty_ltd_registration_number
|
|
332
|
-
|
|
346
|
+
generate(:string) do |g|
|
|
347
|
+
g.int(length: 4)
|
|
348
|
+
g.lit('/')
|
|
349
|
+
g.int(ranges: [1000..9_999_999_999])
|
|
350
|
+
g.lit('/07')
|
|
351
|
+
end
|
|
333
352
|
end
|
|
334
353
|
|
|
335
354
|
##
|
|
@@ -342,7 +361,18 @@ module Faker
|
|
|
342
361
|
#
|
|
343
362
|
# @faker.version 1.9.2
|
|
344
363
|
def south_african_close_corporation_registration_number
|
|
345
|
-
|
|
364
|
+
generate(:string) do |g|
|
|
365
|
+
g.oneof do |one|
|
|
366
|
+
one.group do |g_|
|
|
367
|
+
g_.lit('CK')
|
|
368
|
+
g_.int(length: 2)
|
|
369
|
+
end
|
|
370
|
+
one.int(length: 4)
|
|
371
|
+
end
|
|
372
|
+
g.lit('/')
|
|
373
|
+
g.int(ranges: [1000..9_999_999_999])
|
|
374
|
+
g.lit('/23')
|
|
375
|
+
end
|
|
346
376
|
end
|
|
347
377
|
|
|
348
378
|
##
|
|
@@ -355,7 +385,12 @@ module Faker
|
|
|
355
385
|
#
|
|
356
386
|
# @faker.version 1.9.2
|
|
357
387
|
def south_african_listed_company_registration_number
|
|
358
|
-
|
|
388
|
+
generate(:string) do |g|
|
|
389
|
+
g.int(length: 4)
|
|
390
|
+
g.lit('/')
|
|
391
|
+
g.int(ranges: [1000..9_999_999_999])
|
|
392
|
+
g.lit('/06')
|
|
393
|
+
end
|
|
359
394
|
end
|
|
360
395
|
|
|
361
396
|
##
|
|
@@ -368,7 +403,12 @@ module Faker
|
|
|
368
403
|
#
|
|
369
404
|
# @faker.version 1.9.2
|
|
370
405
|
def south_african_trust_registration_number
|
|
371
|
-
|
|
406
|
+
generate(:string) do |g|
|
|
407
|
+
g.lit('IT')
|
|
408
|
+
g.int(ranges: [10..9999])
|
|
409
|
+
g.lit('/')
|
|
410
|
+
g.int(ranges: [10..9_999_999_999])
|
|
411
|
+
end
|
|
372
412
|
end
|
|
373
413
|
|
|
374
414
|
##
|
|
@@ -380,11 +420,7 @@ module Faker
|
|
|
380
420
|
# Faker::Company.brazilian_company_number #=> "37205322000500"
|
|
381
421
|
#
|
|
382
422
|
# @faker.version 1.9.2
|
|
383
|
-
def brazilian_company_number(
|
|
384
|
-
warn_for_deprecated_arguments do |keywords|
|
|
385
|
-
keywords << :formatted if legacy_formatted != NOT_GIVEN
|
|
386
|
-
end
|
|
387
|
-
|
|
423
|
+
def brazilian_company_number(formatted: false)
|
|
388
424
|
digits = Array.new(8) { Faker::Number.digit.to_i } + [0, 0, 0, Faker::Number.non_zero_digit.to_i]
|
|
389
425
|
|
|
390
426
|
factors = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2, 6].cycle
|
|
@@ -399,6 +435,22 @@ module Faker
|
|
|
399
435
|
formatted ? format('%s.%s.%s/%s-%s', *number.scan(/(\d{2})(\d{3})(\d{3})(\d{4})(\d{2})/).flatten) : number
|
|
400
436
|
end
|
|
401
437
|
|
|
438
|
+
##
|
|
439
|
+
# Get a random Russian tax number.
|
|
440
|
+
# @param region [String] Any region string
|
|
441
|
+
# @param type [Symbol] Legeal or not, defaults to :legal
|
|
442
|
+
#
|
|
443
|
+
# @return [String]
|
|
444
|
+
# @example
|
|
445
|
+
# Faker::Company.russian_tax_number #=> "0415584064"
|
|
446
|
+
# Faker::Company.russian_tax_number(region: 'AZ') #=> "AZ50124562"
|
|
447
|
+
# Faker::Company.russian_tax_number(region: 'AZ', type: false) #=> "AZ8802315465"
|
|
448
|
+
#
|
|
449
|
+
# @faker.version 1.9.4
|
|
450
|
+
def russian_tax_number(region: nil, type: :legal)
|
|
451
|
+
inn_number(region, type)
|
|
452
|
+
end
|
|
453
|
+
|
|
402
454
|
##
|
|
403
455
|
# Produces a company sic code.
|
|
404
456
|
#
|
|
@@ -412,6 +464,61 @@ module Faker
|
|
|
412
464
|
fetch('company.sic_code')
|
|
413
465
|
end
|
|
414
466
|
|
|
467
|
+
##
|
|
468
|
+
# Get a random Indian Goods and Services Tax (GST) number.
|
|
469
|
+
# For more on Indian tax number here:
|
|
470
|
+
# https://simple.wikipedia.org/wiki/GSTIN
|
|
471
|
+
# @params state code [String] Any state code.
|
|
472
|
+
#
|
|
473
|
+
# @return [String]
|
|
474
|
+
# @example
|
|
475
|
+
# Faker::Company.indian_gst_number #=> "15VQPNZ2126J2ZU"
|
|
476
|
+
# Faker::Company.indian_gst_number(state_code: "22") #=> "22ZVWEY6632K0ZN"
|
|
477
|
+
#
|
|
478
|
+
# @faker.version 3.2.1
|
|
479
|
+
def indian_gst_number(state_code: nil)
|
|
480
|
+
# Check if state code is valid
|
|
481
|
+
state_code_ranges = [('02'..'38'), ['98']]
|
|
482
|
+
if state_code && !(state_code_ranges[0].include?(state_code) || state_code == '98')
|
|
483
|
+
raise ArgumentError, 'state code must be in a range of 02 to 38 or 98'
|
|
484
|
+
end
|
|
485
|
+
|
|
486
|
+
PositionalGenerator.new(:string) do |gen|
|
|
487
|
+
# Generate a state code if not given
|
|
488
|
+
if state_code
|
|
489
|
+
gen.lit(state_code, name: :state_code_param)
|
|
490
|
+
else
|
|
491
|
+
gen.letter(name: :state_code_param, length: 1, ranges: state_code_ranges)
|
|
492
|
+
end
|
|
493
|
+
|
|
494
|
+
# Construct taxpayer number
|
|
495
|
+
gen.group(name: :taxpayer_number) do |g_|
|
|
496
|
+
g_.letter(length: 3, ranges: ['A'..'Z'])
|
|
497
|
+
g_.letter(length: 1, ranges: [%w[A B C F G H L J P T K]].to_a)
|
|
498
|
+
g_.letter(length: 1, ranges: ['A'..'Z'])
|
|
499
|
+
g_.int(length: 4, ranges: [0..9999])
|
|
500
|
+
g_.letter(length: 1, ranges: ['A'..'Z'])
|
|
501
|
+
end
|
|
502
|
+
|
|
503
|
+
gen.int(name: :registration_number, length: 1, ranges: [0..9])
|
|
504
|
+
|
|
505
|
+
gen.letter(name: :z_char, length: 1, ranges: [['Z']])
|
|
506
|
+
|
|
507
|
+
gen.computed(deps: %i[state_code_param taxpayer_number registration_number]) do |state_code_param, taxpayer_number, registration_number|
|
|
508
|
+
gst_base = "#{state_code_param}#{taxpayer_number}#{registration_number}"
|
|
509
|
+
chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'.chars
|
|
510
|
+
values = gst_base.chars
|
|
511
|
+
sum = values.map.with_index do |char, index|
|
|
512
|
+
product = chars.index(char) * (index.odd? ? 2 : 1)
|
|
513
|
+
(product / chars.length).floor + (product % chars.length)
|
|
514
|
+
end.reduce(:+)
|
|
515
|
+
|
|
516
|
+
checksum = (chars.length - (sum % chars.length)) % chars.length
|
|
517
|
+
chars[checksum]
|
|
518
|
+
end
|
|
519
|
+
end.generate
|
|
520
|
+
end
|
|
521
|
+
|
|
415
522
|
private
|
|
416
523
|
|
|
417
524
|
# Mod11 functionality from https://github.com/badmanski/mod11/blob/master/lib/mod11.rb
|
|
@@ -438,7 +545,7 @@ module Faker
|
|
|
438
545
|
def luhn_algorithm(number)
|
|
439
546
|
multiplications = []
|
|
440
547
|
|
|
441
|
-
number.to_s.reverse.
|
|
548
|
+
number.to_s.reverse.chars.each_with_index do |digit, i|
|
|
442
549
|
multiplications << if i.even?
|
|
443
550
|
digit.to_i * 2
|
|
444
551
|
else
|
|
@@ -454,13 +561,11 @@ module Faker
|
|
|
454
561
|
end
|
|
455
562
|
end
|
|
456
563
|
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
control_digit
|
|
564
|
+
if (sum % 10).zero?
|
|
565
|
+
0
|
|
566
|
+
else
|
|
567
|
+
(sum / 10 + 1) * 10 - sum
|
|
568
|
+
end
|
|
464
569
|
end
|
|
465
570
|
|
|
466
571
|
def abn_checksum(abn)
|
|
@@ -491,6 +596,83 @@ module Faker
|
|
|
491
596
|
end
|
|
492
597
|
sum
|
|
493
598
|
end
|
|
599
|
+
|
|
600
|
+
#
|
|
601
|
+
# For more on Russian tax number algorithm here:
|
|
602
|
+
# https://ru.wikipedia.org/wiki/Идентификационный_номер_налогоплательщика#Вычисление_контрольных_цифр
|
|
603
|
+
#
|
|
604
|
+
# Range of regions:
|
|
605
|
+
# https://ru.wikipedia.org/wiki/Коды_субъектов_Российской_Федерации
|
|
606
|
+
# region [String] Any region string
|
|
607
|
+
# @param type [Symbol] Legeal or not, defaults to :legal
|
|
608
|
+
#
|
|
609
|
+
# @return [String]
|
|
610
|
+
# @example
|
|
611
|
+
# Faker::Comnpany.russian_tax_number
|
|
612
|
+
# Faker::Comnpany.russian_tax_number(region: 'AZ')
|
|
613
|
+
# Faker::Comnpany.russian_tax_number(region: 'AZ', type: false)
|
|
614
|
+
def inn_number(region, type)
|
|
615
|
+
n10 = [2, 4, 10, 3, 5, 9, 4, 6, 8]
|
|
616
|
+
n11 = [7, 2, 4, 10, 3, 5, 9, 4, 6, 8]
|
|
617
|
+
n12 = [3, 7, 2, 4, 10, 3, 5, 9, 4, 6, 8]
|
|
618
|
+
|
|
619
|
+
region = format('%.2d', rand(0o1..92)) if region.nil?
|
|
620
|
+
checksum = if type == :legal
|
|
621
|
+
number = region.to_s + rand(1_000_000..9_999_999).to_s
|
|
622
|
+
inn_checksum(n10, number)
|
|
623
|
+
else
|
|
624
|
+
number = region.to_s + rand(10_000_000..99_999_999).to_s
|
|
625
|
+
inn_checksum(n11, number) + inn_checksum(n12, number + inn_checksum(n11, number))
|
|
626
|
+
end
|
|
627
|
+
|
|
628
|
+
number + checksum
|
|
629
|
+
end
|
|
630
|
+
|
|
631
|
+
def inn_checksum(factor, number)
|
|
632
|
+
(
|
|
633
|
+
factor.map.with_index.reduce(0) do |v, i|
|
|
634
|
+
v + i[0] * number[i[1]].to_i
|
|
635
|
+
end % 11 % 10
|
|
636
|
+
).to_s
|
|
637
|
+
end
|
|
638
|
+
|
|
639
|
+
def spanish_cif_control_digit(organization_type, code)
|
|
640
|
+
letters = %w[J A B C D E F G H I]
|
|
641
|
+
|
|
642
|
+
control = code.chars.each_with_index.inject(0) do |sum, (value, index)|
|
|
643
|
+
if (index + 1).even?
|
|
644
|
+
sum + value.to_i
|
|
645
|
+
else
|
|
646
|
+
sum + spanish_b_algorithm(value.to_i)
|
|
647
|
+
end
|
|
648
|
+
end
|
|
649
|
+
|
|
650
|
+
control = control.to_s[-1].to_i
|
|
651
|
+
control = 10 - control unless control.zero?
|
|
652
|
+
|
|
653
|
+
%w[A B C D E F G H J U V].include?(organization_type) ? control : letters[control]
|
|
654
|
+
end
|
|
655
|
+
|
|
656
|
+
def spanish_b_algorithm(value)
|
|
657
|
+
result = value.to_i * 2
|
|
658
|
+
|
|
659
|
+
return result if result < 10
|
|
660
|
+
|
|
661
|
+
result.to_s[0].to_i + result.to_s[1].to_i
|
|
662
|
+
end
|
|
663
|
+
|
|
664
|
+
def calculate_gst_checksum(state_code, taxpayer_number, registration_number)
|
|
665
|
+
gst_base = "#{state_code}#{taxpayer_number}#{registration_number}"
|
|
666
|
+
chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'.chars
|
|
667
|
+
values = gst_base.upcase.chars
|
|
668
|
+
sum = values.map.with_index do |char, index|
|
|
669
|
+
product = chars.index(char) * (index.odd? ? 2 : 1)
|
|
670
|
+
(product / chars.length).floor + (product % chars.length)
|
|
671
|
+
end.reduce(:+)
|
|
672
|
+
|
|
673
|
+
checksum = (chars.length - (sum % chars.length)) % chars.length
|
|
674
|
+
chars[checksum]
|
|
675
|
+
end
|
|
494
676
|
end
|
|
495
677
|
end
|
|
496
678
|
end
|