faker 2.2.0 → 3.2.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 +1298 -24
- data/History.md +5 -5
- data/README.md +239 -104
- data/lib/faker/blockchain/aeternity.rb +70 -0
- data/lib/faker/blockchain/bitcoin.rb +28 -2
- data/lib/faker/blockchain/ethereum.rb +11 -1
- data/lib/faker/blockchain/tezos.rb +93 -9
- data/lib/faker/books/book.rb +36 -0
- data/lib/faker/books/culture_series.rb +49 -0
- data/lib/faker/books/dune.rb +73 -17
- data/lib/faker/books/lovecraft.rb +186 -57
- data/lib/faker/books/the_kingkiller_chronicle.rb +61 -0
- data/lib/faker/creature/animal.rb +9 -0
- data/lib/faker/creature/bird.rb +203 -0
- data/lib/faker/creature/cat.rb +27 -0
- data/lib/faker/creature/dog.rb +72 -0
- data/lib/faker/creature/horse.rb +18 -0
- data/lib/faker/default/address.rb +253 -33
- data/lib/faker/default/adjective.rb +35 -0
- data/lib/faker/default/alphanumeric.rb +27 -22
- data/lib/faker/default/ancient.rb +36 -0
- data/lib/faker/default/app.rb +46 -16
- data/lib/faker/default/appliance.rb +18 -0
- data/lib/faker/default/artist.rb +9 -0
- data/lib/faker/default/avatar.rb +32 -24
- data/lib/faker/default/bank.rb +118 -29
- data/lib/faker/default/barcode.rb +165 -0
- data/lib/faker/default/beer.rb +75 -3
- data/lib/faker/default/blood.rb +48 -0
- data/lib/faker/default/boolean.rb +13 -6
- data/lib/faker/default/bossa_nova.rb +18 -0
- data/lib/faker/default/business.rb +27 -0
- data/lib/faker/default/camera.rb +46 -0
- data/lib/faker/default/cannabis.rb +90 -0
- data/lib/faker/default/chile_rut.rb +62 -26
- data/lib/faker/default/chuck_norris.rb +13 -2
- data/lib/faker/default/code.rb +162 -58
- data/lib/faker/default/coffee.rb +45 -0
- data/lib/faker/default/coin.rb +18 -0
- data/lib/faker/default/color.rb +123 -5
- data/lib/faker/default/commerce.rb +105 -37
- data/lib/faker/default/company.rb +446 -34
- 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 +44 -4
- data/lib/faker/default/crypto_coin.rb +48 -18
- data/lib/faker/default/currency.rb +27 -0
- data/lib/faker/default/date.rb +149 -52
- data/lib/faker/default/dc_comics.rb +45 -0
- data/lib/faker/default/demographic.rb +58 -6
- data/lib/faker/default/dessert.rb +27 -0
- data/lib/faker/default/device.rb +54 -0
- data/lib/faker/default/driving_licence.rb +85 -28
- data/lib/faker/default/drone.rb +332 -0
- data/lib/faker/default/educator.rb +73 -6
- data/lib/faker/default/electrical_components.rb +27 -0
- data/lib/faker/default/emotion.rb +33 -0
- data/lib/faker/default/esport.rb +45 -0
- data/lib/faker/default/file.rb +53 -38
- data/lib/faker/default/finance.rb +75 -8
- data/lib/faker/default/food.rb +93 -3
- data/lib/faker/default/funny_name.rb +45 -0
- data/lib/faker/default/gender.rb +31 -0
- data/lib/faker/default/greek_philosophers.rb +18 -0
- data/lib/faker/default/hacker.rb +59 -1
- data/lib/faker/default/hipster.rb +106 -81
- data/lib/faker/default/hobby.rb +22 -0
- data/lib/faker/default/house.rb +18 -0
- data/lib/faker/default/html.rb +230 -0
- data/lib/faker/default/id_number.rb +276 -18
- data/lib/faker/default/industry_segments.rb +36 -0
- data/lib/faker/default/internet.rb +442 -147
- data/lib/faker/default/internet_http.rb +48 -0
- data/lib/faker/default/invoice.rb +37 -29
- data/lib/faker/default/job.rb +36 -0
- data/lib/faker/default/json.rb +61 -30
- data/lib/faker/default/kpop.rb +54 -0
- data/lib/faker/default/lorem.rb +184 -121
- data/lib/faker/default/lorem_flickr.rb +69 -68
- data/lib/faker/default/markdown.rb +97 -15
- data/lib/faker/default/marketing.rb +9 -0
- data/lib/faker/default/measurement.rb +101 -50
- data/lib/faker/default/military.rb +71 -0
- data/lib/faker/default/mountain.rb +33 -0
- data/lib/faker/default/name.rb +99 -6
- data/lib/faker/default/nation.rb +45 -5
- data/lib/faker/default/nato_phonetic_alphabet.rb +9 -0
- data/lib/faker/default/nhs.rb +21 -7
- data/lib/faker/default/number.rb +160 -91
- data/lib/faker/default/omniauth.rb +199 -137
- data/lib/faker/default/phone_number.rb +89 -11
- data/lib/faker/default/placeholdit.rb +23 -25
- data/lib/faker/default/programming_language.rb +18 -0
- data/lib/faker/default/relationship.rb +47 -7
- data/lib/faker/default/religion.rb +6 -0
- data/lib/faker/default/restaurant.rb +54 -2
- data/lib/faker/default/science.rb +135 -0
- data/lib/faker/default/slack_emoji.rb +81 -0
- data/lib/faker/default/source.rb +46 -22
- data/lib/faker/default/south_africa.rb +90 -0
- data/lib/faker/default/space.rb +128 -1
- data/lib/faker/default/string.rb +18 -9
- data/lib/faker/default/stripe.rb +68 -27
- data/lib/faker/default/subscription.rb +45 -0
- data/lib/faker/default/superhero.rb +45 -0
- data/lib/faker/default/tea.rb +41 -0
- data/lib/faker/default/team.rb +45 -0
- data/lib/faker/default/time.rb +84 -68
- data/lib/faker/default/twitter.rb +57 -47
- data/lib/faker/default/types.rb +90 -41
- data/lib/faker/default/university.rb +45 -0
- data/lib/faker/default/vehicle.rb +223 -60
- data/lib/faker/default/verb.rb +45 -0
- data/lib/faker/default/vulnerability_identifier.rb +23 -0
- data/lib/faker/default/world_cup.rb +52 -16
- 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 +61 -6
- data/lib/faker/games/elder_scrolls.rb +98 -0
- data/lib/faker/games/fallout.rb +37 -0
- data/lib/faker/games/final_fantasy_xiv.rb +73 -0
- data/lib/faker/games/game.rb +27 -0
- data/lib/faker/games/half_life.rb +27 -0
- data/lib/faker/games/heroes.rb +40 -0
- data/lib/faker/games/heroes_of_the_storm.rb +48 -1
- data/lib/faker/games/league_of_legends.rb +54 -0
- data/lib/faker/games/minecraft.rb +113 -0
- data/lib/faker/games/myst.rb +45 -0
- data/lib/faker/games/overwatch.rb +27 -0
- data/lib/faker/games/pokemon.rb +27 -0
- data/lib/faker/games/sonic_the_hedgehog.rb +27 -0
- data/lib/faker/games/street_fighter.rb +61 -0
- data/lib/faker/games/super_mario.rb +48 -0
- data/lib/faker/games/super_smash_bros.rb +18 -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 +93 -0
- data/lib/faker/games/world_of_warcraft.rb +44 -1
- data/lib/faker/games/zelda.rb +37 -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 +35 -0
- data/lib/faker/japanese_media/fullmetal_alchemist_brotherhood.rb +48 -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 +55 -1
- data/lib/faker/japanese_media/studio_ghibli.rb +48 -0
- data/lib/faker/japanese_media/sword_art_online.rb +36 -0
- data/lib/faker/locations/australia.rb +47 -0
- data/lib/faker/movies/avatar.rb +49 -0
- data/lib/faker/movies/back_to_the_future.rb +28 -0
- data/lib/faker/movies/departed.rb +49 -0
- data/lib/faker/movies/ghostbusters.rb +28 -0
- data/lib/faker/movies/hackers.rb +48 -0
- data/lib/faker/movies/harry_potter.rb +54 -0
- data/lib/faker/movies/hitchhikers_guide_to_the_galaxy.rb +69 -0
- data/lib/faker/movies/hobbit.rb +41 -4
- data/lib/faker/movies/how_to_train_your_dragon.rb +48 -0
- data/lib/faker/movies/lebowski.rb +27 -0
- data/lib/faker/movies/lord_of_the_rings.rb +31 -3
- data/lib/faker/movies/movie.rb +22 -0
- data/lib/faker/movies/princess_bride.rb +19 -0
- data/lib/faker/movies/room.rb +63 -0
- data/lib/faker/movies/star_wars.rb +170 -11
- data/lib/faker/movies/tron.rb +161 -0
- data/lib/faker/movies/v_for_vendetta.rb +29 -0
- data/lib/faker/music/grateful_dead.rb +18 -0
- data/lib/faker/music/hiphop.rb +48 -0
- data/lib/faker/music/music.rb +102 -4
- data/lib/faker/music/opera.rb +273 -1
- data/lib/faker/music/pearl_jam.rb +50 -0
- data/lib/faker/music/phish.rb +36 -1
- data/lib/faker/music/prince.rb +64 -0
- data/lib/faker/music/rock_band.rb +21 -0
- data/lib/faker/music/rush.rb +37 -0
- data/lib/faker/music/show.rb +49 -0
- data/lib/faker/music/smashing_pumpkins.rb +64 -0
- data/lib/faker/music/umphreys_mcgee.rb +9 -0
- data/lib/faker/quotes/chiquito.rb +80 -0
- data/lib/faker/quotes/quote.rb +93 -1
- data/lib/faker/quotes/rajnikanth.rb +27 -0
- data/lib/faker/quotes/shakespeare.rb +70 -0
- data/lib/faker/religion/bible.rb +50 -0
- data/lib/faker/sports/basketball.rb +36 -0
- data/lib/faker/sports/chess.rb +90 -0
- data/lib/faker/sports/football.rb +45 -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 +22 -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/bojack_horseman.rb +28 -0
- data/lib/faker/tv_shows/breaking_bad.rb +18 -0
- data/lib/faker/tv_shows/brooklyn_nine_nine.rb +38 -0
- data/lib/faker/tv_shows/buffy.rb +60 -2
- data/lib/faker/tv_shows/community.rb +19 -0
- data/lib/faker/tv_shows/dr_who.rb +78 -2
- data/lib/faker/tv_shows/dumb_and_dumber.rb +28 -0
- data/lib/faker/tv_shows/family_guy.rb +28 -0
- data/lib/faker/tv_shows/final_space.rb +51 -0
- data/lib/faker/tv_shows/friends.rb +27 -0
- data/lib/faker/tv_shows/futurama.rb +65 -0
- data/lib/faker/tv_shows/game_of_thrones.rb +46 -0
- data/lib/faker/tv_shows/hey_arnold.rb +27 -0
- data/lib/faker/tv_shows/how_i_met_your_mother.rb +37 -0
- data/lib/faker/tv_shows/michael_scott.rb +10 -0
- data/lib/faker/tv_shows/new_girl.rb +19 -0
- data/lib/faker/tv_shows/parks_and_rec.rb +18 -0
- data/lib/faker/tv_shows/rick_and_morty.rb +28 -0
- data/lib/faker/tv_shows/ru_paul.rb +18 -0
- data/lib/faker/tv_shows/seinfeld.rb +28 -0
- data/lib/faker/tv_shows/silicon_valley.rb +75 -0
- data/lib/faker/tv_shows/simpsons.rb +42 -0
- data/lib/faker/tv_shows/south_park.rb +34 -0
- data/lib/faker/tv_shows/spongebob.rb +50 -0
- data/lib/faker/tv_shows/star_trek.rb +36 -0
- data/lib/faker/tv_shows/stargate.rb +28 -0
- data/lib/faker/tv_shows/stranger_things.rb +19 -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_expanse.rb +36 -0
- data/lib/faker/tv_shows/the_fresh_prince_of_bel_air.rb +43 -2
- data/lib/faker/tv_shows/the_it_crowd.rb +37 -0
- data/lib/faker/tv_shows/the_office.rb +37 -0
- data/lib/faker/tv_shows/the_thick_of_it.rb +28 -0
- data/lib/faker/tv_shows/twin_peaks.rb +28 -0
- data/lib/faker/tv_shows/venture_bros.rb +38 -0
- data/lib/faker/version.rb +2 -2
- data/lib/faker.rb +58 -58
- data/lib/helpers/base58.rb +1 -1
- data/lib/helpers/char.rb +22 -27
- data/lib/helpers/positional_generator.rb +480 -0
- data/lib/helpers/unique_generator.rb +17 -13
- data/lib/locales/README.md +18 -2
- data/lib/locales/ar.yml +6 -1
- data/lib/locales/bg.yml +3 -3
- data/lib/locales/ca.yml +0 -8
- data/lib/locales/da-DK.yml +6 -4
- data/lib/locales/de-AT.yml +7 -6
- data/lib/locales/de-CH.yml +6028 -9
- data/lib/locales/de.yml +12 -6
- data/lib/locales/en/address.yml +8 -3
- 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 +107 -0
- data/lib/locales/en/avatar.yml +31 -0
- data/lib/locales/en/bank.yml +1 -1
- 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/chiquito.yml +64 -0
- data/lib/locales/en/clash_of_clan.yml +101 -0
- data/lib/locales/en/coffee.yml +1 -1
- data/lib/locales/en/color.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/doraemon.yml +286 -0
- data/lib/locales/en/dota.yml +651 -63
- data/lib/locales/en/dr_who.yml +1 -1
- 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 +75 -6
- 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 +77 -1
- data/lib/locales/en/fma_brotherhood.yml +78 -0
- data/lib/locales/en/food.yml +1066 -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/futurama.yml +344 -0
- data/lib/locales/en/game.yml +11 -0
- data/lib/locales/en/gender.yml +1 -0
- data/lib/locales/en/hackers.yml +53 -0
- data/lib/locales/en/half_life.yml +84 -3
- 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/internet.yml +140 -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 +6 -5
- 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 -37
- data/lib/locales/en/pearl_jam.yml +213 -0
- data/lib/locales/en/phish.yml +392 -1
- data/lib/locales/en/phone_number.yml +1 -1
- 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/rajnikanth.yml +77 -0
- data/lib/locales/en/rock_band.yml +1 -0
- data/lib/locales/en/room.yml +68 -0
- data/lib/locales/en/rush.yml +32 -0
- data/lib/locales/en/science.yml +481 -3
- data/lib/locales/en/shakespeare.yml +23 -26
- data/lib/locales/en/show.yml +597 -0
- 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/stripe.yml +3 -3
- 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 -5
- 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/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 +50 -10
- data/lib/locales/en-CA.yml +5 -1
- data/lib/locales/en-GB.yml +3 -2
- data/lib/locales/en-IND.yml +2 -1
- data/lib/locales/en-MS.yml +3 -1
- data/lib/locales/en-NEP.yml +5 -2
- data/lib/locales/en-NG.yml +1 -0
- data/lib/locales/en-NZ.yml +135 -8
- data/lib/locales/en-PAK.yml +3 -1
- data/lib/locales/en-SG.yml +3 -1
- data/lib/locales/en-TH.yml +360 -0
- data/lib/locales/en-UG.yml +1 -0
- data/lib/locales/en-US.yml +38 -12
- data/lib/locales/en-ZA.yml +2 -2
- data/lib/locales/en-au-ocker.yml +4 -1
- data/lib/locales/en.yml +0 -3
- data/lib/locales/es-AR.yml +4601 -0
- data/lib/locales/es-MX.yml +4 -1
- data/lib/locales/es.yml +58 -2
- data/lib/locales/fa.yml +2 -0
- 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 +5 -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 +28 -11
- data/lib/locales/fr-CH.yml +3 -3
- data/lib/locales/fr.yml +1 -112
- data/lib/locales/hy.yml +3 -7
- data/lib/locales/id.yml +5 -2
- data/lib/locales/it.yml +3 -1
- 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/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 +95 -2
- data/lib/locales/lt.yml +34 -0
- data/lib/locales/lv.yml +1 -1
- data/lib/locales/mi-NZ.yml +283 -0
- data/lib/locales/nb-NO.yml +5 -2
- data/lib/locales/nl.yml +1 -0
- data/lib/locales/pl.yml +2 -2
- data/lib/locales/pt-BR.yml +33 -4
- data/lib/locales/pt.yml +6 -4
- data/lib/locales/ru.yml +43 -1
- data/lib/locales/sk.yml +5 -2
- data/lib/locales/sv.yml +1 -0
- data/lib/locales/th.yml +380 -0
- data/lib/locales/tr.yml +1 -0
- data/lib/locales/uk.yml +10 -5
- data/lib/locales/vi.yml +1 -0
- data/lib/locales/zh-CN/bank.yml +17 -0
- data/lib/locales/zh-CN.yml +2 -1
- data/lib/locales/zh-TW.yml +2 -1
- metadata +201 -109
- data/lib/faker/default/fillmurray.rb +0 -30
- data/lib/faker/default/lorem_pixel.rb +0 -63
- 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 -98
|
@@ -5,65 +5,198 @@ module Faker
|
|
|
5
5
|
flexible :company
|
|
6
6
|
|
|
7
7
|
class << self
|
|
8
|
+
##
|
|
9
|
+
# Produces a company name.
|
|
10
|
+
#
|
|
11
|
+
# @return [String]
|
|
12
|
+
#
|
|
13
|
+
# @example
|
|
14
|
+
# Faker::Company.name #=> "Roberts Inc"
|
|
15
|
+
#
|
|
16
|
+
# @faker.version 1.6.0
|
|
8
17
|
def name
|
|
9
18
|
parse('company.name')
|
|
10
19
|
end
|
|
11
20
|
|
|
21
|
+
##
|
|
22
|
+
# Produces a company suffix.
|
|
23
|
+
#
|
|
24
|
+
# @return [String]
|
|
25
|
+
#
|
|
26
|
+
# @example
|
|
27
|
+
# Faker::Company.suffix #=> "LLC"
|
|
28
|
+
#
|
|
29
|
+
# @faker.version 1.6.0
|
|
12
30
|
def suffix
|
|
13
31
|
fetch('company.suffix')
|
|
14
32
|
end
|
|
15
33
|
|
|
34
|
+
##
|
|
35
|
+
# Produces a company industry.
|
|
36
|
+
#
|
|
37
|
+
# @return [String]
|
|
38
|
+
#
|
|
39
|
+
# @example
|
|
40
|
+
# Faker::Company.industry #=> "Food & Beverages"
|
|
41
|
+
#
|
|
42
|
+
# @faker.version 1.6.0
|
|
16
43
|
def industry
|
|
17
44
|
fetch('company.industry')
|
|
18
45
|
end
|
|
19
46
|
|
|
20
|
-
|
|
47
|
+
##
|
|
48
|
+
# Produces a company catch phrase.
|
|
49
|
+
#
|
|
50
|
+
# @return [String]
|
|
51
|
+
#
|
|
52
|
+
# @example
|
|
53
|
+
# Faker::Company.catch_phrase #=> "Grass-roots grid-enabled portal"
|
|
54
|
+
#
|
|
55
|
+
# @faker.version 1.6.0
|
|
21
56
|
def catch_phrase
|
|
22
57
|
translate('faker.company.buzzwords').collect { |list| sample(list) }.join(' ')
|
|
23
58
|
end
|
|
24
59
|
|
|
60
|
+
##
|
|
61
|
+
# Produces a company buzzword.
|
|
62
|
+
#
|
|
63
|
+
# @return [String]
|
|
64
|
+
#
|
|
65
|
+
# @example
|
|
66
|
+
# Faker::Company.buzzword #=> "flexibility"
|
|
67
|
+
#
|
|
68
|
+
# @faker.version 1.8.7
|
|
25
69
|
def buzzword
|
|
26
70
|
sample(translate('faker.company.buzzwords').flatten)
|
|
27
71
|
end
|
|
28
72
|
|
|
73
|
+
##
|
|
74
|
+
# Produces some company BS.
|
|
75
|
+
#
|
|
76
|
+
# @return [String]
|
|
77
|
+
#
|
|
78
|
+
# @example
|
|
79
|
+
# Faker::Company.bs #=> "empower customized functionalities"
|
|
80
|
+
#
|
|
81
|
+
# @faker.version 1.6.0
|
|
29
82
|
# When a straight answer won't do, BS to the rescue!
|
|
30
83
|
def bs
|
|
31
84
|
translate('faker.company.bs').collect { |list| sample(list) }.join(' ')
|
|
32
85
|
end
|
|
33
86
|
|
|
87
|
+
##
|
|
88
|
+
# Produces a company EIN (Employer Identification Number).
|
|
89
|
+
#
|
|
90
|
+
# @return [String]
|
|
91
|
+
#
|
|
92
|
+
# @example
|
|
93
|
+
# Faker::Company.ein #=> "07-4009024"
|
|
94
|
+
#
|
|
95
|
+
# @faker.version 1.6.0
|
|
34
96
|
def ein
|
|
35
97
|
format('%09d', rand(10**9)).gsub(/(\d{2})(\d{7})/, '\\1-\\2')
|
|
36
98
|
end
|
|
37
99
|
|
|
100
|
+
##
|
|
101
|
+
# Produces a company duns number.
|
|
102
|
+
#
|
|
103
|
+
# @return [String]
|
|
104
|
+
#
|
|
105
|
+
# @example
|
|
106
|
+
# Faker::Company.duns_number #=> "70-655-5105"
|
|
107
|
+
#
|
|
108
|
+
# @faker.version 1.6.0
|
|
38
109
|
def duns_number
|
|
39
110
|
format('%09d', rand(10**9)).gsub(/(\d{2})(\d{3})(\d{4})/, '\\1-\\2-\\3')
|
|
40
111
|
end
|
|
41
112
|
|
|
113
|
+
##
|
|
114
|
+
# Produces a company logo.
|
|
115
|
+
#
|
|
116
|
+
# @return [String]
|
|
117
|
+
#
|
|
118
|
+
# @example
|
|
119
|
+
# Faker::Company.logo #=> "https://pigment.github.io/fake-logos/logos/medium/color/12.png"
|
|
120
|
+
#
|
|
121
|
+
# @faker.version 1.8.7
|
|
42
122
|
# Get a random company logo url in PNG format.
|
|
43
123
|
def logo
|
|
44
124
|
rand_num = rand(1..13)
|
|
45
125
|
"https://pigment.github.io/fake-logos/logos/medium/color/#{rand_num}.png"
|
|
46
126
|
end
|
|
47
127
|
|
|
128
|
+
##
|
|
129
|
+
# Produces a company type.
|
|
130
|
+
#
|
|
131
|
+
# @return [String]
|
|
132
|
+
#
|
|
133
|
+
# @example
|
|
134
|
+
# Faker::Company.type #=> "Partnership"
|
|
135
|
+
#
|
|
136
|
+
# @faker.version 1.8.7
|
|
48
137
|
def type
|
|
49
138
|
fetch('company.type')
|
|
50
139
|
end
|
|
51
140
|
|
|
141
|
+
##
|
|
142
|
+
# Produces a company profession.
|
|
143
|
+
#
|
|
144
|
+
# @return [String]
|
|
145
|
+
#
|
|
146
|
+
# @example
|
|
147
|
+
# Faker::Company.profession #=> "factory worker"
|
|
148
|
+
#
|
|
149
|
+
# @faker.version 1.6.0
|
|
52
150
|
def profession
|
|
53
151
|
fetch('company.profession')
|
|
54
152
|
end
|
|
55
153
|
|
|
56
|
-
|
|
57
|
-
#
|
|
58
|
-
#
|
|
59
|
-
|
|
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
|
+
|
|
167
|
+
##
|
|
168
|
+
# Produces a company spanish organisation number.
|
|
169
|
+
#
|
|
170
|
+
# @return [String]
|
|
171
|
+
#
|
|
172
|
+
# @example
|
|
173
|
+
# Faker::Company.spanish_organisation_number #=> "D6819358"
|
|
174
|
+
#
|
|
175
|
+
# @faker.version 1.8.5
|
|
176
|
+
#
|
|
177
|
+
# Get a random Spanish organization number. See more here https://es.wikipedia.org/wiki/N%C3%BAmero_de_identificaci%C3%B3n_fiscal
|
|
178
|
+
def spanish_organisation_number(organization_type: nil)
|
|
60
179
|
# Valid leading character: A, B, C, D, E, F, G, H, J, N, P, Q, R, S, U, V, W
|
|
61
|
-
# 7 digit numbers
|
|
180
|
+
# format: 1 digit letter (organization type) + 7 digit numbers + 1 digit control (letter or number based on
|
|
181
|
+
# organization type)
|
|
62
182
|
letters = %w[A B C D E F G H J N P Q R S U V W]
|
|
63
|
-
|
|
64
|
-
|
|
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
|
|
65
189
|
end
|
|
66
190
|
|
|
191
|
+
##
|
|
192
|
+
# Produces a company swedish organisation number.
|
|
193
|
+
#
|
|
194
|
+
# @return [String]
|
|
195
|
+
#
|
|
196
|
+
# @example
|
|
197
|
+
# Faker::Company.swedish_organisation_number #=> "3866029808"
|
|
198
|
+
#
|
|
199
|
+
# @faker.version 1.7.0
|
|
67
200
|
# Get a random Swedish organization number. See more here https://sv.wikipedia.org/wiki/Organisationsnummer
|
|
68
201
|
def swedish_organisation_number
|
|
69
202
|
# Valid leading digit: 1, 2, 3, 5, 6, 7, 8, 9
|
|
@@ -73,6 +206,15 @@ module Faker
|
|
|
73
206
|
base + luhn_algorithm(base).to_s
|
|
74
207
|
end
|
|
75
208
|
|
|
209
|
+
##
|
|
210
|
+
# Produces a company czech organisation number.
|
|
211
|
+
#
|
|
212
|
+
# @return [String]
|
|
213
|
+
#
|
|
214
|
+
# @example
|
|
215
|
+
# Faker::Company.czech_organisation_number #=> "90642741"
|
|
216
|
+
#
|
|
217
|
+
# @faker.version 1.9.1
|
|
76
218
|
def czech_organisation_number
|
|
77
219
|
sum = 0
|
|
78
220
|
base = []
|
|
@@ -84,18 +226,45 @@ module Faker
|
|
|
84
226
|
base.join
|
|
85
227
|
end
|
|
86
228
|
|
|
229
|
+
##
|
|
230
|
+
# Produces a company french siren number.
|
|
231
|
+
#
|
|
232
|
+
# @return [String]
|
|
233
|
+
#
|
|
234
|
+
# @example
|
|
235
|
+
# Faker::Company.french_siren_number #=> "163417827"
|
|
236
|
+
#
|
|
237
|
+
# @faker.version 1.8.5
|
|
87
238
|
# Get a random French SIREN number. See more here https://fr.wikipedia.org/wiki/Syst%C3%A8me_d%27identification_du_r%C3%A9pertoire_des_entreprises
|
|
88
239
|
def french_siren_number
|
|
89
240
|
base = (1..8).map { rand(10) }.join
|
|
90
241
|
base + luhn_algorithm(base).to_s
|
|
91
242
|
end
|
|
92
243
|
|
|
244
|
+
##
|
|
245
|
+
# Produces a company french siret number.
|
|
246
|
+
#
|
|
247
|
+
# @return [String]
|
|
248
|
+
#
|
|
249
|
+
# @example
|
|
250
|
+
# Faker::Company.french_siret_number #=> "76430067900496"
|
|
251
|
+
#
|
|
252
|
+
# @faker.version 1.8.5
|
|
93
253
|
def french_siret_number
|
|
94
254
|
location = rand(100).to_s.rjust(4, '0')
|
|
95
255
|
org_no = french_siren_number + location
|
|
96
256
|
org_no + luhn_algorithm(org_no).to_s
|
|
97
257
|
end
|
|
98
258
|
|
|
259
|
+
##
|
|
260
|
+
# Produces a company norwegian organisation number.
|
|
261
|
+
#
|
|
262
|
+
# @return [String]
|
|
263
|
+
#
|
|
264
|
+
# @example
|
|
265
|
+
# Faker::Company.norwegian_organisation_number #=> "842457173"
|
|
266
|
+
#
|
|
267
|
+
# @faker.version 1.8.0
|
|
99
268
|
# Get a random Norwegian organization number. Info: https://www.brreg.no/om-oss/samfunnsoppdraget-vart/registera-vare/einingsregisteret/organisasjonsnummeret/
|
|
100
269
|
def norwegian_organisation_number
|
|
101
270
|
# Valid leading digit: 8, 9
|
|
@@ -107,6 +276,15 @@ module Faker
|
|
|
107
276
|
base + mod11_check.to_s
|
|
108
277
|
end
|
|
109
278
|
|
|
279
|
+
##
|
|
280
|
+
# Produces a company australian business number.
|
|
281
|
+
#
|
|
282
|
+
# @return [String]
|
|
283
|
+
#
|
|
284
|
+
# @example
|
|
285
|
+
# Faker::Company.australian_business_number #=> "93579396170"
|
|
286
|
+
#
|
|
287
|
+
# @faker.version 1.6.4
|
|
110
288
|
def australian_business_number
|
|
111
289
|
base = format('%09d', rand(10**9))
|
|
112
290
|
abn = "00#{base}"
|
|
@@ -114,6 +292,15 @@ module Faker
|
|
|
114
292
|
(99 - (abn_checksum(abn) % 89)).to_s + base
|
|
115
293
|
end
|
|
116
294
|
|
|
295
|
+
##
|
|
296
|
+
# Produces a company polish taxpayer identification_number.
|
|
297
|
+
#
|
|
298
|
+
# @return [String]
|
|
299
|
+
#
|
|
300
|
+
# @example
|
|
301
|
+
# Faker::Company.polish_taxpayer_identification_number #=> "2767549463"
|
|
302
|
+
#
|
|
303
|
+
# @faker.version 1.9.1
|
|
117
304
|
# Get a random Polish taxpayer identification number More info https://pl.wikipedia.org/wiki/NIP
|
|
118
305
|
def polish_taxpayer_identification_number
|
|
119
306
|
result = []
|
|
@@ -122,16 +309,20 @@ module Faker
|
|
|
122
309
|
result = Array.new(3) { rand(1..9) } + Array.new(7) { rand(10) }
|
|
123
310
|
break if (weight_sum(result, weights) % 11) == result[9]
|
|
124
311
|
end
|
|
125
|
-
result.join
|
|
312
|
+
result.join
|
|
126
313
|
end
|
|
127
314
|
|
|
315
|
+
##
|
|
316
|
+
# Produces a company polish register of national economy.
|
|
317
|
+
#
|
|
318
|
+
# @return [String]
|
|
319
|
+
#
|
|
320
|
+
# @example
|
|
321
|
+
# Faker::Company.polish_register_of_national_economy #=> "788435970"
|
|
322
|
+
#
|
|
323
|
+
# @faker.version 1.9.1
|
|
128
324
|
# Get a random Polish register of national economy number. More info https://pl.wikipedia.org/wiki/REGON
|
|
129
|
-
def polish_register_of_national_economy(
|
|
130
|
-
if legacy_length != NOT_GIVEN
|
|
131
|
-
warn_with_uplevel 'Passing `length` with the 1st argument of `Company.polish_register_of_national_economy` is deprecated. Use keyword argument like `Company.polish_register_of_national_economy(length: ...)` instead.', uplevel: 1
|
|
132
|
-
length = legacy_length
|
|
133
|
-
end
|
|
134
|
-
|
|
325
|
+
def polish_register_of_national_economy(length: 9)
|
|
135
326
|
raise ArgumentError, 'Length should be 9 or 14' unless [9, 14].include? length
|
|
136
327
|
|
|
137
328
|
random_digits = []
|
|
@@ -139,31 +330,97 @@ module Faker
|
|
|
139
330
|
random_digits = Array.new(length) { rand(10) }
|
|
140
331
|
break if collect_regon_sum(random_digits) == random_digits.last
|
|
141
332
|
end
|
|
142
|
-
random_digits.join
|
|
333
|
+
random_digits.join
|
|
143
334
|
end
|
|
144
335
|
|
|
336
|
+
##
|
|
337
|
+
# Produces a company south african pty ltd registration number.
|
|
338
|
+
#
|
|
339
|
+
# @return [String]
|
|
340
|
+
#
|
|
341
|
+
# @example
|
|
342
|
+
# Faker::Company.south_african_pty_ltd_registration_number #=> "7043/2400717902/07"
|
|
343
|
+
#
|
|
344
|
+
# @faker.version 1.9.2
|
|
145
345
|
def south_african_pty_ltd_registration_number
|
|
146
|
-
|
|
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
|
|
147
352
|
end
|
|
148
353
|
|
|
354
|
+
##
|
|
355
|
+
# Produces a company south african close corporation registration number.
|
|
356
|
+
#
|
|
357
|
+
# @return [String]
|
|
358
|
+
#
|
|
359
|
+
# @example
|
|
360
|
+
# Faker::Company.south_african_close_corporation_registration_number #=> "CK38/5739937418/23"
|
|
361
|
+
#
|
|
362
|
+
# @faker.version 1.9.2
|
|
149
363
|
def south_african_close_corporation_registration_number
|
|
150
|
-
|
|
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
|
|
151
376
|
end
|
|
152
377
|
|
|
378
|
+
##
|
|
379
|
+
# Produces a company south african listed company registration number.
|
|
380
|
+
#
|
|
381
|
+
# @return [String]
|
|
382
|
+
#
|
|
383
|
+
# @example
|
|
384
|
+
# Faker::Company.south_african_listed_company_registration_number #=> "2512/87676/06"
|
|
385
|
+
#
|
|
386
|
+
# @faker.version 1.9.2
|
|
153
387
|
def south_african_listed_company_registration_number
|
|
154
|
-
|
|
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
|
|
155
394
|
end
|
|
156
395
|
|
|
396
|
+
##
|
|
397
|
+
# Produces a company south african trust registration number.
|
|
398
|
+
#
|
|
399
|
+
# @return [String]
|
|
400
|
+
#
|
|
401
|
+
# @example
|
|
402
|
+
# Faker::Company.south_african_trust_registration_number #=> "IT5673/937519896"
|
|
403
|
+
#
|
|
404
|
+
# @faker.version 1.9.2
|
|
157
405
|
def south_african_trust_registration_number
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
warn_with_uplevel 'Passing `formatted` with the 1st argument of `Company.brazilian_company_number` is deprecated. Use keyword argument like `Company.brazilian_company_number(formatted: ...)` instead.', uplevel: 1
|
|
164
|
-
formatted = legacy_formatted
|
|
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])
|
|
165
411
|
end
|
|
412
|
+
end
|
|
166
413
|
|
|
414
|
+
##
|
|
415
|
+
# Produces a company brazilian company number.
|
|
416
|
+
#
|
|
417
|
+
# @return [String]
|
|
418
|
+
#
|
|
419
|
+
# @example
|
|
420
|
+
# Faker::Company.brazilian_company_number #=> "37205322000500"
|
|
421
|
+
#
|
|
422
|
+
# @faker.version 1.9.2
|
|
423
|
+
def brazilian_company_number(formatted: false)
|
|
167
424
|
digits = Array.new(8) { Faker::Number.digit.to_i } + [0, 0, 0, Faker::Number.non_zero_digit.to_i]
|
|
168
425
|
|
|
169
426
|
factors = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2, 6].cycle
|
|
@@ -178,10 +435,90 @@ module Faker
|
|
|
178
435
|
formatted ? format('%s.%s.%s/%s-%s', *number.scan(/(\d{2})(\d{3})(\d{3})(\d{4})(\d{2})/).flatten) : number
|
|
179
436
|
end
|
|
180
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
|
+
|
|
454
|
+
##
|
|
455
|
+
# Produces a company sic code.
|
|
456
|
+
#
|
|
457
|
+
# @return [String]
|
|
458
|
+
#
|
|
459
|
+
# @example
|
|
460
|
+
# Faker::Company.sic_code #=> "7383"
|
|
461
|
+
#
|
|
462
|
+
# @faker.version 1.9.4
|
|
181
463
|
def sic_code
|
|
182
464
|
fetch('company.sic_code')
|
|
183
465
|
end
|
|
184
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
|
+
|
|
185
522
|
private
|
|
186
523
|
|
|
187
524
|
# Mod11 functionality from https://github.com/badmanski/mod11/blob/master/lib/mod11.rb
|
|
@@ -208,7 +545,7 @@ module Faker
|
|
|
208
545
|
def luhn_algorithm(number)
|
|
209
546
|
multiplications = []
|
|
210
547
|
|
|
211
|
-
number.to_s.reverse.
|
|
548
|
+
number.to_s.reverse.chars.each_with_index do |digit, i|
|
|
212
549
|
multiplications << if i.even?
|
|
213
550
|
digit.to_i * 2
|
|
214
551
|
else
|
|
@@ -224,13 +561,11 @@ module Faker
|
|
|
224
561
|
end
|
|
225
562
|
end
|
|
226
563
|
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
control_digit
|
|
564
|
+
if (sum % 10).zero?
|
|
565
|
+
0
|
|
566
|
+
else
|
|
567
|
+
(sum / 10 + 1) * 10 - sum
|
|
568
|
+
end
|
|
234
569
|
end
|
|
235
570
|
|
|
236
571
|
def abn_checksum(abn)
|
|
@@ -261,6 +596,83 @@ module Faker
|
|
|
261
596
|
end
|
|
262
597
|
sum
|
|
263
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
|
|
264
676
|
end
|
|
265
677
|
end
|
|
266
678
|
end
|