faker 1.8.2 → 2.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/CHANGELOG.md +1756 -10
- data/History.md +4 -4
- data/License.txt +2 -2
- data/README.md +328 -111
- data/bin/faker +5 -0
- data/lib/faker/blockchain/aeternity.rb +70 -0
- data/lib/faker/blockchain/bitcoin.rb +60 -0
- data/lib/faker/blockchain/ethereum.rb +26 -0
- data/lib/faker/blockchain/tezos.rb +135 -0
- data/lib/faker/books/book.rb +61 -0
- data/lib/faker/books/culture_series.rb +83 -0
- data/lib/faker/books/dune.rb +132 -0
- data/lib/faker/books/lovecraft.rb +280 -0
- data/lib/faker/books/the_kingkiller_chronicle.rb +61 -0
- data/lib/faker/creature/animal.rb +22 -0
- data/lib/faker/creature/bird.rb +203 -0
- data/lib/faker/creature/cat.rb +50 -0
- data/lib/faker/creature/dog.rb +115 -0
- data/lib/faker/creature/horse.rb +37 -0
- data/lib/faker/default/address.rb +368 -0
- data/lib/faker/default/adjective.rb +35 -0
- data/lib/faker/default/alphanumeric.rb +73 -0
- data/lib/faker/default/ancient.rb +59 -0
- data/lib/faker/default/app.rb +77 -0
- data/lib/faker/default/appliance.rb +33 -0
- data/lib/faker/default/artist.rb +20 -0
- data/lib/faker/default/avatar.rb +60 -0
- data/lib/faker/default/bank.rb +207 -0
- data/lib/faker/default/barcode.rb +165 -0
- data/lib/faker/default/beer.rb +113 -0
- data/lib/faker/default/blood.rb +48 -0
- data/lib/faker/default/boolean.rb +26 -0
- data/lib/faker/default/bossa_nova.rb +33 -0
- data/lib/faker/default/business.rb +50 -0
- data/lib/faker/default/camera.rb +46 -0
- data/lib/faker/default/cannabis.rb +135 -0
- data/lib/faker/default/chile_rut.rb +102 -0
- data/lib/faker/default/chuck_norris.rb +25 -0
- data/lib/faker/default/code.rb +282 -0
- data/lib/faker/default/coffee.rb +82 -0
- data/lib/faker/default/coin.rb +33 -0
- data/lib/faker/default/color.rb +79 -0
- data/lib/faker/default/commerce.rb +171 -0
- data/lib/faker/default/company.rb +579 -0
- data/lib/faker/default/compass.rb +202 -0
- data/lib/faker/default/computer.rb +63 -0
- data/lib/faker/default/construction.rb +83 -0
- data/lib/faker/default/cosmere.rb +138 -0
- data/lib/faker/default/crypto.rb +61 -0
- data/lib/faker/default/crypto_coin.rb +94 -0
- data/lib/faker/default/currency.rb +46 -0
- data/lib/faker/default/date.rb +186 -0
- data/lib/faker/default/dc_comics.rb +70 -0
- data/lib/faker/default/demographic.rb +98 -0
- data/lib/faker/default/dessert.rb +48 -0
- data/lib/faker/default/device.rb +85 -0
- data/lib/faker/default/driving_licence.rb +131 -0
- data/lib/faker/default/drone.rb +332 -0
- data/lib/faker/default/educator.rb +102 -0
- data/lib/faker/default/electrical_components.rb +48 -0
- data/lib/faker/default/emotion.rb +33 -0
- data/lib/faker/default/esport.rb +72 -0
- data/lib/faker/default/file.rb +100 -0
- data/lib/faker/default/fillmurray.rb +45 -0
- data/lib/faker/default/finance.rb +116 -0
- data/lib/faker/default/food.rb +126 -0
- data/lib/faker/default/funny_name.rb +90 -0
- data/lib/faker/default/gender.rb +46 -0
- data/lib/faker/default/greek_philosophers.rb +33 -0
- data/lib/faker/default/hacker.rb +103 -0
- data/lib/faker/default/hipster.rb +194 -0
- data/lib/faker/default/hobby.rb +22 -0
- data/lib/faker/default/house.rb +33 -0
- data/lib/faker/default/id_number.rb +418 -0
- data/lib/faker/default/industry_segments.rb +61 -0
- data/lib/faker/default/internet.rb +629 -0
- data/lib/faker/default/internet_http.rb +48 -0
- data/lib/faker/default/invoice.rb +136 -0
- data/lib/faker/default/job.rb +61 -0
- data/lib/faker/default/json.rb +143 -0
- data/lib/faker/default/kpop.rb +85 -0
- data/lib/faker/default/lorem.rb +302 -0
- data/lib/faker/default/lorem_flickr.rb +138 -0
- data/lib/faker/default/lorem_pixel.rb +70 -0
- data/lib/faker/default/markdown.rb +175 -0
- data/lib/faker/default/marketing.rb +22 -0
- data/lib/faker/default/measurement.rb +207 -0
- data/lib/faker/default/military.rb +98 -0
- data/lib/faker/default/mountain.rb +33 -0
- data/lib/faker/default/name.rb +156 -0
- data/lib/faker/default/nation.rb +73 -0
- data/lib/faker/default/nato_phonetic_alphabet.rb +20 -0
- data/lib/faker/default/nhs.rb +57 -0
- data/lib/faker/default/number.rb +289 -0
- data/lib/faker/default/omniauth.rb +505 -0
- data/lib/faker/default/phone_number.rb +137 -0
- data/lib/faker/default/placeholdit.rb +63 -0
- data/lib/faker/default/programming_language.rb +33 -0
- data/lib/faker/default/relationship.rb +91 -0
- data/lib/faker/default/religion.rb +6 -0
- data/lib/faker/default/restaurant.rb +63 -0
- data/lib/faker/default/science.rb +154 -0
- data/lib/faker/default/slack_emoji.rb +124 -0
- data/lib/faker/default/source.rb +76 -0
- data/lib/faker/default/south_africa.rb +141 -0
- data/lib/faker/default/space.rb +191 -0
- data/lib/faker/default/string.rb +63 -0
- data/lib/faker/default/stripe.rb +142 -0
- data/lib/faker/default/subscription.rb +70 -0
- data/lib/faker/default/superhero.rb +72 -0
- data/lib/faker/default/tea.rb +41 -0
- data/lib/faker/default/team.rb +74 -0
- data/lib/faker/default/time.rb +177 -0
- data/lib/faker/default/twitter.rb +223 -0
- data/lib/faker/default/types.rb +182 -0
- data/lib/faker/default/university.rb +75 -0
- data/lib/faker/default/vehicle.rb +355 -0
- data/lib/faker/default/verb.rb +72 -0
- data/lib/faker/default/vulnerability_identifier.rb +23 -0
- data/lib/faker/default/world_cup.rb +86 -0
- 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 +136 -0
- data/lib/faker/games/dota.rb +93 -0
- data/lib/faker/games/elder_scrolls.rb +139 -0
- data/lib/faker/games/fallout.rb +62 -0
- data/lib/faker/games/game.rb +48 -0
- data/lib/faker/games/half_life.rb +48 -0
- data/lib/faker/games/heroes.rb +61 -0
- data/lib/faker/games/heroes_of_the_storm.rb +72 -0
- data/lib/faker/games/league_of_legends.rb +87 -0
- data/lib/faker/games/minecraft.rb +113 -0
- data/lib/faker/games/myst.rb +74 -0
- data/lib/faker/games/overwatch.rb +48 -0
- data/lib/faker/games/pokemon.rb +48 -0
- data/lib/faker/games/sonic_the_hedgehog.rb +48 -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 +35 -0
- data/lib/faker/games/touhou.rb +75 -0
- data/lib/faker/games/warhammer_fantasy.rb +74 -0
- data/lib/faker/games/witcher.rb +126 -0
- data/lib/faker/games/world_of_warcraft.rb +60 -0
- data/lib/faker/games/zelda.rb +62 -0
- data/lib/faker/japanese_media/conan.rb +48 -0
- data/lib/faker/japanese_media/doraemon.rb +48 -0
- data/lib/faker/japanese_media/dragon_ball.rb +48 -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 +87 -0
- data/lib/faker/japanese_media/studio_ghibli.rb +48 -0
- data/lib/faker/japanese_media/sword_art_online.rb +61 -0
- data/lib/faker/locations/australia.rb +47 -0
- data/lib/faker/movies/back_to_the_future.rb +49 -0
- data/lib/faker/movies/departed.rb +49 -0
- data/lib/faker/movies/ghostbusters.rb +49 -0
- data/lib/faker/movies/harry_potter.rb +87 -0
- data/lib/faker/movies/hitchhikers_guide_to_the_galaxy.rb +106 -0
- data/lib/faker/movies/hobbit.rb +62 -0
- data/lib/faker/movies/how_to_train_your_dragon.rb +48 -0
- data/lib/faker/movies/lebowski.rb +48 -0
- data/lib/faker/movies/lord_of_the_rings.rb +49 -0
- data/lib/faker/movies/movie.rb +33 -0
- data/lib/faker/movies/princess_bride.rb +36 -0
- data/lib/faker/movies/room.rb +63 -0
- data/lib/faker/movies/star_wars.rb +273 -0
- data/lib/faker/movies/tron.rb +161 -0
- data/lib/faker/movies/v_for_vendetta.rb +50 -0
- data/lib/faker/music/grateful_dead.rb +37 -0
- data/lib/faker/music/hiphop.rb +48 -0
- data/lib/faker/music/music.rb +145 -0
- data/lib/faker/music/opera.rb +298 -0
- data/lib/faker/music/pearl_jam.rb +50 -0
- data/lib/faker/music/phish.rb +48 -0
- data/lib/faker/music/prince.rb +64 -0
- data/lib/faker/music/rock_band.rb +34 -0
- data/lib/faker/music/rush.rb +37 -0
- data/lib/faker/music/show.rb +49 -0
- data/lib/faker/music/umphreys_mcgee.rb +22 -0
- data/lib/faker/quotes/chiquito.rb +80 -0
- data/lib/faker/quotes/quote.rb +111 -0
- data/lib/faker/quotes/rajnikanth.rb +27 -0
- data/lib/faker/quotes/shakespeare.rb +111 -0
- data/lib/faker/religion/bible.rb +50 -0
- data/lib/faker/sports/basketball.rb +61 -0
- data/lib/faker/sports/football.rb +74 -0
- data/lib/faker/sports/mountaineering.rb +22 -0
- data/lib/faker/sports/sport.rb +110 -0
- data/lib/faker/sports/volleyball.rb +74 -0
- data/lib/faker/tv_shows/aqua_teen_hunger_force.rb +37 -0
- data/lib/faker/tv_shows/big_bang_theory.rb +37 -0
- data/lib/faker/tv_shows/bojack_horseman.rb +51 -0
- data/lib/faker/tv_shows/breaking_bad.rb +37 -0
- data/lib/faker/tv_shows/brooklyn_nine_nine.rb +38 -0
- data/lib/faker/tv_shows/buffy.rb +89 -0
- data/lib/faker/tv_shows/community.rb +38 -0
- data/lib/faker/tv_shows/dr_who.rb +115 -0
- data/lib/faker/tv_shows/dumb_and_dumber.rb +51 -0
- data/lib/faker/tv_shows/family_guy.rb +51 -0
- data/lib/faker/tv_shows/final_space.rb +51 -0
- data/lib/faker/tv_shows/friends.rb +50 -0
- data/lib/faker/tv_shows/futurama.rb +65 -0
- data/lib/faker/tv_shows/game_of_thrones.rb +77 -0
- data/lib/faker/tv_shows/hey_arnold.rb +50 -0
- data/lib/faker/tv_shows/how_i_met_your_mother.rb +64 -0
- data/lib/faker/tv_shows/michael_scott.rb +23 -0
- data/lib/faker/tv_shows/new_girl.rb +38 -0
- data/lib/faker/tv_shows/parks_and_rec.rb +37 -0
- data/lib/faker/tv_shows/rick_and_morty.rb +51 -0
- data/lib/faker/tv_shows/ru_paul.rb +37 -0
- data/lib/faker/tv_shows/seinfeld.rb +51 -0
- data/lib/faker/tv_shows/silicon_valley.rb +118 -0
- data/lib/faker/tv_shows/simpsons.rb +65 -0
- data/lib/faker/tv_shows/south_park.rb +38 -0
- data/lib/faker/tv_shows/star_trek.rb +63 -0
- data/lib/faker/tv_shows/stargate.rb +51 -0
- data/lib/faker/tv_shows/stranger_things.rb +38 -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 +63 -0
- data/lib/faker/tv_shows/the_fresh_prince_of_bel_air.rb +64 -0
- data/lib/faker/tv_shows/the_it_crowd.rb +64 -0
- data/lib/faker/tv_shows/the_office.rb +37 -0
- data/lib/faker/tv_shows/the_thick_of_it.rb +51 -0
- data/lib/faker/tv_shows/twin_peaks.rb +51 -0
- data/lib/faker/tv_shows/venture_bros.rb +65 -0
- data/lib/faker/version.rb +4 -2
- data/lib/faker.rb +166 -66
- data/lib/helpers/base58.rb +22 -0
- data/lib/helpers/char.rb +37 -20
- data/lib/helpers/unique_generator.rb +34 -6
- data/lib/locales/README.md +40 -0
- data/lib/locales/ar.yml +106 -0
- data/lib/locales/bg.yml +5 -2
- data/lib/locales/ca-CAT.yml +1 -1
- data/lib/locales/ca.yml +2 -4
- data/lib/locales/da-DK.yml +10 -6
- data/lib/locales/de-AT.yml +14 -5
- data/lib/locales/de-CH.yml +1696 -1
- data/lib/locales/de.yml +27 -13
- data/lib/locales/ee.yml +61 -0
- data/lib/locales/en/address.yml +553 -4
- data/lib/locales/en/adjective.yml +179 -0
- data/lib/locales/en/ancient.yml +7 -0
- data/lib/locales/en/animal.yml +6 -0
- data/lib/locales/en/app.yml +8 -0
- data/lib/locales/en/appliance.yml +5 -0
- data/lib/locales/en/aqua_teen_hunger_force.yml +36 -0
- data/lib/locales/en/artist.yml +4 -0
- data/lib/locales/en/australia.yml +107 -0
- data/lib/locales/en/back_to_the_future.yml +120 -0
- data/lib/locales/en/bank.yml +302 -0
- data/lib/locales/en/barcode.yml +24 -0
- data/lib/locales/en/basketball.yml +99 -0
- data/lib/locales/en/beer.yml +9 -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/bojack_horseman.yml +6 -0
- data/lib/locales/en/book.yml +491 -0
- data/lib/locales/en/bossa_nova.yml +6 -0
- data/lib/locales/en/breaking_bad.yml +28 -0
- data/lib/locales/en/brooklyn_nine_nine.yml +35 -0
- data/lib/locales/en/buffy.yml +260 -0
- data/lib/locales/en/business.yml +5 -0
- data/lib/locales/en/camera.yml +611 -0
- data/lib/locales/en/cannabis.yml +13 -0
- data/lib/locales/en/cat.yml +7 -0
- data/lib/locales/en/chiquito.yml +64 -0
- data/lib/locales/en/chuck_norris.yml +82 -0
- data/lib/locales/en/clash_of_clan.yml +101 -0
- data/lib/locales/en/code.yml +4 -0
- data/lib/locales/en/coffee.yml +31 -0
- data/lib/locales/en/coin.yml +6 -0
- data/lib/locales/en/color.yml +4 -0
- data/lib/locales/en/commerce.yml +28 -0
- data/lib/locales/en/community.yml +33 -0
- data/lib/locales/en/company.yml +22 -0
- data/lib/locales/en/compass.yml +34 -0
- data/lib/locales/en/computer.yml +55 -0
- data/lib/locales/en/conan.yml +171 -0
- data/lib/locales/en/construction.yml +425 -0
- data/lib/locales/en/control.yml +247 -0
- data/lib/locales/en/cosmere.yml +57 -0
- data/lib/locales/en/crypto_coin.yml +25 -0
- data/lib/locales/en/culture_series.yml +307 -0
- data/lib/locales/en/currency.yml +6 -0
- data/lib/locales/en/dc_comics.yml +52 -0
- data/lib/locales/en/demographic.yml +221 -0
- data/lib/locales/en/departed.yml +50 -0
- data/lib/locales/en/dessert.yml +6 -0
- data/lib/locales/en/device.yml +115 -0
- data/lib/locales/en/dnd.yml +451 -0
- data/lib/locales/en/dog.yml +11 -0
- data/lib/locales/en/doraemon.yml +286 -0
- data/lib/locales/en/dota.yml +693 -0
- data/lib/locales/en/dr_who.yml +31 -9
- data/lib/locales/en/dragon_ball.yml +246 -0
- data/lib/locales/en/driving_license.yml +181 -0
- data/lib/locales/en/drone.yml +95 -0
- data/lib/locales/en/dumb_and_dumber.yml +59 -0
- data/lib/locales/en/dune.yml +298 -0
- data/lib/locales/en/educator.yml +80 -0
- data/lib/locales/en/elder_scrolls.yml +585 -0
- data/lib/locales/en/electrical_components.yml +6 -0
- data/lib/locales/en/emotion.yml +480 -0
- data/lib/locales/en/esport.yml +8 -0
- data/lib/locales/en/fallout.yml +315 -0
- data/lib/locales/en/file.yml +13 -0
- data/lib/locales/en/final_space.yml +37 -0
- data/lib/locales/en/finance.yml +189 -0
- data/lib/locales/en/fma_brotherhood.yml +78 -0
- data/lib/locales/en/food.yml +1057 -0
- data/lib/locales/en/football.yml +8 -0
- data/lib/locales/en/fresh_prince_of_bel_air.yml +73 -0
- data/lib/locales/en/friends.yml +6 -0
- data/lib/locales/en/funny_name.yml +4 -0
- data/lib/locales/en/futurama.yml +344 -0
- data/lib/locales/en/game.yml +294 -0
- data/lib/locales/en/game_of_thrones.yml +8 -0
- data/lib/locales/en/gender.yml +6 -0
- data/lib/locales/en/ghostbusters.yml +91 -0
- data/lib/locales/en/grateful_dead.yml +48 -0
- data/lib/locales/en/greek_philosophers.yml +26 -0
- data/lib/locales/en/hacker.yml +8 -0
- data/lib/locales/en/half_life.yml +88 -0
- data/lib/locales/en/harry_potter.yml +9 -0
- data/lib/locales/en/heroes.yml +411 -0
- data/lib/locales/en/heroes_of_the_storm.yml +134 -0
- data/lib/locales/en/hey_arnold.yml +24 -0
- data/lib/locales/en/hipster.yml +4 -0
- data/lib/locales/en/hitchhikers_guide_to_the_galaxy.yml +45 -0
- data/lib/locales/en/hobby.yml +171 -0
- data/lib/locales/en/horse.yml +6 -0
- data/lib/locales/en/house.yml +5 -0
- data/lib/locales/en/how_i_met_your_mother.yml +28 -0
- data/lib/locales/en/how_to_train_your_dragon.yml +174 -0
- data/lib/locales/en/id_number.yml +5 -0
- data/lib/locales/en/industry_segments.yml +7 -0
- data/lib/locales/en/internet.yml +137 -3
- data/lib/locales/en/invoice.yml +6 -0
- data/lib/locales/en/jack_handey.yml +54 -0
- data/lib/locales/en/job.yml +15 -0
- data/lib/locales/en/kamen_rider.yml +452 -0
- data/lib/locales/en/kpop.yml +83 -0
- data/lib/locales/en/league_of_legends.yml +289 -0
- data/lib/locales/en/lebowski.yml +43 -0
- data/lib/locales/en/lorem.yml +11 -0
- data/lib/locales/en/lovecraft.yml +76 -6
- data/lib/locales/en/markdown.yml +5 -0
- data/lib/locales/en/marketing.yml +4 -0
- data/lib/locales/en/measurement.yml +11 -0
- data/lib/locales/en/michael_scott.yml +45 -0
- data/lib/locales/en/military.yml +182 -0
- data/lib/locales/en/minecraft.yml +663 -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 +464 -0
- data/lib/locales/en/myst.yml +104 -0
- data/lib/locales/en/name.yml +26 -0
- data/lib/locales/en/naruto.yml +230 -0
- data/lib/locales/en/nation.yml +11 -0
- data/lib/locales/en/nato_phonetic_alphabet.yml +4 -0
- data/lib/locales/en/new_girl.yml +40 -0
- data/lib/locales/en/one_piece.yml +9 -0
- data/lib/locales/en/opera.yml +340 -0
- data/lib/locales/en/overwatch.yml +2654 -0
- data/lib/locales/en/parks_and_rec.yml +7 -0
- data/lib/locales/en/pearl_jam.yml +213 -0
- data/lib/locales/en/phish.yml +395 -0
- data/lib/locales/en/phone_number.yml +7 -0
- data/lib/locales/en/pokemon.yml +421 -0
- data/lib/locales/en/prince.yml +227 -0
- data/lib/locales/en/princess_bride.yml +5 -0
- data/lib/locales/en/programming_language.yml +6 -0
- data/lib/locales/en/quote.yml +695 -0
- data/lib/locales/en/rajnikanth.yml +77 -0
- data/lib/locales/en/relationship.yml +10 -0
- data/lib/locales/en/restaurant.yml +129 -0
- data/lib/locales/en/rock_band.yml +5 -0
- data/lib/locales/en/room.yml +68 -0
- data/lib/locales/en/rupaul.yml +125 -0
- data/lib/locales/en/rush.yml +32 -0
- data/lib/locales/en/science.yml +484 -0
- data/lib/locales/en/seinfeld.yml +6 -0
- data/lib/locales/en/shakespeare.yml +53 -0
- data/lib/locales/en/show.yml +597 -0
- data/lib/locales/en/silicon_valley.yml +53 -0
- data/lib/locales/en/simpsons.yml +694 -0
- data/lib/locales/en/slack_emoji.yml +20 -0
- data/lib/locales/en/sonic_the_hedgehog.yml +410 -0
- data/lib/locales/en/source.yml +46 -0
- data/lib/locales/en/south_park.yml +5 -0
- data/lib/locales/en/space.yml +17 -0
- data/lib/locales/en/sport.yml +121 -0
- data/lib/locales/en/star_trek.yml +7 -0
- data/lib/locales/en/star_wars.yml +606 -0
- data/lib/locales/en/stargate.yml +21 -0
- data/lib/locales/en/stranger_thing.yml +36 -0
- data/lib/locales/en/street_fighter.yml +1524 -0
- data/lib/locales/en/stripe.yml +42 -0
- data/lib/locales/en/studio_ghibli.yml +107 -0
- data/lib/locales/en/subscription.yml +8 -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 +223 -0
- data/lib/locales/en/superhero.yml +12 -0
- data/lib/locales/en/supernatural.yml +141 -0
- data/lib/locales/en/sword_art_online.yml +334 -0
- data/lib/locales/en/tea.yml +172 -0
- data/lib/locales/en/team.yml +8 -0
- data/lib/locales/en/the_expanse.yml +7 -0
- data/lib/locales/en/the_it_crowd.yml +155 -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_thick_of_it.yml +6 -0
- data/lib/locales/en/tolkien.yml +2453 -0
- data/lib/locales/en/touhou.yml +839 -0
- data/lib/locales/en/tron.yml +227 -0
- data/lib/locales/en/twin_peaks.yml +6 -0
- data/lib/locales/en/umphreys_mcgee.yml +4 -0
- data/lib/locales/en/university.yml +10 -0
- data/lib/locales/en/v_for_vendetta.yml +163 -0
- data/lib/locales/en/vehicle.yml +2814 -0
- data/lib/locales/en/venture_bros.yml +7 -0
- data/lib/locales/en/verbs.yml +8 -0
- data/lib/locales/en/volleyball.yml +501 -0
- data/lib/locales/en/warhammer_fantasy.yml +582 -0
- data/lib/locales/en/witcher.yml +430 -0
- data/lib/locales/en/world_cup.yml +271 -0
- data/lib/locales/en/world_of_warcraft.yml +126 -0
- data/lib/locales/en/yoda.yml +4 -0
- data/lib/locales/en/zelda.yml +966 -0
- data/lib/locales/en-AU.yml +50 -8
- data/lib/locales/en-CA.yml +27 -2
- data/lib/locales/en-GB.yml +2 -1
- data/lib/locales/en-IND.yml +5 -2
- data/lib/locales/en-MS.yml +10 -1
- data/lib/locales/en-NEP.yml +6 -3
- data/lib/locales/en-NG.yml +2 -0
- data/lib/locales/en-NZ.yml +140 -17
- data/lib/locales/en-PAK.yml +4 -2
- data/lib/locales/en-SG.yml +6 -1
- data/lib/locales/en-TH.yml +360 -0
- data/lib/locales/en-US.yml +38 -10
- data/lib/locales/en-ZA.yml +114 -17
- data/lib/locales/en-au-ocker.yml +2 -1
- data/lib/locales/en.yml +0 -746
- data/lib/locales/es-AR.yml +4600 -0
- data/lib/locales/es-MX.yml +17 -1
- data/lib/locales/es.yml +75 -1
- data/lib/locales/fa.yml +6 -0
- data/lib/locales/fi-FI.yml +12 -6
- data/lib/locales/fr/address.yml +21 -0
- data/lib/locales/fr/adjective.yml +266 -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 +21 -0
- data/lib/locales/fr/phone_number.yml +7 -0
- data/lib/locales/fr/pokemon.yml +7 -0
- data/lib/locales/fr-CA.yml +107 -0
- data/lib/locales/fr-CH.yml +78 -0
- data/lib/locales/fr.yml +1 -65
- data/lib/locales/he.yml +2 -0
- data/lib/locales/hy.yml +411 -0
- data/lib/locales/id.yml +7 -2
- data/lib/locales/it.yml +15 -3
- 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/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/university.yml +9 -0
- data/lib/locales/ja/zelda.yml +5 -0
- data/lib/locales/ko.yml +98 -3
- data/lib/locales/lt.yml +35 -0
- data/lib/locales/lv.yml +55 -0
- data/lib/locales/mi-NZ.yml +281 -0
- data/lib/locales/nb-NO.yml +15 -6
- data/lib/locales/nl.yml +13 -4
- data/lib/locales/no.yml +7 -0
- data/lib/locales/pl.yml +13 -2
- data/lib/locales/pt-BR.yml +657 -17
- data/lib/locales/pt.yml +16 -6
- data/lib/locales/ru.yml +54 -5
- data/lib/locales/sk.yml +21 -13
- data/lib/locales/sv.yml +15 -7
- data/lib/locales/th.yml +380 -0
- data/lib/locales/tr.yml +14 -0
- data/lib/locales/uk.yml +17 -4
- data/lib/locales/vi.yml +7 -2
- data/lib/locales/zh-CN.yml +10 -4
- data/lib/locales/zh-TW.yml +3 -1
- metadata +620 -98
- data/lib/extensions/array.rb +0 -22
- data/lib/extensions/symbol.rb +0 -9
- data/lib/faker/address.rb +0 -67
- data/lib/faker/ancient.rb +0 -21
- data/lib/faker/app.rb +0 -18
- data/lib/faker/artist.rb +0 -9
- data/lib/faker/avatar.rb +0 -15
- data/lib/faker/bank.rb +0 -31
- data/lib/faker/beer.rb +0 -40
- data/lib/faker/bitcoin.rb +0 -48
- data/lib/faker/book.rb +0 -23
- data/lib/faker/boolean.rb +0 -9
- data/lib/faker/business.rb +0 -22
- data/lib/faker/cat.rb +0 -19
- data/lib/faker/chuck_norris.rb +0 -11
- data/lib/faker/code.rb +0 -147
- data/lib/faker/coffee.rb +0 -29
- data/lib/faker/color.rb +0 -30
- data/lib/faker/commerce.rb +0 -64
- data/lib/faker/company.rb +0 -141
- data/lib/faker/compass.rb +0 -65
- data/lib/faker/crypto.rb +0 -19
- data/lib/faker/date.rb +0 -78
- data/lib/faker/demographic.rb +0 -35
- data/lib/faker/dessert.rb +0 -19
- data/lib/faker/dr_who.rb +0 -34
- data/lib/faker/dragon_ball.rb +0 -9
- data/lib/faker/educator.rb +0 -23
- data/lib/faker/esport.rb +0 -25
- data/lib/faker/family_guy.rb +0 -17
- data/lib/faker/file.rb +0 -24
- data/lib/faker/fillmurray.rb +0 -14
- data/lib/faker/finance.rb +0 -28
- data/lib/faker/food.rb +0 -21
- data/lib/faker/friends.rb +0 -17
- data/lib/faker/funny_name.rb +0 -43
- data/lib/faker/game_of_thrones.rb +0 -25
- data/lib/faker/hacker.rb +0 -45
- data/lib/faker/harry_potter.rb +0 -21
- data/lib/faker/hey_arnold.rb +0 -17
- data/lib/faker/hipster.rb +0 -59
- data/lib/faker/hitchhikers_guide_to_the_galaxy.rb +0 -33
- data/lib/faker/hobbit.rb +0 -21
- data/lib/faker/how_i_met_your_mother.rb +0 -21
- data/lib/faker/id_number.rb +0 -36
- data/lib/faker/internet.rb +0 -178
- data/lib/faker/job.rb +0 -16
- data/lib/faker/league_of_legends.rb +0 -29
- data/lib/faker/lord_of_the_rings.rb +0 -13
- data/lib/faker/lorem.rb +0 -68
- data/lib/faker/lorem_pixel.rb +0 -21
- data/lib/faker/lovecraft.rb +0 -73
- data/lib/faker/markdown.rb +0 -66
- data/lib/faker/matz.rb +0 -9
- data/lib/faker/movie.rb +0 -9
- data/lib/faker/music.rb +0 -33
- data/lib/faker/name.rb +0 -42
- data/lib/faker/number.rb +0 -86
- data/lib/faker/omniauth.rb +0 -340
- data/lib/faker/overwatch.rb +0 -17
- data/lib/faker/phone_number.rb +0 -44
- data/lib/faker/placeholdit.rb +0 -20
- data/lib/faker/pokemon.rb +0 -17
- data/lib/faker/rick_and_morty.rb +0 -17
- data/lib/faker/robin.rb +0 -9
- data/lib/faker/rock_band.rb +0 -9
- data/lib/faker/rupaul.rb +0 -11
- data/lib/faker/shakespeare.rb +0 -83
- data/lib/faker/simpsons.rb +0 -22
- data/lib/faker/slack_emoji.rb +0 -43
- data/lib/faker/space.rb +0 -58
- data/lib/faker/star_trek.rb +0 -21
- data/lib/faker/star_wars.rb +0 -80
- data/lib/faker/superhero.rb +0 -25
- data/lib/faker/team.rb +0 -24
- data/lib/faker/time.rb +0 -51
- data/lib/faker/twin_peaks.rb +0 -17
- data/lib/faker/twitter.rb +0 -172
- data/lib/faker/university.rb +0 -20
- data/lib/faker/vehicle.rb +0 -37
- data/lib/faker/yoda.rb +0 -10
- data/lib/faker/zelda.rb +0 -18
- data/lib/locales/ja.yml +0 -46
@@ -0,0 +1,61 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Faker
|
4
|
+
class IndustrySegments < Base
|
5
|
+
flexible :industry_segments
|
6
|
+
|
7
|
+
class << self
|
8
|
+
##
|
9
|
+
# Produces the name of an industry.
|
10
|
+
#
|
11
|
+
# @return [String]
|
12
|
+
#
|
13
|
+
# @example
|
14
|
+
# Faker::IndustrySegments.industry #=> "Basic Materials"
|
15
|
+
#
|
16
|
+
# @faker.version 1.9.2
|
17
|
+
def industry
|
18
|
+
fetch('industry_segments.industry')
|
19
|
+
end
|
20
|
+
|
21
|
+
##
|
22
|
+
# Produces the name of a super-sector of an industry.
|
23
|
+
#
|
24
|
+
# @return [String]
|
25
|
+
#
|
26
|
+
# @example
|
27
|
+
# Faker::IndustrySegments.super_sector #=> "Basic Resources"
|
28
|
+
#
|
29
|
+
# @faker.version 1.9.2
|
30
|
+
def super_sector
|
31
|
+
fetch('industry_segments.super_sector')
|
32
|
+
end
|
33
|
+
|
34
|
+
##
|
35
|
+
# Produces the name of a sector of an industry.
|
36
|
+
#
|
37
|
+
# @return [String]
|
38
|
+
#
|
39
|
+
# @example
|
40
|
+
# Faker::IndustrySegments.sector #=> "Industrial Metals & Mining"
|
41
|
+
#
|
42
|
+
# @faker.version 1.9.2
|
43
|
+
def sector
|
44
|
+
fetch('industry_segments.sector')
|
45
|
+
end
|
46
|
+
|
47
|
+
##
|
48
|
+
# Produces the name of a subsector of an industry.
|
49
|
+
#
|
50
|
+
# @return [String]
|
51
|
+
#
|
52
|
+
# @example
|
53
|
+
# Faker::IndustrySegments.industry #=> "Basic Materials"
|
54
|
+
#
|
55
|
+
# @faker.version 1.9.2
|
56
|
+
def sub_sector
|
57
|
+
fetch('industry_segments.sub_sector')
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,629 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Faker
|
4
|
+
class Internet < Base
|
5
|
+
# Private, Host, and Link-Local network address blocks as defined in https://en.wikipedia.org/wiki/IPv4#Special-use_addresses
|
6
|
+
PRIVATE_IPV4_ADDRESS_RANGES = [
|
7
|
+
[10..10, 0..255, 0..255, 1..255], # 10.0.0.0/8 - Used for local communications within a private network
|
8
|
+
[100..100, 64..127, 0..255, 1..255], # 100.64.0.0/10 - Shared address space for communications between an ISP and its subscribers
|
9
|
+
[127..127, 0..255, 0..255, 1..255], # 127.0.0.0/8 - Used for loopback addresses to the local host
|
10
|
+
[169..169, 254..254, 0..255, 1..255], # 169.254.0.0/16 - Used for link-local addresses between two hosts on a single link when
|
11
|
+
[172..172, 16..31, 0..255, 1..255], # 172.16.0.0/12 - Used for local communications within a private network
|
12
|
+
[192..192, 0..0, 0..0, 1..255], # 192.0.0.0/24 - IETF Protocol Assignments
|
13
|
+
[192..192, 168..168, 0..255, 1..255], # 192.168.0.0/16 - Used for local communications within a private network
|
14
|
+
[198..198, 18..19, 0..255, 1..255] # 198.18.0.0/15 - Used for benchmark testing of inter-network communications between subnets
|
15
|
+
].each(&:freeze).freeze
|
16
|
+
|
17
|
+
class << self
|
18
|
+
##
|
19
|
+
# Returns the email address
|
20
|
+
#
|
21
|
+
# @return [String]
|
22
|
+
#
|
23
|
+
# @param name [String]
|
24
|
+
# @param separators [Array]
|
25
|
+
# @param domain [String]
|
26
|
+
#
|
27
|
+
# @example
|
28
|
+
# Faker::Internet.email #=> "samsmith@faker.com"
|
29
|
+
# Faker::Internet.email(name: 'smith') #=> "smith@faker.com"
|
30
|
+
# Faker::Internet.email(name: 'sam smith', separators: ['-']) #=> "sam-smith@faker.com"
|
31
|
+
# Faker::Internet.email(name: 'sam smith', separators: ['-'], domain: 'gmail') #=> "sam-smith@gmail.com"
|
32
|
+
def email(legacy_name = NOT_GIVEN, legacy_separators = NOT_GIVEN, name: nil, separators: nil, domain: nil)
|
33
|
+
warn_for_deprecated_arguments do |keywords|
|
34
|
+
keywords << :name if legacy_name != NOT_GIVEN
|
35
|
+
keywords << :separators if legacy_separators != NOT_GIVEN
|
36
|
+
end
|
37
|
+
|
38
|
+
local_part = if separators
|
39
|
+
username(specifier: name, separators: separators)
|
40
|
+
else
|
41
|
+
username(specifier: name)
|
42
|
+
end
|
43
|
+
|
44
|
+
sanitized_local_part = sanitize_email_local_part(local_part)
|
45
|
+
construct_email(sanitized_local_part, domain_name(domain: domain))
|
46
|
+
end
|
47
|
+
|
48
|
+
##
|
49
|
+
# Returns the email address with domain either gmail.com, yahoo.com or hotmail.com
|
50
|
+
#
|
51
|
+
# @return [String]
|
52
|
+
#
|
53
|
+
# @param name [String]
|
54
|
+
#
|
55
|
+
# @example
|
56
|
+
# Faker::Internet.free_email #=> "samsmith@gmail.com"
|
57
|
+
# Faker::Internet.free_email(name: 'smith') #=> "smith@yahoo.com"
|
58
|
+
def free_email(legacy_name = NOT_GIVEN, name: nil)
|
59
|
+
warn_for_deprecated_arguments do |keywords|
|
60
|
+
keywords << :name if legacy_name != NOT_GIVEN
|
61
|
+
end
|
62
|
+
|
63
|
+
construct_email(
|
64
|
+
sanitize_email_local_part(username(specifier: name)),
|
65
|
+
fetch('internet.free_email')
|
66
|
+
)
|
67
|
+
end
|
68
|
+
|
69
|
+
##
|
70
|
+
# Returns the email address with fixed domain name as 'example'
|
71
|
+
#
|
72
|
+
# @return [String]
|
73
|
+
#
|
74
|
+
# @param name [String]
|
75
|
+
#
|
76
|
+
# @example
|
77
|
+
# Faker::Internet.safe_email #=> "samsmith@example.com"
|
78
|
+
# Faker::Internet.safe_email(name: 'smith') #=> "smith@example.net"
|
79
|
+
def safe_email(legacy_name = NOT_GIVEN, name: nil)
|
80
|
+
warn_for_deprecated_arguments do |keywords|
|
81
|
+
keywords << :name if legacy_name != NOT_GIVEN
|
82
|
+
end
|
83
|
+
|
84
|
+
construct_email(
|
85
|
+
sanitize_email_local_part(username(specifier: name)),
|
86
|
+
"example.#{sample(%w[org com net])}"
|
87
|
+
)
|
88
|
+
end
|
89
|
+
|
90
|
+
##
|
91
|
+
# Returns the username
|
92
|
+
#
|
93
|
+
# @return [String]
|
94
|
+
#
|
95
|
+
# @param specifier [Integer, Range, String] When int value passed it returns the username longer than specifier. Max value can be 10^6
|
96
|
+
# @param separators [Array]
|
97
|
+
#
|
98
|
+
# @example
|
99
|
+
# Faker::Internet.username(specifier: 10) #=> "lulu.goodwin"
|
100
|
+
# Faker::Internet.username(specifier: 5..10) #=> "morris"
|
101
|
+
# Faker::Internet.username(specifier: 5..10) #=> "berryberry"
|
102
|
+
# Faker::Internet.username(specifier: 20, separators: ['-']) #=> "nikki_sawaynnikki_saway"
|
103
|
+
def username(legacy_specifier = NOT_GIVEN, legacy_separators = NOT_GIVEN, specifier: nil, separators: %w[. _])
|
104
|
+
warn_for_deprecated_arguments do |keywords|
|
105
|
+
keywords << :specifier if legacy_specifier != NOT_GIVEN
|
106
|
+
keywords << :separators if legacy_separators != NOT_GIVEN
|
107
|
+
end
|
108
|
+
|
109
|
+
with_locale(:en) do
|
110
|
+
return shuffle(specifier.scan(/[[:word:]]+/)).join(sample(separators)).downcase if specifier.respond_to?(:scan)
|
111
|
+
|
112
|
+
case specifier
|
113
|
+
when Integer
|
114
|
+
# If specifier is Integer and has large value, Argument error exception is raised to overcome memory full error
|
115
|
+
raise ArgumentError, 'Given argument is too large' if specifier > 10**6
|
116
|
+
|
117
|
+
tries = 0 # Don't try forever in case we get something like 1_000_000.
|
118
|
+
result = nil
|
119
|
+
loop do
|
120
|
+
result = username(specifier: nil, separators: separators)
|
121
|
+
tries += 1
|
122
|
+
break unless result.length < specifier && tries < 7
|
123
|
+
end
|
124
|
+
return result * (specifier / result.length + 1) if specifier.positive?
|
125
|
+
when Range
|
126
|
+
tries = 0
|
127
|
+
result = nil
|
128
|
+
loop do
|
129
|
+
result = username(specifier: specifier.min, separators: separators)
|
130
|
+
tries += 1
|
131
|
+
break unless !specifier.include?(result.length) && tries < 7
|
132
|
+
end
|
133
|
+
return result[0...specifier.max]
|
134
|
+
end
|
135
|
+
|
136
|
+
sample([
|
137
|
+
Char.prepare(Name.first_name),
|
138
|
+
[Name.first_name, Name.last_name].map do |name|
|
139
|
+
Char.prepare(name)
|
140
|
+
end.join(sample(separators))
|
141
|
+
])
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
145
|
+
# rubocop:disable Metrics/ParameterLists
|
146
|
+
|
147
|
+
##
|
148
|
+
# Produces a randomized string of characters suitable for passwords
|
149
|
+
#
|
150
|
+
# @param min_length [Integer] The minimum length of the password
|
151
|
+
# @param max_length [Integer] The maximum length of the password
|
152
|
+
# @param mix_case [Boolean] Toggles if uppercased letters are allowed. If true, at least one will be added.
|
153
|
+
# @param special_characters [Boolean] Toggles if special characters are allowed. If true, at least one will be added.
|
154
|
+
#
|
155
|
+
# @return [String]
|
156
|
+
#
|
157
|
+
# @example
|
158
|
+
# Faker::Internet.password #=> "Vg5mSvY1UeRg7"
|
159
|
+
# @example
|
160
|
+
# Faker::Internet.password(min_length: 8) #=> "YfGjIk0hGzDqS0"
|
161
|
+
# @example
|
162
|
+
# Faker::Internet.password(min_length: 10, max_length: 20) #=> "EoC9ShWd1hWq4vBgFw"
|
163
|
+
# @example
|
164
|
+
# Faker::Internet.password(min_length: 10, max_length: 20, mix_case: true) #=> "3k5qS15aNmG"
|
165
|
+
# @example
|
166
|
+
# Faker::Internet.password(min_length: 10, max_length: 20, mix_case: true, special_characters: true) #=> "*%NkOnJsH4"
|
167
|
+
#
|
168
|
+
# @faker.version 2.1.3
|
169
|
+
def password(legacy_min_length = NOT_GIVEN, legacy_max_length = NOT_GIVEN, legacy_mix_case = NOT_GIVEN, legacy_special_characters = NOT_GIVEN, min_length: 8, max_length: 16, mix_case: true, special_characters: false)
|
170
|
+
warn_for_deprecated_arguments do |keywords|
|
171
|
+
keywords << :min_length if legacy_min_length != NOT_GIVEN
|
172
|
+
keywords << :max_length if legacy_max_length != NOT_GIVEN
|
173
|
+
keywords << :mix_case if legacy_mix_case != NOT_GIVEN
|
174
|
+
keywords << :special_characters if legacy_special_characters != NOT_GIVEN
|
175
|
+
end
|
176
|
+
|
177
|
+
raise ArgumentError, 'Password of length 1 can not have both mixed case and special characters' if min_length <= 1 && mix_case && special_characters
|
178
|
+
|
179
|
+
min_alpha = mix_case && min_length > 1 ? 2 : 0
|
180
|
+
temp = Lorem.characters(number: min_length, min_alpha: min_alpha)
|
181
|
+
diff_length = max_length - min_length
|
182
|
+
|
183
|
+
if diff_length.positive?
|
184
|
+
diff_rand = rand(diff_length + 1)
|
185
|
+
temp += Lorem.characters(number: diff_rand)
|
186
|
+
end
|
187
|
+
|
188
|
+
if mix_case
|
189
|
+
alpha_count = 0
|
190
|
+
temp.chars.each_with_index do |char, index|
|
191
|
+
if char =~ /[[:alpha:]]/
|
192
|
+
temp[index] = char.upcase if alpha_count.even?
|
193
|
+
alpha_count += 1
|
194
|
+
end
|
195
|
+
end
|
196
|
+
end
|
197
|
+
|
198
|
+
if special_characters
|
199
|
+
chars = %w[! @ # $ % ^ & *]
|
200
|
+
rand(1..min_length).times do |i|
|
201
|
+
temp[i] = chars[rand(chars.length)]
|
202
|
+
end
|
203
|
+
end
|
204
|
+
|
205
|
+
temp[rand(temp.size - 1)] = Lorem.characters(number: 1, min_alpha: 1).upcase if mix_case && special_characters && !temp.match(/[A-z]+/)
|
206
|
+
|
207
|
+
temp
|
208
|
+
end
|
209
|
+
# rubocop:enable Metrics/ParameterLists
|
210
|
+
|
211
|
+
##
|
212
|
+
# Returns the domain name
|
213
|
+
#
|
214
|
+
# @return [String]
|
215
|
+
#
|
216
|
+
# @param subdomain [Bool] If true passed adds a subdomain in response
|
217
|
+
# @param domain [String]
|
218
|
+
#
|
219
|
+
# @example
|
220
|
+
# Faker::Internet.domain_name #=> "test.net"
|
221
|
+
# Faker::Internet.domain_name(subdomain: true) #=> "test.faker.io"
|
222
|
+
# Faker::Internet.domain_name(subdomain: true, domain: 'example') #=> "faker.example.com"
|
223
|
+
# Faker::Internet.domain_name(domain: 'faker') #=> "faker.org"
|
224
|
+
def domain_name(legacy_subdomain = NOT_GIVEN, subdomain: false, domain: nil)
|
225
|
+
warn_for_deprecated_arguments do |keywords|
|
226
|
+
keywords << :subdomain if legacy_subdomain != NOT_GIVEN
|
227
|
+
end
|
228
|
+
|
229
|
+
with_locale(:en) do
|
230
|
+
if domain
|
231
|
+
domain
|
232
|
+
.split('.')
|
233
|
+
.map { |domain_part| Char.prepare(domain_part) }
|
234
|
+
.tap do |domain_elements|
|
235
|
+
domain_elements << domain_suffix if domain_elements.length < 2
|
236
|
+
domain_elements.unshift(Char.prepare(domain_word)) if subdomain && domain_elements.length < 3
|
237
|
+
end.join('.')
|
238
|
+
else
|
239
|
+
[domain_word, domain_suffix].tap do |domain_elements|
|
240
|
+
domain_elements.unshift(Char.prepare(domain_word)) if subdomain
|
241
|
+
end.join('.')
|
242
|
+
end
|
243
|
+
end
|
244
|
+
end
|
245
|
+
|
246
|
+
##
|
247
|
+
# Fixes ä, ö, ü, ß characters in string passed with ae, oe, ue, ss resp.
|
248
|
+
#
|
249
|
+
# @return [String]
|
250
|
+
#
|
251
|
+
# @param string [String]
|
252
|
+
#
|
253
|
+
# @example
|
254
|
+
# Faker::Internet.fix_umlauts #=> ""
|
255
|
+
# Faker::Internet.fix_umlauts(string: 'faker') #=> "faker"
|
256
|
+
# Faker::Internet.fix_umlauts(string: 'faküer') #=> "fakueer"
|
257
|
+
def fix_umlauts(legacy_string = NOT_GIVEN, string: '')
|
258
|
+
warn_for_deprecated_arguments do |keywords|
|
259
|
+
keywords << :string if legacy_string != NOT_GIVEN
|
260
|
+
end
|
261
|
+
|
262
|
+
Char.fix_umlauts(string)
|
263
|
+
end
|
264
|
+
|
265
|
+
##
|
266
|
+
# Returns the domain word for internet
|
267
|
+
#
|
268
|
+
# @return [String]
|
269
|
+
#
|
270
|
+
# @example
|
271
|
+
# Faker::Internet.domain_word #=> "senger"
|
272
|
+
def domain_word
|
273
|
+
with_locale(:en) { Char.prepare(Company.name.split.first) }
|
274
|
+
end
|
275
|
+
|
276
|
+
## Returns the domain suffix e.g. com, org, co, biz, info etc.
|
277
|
+
#
|
278
|
+
# @return [String]
|
279
|
+
#
|
280
|
+
# @example
|
281
|
+
# Faker::Internet.domain_suffix #=> "com"
|
282
|
+
# Faker::Internet.domain_suffix #=> "biz"
|
283
|
+
def domain_suffix
|
284
|
+
fetch('internet.domain_suffix')
|
285
|
+
end
|
286
|
+
|
287
|
+
##
|
288
|
+
# Returns the MAC address
|
289
|
+
#
|
290
|
+
# @return [String]
|
291
|
+
#
|
292
|
+
# @example
|
293
|
+
# Faker::Internet.mac_address #=> "74:d0:c9:22:95:12"
|
294
|
+
# Faker::Internet.mac_address(prefix: 'a') #=> "0a:91:ce:24:89:3b"
|
295
|
+
# Faker::Internet.mac_address(prefix: 'aa') #=> "aa:38:a0:3e:e8:41"
|
296
|
+
# Faker::Internet.mac_address(prefix: 'aa:44') #=> "aa:44:30:88:6e:95"
|
297
|
+
def mac_address(legacy_prefix = NOT_GIVEN, prefix: '')
|
298
|
+
warn_for_deprecated_arguments do |keywords|
|
299
|
+
keywords << :prefix if legacy_prefix != NOT_GIVEN
|
300
|
+
end
|
301
|
+
|
302
|
+
prefix_digits = prefix.split(':').map { |d| d.to_i(16) }
|
303
|
+
address_digits = Array.new((6 - prefix_digits.size)) { rand(256) }
|
304
|
+
(prefix_digits + address_digits).map { |d| format('%02x', d) }.join(':')
|
305
|
+
end
|
306
|
+
|
307
|
+
##
|
308
|
+
# Returns the IPv4 address
|
309
|
+
#
|
310
|
+
# @return [String]
|
311
|
+
#
|
312
|
+
# @example
|
313
|
+
# Faker::Internet.ip_v4_address #=> "97.117.128.93"
|
314
|
+
def ip_v4_address
|
315
|
+
[rand_in_range(0, 255), rand_in_range(0, 255),
|
316
|
+
rand_in_range(0, 255), rand_in_range(0, 255)].join('.')
|
317
|
+
end
|
318
|
+
|
319
|
+
##
|
320
|
+
# Returns the private IPv4 address
|
321
|
+
#
|
322
|
+
# @return [String]
|
323
|
+
#
|
324
|
+
# @example
|
325
|
+
# Faker::Internet.private_ip_v4_address #=> "127.120.80.42"
|
326
|
+
def private_ip_v4_address
|
327
|
+
sample(PRIVATE_IPV4_ADDRESS_RANGES).map { |range| rand(range) }.join('.')
|
328
|
+
end
|
329
|
+
|
330
|
+
##
|
331
|
+
# Returns the public IPv4 address
|
332
|
+
#
|
333
|
+
# @return [String]
|
334
|
+
#
|
335
|
+
# @example
|
336
|
+
# Faker::Internet.public_ip_v4_address #=> "127.120.80.42"
|
337
|
+
def public_ip_v4_address
|
338
|
+
addr = nil
|
339
|
+
loop do
|
340
|
+
addr = ip_v4_address
|
341
|
+
break unless reserved_net_checker[addr]
|
342
|
+
end
|
343
|
+
addr
|
344
|
+
end
|
345
|
+
|
346
|
+
##
|
347
|
+
# Returns the private network regular expressions
|
348
|
+
#
|
349
|
+
# @return [Array]
|
350
|
+
#
|
351
|
+
# @example
|
352
|
+
# Faker::Internet.private_nets_regex #=> [/^10\./, /^100\.(6[4-9]|[7-9]\d|1[0-1]\d|12[0-7])\./, /^127\./, /^169\.254\./, /^172\.(1[6-9]|2\d|3[0-1])\./, /^192\.0\.0\./, /^192\.168\./, /^198\.(1[8-9])\./]
|
353
|
+
def private_nets_regex
|
354
|
+
[
|
355
|
+
/^10\./, # 10.0.0.0 - 10.255.255.255
|
356
|
+
/^100\.(6[4-9]|[7-9]\d|1[0-1]\d|12[0-7])\./, # 100.64.0.0 - 100.127.255.255
|
357
|
+
/^127\./, # 127.0.0.0 - 127.255.255.255
|
358
|
+
/^169\.254\./, # 169.254.0.0 - 169.254.255.255
|
359
|
+
/^172\.(1[6-9]|2\d|3[0-1])\./, # 172.16.0.0 - 172.31.255.255
|
360
|
+
/^192\.0\.0\./, # 192.0.0.0 - 192.0.0.255
|
361
|
+
/^192\.168\./, # 192.168.0.0 - 192.168.255.255
|
362
|
+
/^198\.(1[8-9])\./ # 198.18.0.0 - 198.19.255.255
|
363
|
+
]
|
364
|
+
end
|
365
|
+
|
366
|
+
##
|
367
|
+
# Returns lambda to check if address passed is private or not
|
368
|
+
#
|
369
|
+
# @return [Lambda]
|
370
|
+
#
|
371
|
+
# @example
|
372
|
+
# Faker::Internet.private_net_checker.call("127.120.80.42") #=> true
|
373
|
+
# Faker::Internet.private_net_checker.call("148.120.80.42") #=> false
|
374
|
+
def private_net_checker
|
375
|
+
->(addr) { private_nets_regex.any? { |net| net =~ addr } }
|
376
|
+
end
|
377
|
+
|
378
|
+
##
|
379
|
+
# Returns the reserved network regular expressions
|
380
|
+
#
|
381
|
+
# @return [Array]
|
382
|
+
#
|
383
|
+
# @example
|
384
|
+
# Faker::Internet.reserved_nets_regex #=> [/^0\./, /^192\.0\.2\./, /^192\.88\.99\./, /^198\.51\.100\./, /^203\.0\.113\./, /^(22[4-9]|23\d)\./, /^(24\d|25[0-5])\./]
|
385
|
+
def reserved_nets_regex
|
386
|
+
[
|
387
|
+
/^0\./, # 0.0.0.0 - 0.255.255.255
|
388
|
+
/^192\.0\.2\./, # 192.0.2.0 - 192.0.2.255
|
389
|
+
/^192\.88\.99\./, # 192.88.99.0 - 192.88.99.255
|
390
|
+
/^198\.51\.100\./, # 198.51.100.0 - 198.51.100.255
|
391
|
+
/^203\.0\.113\./, # 203.0.113.0 - 203.0.113.255
|
392
|
+
/^(22[4-9]|23\d)\./, # 224.0.0.0 - 239.255.255.255
|
393
|
+
/^(24\d|25[0-5])\./ # 240.0.0.0 - 255.255.255.254 and 255.255.255.255
|
394
|
+
]
|
395
|
+
end
|
396
|
+
|
397
|
+
##
|
398
|
+
# Returns lambda function to check address passed is reserved or not
|
399
|
+
#
|
400
|
+
# @return [Lambda]
|
401
|
+
#
|
402
|
+
# @example
|
403
|
+
# Faker::Internet.reserved_net_checker.call('192.88.99.255') #=> true
|
404
|
+
# Faker::Internet.reserved_net_checker.call('192.88.199.255') #=> false
|
405
|
+
def reserved_net_checker
|
406
|
+
->(addr) { (private_nets_regex + reserved_nets_regex).any? { |net| net =~ addr } }
|
407
|
+
end
|
408
|
+
|
409
|
+
##
|
410
|
+
# Returns Ipv4 address with CIDR, range from 1 to 31
|
411
|
+
#
|
412
|
+
# @return [String]
|
413
|
+
#
|
414
|
+
# @example
|
415
|
+
# Faker::Internet.ip_v4_cidr #=> "129.162.99.74/16"
|
416
|
+
# Faker::Internet.ip_v4_cidr #=> "129.162.99.74/24"
|
417
|
+
def ip_v4_cidr
|
418
|
+
"#{ip_v4_address}/#{rand(1..31)}"
|
419
|
+
end
|
420
|
+
|
421
|
+
##
|
422
|
+
# Returns Ipv6 address
|
423
|
+
#
|
424
|
+
# @return [String]
|
425
|
+
#
|
426
|
+
# @example
|
427
|
+
# Faker::Internet.ip_v6_address #=> "7754:76d4:c7aa:7646:ea68:1abb:4055:4343"
|
428
|
+
def ip_v6_address
|
429
|
+
(1..8).map { rand(65_536).to_s(16) }.join(':')
|
430
|
+
end
|
431
|
+
|
432
|
+
##
|
433
|
+
# Returns Ipv6 address with CIDR, range between 1 to 127
|
434
|
+
#
|
435
|
+
# @return [String]
|
436
|
+
#
|
437
|
+
# @example
|
438
|
+
# Faker::Internet.ip_v6_cidr #=> "beca:9b99:4bb6:9712:af2f:516f:8507:96e1/99"
|
439
|
+
def ip_v6_cidr
|
440
|
+
"#{ip_v6_address}/#{rand(1..127)}"
|
441
|
+
end
|
442
|
+
|
443
|
+
# rubocop:disable Metrics/ParameterLists
|
444
|
+
|
445
|
+
##
|
446
|
+
# Returns URL
|
447
|
+
#
|
448
|
+
# @return [String]
|
449
|
+
#
|
450
|
+
# @param host [String]
|
451
|
+
# @param path [String]
|
452
|
+
# @param scheme [String]
|
453
|
+
#
|
454
|
+
# @example
|
455
|
+
# Faker::Internet.url #=> "http://sipes-okon.com/hung.macejkovic"
|
456
|
+
# Faker::Internet.url(host: 'faker') #=> "http://faker/shad"
|
457
|
+
# Faker::Internet.url(host: 'faker', path: '/fake_test_path') #=> "http://faker/fake_test_path"
|
458
|
+
# Faker::Internet.url(host: 'faker', path: '/fake_test_path', scheme: 'https') #=> "https://faker/fake_test_path"
|
459
|
+
def url(legacy_host = NOT_GIVEN, legacy_path = NOT_GIVEN, legacy_scheme = NOT_GIVEN, host: domain_name, path: "/#{username}", scheme: 'http')
|
460
|
+
warn_for_deprecated_arguments do |keywords|
|
461
|
+
keywords << :host if legacy_host != NOT_GIVEN
|
462
|
+
keywords << :path if legacy_path != NOT_GIVEN
|
463
|
+
keywords << :scheme if legacy_scheme != NOT_GIVEN
|
464
|
+
end
|
465
|
+
|
466
|
+
"#{scheme}://#{host}#{path}"
|
467
|
+
end
|
468
|
+
# rubocop:enable Metrics/ParameterLists
|
469
|
+
|
470
|
+
##
|
471
|
+
# Returns unique string in URL
|
472
|
+
#
|
473
|
+
# @return [String]
|
474
|
+
#
|
475
|
+
# @param words [String] Comma or period separated words list
|
476
|
+
# @param glue [String] Separator to add between words passed, default used are '-' or '_'
|
477
|
+
#
|
478
|
+
# @example
|
479
|
+
# Faker::Internet.slug #=> "repudiandae-sed"
|
480
|
+
# Faker::Internet.slug(words: 'test, faker') #=> "test-faker"
|
481
|
+
# Faker::Internet.slug(words: 'test. faker') #=> "test-faker"
|
482
|
+
# Faker::Internet.slug(words: 'test. faker', glue: '$') #=> "test$faker"
|
483
|
+
def slug(legacy_words = NOT_GIVEN, legacy_glue = NOT_GIVEN, words: nil, glue: nil)
|
484
|
+
warn_for_deprecated_arguments do |keywords|
|
485
|
+
keywords << :words if legacy_words != NOT_GIVEN
|
486
|
+
keywords << :glue if legacy_glue != NOT_GIVEN
|
487
|
+
end
|
488
|
+
|
489
|
+
glue ||= sample(%w[- _])
|
490
|
+
return words.delete(',.').gsub(' ', glue).downcase unless words.nil?
|
491
|
+
|
492
|
+
sample(translate('faker.internet.slug'), 2).join(glue)
|
493
|
+
end
|
494
|
+
|
495
|
+
##
|
496
|
+
# Generates random token
|
497
|
+
#
|
498
|
+
# @return[String]
|
499
|
+
#
|
500
|
+
# @example
|
501
|
+
# Faker::Internet.device_token #=> "749f535671cf6b34d8e794d212d00c703b96274e07161b18b082d0d70ef1052f"
|
502
|
+
def device_token
|
503
|
+
shuffle(rand(16**64).to_s(16).rjust(64, '0').chars.to_a).join
|
504
|
+
end
|
505
|
+
|
506
|
+
##
|
507
|
+
# Generates the random browser identifier
|
508
|
+
#
|
509
|
+
# @return [String]
|
510
|
+
#
|
511
|
+
# @param vendor [String] Name of vendor, supported vendors are aol, chrome, firefox, internet_explorer, netscape, opera, safari
|
512
|
+
#
|
513
|
+
# @example
|
514
|
+
# Faker::Internet.user_agent #=> "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36"
|
515
|
+
# Faker::Internet.user_agent(vendor: 'chrome') #=> "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36"
|
516
|
+
# Faker::Internet.user_agent(vendor: 'safari') #=> "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.75.14 (KHTML, like Gecko) Version/7.0.3 Safari/7046A194A"
|
517
|
+
# Faker::Internet.user_agent(vendor: 'faker') #=> "Mozilla/5.0 (Windows; U; Win 9x 4.90; SG; rv:1.9.2.4) Gecko/20101104 Netscape/9.1.0285"
|
518
|
+
def user_agent(legacy_vendor = NOT_GIVEN, vendor: nil)
|
519
|
+
warn_for_deprecated_arguments do |keywords|
|
520
|
+
keywords << :vendor if legacy_vendor != NOT_GIVEN
|
521
|
+
end
|
522
|
+
|
523
|
+
agent_hash = translate('faker.internet.user_agent')
|
524
|
+
agents = vendor.respond_to?(:to_sym) && agent_hash[vendor.to_sym] || agent_hash[sample(agent_hash.keys)]
|
525
|
+
sample(agents)
|
526
|
+
end
|
527
|
+
|
528
|
+
##
|
529
|
+
# Generate Web Crawler's user agents
|
530
|
+
#
|
531
|
+
# @return [String]
|
532
|
+
#
|
533
|
+
# @param vendor [String] Name of vendor, supported vendors are googlebot, bingbot, duckduckbot, baiduspider, yandexbot
|
534
|
+
#
|
535
|
+
# @example
|
536
|
+
# Faker::Internet.bot_user_agent #=> "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)"
|
537
|
+
# Faker::Internet.bot_user_agent(vendor: 'googlebot') #=> "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Googlebot/2.1; +http://www.google.com/bot.html) Chrome/99.0.4844.84 Safari/537.36"
|
538
|
+
# Faker::Internet.bot_user_agent(vendor: 'bingbot') #=> "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm) Chrome/86.0.4240.68 Safari/537.36 Edg/86.0.622.31"
|
539
|
+
def bot_user_agent(vendor: nil)
|
540
|
+
agent_hash = translate('faker.internet.bot_user_agent')
|
541
|
+
agents = vendor.respond_to?(:to_sym) && agent_hash[vendor.to_sym] || agent_hash[sample(agent_hash.keys)]
|
542
|
+
sample(agents)
|
543
|
+
end
|
544
|
+
|
545
|
+
##
|
546
|
+
# Generated universally unique identifier
|
547
|
+
#
|
548
|
+
# @return [String]
|
549
|
+
#
|
550
|
+
# @example
|
551
|
+
# Faker::Internet.uuid #=> "8a6cdd40-6d78-4fdb-912b-190e3057197f"
|
552
|
+
def uuid
|
553
|
+
# borrowed from: https://github.com/ruby/ruby/blob/d48783bb0236db505fe1205d1d9822309de53a36/lib/securerandom.rb#L250
|
554
|
+
ary = Faker::Config.random.bytes(16).unpack('NnnnnN')
|
555
|
+
ary[2] = (ary[2] & 0x0fff) | 0x4000
|
556
|
+
ary[3] = (ary[3] & 0x3fff) | 0x8000
|
557
|
+
'%08x-%04x-%04x-%04x-%04x%08x' % ary # rubocop:disable Style/FormatString
|
558
|
+
end
|
559
|
+
|
560
|
+
##
|
561
|
+
# Produces a random string of alphabetic characters, (no digits)
|
562
|
+
#
|
563
|
+
# @param length [Integer] The length of the string to generate
|
564
|
+
# @param padding [Boolean] Toggles if a final equal '=' will be added.
|
565
|
+
# @param urlsafe [Boolean] Toggles charset to '-' and '_' instead of '+' and '/'.
|
566
|
+
#
|
567
|
+
# @return [String]
|
568
|
+
#
|
569
|
+
# @example
|
570
|
+
# Faker::Internet.base64
|
571
|
+
# #=> "r_hbZ2DSD-ZACzZT"
|
572
|
+
# @example
|
573
|
+
# Faker::Internet.base64(length: 4, padding: true, urlsafe: false)
|
574
|
+
# #=> "x1/R="
|
575
|
+
#
|
576
|
+
# @faker.version 2.11.0
|
577
|
+
def base64(length: 16, padding: false, urlsafe: true)
|
578
|
+
char_range = [
|
579
|
+
Array('0'..'9'),
|
580
|
+
Array('A'..'Z'),
|
581
|
+
Array('a'..'z'),
|
582
|
+
urlsafe ? %w[- _] : %w[+ /]
|
583
|
+
].flatten
|
584
|
+
s = Array.new(length) { sample(char_range) }.join
|
585
|
+
s += '=' if padding
|
586
|
+
s
|
587
|
+
end
|
588
|
+
|
589
|
+
##
|
590
|
+
# Produces a randomized hash of internet user details
|
591
|
+
# @example
|
592
|
+
# Faker::Internet.user #=> { username: 'alexie', email: 'alexie@example.net' }
|
593
|
+
#
|
594
|
+
# @example
|
595
|
+
# Faker::Internet.user('username', 'email', 'password') #=> { username: 'alexie', email: 'alexie@example.net', password: 'DtEf9P8wS31iMyC' }
|
596
|
+
#
|
597
|
+
# @return [hash]
|
598
|
+
#
|
599
|
+
# @faker.version next
|
600
|
+
def user(*args)
|
601
|
+
user_hash = {}
|
602
|
+
args = %w[username email] if args.empty?
|
603
|
+
args.each { |arg| user_hash[:"#{arg}"] = send(arg) }
|
604
|
+
user_hash
|
605
|
+
end
|
606
|
+
|
607
|
+
alias user_name username
|
608
|
+
|
609
|
+
private
|
610
|
+
|
611
|
+
def sanitize_email_local_part(local_part)
|
612
|
+
char_range = [
|
613
|
+
Array('0'..'9'),
|
614
|
+
Array('A'..'Z'),
|
615
|
+
Array('a'..'z'),
|
616
|
+
"!#$%&'*+-/=?^_`{|}~.".chars
|
617
|
+
].flatten
|
618
|
+
|
619
|
+
local_part.chars.map do |char|
|
620
|
+
char_range.include?(char) ? char : '#'
|
621
|
+
end.join
|
622
|
+
end
|
623
|
+
|
624
|
+
def construct_email(local_part, domain_name)
|
625
|
+
[local_part, domain_name].join('@')
|
626
|
+
end
|
627
|
+
end
|
628
|
+
end
|
629
|
+
end
|