faker 2.6.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 +7 -0
- data/CHANGELOG.md +1384 -0
- data/History.md +176 -0
- data/License.txt +20 -0
- data/README.md +364 -0
- data/bin/faker +5 -0
- data/lib/faker.rb +308 -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 +107 -0
- data/lib/faker/books/book.rb +61 -0
- data/lib/faker/books/culture_series.rb +83 -0
- data/lib/faker/books/dune.rb +119 -0
- data/lib/faker/books/lovecraft.rb +276 -0
- data/lib/faker/creature/animal.rb +22 -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 +123 -0
- data/lib/faker/default/alphanumeric.rb +73 -0
- data/lib/faker/default/ancient.rb +23 -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 +108 -0
- data/lib/faker/default/beer.rb +41 -0
- data/lib/faker/default/boolean.rb +26 -0
- data/lib/faker/default/bossa_nova.rb +15 -0
- data/lib/faker/default/business.rb +23 -0
- data/lib/faker/default/cannabis.rb +45 -0
- data/lib/faker/default/chile_rut.rb +54 -0
- data/lib/faker/default/chuck_norris.rb +14 -0
- data/lib/faker/default/code.rb +201 -0
- data/lib/faker/default/coffee.rb +37 -0
- data/lib/faker/default/coin.rb +15 -0
- data/lib/faker/default/color.rb +32 -0
- data/lib/faker/default/commerce.rb +80 -0
- data/lib/faker/default/company.rb +264 -0
- data/lib/faker/default/compass.rb +67 -0
- data/lib/faker/default/construction.rb +29 -0
- data/lib/faker/default/cosmere.rb +48 -0
- data/lib/faker/default/crypto.rb +21 -0
- data/lib/faker/default/crypto_coin.rb +49 -0
- data/lib/faker/default/currency.rb +19 -0
- data/lib/faker/default/date.rb +182 -0
- data/lib/faker/default/dc_comics.rb +25 -0
- data/lib/faker/default/demographic.rb +41 -0
- data/lib/faker/default/dessert.rb +48 -0
- data/lib/faker/default/device.rb +85 -0
- data/lib/faker/default/driving_licence.rb +65 -0
- data/lib/faker/default/educator.rb +35 -0
- data/lib/faker/default/electrical_components.rb +48 -0
- data/lib/faker/default/esport.rb +27 -0
- data/lib/faker/default/file.rb +49 -0
- data/lib/faker/default/fillmurray.rb +23 -0
- data/lib/faker/default/finance.rb +44 -0
- data/lib/faker/default/food.rb +49 -0
- data/lib/faker/default/funny_name.rb +45 -0
- data/lib/faker/default/gender.rb +33 -0
- data/lib/faker/default/greek_philosophers.rb +33 -0
- data/lib/faker/default/hacker.rb +103 -0
- data/lib/faker/default/hipster.rb +97 -0
- data/lib/faker/default/house.rb +33 -0
- data/lib/faker/default/id_number.rb +164 -0
- data/lib/faker/default/industry_segments.rb +61 -0
- data/lib/faker/default/internet.rb +291 -0
- data/lib/faker/default/invoice.rb +109 -0
- data/lib/faker/default/job.rb +25 -0
- data/lib/faker/default/json.rb +87 -0
- data/lib/faker/default/kpop.rb +31 -0
- data/lib/faker/default/lorem.rb +151 -0
- data/lib/faker/default/lorem_flickr.rb +78 -0
- data/lib/faker/default/lorem_pixel.rb +47 -0
- data/lib/faker/default/markdown.rb +84 -0
- data/lib/faker/default/marketing.rb +22 -0
- data/lib/faker/default/measurement.rb +116 -0
- data/lib/faker/default/military.rb +72 -0
- data/lib/faker/default/name.rb +58 -0
- data/lib/faker/default/nation.rb +76 -0
- data/lib/faker/default/nato_phonetic_alphabet.rb +20 -0
- data/lib/faker/default/nhs.rb +38 -0
- data/lib/faker/default/number.rb +274 -0
- data/lib/faker/default/omniauth.rb +413 -0
- data/lib/faker/default/phone_number.rb +54 -0
- data/lib/faker/default/placeholdit.rb +41 -0
- data/lib/faker/default/programming_language.rb +33 -0
- data/lib/faker/default/relationship.rb +46 -0
- data/lib/faker/default/restaurant.rb +63 -0
- data/lib/faker/default/science.rb +46 -0
- data/lib/faker/default/slack_emoji.rb +43 -0
- data/lib/faker/default/source.rb +76 -0
- data/lib/faker/default/south_africa.rb +51 -0
- data/lib/faker/default/space.rb +64 -0
- data/lib/faker/default/string.rb +49 -0
- data/lib/faker/default/stripe.rb +81 -0
- data/lib/faker/default/subscription.rb +70 -0
- data/lib/faker/default/superhero.rb +72 -0
- data/lib/faker/default/team.rb +29 -0
- data/lib/faker/default/time.rb +179 -0
- data/lib/faker/default/twitter.rb +188 -0
- data/lib/faker/default/types.rb +101 -0
- data/lib/faker/default/university.rb +30 -0
- data/lib/faker/default/vehicle.rb +162 -0
- data/lib/faker/default/verb.rb +27 -0
- data/lib/faker/default/world_cup.rb +86 -0
- data/lib/faker/games/dota.rb +80 -0
- data/lib/faker/games/elder_scrolls.rb +113 -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 +48 -0
- data/lib/faker/games/heroes_of_the_storm.rb +61 -0
- data/lib/faker/games/league_of_legends.rb +87 -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/super_smash_bros.rb +35 -0
- data/lib/faker/games/witcher.rb +87 -0
- data/lib/faker/games/world_of_warcraft.rb +35 -0
- data/lib/faker/games/zelda.rb +62 -0
- data/lib/faker/japanese_media/dragon_ball.rb +22 -0
- data/lib/faker/japanese_media/one_piece.rb +87 -0
- data/lib/faker/japanese_media/sword_art_online.rb +61 -0
- data/lib/faker/movies/back_to_the_future.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/lebowski.rb +48 -0
- data/lib/faker/movies/lord_of_the_rings.rb +49 -0
- data/lib/faker/movies/movie.rb +20 -0
- data/lib/faker/movies/princess_bride.rb +36 -0
- data/lib/faker/movies/star_wars.rb +201 -0
- data/lib/faker/movies/v_for_vendetta.rb +50 -0
- data/lib/faker/music/grateful_dead.rb +37 -0
- data/lib/faker/music/music.rb +47 -0
- data/lib/faker/music/opera.rb +26 -0
- data/lib/faker/music/phish.rb +22 -0
- data/lib/faker/music/rock_band.rb +22 -0
- data/lib/faker/music/umphreys_mcgee.rb +22 -0
- data/lib/faker/quotes/quote.rb +32 -0
- data/lib/faker/quotes/shakespeare.rb +41 -0
- data/lib/faker/sports/basketball.rb +61 -0
- data/lib/faker/sports/football.rb +74 -0
- data/lib/faker/tv_shows/aqua_teen_hunger_force.rb +24 -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/buffy.rb +76 -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/friends.rb +50 -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 +26 -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 +51 -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/the_expanse.rb +63 -0
- data/lib/faker/tv_shows/the_fresh_prince_of_bel_air.rb +51 -0
- data/lib/faker/tv_shows/the_it_crowd.rb +64 -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 +5 -0
- data/lib/helpers/base58.rb +22 -0
- data/lib/helpers/char.rb +66 -0
- data/lib/helpers/unique_generator.rb +56 -0
- data/lib/locales/README.md +40 -0
- data/lib/locales/ar.yml +102 -0
- data/lib/locales/bg.yml +44 -0
- data/lib/locales/ca-CAT.yml +24 -0
- data/lib/locales/ca.yml +31 -0
- data/lib/locales/da-DK.yml +73 -0
- data/lib/locales/de-AT.yml +56 -0
- data/lib/locales/de-CH.yml +19 -0
- data/lib/locales/de.yml +174 -0
- data/lib/locales/ee.yml +61 -0
- data/lib/locales/en-AU.yml +28 -0
- data/lib/locales/en-BORK.yml +4 -0
- data/lib/locales/en-CA.yml +36 -0
- data/lib/locales/en-GB.yml +14 -0
- data/lib/locales/en-IND.yml +25 -0
- data/lib/locales/en-MS.yml +47 -0
- data/lib/locales/en-NEP.yml +49 -0
- data/lib/locales/en-NG.yml +77 -0
- data/lib/locales/en-NZ.yml +39 -0
- data/lib/locales/en-PAK.yml +18 -0
- data/lib/locales/en-SG.yml +35 -0
- data/lib/locales/en-TH.yml +360 -0
- data/lib/locales/en-UG.yml +128 -0
- data/lib/locales/en-US.yml +103 -0
- data/lib/locales/en-ZA.yml +148 -0
- data/lib/locales/en-au-ocker.yml +33 -0
- data/lib/locales/en.yml +11 -0
- data/lib/locales/en/README.md +13 -0
- data/lib/locales/en/address.yml +581 -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 +4 -0
- data/lib/locales/en/artist.yml +4 -0
- data/lib/locales/en/back_to_the_future.yml +120 -0
- data/lib/locales/en/bank.yml +302 -0
- data/lib/locales/en/basketball.yml +99 -0
- data/lib/locales/en/beer.yml +9 -0
- data/lib/locales/en/bojack_horseman.yml +6 -0
- data/lib/locales/en/book.yml +7 -0
- data/lib/locales/en/bossa_nova.yml +6 -0
- data/lib/locales/en/breaking_bad.yml +28 -0
- data/lib/locales/en/buffy.yml +260 -0
- data/lib/locales/en/business.yml +5 -0
- data/lib/locales/en/cannabis.yml +13 -0
- data/lib/locales/en/cat.yml +7 -0
- data/lib/locales/en/chuck_norris.yml +82 -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 +11 -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/construction.yml +425 -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 +8 -0
- data/lib/locales/en/dessert.yml +6 -0
- data/lib/locales/en/device.yml +7 -0
- data/lib/locales/en/dog.yml +11 -0
- data/lib/locales/en/dota.yml +105 -0
- data/lib/locales/en/dr_who.yml +96 -0
- data/lib/locales/en/dragon_ball.yml +4 -0
- data/lib/locales/en/dumb_and_dumber.yml +59 -0
- data/lib/locales/en/dune.yml +159 -0
- data/lib/locales/en/educator.yml +11 -0
- data/lib/locales/en/elder_scrolls.yml +11 -0
- data/lib/locales/en/electrical_components.yml +6 -0
- data/lib/locales/en/esport.yml +8 -0
- data/lib/locales/en/fallout.yml +137 -0
- data/lib/locales/en/family_guy.yml +7 -0
- data/lib/locales/en/file.yml +5 -0
- data/lib/locales/en/finance.yml +113 -0
- data/lib/locales/en/food.yml +13 -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/game.yml +283 -0
- data/lib/locales/en/game_of_thrones.yml +8 -0
- data/lib/locales/en/gender.yml +5 -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 +7 -0
- data/lib/locales/en/harry_potter.yml +9 -0
- data/lib/locales/en/heroes.yml +6 -0
- data/lib/locales/en/heroes_of_the_storm.yml +7 -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/hobbit.yml +19 -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/id_number.yml +5 -0
- data/lib/locales/en/industry_segments.yml +7 -0
- data/lib/locales/en/internet.yml +21 -0
- data/lib/locales/en/invoice.yml +6 -0
- data/lib/locales/en/job.yml +15 -0
- data/lib/locales/en/kpop.yml +83 -0
- data/lib/locales/en/league_of_legends.yml +10 -0
- data/lib/locales/en/lebowski.yml +43 -0
- data/lib/locales/en/lord_of_the_rings.yml +6 -0
- data/lib/locales/en/lorem.yml +11 -0
- data/lib/locales/en/lovecraft.yml +9 -0
- 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 +8 -0
- data/lib/locales/en/movie.yml +5 -0
- data/lib/locales/en/music.yml +32 -0
- data/lib/locales/en/myst.yml +48 -0
- data/lib/locales/en/name.yml +25 -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 +172 -0
- data/lib/locales/en/overwatch.yml +41 -0
- data/lib/locales/en/parks_and_rec.yml +7 -0
- data/lib/locales/en/phish.yml +4 -0
- data/lib/locales/en/phone_number.yml +7 -0
- data/lib/locales/en/pokemon.yml +8 -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 +166 -0
- data/lib/locales/en/relationship.yml +10 -0
- data/lib/locales/en/restaurant.yml +129 -0
- data/lib/locales/en/rick_and_morty.yml +6 -0
- data/lib/locales/en/rock_band.yml +4 -0
- data/lib/locales/en/rupaul.yml +125 -0
- data/lib/locales/en/science.yml +6 -0
- data/lib/locales/en/seinfeld.yml +6 -0
- data/lib/locales/en/shakespeare.yml +56 -0
- data/lib/locales/en/silicon_valley.yml +53 -0
- data/lib/locales/en/simpsons.yml +26 -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 +16 -0
- data/lib/locales/en/south_park.yml +5 -0
- data/lib/locales/en/space.yml +17 -0
- data/lib/locales/en/star_trek.yml +7 -0
- data/lib/locales/en/star_wars.yml +258 -0
- data/lib/locales/en/stargate.yml +21 -0
- data/lib/locales/en/stranger_thing.yml +36 -0
- data/lib/locales/en/stripe.yml +42 -0
- data/lib/locales/en/subscription.yml +8 -0
- data/lib/locales/en/super_smash_bros.yml +205 -0
- data/lib/locales/en/superhero.yml +12 -0
- data/lib/locales/en/sword_art_online.yml +334 -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_thick_of_it.yml +6 -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 +80 -0
- data/lib/locales/en/venture_bros.yml +7 -0
- data/lib/locales/en/verbs.yml +8 -0
- data/lib/locales/en/witcher.yml +11 -0
- data/lib/locales/en/world_cup.yml +271 -0
- data/lib/locales/en/world_of_warcraft.yml +8 -0
- data/lib/locales/en/yoda.yml +4 -0
- data/lib/locales/en/zelda.yml +8 -0
- data/lib/locales/es-MX.yml +102 -0
- data/lib/locales/es.yml +94 -0
- data/lib/locales/fa.yml +10 -0
- data/lib/locales/fi-FI.yml +35 -0
- data/lib/locales/fr-CA.yml +90 -0
- data/lib/locales/fr-CH.yml +78 -0
- data/lib/locales/fr.yml +114 -0
- data/lib/locales/he.yml +27 -0
- data/lib/locales/hy.yml +416 -0
- data/lib/locales/id.yml +23 -0
- data/lib/locales/it.yml +70 -0
- data/lib/locales/ja.yml +97 -0
- data/lib/locales/ko.yml +40 -0
- data/lib/locales/lv.yml +55 -0
- data/lib/locales/nb-NO.yml +62 -0
- data/lib/locales/nl.yml +92 -0
- data/lib/locales/no.yml +7 -0
- data/lib/locales/pl.yml +77 -0
- data/lib/locales/pt-BR.yml +697 -0
- data/lib/locales/pt.yml +66 -0
- data/lib/locales/ru.yml +76 -0
- data/lib/locales/sk.yml +78 -0
- data/lib/locales/sv.yml +81 -0
- data/lib/locales/th.yml +380 -0
- data/lib/locales/tr.yml +40 -0
- data/lib/locales/uk.yml +86 -0
- data/lib/locales/vi.yml +68 -0
- data/lib/locales/zh-CN.yml +56 -0
- data/lib/locales/zh-TW.yml +29 -0
- metadata +568 -0
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Faker
|
|
4
|
+
class String < Base
|
|
5
|
+
class << self
|
|
6
|
+
def random(legacy_length = NOT_GIVEN, length: 32)
|
|
7
|
+
warn_for_deprecated_arguments do |keywords|
|
|
8
|
+
keywords << :length if legacy_length != NOT_GIVEN
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
utf8string select_a length
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
private
|
|
15
|
+
|
|
16
|
+
def select_a(length)
|
|
17
|
+
if length.class.included_modules.include? Enumerable
|
|
18
|
+
select_a sample(length.to_enum.to_a)
|
|
19
|
+
else
|
|
20
|
+
length # recursive base case
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def utf8string(length)
|
|
25
|
+
ratio = char_space_ratio
|
|
26
|
+
(1..length.to_i).map do
|
|
27
|
+
space_or_utf8_char ratio
|
|
28
|
+
end.join
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def space_or_utf8_char(ratio)
|
|
32
|
+
sample [32.chr(Encoding::UTF_8), [utf8character] * ratio].flatten
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def char_space_ratio
|
|
36
|
+
sample [2, [3] * 5, [5] * 17, [7] * 11, 11, 191].flatten
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def utf8character
|
|
40
|
+
sample([
|
|
41
|
+
rand(32..90), # latin alphabet
|
|
42
|
+
rand(128), # 7-bit ASCII
|
|
43
|
+
rand(0xd800), # utf-8 codepoints below utf-16 surrogate halves
|
|
44
|
+
rand(57_344..1_114_111) # utf-8 codepoints above utf-16 surrogate halves
|
|
45
|
+
]).chr(Encoding::UTF_8)
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Faker
|
|
4
|
+
class Stripe < Base
|
|
5
|
+
class << self
|
|
6
|
+
def valid_card(legacy_card_type = NOT_GIVEN, card_type: nil)
|
|
7
|
+
warn_for_deprecated_arguments do |keywords|
|
|
8
|
+
keywords << :card_type if legacy_card_type != NOT_GIVEN
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
valid_cards = translate('faker.stripe.valid_cards').keys
|
|
12
|
+
|
|
13
|
+
if card_type.nil?
|
|
14
|
+
card_type = sample(valid_cards).to_s
|
|
15
|
+
else
|
|
16
|
+
unless valid_cards.include?(card_type.to_sym)
|
|
17
|
+
raise ArgumentError,
|
|
18
|
+
"Valid credit cards argument can be left blank or include #{valid_cards.join(', ')}"
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
fetch('stripe.valid_cards.' + card_type)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def valid_token(legacy_card_type = NOT_GIVEN, card_type: nil)
|
|
26
|
+
warn_for_deprecated_arguments do |keywords|
|
|
27
|
+
keywords << :card_type if legacy_card_type != NOT_GIVEN
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
valid_tokens = translate('faker.stripe.valid_tokens').keys
|
|
31
|
+
|
|
32
|
+
if card_type.nil?
|
|
33
|
+
card_type = sample(valid_tokens).to_s
|
|
34
|
+
else
|
|
35
|
+
unless valid_tokens.include?(card_type.to_sym)
|
|
36
|
+
raise ArgumentError,
|
|
37
|
+
"Valid credit cards argument can be left blank or include #{valid_tokens.join(', ')}"
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
fetch('stripe.valid_tokens.' + card_type)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def invalid_card(legacy_card_error = NOT_GIVEN, card_error: nil)
|
|
45
|
+
warn_for_deprecated_arguments do |keywords|
|
|
46
|
+
keywords << :card_error if legacy_card_error != NOT_GIVEN
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
invalid_cards = translate('faker.stripe.invalid_cards').keys
|
|
50
|
+
|
|
51
|
+
if card_error.nil?
|
|
52
|
+
card_error = sample(invalid_cards).to_s
|
|
53
|
+
else
|
|
54
|
+
unless invalid_cards.include?(card_error.to_sym)
|
|
55
|
+
raise ArgumentError,
|
|
56
|
+
"Invalid credit cards argument can be left blank or include #{invalid_cards.join(', ')}"
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
fetch('stripe.invalid_cards.' + card_error)
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def month
|
|
64
|
+
format('%02d', rand_in_range(1, 12))
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def year
|
|
68
|
+
start_year = ::Time.new.year + 1
|
|
69
|
+
rand_in_range(start_year, start_year + 5).to_s
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def ccv(legacy_card_type = NOT_GIVEN, card_type: nil)
|
|
73
|
+
warn_for_deprecated_arguments do |keywords|
|
|
74
|
+
keywords << :card_type if legacy_card_type != NOT_GIVEN
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
(card_type.to_s == 'amex' ? rand_in_range(1000, 9999) : rand_in_range(100, 999)).to_s
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Faker
|
|
4
|
+
class Subscription < Base
|
|
5
|
+
##
|
|
6
|
+
# Produces the name of a subscription plan.
|
|
7
|
+
#
|
|
8
|
+
# @return [String]
|
|
9
|
+
#
|
|
10
|
+
# @example
|
|
11
|
+
# Faker::Subscription.plan #=> "Platinum"
|
|
12
|
+
#
|
|
13
|
+
# @faker.version 1.9.2
|
|
14
|
+
def self.plan
|
|
15
|
+
fetch('subscription.plans')
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
##
|
|
19
|
+
# Produces a subscription status.
|
|
20
|
+
#
|
|
21
|
+
# @return [String]
|
|
22
|
+
#
|
|
23
|
+
# @example
|
|
24
|
+
# Faker::Subscription.status #=> "Active"
|
|
25
|
+
#
|
|
26
|
+
# @faker.version 1.9.2
|
|
27
|
+
def self.status
|
|
28
|
+
fetch('subscription.statuses')
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
##
|
|
32
|
+
# Produces the name of a payment method.
|
|
33
|
+
#
|
|
34
|
+
# @return [String]
|
|
35
|
+
#
|
|
36
|
+
# @example
|
|
37
|
+
# Faker::Subscription.payment_method #=> "PayPal"
|
|
38
|
+
#
|
|
39
|
+
# @faker.version 1.9.2
|
|
40
|
+
def self.payment_method
|
|
41
|
+
fetch('subscription.payment_methods')
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
##
|
|
45
|
+
# Produces the name of a subscription term.
|
|
46
|
+
#
|
|
47
|
+
# @return [String]
|
|
48
|
+
#
|
|
49
|
+
# @example
|
|
50
|
+
# Faker::Subscription.subscription_term #=> "Annual"
|
|
51
|
+
#
|
|
52
|
+
# @faker.version 1.9.2
|
|
53
|
+
def self.subscription_term
|
|
54
|
+
fetch('subscription.subscription_terms')
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
##
|
|
58
|
+
# Produces the name of a payment term.
|
|
59
|
+
#
|
|
60
|
+
# @return [String]
|
|
61
|
+
#
|
|
62
|
+
# @example
|
|
63
|
+
# Faker::Subscription.payment_term #=> "Monthly"
|
|
64
|
+
#
|
|
65
|
+
# @faker.version 1.9.2
|
|
66
|
+
def self.payment_term
|
|
67
|
+
fetch('subscription.payment_terms')
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Faker
|
|
4
|
+
class Superhero < Base
|
|
5
|
+
class << self
|
|
6
|
+
##
|
|
7
|
+
# Produces a superpower.
|
|
8
|
+
#
|
|
9
|
+
# @return [String]
|
|
10
|
+
#
|
|
11
|
+
# @example
|
|
12
|
+
# Faker::Superhero.power #=> "Photokinesis"
|
|
13
|
+
#
|
|
14
|
+
# @faker.version 1.6.2
|
|
15
|
+
def power
|
|
16
|
+
fetch('superhero.power')
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
##
|
|
20
|
+
# Produces a superhero name prefix.
|
|
21
|
+
#
|
|
22
|
+
# @return [String]
|
|
23
|
+
#
|
|
24
|
+
# @example
|
|
25
|
+
# Faker::Superhero.prefix #=> "the Fated"
|
|
26
|
+
#
|
|
27
|
+
# @faker.version 1.6.2
|
|
28
|
+
def prefix
|
|
29
|
+
fetch('superhero.prefix')
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
##
|
|
33
|
+
# Produces a superhero name suffix.
|
|
34
|
+
#
|
|
35
|
+
# @return [String]
|
|
36
|
+
#
|
|
37
|
+
# @example
|
|
38
|
+
# Faker::Superhero.suffix #=> "Captain"
|
|
39
|
+
#
|
|
40
|
+
# @faker.version 1.6.2
|
|
41
|
+
def suffix
|
|
42
|
+
fetch('superhero.suffix')
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
##
|
|
46
|
+
# Produces a superhero descriptor.
|
|
47
|
+
#
|
|
48
|
+
# @return [String]
|
|
49
|
+
#
|
|
50
|
+
# @example
|
|
51
|
+
# Faker::Superhero.descriptor #=> "Bizarro"
|
|
52
|
+
#
|
|
53
|
+
# @faker.version 1.6.2
|
|
54
|
+
def descriptor
|
|
55
|
+
fetch('superhero.descriptor')
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
##
|
|
59
|
+
# Produces a random superhero name.
|
|
60
|
+
#
|
|
61
|
+
# @return [String]
|
|
62
|
+
#
|
|
63
|
+
# @example
|
|
64
|
+
# Faker::Superhero.name #=> "Magnificent Shatterstar"
|
|
65
|
+
#
|
|
66
|
+
# @faker.version 1.6.2
|
|
67
|
+
def name
|
|
68
|
+
parse('superhero.name')
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Faker
|
|
4
|
+
class Team < Base
|
|
5
|
+
flexible :team
|
|
6
|
+
|
|
7
|
+
class << self
|
|
8
|
+
def name
|
|
9
|
+
parse('team.name')
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def creature
|
|
13
|
+
fetch('team.creature')
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def state
|
|
17
|
+
fetch('address.state')
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def sport
|
|
21
|
+
fetch('team.sport')
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def mascot
|
|
25
|
+
fetch('team.mascot')
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Faker
|
|
4
|
+
class Time < Base
|
|
5
|
+
TIME_RANGES = {
|
|
6
|
+
all: (0..23),
|
|
7
|
+
day: (9..17),
|
|
8
|
+
night: (18..23),
|
|
9
|
+
morning: (6..11),
|
|
10
|
+
afternoon: (12..17),
|
|
11
|
+
evening: (17..21),
|
|
12
|
+
midnight: (0..4)
|
|
13
|
+
}.freeze
|
|
14
|
+
|
|
15
|
+
class << self
|
|
16
|
+
# rubocop:disable Metrics/ParameterLists
|
|
17
|
+
# rubocop:disable Style/AsciiComments
|
|
18
|
+
|
|
19
|
+
##
|
|
20
|
+
# Produce a random time between two times.
|
|
21
|
+
#
|
|
22
|
+
# @param from [Time, Date, DateTime] The start of the usable time range.
|
|
23
|
+
# @param to [Time, Date, DateTime] The end of the usable time range.
|
|
24
|
+
# @param format [Symbol] The name of a DateTime format to use.
|
|
25
|
+
# @return [Time]
|
|
26
|
+
#
|
|
27
|
+
# @example
|
|
28
|
+
# # Random Stringified time between two times, formatted to the specified I18n format
|
|
29
|
+
# # (Examples are from a Rails console with rails-i18n 5.1.1 defaults loaded)
|
|
30
|
+
# I18n.locale = 'en-US'
|
|
31
|
+
# Faker::Time.between(from: DateTime.now - 1, to: DateTime.now, format: :default) #=> "Tue, 16 Oct 2018 10:48:27 AM -05:00"
|
|
32
|
+
# Faker::Time.between(from: DateTime.now - 1, to: DateTime.now, format: :short) #=> "15 Oct 10:48 AM"
|
|
33
|
+
# Faker::Time.between(from: DateTime.now - 1, to: DateTime.now, format: :long) #=> "October 15, 2018 10:48 AM"
|
|
34
|
+
#
|
|
35
|
+
# I18n.locale = 'ja'
|
|
36
|
+
# Faker::Time.between(from: DateTime.now - 1, to: DateTime.now, format: :default) #=> "2018/10/15 10:48:27"
|
|
37
|
+
# Faker::Time.between(from: DateTime.now - 1, to: DateTime.now, format: :short) #=> "18/10/15 10:48"
|
|
38
|
+
# Faker::Time.between(from: DateTime.now - 1, to: DateTime.now, format: :long) #=> "2018年10月16日(火) 10時48分27秒 -0500"
|
|
39
|
+
#
|
|
40
|
+
# @faker.version 1.5.0
|
|
41
|
+
def between(legacy_from = NOT_GIVEN, legacy_to = NOT_GIVEN, legacy_format = NOT_GIVEN, from:, to:, format: nil)
|
|
42
|
+
warn_for_deprecated_arguments do |keywords|
|
|
43
|
+
keywords << :from if legacy_from != NOT_GIVEN
|
|
44
|
+
keywords << :to if legacy_to != NOT_GIVEN
|
|
45
|
+
keywords << :format if legacy_format != NOT_GIVEN
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
from = get_time_object(from)
|
|
49
|
+
to = get_time_object(to)
|
|
50
|
+
|
|
51
|
+
time = Faker::Base.rand_in_range(from, to)
|
|
52
|
+
time_with_format(time, format)
|
|
53
|
+
end
|
|
54
|
+
# rubocop:enable Style/AsciiComments
|
|
55
|
+
|
|
56
|
+
##
|
|
57
|
+
# Produce a random time between two dates.
|
|
58
|
+
#
|
|
59
|
+
# @param from [Date] The start of the usable time range.
|
|
60
|
+
# @param to [Date] The end of the usable time range.
|
|
61
|
+
# @param period [Symbol] The time of day, if any. See {TIME_RANGES}.
|
|
62
|
+
# @param format [Symbol] The name of a DateTime format to use.
|
|
63
|
+
# @return [Time]
|
|
64
|
+
#
|
|
65
|
+
# @example
|
|
66
|
+
# Faker::Time.between_dates(from: Date.today - 1, to: Date.today, period: :all)
|
|
67
|
+
# #=> "2014-09-19 07:03:30 -0700"
|
|
68
|
+
# Faker::Time.between_dates(from: Date.today - 1, to: Date.today, period: :day)
|
|
69
|
+
# #=> "2014-09-18 16:28:13 -0700"
|
|
70
|
+
# Faker::Time.between_dates(from: Date.today - 1, to: Date.today, period: :night)
|
|
71
|
+
# #=> "2014-09-20 19:39:38 -0700"
|
|
72
|
+
# Faker::Time.between_dates(from: Date.today - 1, to: Date.today, period: :morning)
|
|
73
|
+
# #=> "2014-09-19 08:07:52 -0700"
|
|
74
|
+
# Faker::Time.between_dates(from: Date.today - 1, to: Date.today, period: :afternoon)
|
|
75
|
+
# #=> "2014-09-18 12:10:34 -0700"
|
|
76
|
+
# Faker::Time.between_dates(from: Date.today - 1, to: Date.today, period: :evening)
|
|
77
|
+
# #=> "2014-09-19 20:21:03 -0700"
|
|
78
|
+
# Faker::Time.between_dates(from: Date.today - 1, to: Date.today, period: :midnight)
|
|
79
|
+
# #=> "2014-09-20 00:40:14 -0700"
|
|
80
|
+
# Faker::Time.between_dates(from: Date.today - 5, to: Date.today + 5, period: :afternoon, format: :default)
|
|
81
|
+
# #=> "Fri, 19 Oct 2018 15:17:46 -0500"
|
|
82
|
+
#
|
|
83
|
+
# @faker.version 1.0.0
|
|
84
|
+
def between_dates(legacy_from = NOT_GIVEN, legacy_to = NOT_GIVEN, legacy_period = NOT_GIVEN, legacy_format = NOT_GIVEN, from:, to:, period: :all, format: nil)
|
|
85
|
+
warn_for_deprecated_arguments do |keywords|
|
|
86
|
+
keywords << :from if legacy_from != NOT_GIVEN
|
|
87
|
+
keywords << :to if legacy_to != NOT_GIVEN
|
|
88
|
+
keywords << :period if legacy_period != NOT_GIVEN
|
|
89
|
+
keywords << :format if legacy_format != NOT_GIVEN
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
date = Faker::Date.between(from: from, to: to)
|
|
93
|
+
time = date_with_random_time(date, period)
|
|
94
|
+
time_with_format(time, format)
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
##
|
|
98
|
+
# Produce a random time in the future (up to N days).
|
|
99
|
+
#
|
|
100
|
+
# @param days [Integer] The maximum number of days to go into the future.
|
|
101
|
+
# @param period [Symbol] The time of day, if any. See {TIME_RANGES}.
|
|
102
|
+
# @param format [Symbol] The name of a DateTime format to use.
|
|
103
|
+
# @return [Time]
|
|
104
|
+
#
|
|
105
|
+
# @example
|
|
106
|
+
# Faker::Time.forward(days: 23, period: :morning)
|
|
107
|
+
# # => "2014-09-26 06:54:47 -0700"
|
|
108
|
+
# Faker::Time.forward(days: 5, period: :evening, format: :long)
|
|
109
|
+
# #=> "October 21, 2018 20:47"
|
|
110
|
+
#
|
|
111
|
+
# @faker.version 1.5.0
|
|
112
|
+
def forward(legacy_days = NOT_GIVEN, legacy_period = NOT_GIVEN, legacy_format = NOT_GIVEN, days: 365, period: :all, format: nil)
|
|
113
|
+
warn_for_deprecated_arguments do |keywords|
|
|
114
|
+
keywords << :days if legacy_days != NOT_GIVEN
|
|
115
|
+
keywords << :period if legacy_period != NOT_GIVEN
|
|
116
|
+
keywords << :format if legacy_format != NOT_GIVEN
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
time_with_format(date_with_random_time(Faker::Date.forward(days: days), period), format)
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
##
|
|
123
|
+
# Produce a random time in the past (up to N days).
|
|
124
|
+
#
|
|
125
|
+
# @param days [Integer] The maximum number of days to go into the past.
|
|
126
|
+
# @param period [Symbol] The time of day, if any. See {TIME_RANGES}.
|
|
127
|
+
# @param format [Symbol] The name of a DateTime format to use.
|
|
128
|
+
# @return [Time]
|
|
129
|
+
#
|
|
130
|
+
# @example
|
|
131
|
+
# Faker::Time.backward(days: 14, period: :evening)
|
|
132
|
+
# #=> "2014-09-17 19:56:33 -0700"
|
|
133
|
+
# Faker::Time.backward(days: 5, period: :morning, format: :short)
|
|
134
|
+
# #=> "14 Oct 07:44"
|
|
135
|
+
#
|
|
136
|
+
# @faker.version 1.5.0
|
|
137
|
+
def backward(legacy_days = NOT_GIVEN, legacy_period = NOT_GIVEN, legacy_format = NOT_GIVEN, days: 365, period: :all, format: nil)
|
|
138
|
+
warn_for_deprecated_arguments do |keywords|
|
|
139
|
+
keywords << :days if legacy_days != NOT_GIVEN
|
|
140
|
+
keywords << :period if legacy_period != NOT_GIVEN
|
|
141
|
+
keywords << :format if legacy_format != NOT_GIVEN
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
time_with_format(date_with_random_time(Faker::Date.backward(days: days), period), format)
|
|
145
|
+
end
|
|
146
|
+
# rubocop:enable Metrics/ParameterLists
|
|
147
|
+
|
|
148
|
+
private
|
|
149
|
+
|
|
150
|
+
def date_with_random_time(date, period)
|
|
151
|
+
::Time.local(date.year, date.month, date.day, hours(period), minutes, seconds)
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
def time_with_format(time, format)
|
|
155
|
+
format.nil? ? time : I18n.localize(time, format: format)
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
def hours(period)
|
|
159
|
+
raise ArgumentError, 'invalid period' unless TIME_RANGES.key? period
|
|
160
|
+
|
|
161
|
+
sample(TIME_RANGES[period].to_a)
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
def minutes
|
|
165
|
+
seconds
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
def seconds
|
|
169
|
+
sample((0..59).to_a)
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
def get_time_object(time)
|
|
173
|
+
time = ::Time.parse(time) if time.is_a? String
|
|
174
|
+
time = time.to_time if time.respond_to?(:to_time)
|
|
175
|
+
time
|
|
176
|
+
end
|
|
177
|
+
end
|
|
178
|
+
end
|
|
179
|
+
end
|