faker 2.0.0 → 3.8.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 +4 -4
- data/CHANGELOG.md +1896 -11
- data/README.md +140 -307
- data/lib/faker/blockchain/aeternity.rb +70 -0
- data/lib/faker/blockchain/bitcoin.rb +27 -2
- data/lib/faker/blockchain/ethereum.rb +11 -1
- data/lib/faker/blockchain/tezos.rb +92 -9
- data/lib/faker/blockchain.rb +9 -0
- data/lib/faker/books/culture_series.rb +49 -0
- data/lib/faker/books/dune.rb +71 -5
- data/lib/faker/books/lovecraft.rb +182 -7
- data/lib/faker/books/the_kingkiller_chronicle.rb +61 -0
- data/lib/faker/books.rb +9 -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/creature.rb +9 -0
- data/lib/faker/default/address.rb +251 -6
- data/lib/faker/default/adjective.rb +35 -0
- data/lib/faker/default/alphanumeric.rb +49 -6
- data/lib/faker/default/ancient.rb +36 -0
- data/lib/faker/default/app.rb +45 -0
- data/lib/faker/default/appliance.rb +18 -0
- data/lib/faker/default/artist.rb +9 -0
- data/lib/faker/default/avatar.rb +32 -1
- data/lib/faker/default/bank.rb +117 -22
- 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/book.rb +61 -0
- data/lib/faker/default/boolean.rb +14 -1
- 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 -8
- data/lib/faker/default/chuck_norris.rb +13 -2
- data/lib/faker/default/code.rb +165 -38
- 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 +102 -11
- data/lib/faker/default/company.rb +445 -23
- 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 +52 -5
- data/lib/faker/default/crypto_coin.rb +45 -0
- data/lib/faker/default/currency.rb +27 -0
- data/lib/faker/default/date.rb +145 -5
- data/lib/faker/default/dc_comics.rb +45 -0
- data/lib/faker/default/demographic.rb +57 -0
- data/lib/faker/default/dessert.rb +27 -0
- data/lib/faker/default/device.rb +54 -0
- data/lib/faker/default/driving_licence.rb +87 -14
- 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 -4
- data/lib/faker/default/finance.rb +74 -2
- data/lib/faker/default/food.rb +93 -3
- data/lib/faker/default/funny_name.rb +45 -0
- data/lib/faker/default/game.rb +48 -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 +103 -7
- 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 +313 -8
- data/lib/faker/default/industry_segments.rb +36 -0
- data/lib/faker/default/invoice.rb +34 -7
- data/lib/faker/default/job.rb +36 -0
- data/lib/faker/default/json.rb +68 -8
- data/lib/faker/default/kpop.rb +54 -0
- data/lib/faker/default/lorem.rb +194 -21
- data/lib/faker/default/lorem_flickr.rb +67 -2
- data/lib/faker/default/markdown.rb +100 -9
- data/lib/faker/default/marketing.rb +9 -0
- data/lib/faker/default/measurement.rb +93 -2
- data/lib/faker/default/military.rb +71 -0
- data/lib/faker/default/mountain.rb +33 -0
- data/lib/faker/default/movie.rb +33 -0
- data/lib/faker/default/name.rb +98 -0
- data/lib/faker/default/nation.rb +45 -5
- data/lib/faker/default/{nhs.rb → national_health_service.rb} +27 -4
- data/lib/faker/default/nato_phonetic_alphabet.rb +9 -0
- data/lib/faker/default/number.rb +151 -12
- data/lib/faker/default/omniauth.rb +233 -92
- data/lib/faker/default/phone_number.rb +113 -11
- data/lib/faker/default/placeholdit.rb +24 -3
- data/lib/faker/default/programming_language.rb +18 -0
- data/lib/faker/default/quote.rb +124 -0
- data/lib/faker/default/relationship.rb +46 -1
- 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 +43 -0
- data/lib/faker/default/south_africa.rb +93 -3
- data/lib/faker/default/space.rb +128 -1
- data/lib/faker/default/sport.rb +116 -0
- data/lib/faker/default/string.rb +18 -4
- data/lib/faker/default/stripe.rb +64 -3
- 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/theater.rb +49 -0
- data/lib/faker/default/time.rb +80 -0
- data/lib/faker/default/types.rb +91 -11
- data/lib/faker/default/university.rb +45 -0
- data/lib/faker/default/vehicle.rb +225 -42
- data/lib/faker/default/verb.rb +45 -0
- data/lib/faker/default/vulnerability_identifier.rb +23 -0
- data/lib/faker/default/world_cup.rb +50 -0
- data/lib/faker/default/x.rb +189 -0
- data/lib/faker/default.rb +9 -0
- data/lib/faker/fantasy/tolkien.rb +67 -0
- data/lib/faker/fantasy.rb +9 -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 +60 -0
- 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/half_life.rb +27 -0
- data/lib/faker/games/heroes.rb +40 -0
- data/lib/faker/games/heroes_of_the_storm.rb +38 -2
- 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/games.rb +9 -0
- data/lib/faker/internet/http.rb +48 -0
- data/lib/faker/internet.rb +582 -0
- 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/japanese_media.rb +9 -0
- data/lib/faker/locations/australia.rb +49 -0
- data/lib/faker/locations.rb +9 -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/princess_bride.rb +19 -0
- data/lib/faker/movies/star_wars.rb +169 -5
- data/lib/faker/movies/the_room.rb +63 -0
- data/lib/faker/movies/tron.rb +161 -0
- data/lib/faker/movies/v_for_vendetta.rb +29 -0
- data/lib/faker/movies.rb +9 -0
- data/lib/faker/music/bossa_nova.rb +35 -0
- data/lib/faker/music/grateful_dead.rb +18 -2
- data/lib/faker/music/hiphop.rb +48 -0
- data/lib/faker/music/opera.rb +273 -1
- data/lib/faker/music/pearl_jam.rb +48 -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 +35 -0
- data/lib/faker/music/smashing_pumpkins.rb +62 -0
- data/lib/faker/music/umphreys_mcgee.rb +9 -0
- data/lib/faker/music.rb +149 -0
- data/lib/faker/quotes/chiquito.rb +80 -0
- data/lib/faker/quotes/rajnikanth.rb +27 -0
- data/lib/faker/quotes/shakespeare.rb +70 -0
- data/lib/faker/quotes.rb +9 -0
- data/lib/faker/religion/bible.rb +50 -0
- data/lib/faker/religion.rb +9 -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/volleyball.rb +74 -0
- data/lib/faker/sports.rb +9 -0
- data/lib/faker/travel/airport.rb +43 -0
- data/lib/faker/travel/train_station.rb +54 -0
- data/lib/faker/travel.rb +9 -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 +47 -2
- data/lib/faker/tv_shows/community.rb +19 -0
- data/lib/faker/tv_shows/dr_who.rb +65 -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 +30 -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/tv_shows.rb +9 -0
- data/lib/faker/version.rb +2 -2
- data/lib/faker.rb +125 -45
- data/lib/helpers/base58.rb +1 -1
- data/lib/helpers/char.rb +22 -27
- data/lib/helpers/deprecator.rb +118 -0
- data/lib/helpers/positional_generator.rb +478 -0
- data/lib/helpers/unique_generator.rb +18 -14
- data/lib/locales/README.md +18 -2
- data/lib/locales/ar.yml +1608 -46
- data/lib/locales/bg.yml +937 -21
- data/lib/locales/ca-CAT.yml +347 -12
- data/lib/locales/ca.yml +580 -15
- data/lib/locales/da-DK.yml +530 -36
- data/lib/locales/de-AT.yml +3487 -25
- data/lib/locales/de-CH.yml +6051 -9
- data/lib/locales/de.yml +7185 -97
- data/lib/locales/ee.yml +1185 -27
- data/lib/locales/en/address.yml +1829 -559
- data/lib/locales/en/adjective.yml +179 -0
- data/lib/locales/en/airport.yml +381 -0
- data/lib/locales/en/ancient.yml +128 -4
- data/lib/locales/en/animal.yml +141 -2
- data/lib/locales/en/app.yml +89 -2
- data/lib/locales/en/appliance.yml +81 -2
- data/lib/locales/en/aqua_teen_hunger_force.yml +33 -1
- data/lib/locales/en/archer.yml +75 -0
- data/lib/locales/en/artist.yml +43 -1
- data/lib/locales/en/australia.yml +108 -0
- data/lib/locales/en/avatar.yml +57 -0
- data/lib/locales/en/back_to_the_future.yml +145 -117
- data/lib/locales/en/bank.yml +92 -3
- data/lib/locales/en/barcode.yml +24 -0
- data/lib/locales/en/beer.yml +232 -6
- data/lib/locales/en/bible.yml +87 -0
- data/lib/locales/en/big_bang_theory.yml +37 -0
- data/lib/locales/en/bird.yml +1280 -0
- data/lib/locales/en/blood.yml +13 -0
- data/lib/locales/en/bojack_horseman.yml +63 -3
- data/lib/locales/en/book.yml +486 -3
- data/lib/locales/en/bossa_nova.yml +110 -3
- data/lib/locales/en/breaking_bad.yml +110 -25
- data/lib/locales/en/brooklyn_nine_nine.yml +34 -0
- data/lib/locales/en/buffy.yml +239 -257
- data/lib/locales/en/business.yml +18 -2
- data/lib/locales/en/camera.yml +611 -0
- data/lib/locales/en/cannabis.yml +344 -10
- data/lib/locales/en/cat.yml +155 -3
- data/lib/locales/en/chess.yml +102 -0
- data/lib/locales/en/chiquito.yml +63 -0
- data/lib/locales/en/chuck_norris.yml +78 -79
- data/lib/locales/en/clash_of_clan.yml +99 -0
- data/lib/locales/en/code.yml +501 -1
- data/lib/locales/en/coffee.yml +450 -25
- data/lib/locales/en/color.yml +73 -1
- data/lib/locales/en/commerce.yml +117 -6
- data/lib/locales/en/community.yml +55 -30
- data/lib/locales/en/company.yml +1756 -13
- data/lib/locales/en/compass.yml +108 -12
- data/lib/locales/en/computer.yml +55 -0
- data/lib/locales/en/conan.yml +169 -0
- data/lib/locales/en/construction.yml +416 -422
- data/lib/locales/en/control.yml +247 -0
- data/lib/locales/en/cosmere.yml +219 -54
- data/lib/locales/en/cowboy_bebop.yml +160 -0
- data/lib/locales/en/culture_series.yml +298 -298
- data/lib/locales/en/currency.yml +358 -3
- data/lib/locales/en/dc_comics.yml +178 -49
- data/lib/locales/en/demographic.yml +218 -5
- data/lib/locales/en/departed.yml +46 -0
- data/lib/locales/en/dessert.yml +78 -3
- data/lib/locales/en/device.yml +112 -4
- data/lib/locales/en/dnd.yml +636 -0
- data/lib/locales/en/dog.yml +262 -7
- data/lib/locales/en/doraemon.yml +284 -0
- data/lib/locales/en/dota.yml +704 -63
- data/lib/locales/en/dr_who.yml +468 -93
- 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/dumb_and_dumber.yml +72 -56
- data/lib/locales/en/dune.yml +270 -131
- data/lib/locales/en/educator.yml +75 -6
- data/lib/locales/en/elder_scrolls.yml +582 -9
- data/lib/locales/en/electrical_components.yml +49 -3
- data/lib/locales/en/emotion.yml +480 -0
- data/lib/locales/en/esport.yml +58 -5
- data/lib/locales/en/fallout.yml +311 -133
- data/lib/locales/en/family_guy.yml +54 -4
- data/lib/locales/en/file.yml +109 -2
- data/lib/locales/en/final_fantasy_xiv.yml +754 -0
- data/lib/locales/en/final_space.yml +35 -0
- data/lib/locales/en/finance.yml +80 -4
- data/lib/locales/en/food.yml +1067 -10
- data/lib/locales/en/football.yml +121 -5
- data/lib/locales/en/fresh_prince_of_bel_air.yml +119 -70
- data/lib/locales/en/friends.yml +162 -3
- data/lib/locales/en/fullmetal_alchemist_brotherhood.yml +78 -0
- data/lib/locales/en/funny_name.yml +752 -1
- data/lib/locales/en/futurama.yml +336 -0
- data/lib/locales/en/game.yml +11 -0
- data/lib/locales/en/game_of_thrones.yml +2487 -5
- data/lib/locales/en/gender.yml +15 -2
- data/lib/locales/en/ghostbusters.yml +101 -88
- data/lib/locales/en/grateful_dead.yml +47 -45
- data/lib/locales/en/greek_philosophers.yml +44 -23
- data/lib/locales/en/hacker.yml +110 -5
- data/lib/locales/en/hackers.yml +53 -0
- data/lib/locales/en/half_life.yml +84 -3
- data/lib/locales/en/harry_potter.yml +323 -6
- data/lib/locales/en/heroes.yml +408 -3
- data/lib/locales/en/heroes_of_the_storm.yml +131 -4
- data/lib/locales/en/hey_arnold.yml +104 -21
- data/lib/locales/en/hipster.yml +203 -1
- data/lib/locales/en/hitchhikers_guide_to_the_galaxy.yml +243 -42
- data/lib/locales/en/hobby.yml +170 -0
- data/lib/locales/en/horse.yml +446 -2
- data/lib/locales/en/house.yml +34 -2
- data/lib/locales/en/how_i_met_your_mother.yml +97 -25
- data/lib/locales/en/how_to_train_your_dragon.yml +173 -0
- data/lib/locales/en/id_number.yml +7 -2
- data/lib/locales/en/industry_segments.yml +188 -4
- data/lib/locales/en/internet.yml +136 -3
- data/lib/locales/en/jack_handey.yml +54 -0
- data/lib/locales/en/job.yml +98 -7
- data/lib/locales/en/kamen_rider.yml +718 -0
- data/lib/locales/en/kpop.yml +954 -80
- data/lib/locales/en/league_of_legends.yml +285 -6
- data/lib/locales/en/lebowski.yml +58 -40
- data/lib/locales/en/lorem.yml +1095 -6
- data/lib/locales/en/lovecraft.yml +76 -6
- data/lib/locales/en/markdown.yml +12 -2
- data/lib/locales/en/marketing.yml +54 -1
- data/lib/locales/en/measurement.yml +42 -8
- data/lib/locales/en/michael_scott.yml +41 -42
- 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 +206 -2
- data/lib/locales/en/music.yml +461 -29
- data/lib/locales/en/myst.yml +87 -31
- data/lib/locales/en/name.yml +6068 -5
- data/lib/locales/en/naruto.yml +230 -0
- data/lib/locales/en/nato_phonetic_alphabet.yml +27 -1
- data/lib/locales/en/new_girl.yml +35 -37
- data/lib/locales/en/one_piece.yml +359 -6
- data/lib/locales/en/opera.yml +169 -1
- data/lib/locales/en/overwatch.yml +2648 -37
- data/lib/locales/en/parks_and_rec.yml +33 -4
- data/lib/locales/en/pearl_jam.yml +213 -0
- data/lib/locales/en/phish.yml +391 -1
- data/lib/locales/en/phone_number.yml +78 -3
- data/lib/locales/en/pokemon.yml +417 -4
- data/lib/locales/en/prince.yml +227 -0
- data/lib/locales/en/princess_bride.yml +48 -2
- data/lib/locales/en/programming_language.yml +753 -3
- data/lib/locales/en/quote.yml +606 -163
- data/lib/locales/en/rajnikanth.yml +77 -0
- data/lib/locales/en/relationship.yml +29 -6
- data/lib/locales/en/restaurant.yml +31 -31
- data/lib/locales/en/rick_and_morty.yml +116 -3
- data/lib/locales/en/rock_band.yml +228 -1
- data/lib/locales/en/rupaul.yml +120 -122
- data/lib/locales/en/rush.yml +32 -0
- data/lib/locales/en/science.yml +481 -3
- data/lib/locales/en/seinfeld.yml +110 -3
- data/lib/locales/en/shakespeare.yml +46 -53
- data/lib/locales/en/silicon_valley.yml +122 -50
- data/lib/locales/en/simpsons.yml +897 -23
- data/lib/locales/en/slack_emoji.yml +874 -8
- 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 +373 -14
- data/lib/locales/en/spongebob.yml +489 -0
- data/lib/locales/en/sport.yml +130 -0
- data/lib/locales/en/star_trek.yml +105 -4
- data/lib/locales/en/star_wars.yml +564 -219
- data/lib/locales/en/stargate.yml +65 -18
- data/lib/locales/en/stranger_thing.yml +31 -33
- 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/subscription.yml +47 -5
- 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/superhero.yml +574 -4
- data/lib/locales/en/supernatural.yml +141 -0
- data/lib/locales/en/sword_art_online.yml +327 -331
- data/lib/locales/en/tarkov.yml +593 -0
- data/lib/locales/en/tea.yml +172 -0
- data/lib/locales/en/team.yml +125 -3
- data/lib/locales/en/the_expanse.yml +92 -4
- data/lib/locales/en/the_it_crowd.yml +148 -152
- data/lib/locales/en/the_kingkiller_chronicle.yml +56 -0
- data/lib/locales/en/the_office.yml +82 -0
- data/lib/locales/en/the_room.yml +68 -0
- data/lib/locales/en/the_thick_of_it.yml +83 -3
- data/lib/locales/en/theater.yml +597 -0
- data/lib/locales/en/tolkien.yml +2453 -0
- data/lib/locales/en/touhou.yml +839 -0
- data/lib/locales/en/train_station.yml +280 -0
- data/lib/locales/en/tron.yml +227 -0
- data/lib/locales/en/twin_peaks.yml +130 -3
- data/lib/locales/en/umphreys_mcgee.yml +266 -1
- data/lib/locales/en/university.yml +15 -2
- data/lib/locales/en/v_for_vendetta.yml +157 -160
- data/lib/locales/en/vehicle.yml +2809 -75
- data/lib/locales/en/venture_bros.yml +225 -4
- data/lib/locales/en/verbs.yml +3785 -5
- data/lib/locales/en/volleyball.yml +501 -0
- data/lib/locales/en/warhammer_fantasy.yml +549 -0
- data/lib/locales/en/witcher.yml +426 -7
- data/lib/locales/en/world_cup.yml +1132 -235
- data/lib/locales/en/world_of_warcraft.yml +122 -4
- data/lib/locales/en/yoda.yml +38 -1
- data/lib/locales/en/zelda.yml +962 -4
- data/lib/locales/en-AU.yml +728 -17
- data/lib/locales/en-BORK.yml +104 -1
- data/lib/locales/en-CA.yml +373 -15
- data/lib/locales/en-GB.yml +118 -8
- data/lib/locales/en-IND.yml +1259 -16
- data/lib/locales/en-KE.yml +212 -0
- data/lib/locales/en-MS.yml +364 -16
- data/lib/locales/en-NEP.yml +213 -36
- data/lib/locales/en-NG.yml +737 -65
- data/lib/locales/en-NZ.yml +1183 -27
- data/lib/locales/en-PAK.yml +392 -9
- data/lib/locales/en-SG.yml +581 -15
- data/lib/locales/en-TH.yml +360 -0
- data/lib/locales/en-UG.yml +374 -75
- data/lib/locales/en-US.yml +6937 -71
- data/lib/locales/en-ZA.yml +1394 -13
- data/lib/locales/en-au-ocker.yml +266 -21
- data/lib/locales/en.yml +0 -50
- data/lib/locales/es-AR.yml +4570 -0
- data/lib/locales/es-MX.yml +1910 -41
- data/lib/locales/es.yml +2172 -52
- data/lib/locales/fa.yml +1624 -3
- data/lib/locales/fi-FI.yml +316 -16
- data/lib/locales/fr/address.yml +773 -0
- data/lib/locales/fr/adjective.yml +266 -0
- data/lib/locales/fr/ancient.yml +141 -0
- data/lib/locales/fr/animal.yml +122 -0
- data/lib/locales/fr/appliance.yml +69 -0
- data/lib/locales/fr/book.yml +31 -0
- data/lib/locales/fr/color.yml +34 -0
- data/lib/locales/fr/company.yml +497 -0
- data/lib/locales/fr/compass.yml +71 -0
- data/lib/locales/fr/demographic.yml +6 -0
- data/lib/locales/fr/gender.yml +21 -0
- data/lib/locales/fr/internet.yml +15 -0
- data/lib/locales/fr/lorem.yml +1094 -0
- data/lib/locales/fr/measurement.yml +34 -0
- data/lib/locales/fr/name.yml +1193 -0
- data/lib/locales/fr/phone_number.yml +38 -0
- data/lib/locales/fr/pokemon.yml +421 -0
- data/lib/locales/fr-CA.yml +2756 -44
- data/lib/locales/fr-CH.yml +2455 -42
- data/lib/locales/fr.yml +2 -111
- data/lib/locales/he.yml +255 -9
- data/lib/locales/hy.yml +3630 -124
- data/lib/locales/id.yml +840 -10
- data/lib/locales/it.yml +1310 -31
- data/lib/locales/ja/README.md +13 -0
- data/lib/locales/ja/address.yml +363 -0
- data/lib/locales/ja/adjective.yml +148 -0
- data/lib/locales/ja/ancient.yml +18 -0
- data/lib/locales/ja/animal.yml +87 -0
- data/lib/locales/ja/artist.yml +46 -0
- data/lib/locales/ja/bank.yml +139 -0
- data/lib/locales/ja/book.yml +496 -0
- data/lib/locales/ja/cat.yml +79 -0
- data/lib/locales/ja/coffee.yml +22 -0
- data/lib/locales/ja/color.yml +35 -0
- data/lib/locales/ja/commerce.yml +103 -0
- data/lib/locales/ja/company.yml +26 -0
- data/lib/locales/ja/dog.yml +339 -0
- data/lib/locales/ja/emotion.yml +49 -0
- data/lib/locales/ja/food.yml +41 -0
- data/lib/locales/ja/football.yml +115 -0
- data/lib/locales/ja/gender.yml +6 -0
- data/lib/locales/ja/lorem.yml +1020 -0
- data/lib/locales/ja/name.yml +213 -0
- data/lib/locales/ja/naruto.yml +230 -0
- data/lib/locales/ja/overwatch.yml +37 -0
- data/lib/locales/ja/phone_number.yml +13 -0
- data/lib/locales/ja/pokemon.yml +441 -0
- data/lib/locales/ja/relationship.yml +33 -0
- data/lib/locales/ja/restaurant.yml +82 -0
- data/lib/locales/ja/space.yml +23 -0
- data/lib/locales/ja/sport.yml +130 -0
- data/lib/locales/ja/studio_ghibli.yml +112 -0
- data/lib/locales/ja/subscription.yml +50 -0
- data/lib/locales/ja/super_mario.yml +73 -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 +22 -0
- data/lib/locales/ja/zelda.yml +19 -0
- data/lib/locales/ko.yml +1450 -17
- data/lib/locales/lt.yml +315 -0
- data/lib/locales/lv.yml +1221 -27
- data/lib/locales/mi-NZ.yml +283 -0
- data/lib/locales/nb-NO.yml +518 -27
- data/lib/locales/nl.yml +33514 -55
- data/lib/locales/pl.yml +4008 -38
- data/lib/locales/pt-BR.yml +8210 -641
- data/lib/locales/pt.yml +846 -45
- data/lib/locales/ru.yml +1355 -30
- data/lib/locales/sk.yml +4416 -41
- data/lib/locales/sv.yml +731 -41
- data/lib/locales/th.yml +380 -0
- data/lib/locales/tr.yml +77 -19
- data/lib/locales/uk.yml +1814 -48
- data/lib/locales/vi.yml +392 -48
- data/lib/locales/zh-CN/bank.yml +17 -0
- data/lib/locales/zh-CN.yml +541 -19
- data/lib/locales/zh-TW.yml +1031 -15
- metadata +230 -125
- data/History.md +0 -176
- data/lib/faker/books/book.rb +0 -25
- data/lib/faker/default/bossa_nova.rb +0 -15
- data/lib/faker/default/fillmurray.rb +0 -15
- data/lib/faker/default/internet.rb +0 -207
- data/lib/faker/default/lorem_pixel.rb +0 -38
- data/lib/faker/default/twitter.rb +0 -174
- data/lib/faker/games/game.rb +0 -21
- data/lib/faker/movies/movie.rb +0 -11
- data/lib/faker/music/music.rb +0 -47
- data/lib/faker/quotes/quote.rb +0 -32
- 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
|
@@ -6,18 +6,56 @@ module Faker
|
|
|
6
6
|
flexible :venture_bros
|
|
7
7
|
|
|
8
8
|
class << self
|
|
9
|
+
##
|
|
10
|
+
# Produces a character from The Venture Bros.
|
|
11
|
+
#
|
|
12
|
+
# @return [String]
|
|
13
|
+
#
|
|
14
|
+
# @example
|
|
15
|
+
# Faker::TvShows::VentureBros.character #=> "Scaramantula"
|
|
16
|
+
#
|
|
17
|
+
# @faker.version 1.8.3
|
|
9
18
|
def character
|
|
10
19
|
fetch('venture_bros.character')
|
|
11
20
|
end
|
|
12
21
|
|
|
22
|
+
##
|
|
23
|
+
# Produces an organization from The Venture Bros.
|
|
24
|
+
#
|
|
25
|
+
# @return [String]
|
|
26
|
+
#
|
|
27
|
+
# @example
|
|
28
|
+
# Faker::TvShows::VentureBros.organization
|
|
29
|
+
# #=> "Guild of Calamitous Intent"
|
|
30
|
+
#
|
|
31
|
+
# @faker.version 1.8.3
|
|
13
32
|
def organization
|
|
14
33
|
fetch('venture_bros.organization')
|
|
15
34
|
end
|
|
16
35
|
|
|
36
|
+
##
|
|
37
|
+
# Produces a vehicle from The Venture Bros.
|
|
38
|
+
#
|
|
39
|
+
# @return [String]
|
|
40
|
+
#
|
|
41
|
+
# @example
|
|
42
|
+
# Faker::TvShows::VentureBros.vehicle #=> "Monarchmobile"
|
|
43
|
+
#
|
|
44
|
+
# @faker.version 1.8.3
|
|
17
45
|
def vehicle
|
|
18
46
|
fetch('venture_bros.vehicle')
|
|
19
47
|
end
|
|
20
48
|
|
|
49
|
+
##
|
|
50
|
+
# Produces a quote from The Venture Bros.
|
|
51
|
+
#
|
|
52
|
+
# @return [String]
|
|
53
|
+
#
|
|
54
|
+
# @example
|
|
55
|
+
# Faker::TvShows::VentureBros.quote
|
|
56
|
+
# #=> "Revenge, like gazpacho soup, is best served cold, precise, and merciless."
|
|
57
|
+
#
|
|
58
|
+
# @faker.version 1.8.3
|
|
21
59
|
def quote
|
|
22
60
|
fetch('venture_bros.quote')
|
|
23
61
|
end
|
data/lib/faker/version.rb
CHANGED
data/lib/faker.rb
CHANGED
|
@@ -2,37 +2,53 @@
|
|
|
2
2
|
|
|
3
3
|
mydir = __dir__
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
require 'psych'
|
|
7
|
-
end
|
|
8
|
-
|
|
5
|
+
require 'psych'
|
|
9
6
|
require 'i18n'
|
|
10
|
-
require 'set' # Fixes a bug in i18n 0.6.11
|
|
11
7
|
|
|
12
|
-
|
|
8
|
+
autoload(:OpenSSL, 'openssl')
|
|
9
|
+
|
|
10
|
+
Dir.glob(File.join(mydir, 'helpers', '*.rb')).each { |file| require file }
|
|
13
11
|
|
|
14
12
|
I18n.load_path += Dir[File.join(mydir, 'locales', '**/*.yml')]
|
|
15
|
-
I18n.reload! if I18n.backend.initialized?
|
|
16
13
|
|
|
17
14
|
module Faker
|
|
18
|
-
|
|
19
|
-
@
|
|
20
|
-
@random = nil
|
|
15
|
+
module Config
|
|
16
|
+
@default_locale = nil
|
|
21
17
|
|
|
22
18
|
class << self
|
|
23
|
-
attr_writer :
|
|
24
|
-
|
|
19
|
+
attr_writer :default_locale
|
|
20
|
+
|
|
21
|
+
def locale=(new_locale)
|
|
22
|
+
Thread.current[:faker_config_locale] = new_locale
|
|
23
|
+
end
|
|
25
24
|
|
|
26
25
|
def locale
|
|
27
|
-
|
|
26
|
+
# Because I18n.locale defaults to :en, if we don't have :en in our available_locales, errors will happen
|
|
27
|
+
Thread.current[:faker_config_locale] || @default_locale || (I18n.available_locales.include?(I18n.locale) ? I18n.locale : I18n.available_locales.first)
|
|
28
28
|
end
|
|
29
29
|
|
|
30
30
|
def own_locale
|
|
31
|
-
|
|
31
|
+
Thread.current[:faker_config_locale]
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def random=(new_random)
|
|
35
|
+
Thread.current[:faker_config_random] = new_random
|
|
32
36
|
end
|
|
33
37
|
|
|
34
38
|
def random
|
|
35
|
-
|
|
39
|
+
Thread.current[:faker_config_random] || Random
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def lazy_loading?
|
|
43
|
+
if ENV.key?('FAKER_LAZY_LOAD') && !ENV['FAKER_LAZY_LOAD'].nil?
|
|
44
|
+
%w[true TRUE 1].include?(ENV.fetch('FAKER_LAZY_LOAD', nil))
|
|
45
|
+
else
|
|
46
|
+
Thread.current[:faker_lazy_loading] == true
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def lazy_loading=(value)
|
|
51
|
+
Thread.current[:faker_lazy_loading] = value
|
|
36
52
|
end
|
|
37
53
|
end
|
|
38
54
|
end
|
|
@@ -40,24 +56,33 @@ module Faker
|
|
|
40
56
|
class Base
|
|
41
57
|
Numbers = Array(0..9)
|
|
42
58
|
ULetters = Array('A'..'Z')
|
|
43
|
-
|
|
59
|
+
LLetters = Array('a'..'z')
|
|
60
|
+
Letters = ULetters + LLetters
|
|
44
61
|
|
|
45
62
|
class << self
|
|
63
|
+
attr_reader :flexible_key
|
|
64
|
+
|
|
65
|
+
NOT_GIVEN = Object.new
|
|
66
|
+
|
|
46
67
|
## by default numerify results do not start with a zero
|
|
47
68
|
def numerify(number_string, leading_zero: false)
|
|
48
|
-
return number_string.gsub(
|
|
69
|
+
return number_string.gsub('#') { rand(10).to_s } if leading_zero
|
|
49
70
|
|
|
50
|
-
number_string.sub(
|
|
71
|
+
number_string.sub('#') { rand(1..9).to_s }.gsub('#') { rand(10).to_s }
|
|
51
72
|
end
|
|
52
73
|
|
|
53
74
|
def letterify(letter_string)
|
|
54
|
-
letter_string.gsub(
|
|
75
|
+
letter_string.gsub('?') { sample(ULetters) }
|
|
55
76
|
end
|
|
56
77
|
|
|
57
78
|
def bothify(string)
|
|
58
79
|
letterify(numerify(string))
|
|
59
80
|
end
|
|
60
81
|
|
|
82
|
+
def generate(as_type, &)
|
|
83
|
+
PositionalGenerator.new(as_type, &).generate
|
|
84
|
+
end
|
|
85
|
+
|
|
61
86
|
# Given a regular expression, attempt to generate a string
|
|
62
87
|
# that would match it. This is a rather simple implementation,
|
|
63
88
|
# so don't be shocked if it blows up on you in a spectacular fashion.
|
|
@@ -80,14 +105,14 @@ module Faker
|
|
|
80
105
|
def regexify(reg)
|
|
81
106
|
reg = reg.source if reg.respond_to?(:source) # Handle either a Regexp or a String that looks like a Regexp
|
|
82
107
|
reg
|
|
83
|
-
.gsub(%r{
|
|
84
|
-
.gsub(/\{(\d+)\}/, '{\1,\1}').gsub(
|
|
85
|
-
.gsub(/(\[[^\]]
|
|
86
|
-
.gsub(/(\([
|
|
87
|
-
.gsub(/(\\?.)\{(\d+),(\d+)\}/) { |_match| Regexp.last_match(1) * sample(Array(Range.new(Regexp.last_match(2).to_i, Regexp.last_match(3).to_i))) }
|
|
88
|
-
.gsub(/\((.*?)\)/) { |match| sample(match.gsub(/[
|
|
89
|
-
.gsub(/\[([^\]]
|
|
90
|
-
.gsub(/\[([^\]]
|
|
108
|
+
.gsub(%r{^/?\^?}, '').gsub(%r{\$?/?$}, '') # Ditch the anchors
|
|
109
|
+
.gsub(/\{(\d+)\}/, '{\1,\1}').gsub('?', '{0,1}') # All {2} become {2,2} and ? become {0,1}
|
|
110
|
+
.gsub(/(\[[^\]]++\])\{(\d+),(\d+)\}/) { |_match| Regexp.last_match(1) * sample(Array(Range.new(Regexp.last_match(2).to_i, Regexp.last_match(3).to_i))) } # [12]{1,2} becomes [12] or [12][12]
|
|
111
|
+
.gsub(/(\([^)]++\))\{(\d+),(\d+)\}/) { |_match| Regexp.last_match(1) * sample(Array(Range.new(Regexp.last_match(2).to_i, Regexp.last_match(3).to_i))) } # (12|34){1,2} becomes (12|34) or (12|34)(12|34)
|
|
112
|
+
.gsub(/(\\?.)\{(\d+),(\d+)\}/) { |_match| Regexp.last_match(1) * sample(Array(Range.new(Regexp.last_match(2).to_i, Regexp.last_match(3).to_i))) } # A{1,2} becomes A or AA or \d{3} becomes \d\d\d
|
|
113
|
+
.gsub(/\((.*?)\)/) { |match| sample(match.gsub(/[()]/, '').split('|')) } # (this|that) becomes 'this' or 'that'
|
|
114
|
+
.gsub(/\[([^\]]++)\]/) { |match| match.gsub(/(\w-\w)/) { |range| sample(Array(Range.new(*range.split('-')))) } } # All A-Z inside of [] become C (or X, or whatever)
|
|
115
|
+
.gsub(/\[([^\]]++)\]/) { |_match| sample(Regexp.last_match(1).chars) } # All [ABC] become B (or A or C)
|
|
91
116
|
.gsub('\d') { |_match| sample(Numbers) }
|
|
92
117
|
.gsub('\w') { |_match| sample(Letters) }
|
|
93
118
|
end
|
|
@@ -96,7 +121,7 @@ module Faker
|
|
|
96
121
|
# with an array of values and selecting one of them.
|
|
97
122
|
def fetch(key)
|
|
98
123
|
fetched = sample(translate("faker.#{key}"))
|
|
99
|
-
if fetched&.match(%r{
|
|
124
|
+
if fetched&.match(%r{^/}) && fetched.match(%r{/$}) # A regex
|
|
100
125
|
regexify(fetched)
|
|
101
126
|
else
|
|
102
127
|
fetched
|
|
@@ -108,7 +133,7 @@ module Faker
|
|
|
108
133
|
def fetch_all(key)
|
|
109
134
|
fetched = translate("faker.#{key}")
|
|
110
135
|
fetched = fetched.last if fetched.size <= 1
|
|
111
|
-
if !fetched.respond_to?(:sample) && fetched.match(%r{
|
|
136
|
+
if !fetched.respond_to?(:sample) && fetched.match(%r{^/}) && fetched.match(%r{/$}) # A regex
|
|
112
137
|
regexify(fetched)
|
|
113
138
|
else
|
|
114
139
|
fetched
|
|
@@ -120,7 +145,8 @@ module Faker
|
|
|
120
145
|
# formatted translation: e.g., "#{first_name} #{last_name}".
|
|
121
146
|
def parse(key)
|
|
122
147
|
fetched = fetch(key)
|
|
123
|
-
|
|
148
|
+
|
|
149
|
+
parts = fetched.scan(/(\(?)#\{([A-Za-z]+\.)?([^}]+)\}([^#]++)?/).map do |prefix, kls, meth, etc|
|
|
124
150
|
# If the token had a class Prefix (e.g., Name.first_name)
|
|
125
151
|
# grab the constant, otherwise use self
|
|
126
152
|
cls = kls ? Faker.const_get(kls.chop) : self
|
|
@@ -129,7 +155,7 @@ module Faker
|
|
|
129
155
|
# In either case the information will be retained for reconstruction of the string.
|
|
130
156
|
text = prefix
|
|
131
157
|
|
|
132
|
-
# If the class has the method, call it, otherwise fetch the
|
|
158
|
+
# If the class has the method, call it, otherwise fetch the translation
|
|
133
159
|
# (e.g., faker.phone_number.area_code)
|
|
134
160
|
text += if cls.respond_to?(meth)
|
|
135
161
|
cls.send(meth)
|
|
@@ -148,30 +174,28 @@ module Faker
|
|
|
148
174
|
|
|
149
175
|
# Call I18n.translate with our configured locale if no
|
|
150
176
|
# locale is specified
|
|
151
|
-
def translate(*args)
|
|
152
|
-
opts = args.last.is_a?(Hash) ? args.pop : {}
|
|
177
|
+
def translate(*args, **opts)
|
|
153
178
|
opts[:locale] ||= Faker::Config.locale
|
|
154
179
|
opts[:raise] = true
|
|
155
|
-
I18n.translate(*args
|
|
180
|
+
I18n.translate(*args, **opts)
|
|
156
181
|
rescue I18n::MissingTranslationData
|
|
157
|
-
opts = args.last.is_a?(Hash) ? args.pop : {}
|
|
158
182
|
opts[:locale] = :en
|
|
159
183
|
|
|
160
184
|
# Super-simple fallback -- fallback to en if the
|
|
161
185
|
# translation was missing. If the translation isn't
|
|
162
186
|
# in en either, then it will raise again.
|
|
163
187
|
disable_enforce_available_locales do
|
|
164
|
-
I18n.translate(*args
|
|
188
|
+
I18n.translate(*args, **opts)
|
|
165
189
|
end
|
|
166
190
|
end
|
|
167
191
|
|
|
168
192
|
# Executes block with given locale set.
|
|
169
|
-
def with_locale(tmp_locale = nil)
|
|
193
|
+
def with_locale(tmp_locale = nil, &block)
|
|
170
194
|
current_locale = Faker::Config.own_locale
|
|
171
195
|
Faker::Config.locale = tmp_locale
|
|
172
196
|
|
|
173
197
|
disable_enforce_available_locales do
|
|
174
|
-
I18n.with_locale(tmp_locale)
|
|
198
|
+
I18n.with_locale(tmp_locale, &block)
|
|
175
199
|
end
|
|
176
200
|
ensure
|
|
177
201
|
Faker::Config.locale = current_locale
|
|
@@ -186,10 +210,10 @@ module Faker
|
|
|
186
210
|
# name:
|
|
187
211
|
# girls_name: ["Alice", "Cheryl", "Tatiana"]
|
|
188
212
|
# Then you can call Faker::Name.girls_name and it will act like #first_name
|
|
189
|
-
def method_missing(mth, *args, &
|
|
190
|
-
super unless
|
|
213
|
+
def method_missing(mth, *args, &)
|
|
214
|
+
super unless flexible_key
|
|
191
215
|
|
|
192
|
-
if (translation = translate("faker.#{
|
|
216
|
+
if (translation = translate("faker.#{flexible_key}.#{mth}"))
|
|
193
217
|
sample(translation)
|
|
194
218
|
else
|
|
195
219
|
super
|
|
@@ -216,18 +240,34 @@ module Faker
|
|
|
216
240
|
end
|
|
217
241
|
end
|
|
218
242
|
|
|
243
|
+
# Return unique values from the generator every time.
|
|
244
|
+
#
|
|
245
|
+
# @param max_retries [Integer] The max number of retries that should be done before giving up.
|
|
246
|
+
# @return [self]
|
|
219
247
|
def unique(max_retries = 10_000)
|
|
220
248
|
@unique ||= UniqueGenerator.new(self, max_retries)
|
|
221
249
|
end
|
|
222
250
|
|
|
223
|
-
def sample(list)
|
|
224
|
-
list.respond_to?(:sample)
|
|
251
|
+
def sample(list, num = nil)
|
|
252
|
+
if list.respond_to?(:sample)
|
|
253
|
+
if num
|
|
254
|
+
list.sample(num, random: Faker::Config.random)
|
|
255
|
+
else
|
|
256
|
+
list.sample(random: Faker::Config.random)
|
|
257
|
+
end
|
|
258
|
+
else
|
|
259
|
+
list
|
|
260
|
+
end
|
|
225
261
|
end
|
|
226
262
|
|
|
227
263
|
def shuffle(list)
|
|
228
264
|
list.shuffle(random: Faker::Config.random)
|
|
229
265
|
end
|
|
230
266
|
|
|
267
|
+
def shuffle!(list)
|
|
268
|
+
list.shuffle!(random: Faker::Config.random)
|
|
269
|
+
end
|
|
270
|
+
|
|
231
271
|
def rand(max = nil)
|
|
232
272
|
if max.nil?
|
|
233
273
|
Faker::Config.random.rand
|
|
@@ -247,7 +287,47 @@ module Faker
|
|
|
247
287
|
end
|
|
248
288
|
end
|
|
249
289
|
end
|
|
290
|
+
|
|
291
|
+
if Faker::Config.lazy_loading?
|
|
292
|
+
def self.load_path(*constants)
|
|
293
|
+
constants.map do |class_name|
|
|
294
|
+
class_name
|
|
295
|
+
.to_s
|
|
296
|
+
.gsub('::', '/')
|
|
297
|
+
.gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
|
|
298
|
+
.gsub(/([a-z\d])([A-Z])/, '\1_\2')
|
|
299
|
+
.tr('-', '_')
|
|
300
|
+
.downcase
|
|
301
|
+
end.join('/')
|
|
302
|
+
end
|
|
303
|
+
|
|
304
|
+
def self.lazy_load(klass)
|
|
305
|
+
def klass.const_missing(class_name)
|
|
306
|
+
load_path = case class_name
|
|
307
|
+
when :DnD
|
|
308
|
+
Faker.load_path('faker/games/dnd')
|
|
309
|
+
else
|
|
310
|
+
Faker.load_path(name, class_name)
|
|
311
|
+
end
|
|
312
|
+
|
|
313
|
+
begin
|
|
314
|
+
require(load_path)
|
|
315
|
+
rescue LoadError
|
|
316
|
+
require(load_path.gsub('faker/', 'faker/default/'))
|
|
317
|
+
end
|
|
318
|
+
|
|
319
|
+
const_get(class_name)
|
|
320
|
+
end
|
|
321
|
+
end
|
|
322
|
+
|
|
323
|
+
lazy_load(self)
|
|
324
|
+
end
|
|
250
325
|
end
|
|
251
326
|
|
|
252
|
-
|
|
253
|
-
|
|
327
|
+
unless Faker::Config.lazy_loading?
|
|
328
|
+
rb_files = []
|
|
329
|
+
rb_files << File.join(mydir, 'faker', '*.rb')
|
|
330
|
+
rb_files << File.join(mydir, 'faker', '/**/*.rb')
|
|
331
|
+
|
|
332
|
+
Dir.glob(rb_files).each { |file| require file }
|
|
333
|
+
end
|
data/lib/helpers/base58.rb
CHANGED
data/lib/helpers/char.rb
CHANGED
|
@@ -5,7 +5,7 @@ module Faker
|
|
|
5
5
|
def self.prepare(string)
|
|
6
6
|
result = romanize_cyrillic string
|
|
7
7
|
result = fix_umlauts result
|
|
8
|
-
result.gsub(
|
|
8
|
+
result.gsub(/[^\w-]/, '').downcase
|
|
9
9
|
end
|
|
10
10
|
|
|
11
11
|
def self.fix_umlauts(string)
|
|
@@ -15,6 +15,7 @@ module Faker
|
|
|
15
15
|
when 'ö' then 'oe'
|
|
16
16
|
when 'ü' then 'ue'
|
|
17
17
|
when 'ß' then 'ss'
|
|
18
|
+
else match.downcase
|
|
18
19
|
end
|
|
19
20
|
end
|
|
20
21
|
end
|
|
@@ -23,19 +24,16 @@ module Faker
|
|
|
23
24
|
if Faker::Config.locale == 'uk'
|
|
24
25
|
# Based on conventions abopted by BGN/PCGN for Ukrainian
|
|
25
26
|
uk_chars = {
|
|
26
|
-
'а' => 'a',
|
|
27
|
-
'
|
|
28
|
-
'
|
|
29
|
-
'
|
|
30
|
-
'
|
|
31
|
-
'
|
|
32
|
-
'
|
|
33
|
-
'
|
|
34
|
-
'
|
|
35
|
-
'
|
|
36
|
-
'Ф' => 'f', 'Х' => 'kh', 'Ц' => 'ts', 'Ч' => 'ch', 'Ш' => 'sh', 'Щ' => 'shch',
|
|
37
|
-
'Ю' => 'yu', 'Я' => 'ya',
|
|
38
|
-
'ь' => '' # Ignore symbol, because its standard presentation is not allowed in URLs
|
|
27
|
+
'а' => 'a', 'б' => 'b', 'в' => 'v', 'г' => 'h', 'ґ' => 'g', 'д' => 'd', 'е' => 'e',
|
|
28
|
+
'є' => 'ye', 'ж' => 'zh', 'з' => 'z', 'и' => 'y', 'і' => 'i', 'ї' => 'yi', 'й' => 'y',
|
|
29
|
+
'к' => 'k', 'л' => 'l', 'м' => 'm', 'н' => 'n', 'о' => 'o', 'п' => 'p', 'р' => 'r',
|
|
30
|
+
'с' => 's', 'т' => 't', 'у' => 'u', 'ф' => 'f', 'х' => 'kh', 'ц' => 'ts', 'ч' => 'ch',
|
|
31
|
+
'ш' => 'sh', 'щ' => 'shch', 'ю' => 'yu', 'я' => 'ya', 'А' => 'a', 'Б' => 'b', 'В' => 'v',
|
|
32
|
+
'Г' => 'h', 'Ґ' => 'g', 'Д' => 'd', 'Е' => 'e', 'Є' => 'ye', 'Ж' => 'zh', 'З' => 'z',
|
|
33
|
+
'И' => 'y', 'І' => 'i', 'Ї' => 'yi', 'Й' => 'y', 'К' => 'k', 'Л' => 'l', 'М' => 'm',
|
|
34
|
+
'Н' => 'n', 'О' => 'o', 'П' => 'p', 'Р' => 'r', 'С' => 's', 'Т' => 't', 'У' => 'u',
|
|
35
|
+
'Ф' => 'f', 'Х' => 'kh', 'Ц' => 'ts', 'Ч' => 'ch', 'Ш' => 'sh', 'Щ' => 'shch', 'Ю' => 'yu',
|
|
36
|
+
'Я' => 'ya', 'ь' => '' # Ignore symbol, because its standard presentation is not allowed in URLs
|
|
39
37
|
}
|
|
40
38
|
return string.gsub(/[а-яА-ЯіїєґІЇЄҐ]/, uk_chars)
|
|
41
39
|
end
|
|
@@ -44,22 +42,19 @@ module Faker
|
|
|
44
42
|
# Based on conventions abopted by BGN/PCGN for Russian
|
|
45
43
|
ru_chars = {
|
|
46
44
|
'а' => 'a', 'б' => 'b', 'в' => 'v', 'г' => 'h', 'д' => 'd', 'е' => 'e',
|
|
47
|
-
'ё' => 'ye', 'ж' => 'zh', 'з' => 'z',
|
|
48
|
-
'л' => 'l', 'м' => 'm', 'н' => 'n',
|
|
49
|
-
'с' => 's', 'т' => 't', 'у' => 'u',
|
|
50
|
-
'ч' => 'ch', 'ш' => 'sh', 'щ' => 'shch', 'ы' => 'у',
|
|
51
|
-
'я' => 'ya',
|
|
52
|
-
'
|
|
53
|
-
'
|
|
54
|
-
'
|
|
55
|
-
'
|
|
56
|
-
'
|
|
57
|
-
'Я' => 'ya',
|
|
58
|
-
'ь' => '', 'ъ' => '' # Ignore symbols, because its standard presentation is not allowed in URLs
|
|
45
|
+
'ё' => 'ye', 'ж' => 'zh', 'з' => 'z', 'и' => 'i', 'й' => 'y', 'к' => 'k',
|
|
46
|
+
'л' => 'l', 'м' => 'm', 'н' => 'n', 'о' => 'o', 'п' => 'p', 'р' => 'r',
|
|
47
|
+
'с' => 's', 'т' => 't', 'у' => 'u', 'ф' => 'f', 'х' => 'kh', 'ц' => 'ts',
|
|
48
|
+
'ч' => 'ch', 'ш' => 'sh', 'щ' => 'shch', 'ы' => 'у', 'э' => 'e', 'ю' => 'yu',
|
|
49
|
+
'я' => 'ya', 'А' => 'a', 'Б' => 'b', 'В' => 'v', 'Г' => 'h', 'Д' => 'd',
|
|
50
|
+
'Е' => 'e', 'Ё' => 'ye', 'Ж' => 'zh', 'З' => 'z', 'И' => 'i', 'Й' => 'y',
|
|
51
|
+
'К' => 'k', 'Л' => 'l', 'М' => 'm', 'Н' => 'n', 'О' => 'o', 'П' => 'p', 'Р' => 'r',
|
|
52
|
+
'С' => 's', 'Т' => 't', 'У' => 'u', 'Ф' => 'f', 'Х' => 'kh', 'Ц' => 'ts',
|
|
53
|
+
'Ч' => 'ch', 'Ш' => 'sh', 'Щ' => 'shch', 'Ы' => 'у', 'Э' => 'e', 'Ю' => 'yu',
|
|
54
|
+
'Я' => 'ya', 'ь' => '', 'ъ' => '' # Ignore symbols, because its standard presentation is not allowed in URLs
|
|
59
55
|
}
|
|
60
56
|
return string.gsub(/[а-яА-Я]/, ru_chars)
|
|
61
57
|
end
|
|
62
|
-
|
|
63
58
|
string
|
|
64
59
|
end
|
|
65
60
|
end
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# Based on Rails ActiveSupport Deprecator
|
|
4
|
+
# https://github.com/rails/rails/blob/main/activesupport/lib/active_support/deprecation/constant_accessor.rb
|
|
5
|
+
|
|
6
|
+
# rubocop:disable Style/ClassVars
|
|
7
|
+
module Faker
|
|
8
|
+
# Provides a way to rename generators, including their namespaces, with a deprecation cycle in which
|
|
9
|
+
# both the old and new names work, but using the old one prints a deprecation message.
|
|
10
|
+
#
|
|
11
|
+
# Deprecator provides a deprecate_generator method to be used when
|
|
12
|
+
# renaming a generator. For example, let's say we want to change the following Generator's
|
|
13
|
+
# name to <tt>Faker::NewGenerator</tt>:
|
|
14
|
+
#
|
|
15
|
+
# module Faker
|
|
16
|
+
# class Generator
|
|
17
|
+
# def self.generate
|
|
18
|
+
# "be kind"
|
|
19
|
+
# end
|
|
20
|
+
# end
|
|
21
|
+
# end
|
|
22
|
+
#
|
|
23
|
+
# To rename it, you need to do the update the name and declare the deprecation by
|
|
24
|
+
# including the <tt>Deprecator</tt> module and using the deprecate_generator method:
|
|
25
|
+
#
|
|
26
|
+
# module Faker
|
|
27
|
+
# class NewGenerator
|
|
28
|
+
# def self.generate
|
|
29
|
+
# "be kind"
|
|
30
|
+
# end
|
|
31
|
+
# end
|
|
32
|
+
#
|
|
33
|
+
# include Deprecator
|
|
34
|
+
# deprecate_generator('DeprecatedGenerator', NewGenerator)
|
|
35
|
+
# end
|
|
36
|
+
#
|
|
37
|
+
# The first argument is a constant name (no colons) as a string. It is the name of
|
|
38
|
+
# the constant you want to deprecate.
|
|
39
|
+
#
|
|
40
|
+
# The second argument is the constant path of the replacement (no colons) as a constant.
|
|
41
|
+
#
|
|
42
|
+
# For this to work, a +const_missing+ hook is installed. When users
|
|
43
|
+
# reference the deprecated constant, the callback prints the
|
|
44
|
+
# message and constantizes the replacement.
|
|
45
|
+
#
|
|
46
|
+
# With that in place, references to <tt>Faker::Deprecator</tt> still work, they
|
|
47
|
+
# evaluate to <tt>Faker::NewGenerator</tt> now, and trigger a deprecation warning:
|
|
48
|
+
#
|
|
49
|
+
# Faker::Generator.generate
|
|
50
|
+
# # DEPRECATION WARNING: Faker::Generator is deprecated. Use Faker::NewGenerator instead
|
|
51
|
+
# # "be kind"
|
|
52
|
+
#
|
|
53
|
+
# For testing the deprecations, we provide <tt>assert_deprecated</tt>
|
|
54
|
+
# and <tt>assert_not_deprecated</tt> matchers.
|
|
55
|
+
#
|
|
56
|
+
# There's also a <tt>Faker::Deprecator.skip_warning</tt> helper to silence
|
|
57
|
+
# the deprecation messages in the *test* output. Use it for generators that have lots of tests
|
|
58
|
+
# to avoid too many noise when running the tests.
|
|
59
|
+
module Deprecator
|
|
60
|
+
def self.included(base)
|
|
61
|
+
extension = Module.new do
|
|
62
|
+
def const_missing(missing_const_name)
|
|
63
|
+
if class_variable_defined?(:@@_deprecated_constants) && (replacement = class_variable_get(:@@_deprecated_constants)[missing_const_name.to_s])
|
|
64
|
+
unless Faker::Deprecator.skip_warning?
|
|
65
|
+
deprecated_message = "#{name}::#{replacement[:old_generator]} is deprecated."
|
|
66
|
+
replacement_message = "Use #{replacement[:new_constant]} instead."
|
|
67
|
+
$stdout.puts("DEPRECATION WARNING: #{deprecated_message} #{replacement_message}")
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
return replacement[:new_constant]
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
super
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def deprecate_generator(old_generator_name, new_generator_constant)
|
|
77
|
+
class_variable_set(:@@_deprecated_constants, {}) unless class_variable_defined?(:@@_deprecated_constants)
|
|
78
|
+
class_variable_get(:@@_deprecated_constants)[old_generator_name] = {
|
|
79
|
+
new_constant: new_generator_constant,
|
|
80
|
+
old_generator: old_generator_name
|
|
81
|
+
}
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
base.singleton_class.prepend extension
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
# Silence deprecation warnings within the block.
|
|
89
|
+
#
|
|
90
|
+
# Faker::Generator.generate
|
|
91
|
+
# # => DEPRECATION WARNING: Faker::Generator is deprecated. Use Faker::NewGenerator instead.
|
|
92
|
+
#
|
|
93
|
+
# Faker::Deprecator.skip_warning do
|
|
94
|
+
# Faker::Generator.generate
|
|
95
|
+
# end
|
|
96
|
+
# # => nil
|
|
97
|
+
def self.skip_warning
|
|
98
|
+
original = Faker::Deprecator.skip
|
|
99
|
+
Faker::Deprecator.skip = true
|
|
100
|
+
yield
|
|
101
|
+
ensure
|
|
102
|
+
Faker::Deprecator.skip = original
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
def self.skip_warning?
|
|
106
|
+
@skip == true
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
def self.skip
|
|
110
|
+
@skip ||= false
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
def self.skip=(value)
|
|
114
|
+
@skip = value
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
# rubocop:enable Style/ClassVars
|