faker 2.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/CHANGELOG.md +1282 -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/bitcoin.rb +34 -0
- data/lib/faker/blockchain/ethereum.rb +16 -0
- data/lib/faker/blockchain/tezos.rb +51 -0
- data/lib/faker/books/book.rb +25 -0
- data/lib/faker/books/culture_series.rb +34 -0
- data/lib/faker/books/dune.rb +66 -0
- data/lib/faker/books/lovecraft.rb +104 -0
- data/lib/faker/creature/animal.rb +13 -0
- data/lib/faker/creature/cat.rb +23 -0
- data/lib/faker/creature/dog.rb +43 -0
- data/lib/faker/creature/horse.rb +19 -0
- data/lib/faker/default/address.rb +123 -0
- data/lib/faker/default/alphanumeric.rb +56 -0
- data/lib/faker/default/ancient.rb +23 -0
- data/lib/faker/default/app.rb +31 -0
- data/lib/faker/default/appliance.rb +15 -0
- data/lib/faker/default/artist.rb +11 -0
- data/lib/faker/default/avatar.rb +28 -0
- data/lib/faker/default/bank.rb +108 -0
- data/lib/faker/default/beer.rb +41 -0
- data/lib/faker/default/boolean.rb +15 -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 +101 -0
- data/lib/faker/default/dc_comics.rb +25 -0
- data/lib/faker/default/demographic.rb +41 -0
- data/lib/faker/default/dessert.rb +21 -0
- data/lib/faker/default/device.rb +31 -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 +21 -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 +15 -0
- data/lib/faker/default/greek_philosophers.rb +15 -0
- data/lib/faker/default/hacker.rb +45 -0
- data/lib/faker/default/hipster.rb +97 -0
- data/lib/faker/default/house.rb +15 -0
- data/lib/faker/default/id_number.rb +164 -0
- data/lib/faker/default/industry_segments.rb +25 -0
- data/lib/faker/default/internet.rb +283 -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 +150 -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 +13 -0
- data/lib/faker/default/measurement.rb +116 -0
- data/lib/faker/default/military.rb +27 -0
- data/lib/faker/default/name.rb +58 -0
- data/lib/faker/default/nation.rb +33 -0
- data/lib/faker/default/nato_phonetic_alphabet.rb +11 -0
- data/lib/faker/default/nhs.rb +38 -0
- data/lib/faker/default/number.rb +150 -0
- data/lib/faker/default/omniauth.rb +371 -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 +15 -0
- data/lib/faker/default/relationship.rb +46 -0
- data/lib/faker/default/restaurant.rb +11 -0
- data/lib/faker/default/science.rb +19 -0
- data/lib/faker/default/slack_emoji.rb +43 -0
- data/lib/faker/default/source.rb +35 -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 +25 -0
- data/lib/faker/default/superhero.rb +27 -0
- data/lib/faker/default/team.rb +29 -0
- data/lib/faker/default/time.rb +102 -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 +36 -0
- data/lib/faker/games/dota.rb +33 -0
- data/lib/faker/games/elder_scrolls.rb +41 -0
- data/lib/faker/games/fallout.rb +25 -0
- data/lib/faker/games/game.rb +21 -0
- data/lib/faker/games/half_life.rb +21 -0
- data/lib/faker/games/heroes.rb +21 -0
- data/lib/faker/games/heroes_of_the_storm.rb +25 -0
- data/lib/faker/games/league_of_legends.rb +33 -0
- data/lib/faker/games/myst.rb +29 -0
- data/lib/faker/games/overwatch.rb +21 -0
- data/lib/faker/games/pokemon.rb +21 -0
- data/lib/faker/games/sonic_the_hedgehog.rb +21 -0
- data/lib/faker/games/super_smash_bros.rb +17 -0
- data/lib/faker/games/witcher.rb +33 -0
- data/lib/faker/games/world_of_warcraft.rb +17 -0
- data/lib/faker/games/zelda.rb +26 -0
- data/lib/faker/japanese_media/dragon_ball.rb +13 -0
- data/lib/faker/japanese_media/one_piece.rb +33 -0
- data/lib/faker/japanese_media/sword_art_online.rb +25 -0
- data/lib/faker/movies/back_to_the_future.rb +21 -0
- data/lib/faker/movies/ghostbusters.rb +21 -0
- data/lib/faker/movies/harry_potter.rb +33 -0
- data/lib/faker/movies/hitchhikers_guide_to_the_galaxy.rb +37 -0
- data/lib/faker/movies/hobbit.rb +25 -0
- data/lib/faker/movies/lebowski.rb +21 -0
- data/lib/faker/movies/lord_of_the_rings.rb +21 -0
- data/lib/faker/movies/movie.rb +11 -0
- data/lib/faker/movies/princess_bride.rb +17 -0
- data/lib/faker/movies/star_wars.rb +107 -0
- data/lib/faker/movies/v_for_vendetta.rb +21 -0
- data/lib/faker/music/grateful_dead.rb +19 -0
- data/lib/faker/music/music.rb +47 -0
- data/lib/faker/music/opera.rb +26 -0
- data/lib/faker/music/phish.rb +13 -0
- data/lib/faker/music/rock_band.rb +13 -0
- data/lib/faker/music/umphreys_mcgee.rb +13 -0
- data/lib/faker/quotes/quote.rb +32 -0
- data/lib/faker/quotes/shakespeare.rb +41 -0
- data/lib/faker/sports/basketball.rb +25 -0
- data/lib/faker/sports/football.rb +29 -0
- data/lib/faker/tv_shows/aqua_teen_hunger_force.rb +15 -0
- data/lib/faker/tv_shows/bojack_horseman.rb +23 -0
- data/lib/faker/tv_shows/breaking_bad.rb +19 -0
- data/lib/faker/tv_shows/buffy.rb +31 -0
- data/lib/faker/tv_shows/community.rb +19 -0
- data/lib/faker/tv_shows/dr_who.rb +39 -0
- data/lib/faker/tv_shows/dumb_and_dumber.rb +23 -0
- data/lib/faker/tv_shows/family_guy.rb +23 -0
- data/lib/faker/tv_shows/friends.rb +23 -0
- data/lib/faker/tv_shows/game_of_thrones.rb +31 -0
- data/lib/faker/tv_shows/hey_arnold.rb +23 -0
- data/lib/faker/tv_shows/how_i_met_your_mother.rb +27 -0
- data/lib/faker/tv_shows/michael_scott.rb +13 -0
- data/lib/faker/tv_shows/new_girl.rb +19 -0
- data/lib/faker/tv_shows/parks_and_rec.rb +19 -0
- data/lib/faker/tv_shows/rick_and_morty.rb +23 -0
- data/lib/faker/tv_shows/ru_paul.rb +19 -0
- data/lib/faker/tv_shows/seinfeld.rb +23 -0
- data/lib/faker/tv_shows/silicon_valley.rb +43 -0
- data/lib/faker/tv_shows/simpsons.rb +23 -0
- data/lib/faker/tv_shows/south_park.rb +19 -0
- data/lib/faker/tv_shows/star_trek.rb +27 -0
- data/lib/faker/tv_shows/stargate.rb +23 -0
- data/lib/faker/tv_shows/stranger_things.rb +19 -0
- data/lib/faker/tv_shows/the_expanse.rb +27 -0
- data/lib/faker/tv_shows/the_fresh_prince_of_bel_air.rb +23 -0
- data/lib/faker/tv_shows/the_it_crowd.rb +27 -0
- data/lib/faker/tv_shows/the_thick_of_it.rb +23 -0
- data/lib/faker/tv_shows/twin_peaks.rb +23 -0
- data/lib/faker/tv_shows/venture_bros.rb +27 -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-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 +98 -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/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 +543 -0
@@ -0,0 +1,109 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Faker
|
4
|
+
class Invoice < Base
|
5
|
+
flexible :invoice
|
6
|
+
|
7
|
+
class << self
|
8
|
+
# Generate random amount between values with 2 decimals
|
9
|
+
def amount_between(legacy_from = NOT_GIVEN, legacy_to = NOT_GIVEN, from: 0, to: 0)
|
10
|
+
warn_for_deprecated_arguments do |keywords|
|
11
|
+
keywords << :from if legacy_from != NOT_GIVEN
|
12
|
+
keywords << :to if legacy_to != NOT_GIVEN
|
13
|
+
end
|
14
|
+
|
15
|
+
Faker::Base.rand_in_range(from, to).round(2)
|
16
|
+
end
|
17
|
+
|
18
|
+
# International bank slip reference https://en.wikipedia.org/wiki/Creditor_Reference
|
19
|
+
# ref is optional so that we can create unit tests
|
20
|
+
def creditor_reference(legacy_ref = NOT_GIVEN, ref: '')
|
21
|
+
warn_for_deprecated_arguments do |keywords|
|
22
|
+
keywords << :ref if legacy_ref != NOT_GIVEN
|
23
|
+
end
|
24
|
+
|
25
|
+
ref = reference if ref.empty?
|
26
|
+
|
27
|
+
'RF' + iban_checksum('RF', ref) + ref
|
28
|
+
end
|
29
|
+
|
30
|
+
# Payment references have some rules in certain countries
|
31
|
+
# ref is optional so that we can create unit tests
|
32
|
+
def reference(legacy_ref = NOT_GIVEN, ref: '')
|
33
|
+
warn_for_deprecated_arguments do |keywords|
|
34
|
+
keywords << :ref if legacy_ref != NOT_GIVEN
|
35
|
+
end
|
36
|
+
|
37
|
+
pattern = fetch('invoice.reference.pattern')
|
38
|
+
|
39
|
+
ref = Base.regexify(/#{pattern}/) if ref.empty?
|
40
|
+
|
41
|
+
# If reference contains reserved '#' characters we need to calculate check_digits as well
|
42
|
+
check_digit_match = ref.match(/#+/)
|
43
|
+
if check_digit_match
|
44
|
+
# Get the method for selected language
|
45
|
+
check_digit_method = fetch('invoice.reference.check_digit_method')
|
46
|
+
|
47
|
+
# Calculate the check digit with matching method name
|
48
|
+
# Trim all '#' from the reference before calculating that
|
49
|
+
check_digit = send(check_digit_method, ref.tr('#', ''))
|
50
|
+
|
51
|
+
# Make sure that our check digit is as long as all of the '###' we found
|
52
|
+
check_digit = check_digit.to_s.rjust(check_digit_match[0].length, '0')
|
53
|
+
|
54
|
+
# Replace all of the
|
55
|
+
ref = ref.sub(check_digit_match[0], check_digit)
|
56
|
+
end
|
57
|
+
|
58
|
+
ref
|
59
|
+
end
|
60
|
+
|
61
|
+
private
|
62
|
+
|
63
|
+
# Calculates the mandatory checksum in 3rd and 4th characters in IBAN format
|
64
|
+
# source: https://en.wikipedia.org/wiki/International_Bank_Account_Number#Validating_the_IBAN
|
65
|
+
def iban_checksum(country_code, account)
|
66
|
+
# Converts letters to numbers according the iban rules, A=10..Z=35
|
67
|
+
account_to_number = "#{account}#{country_code}00".upcase.chars.map do |d|
|
68
|
+
d =~ /[A-Z]/ ? (d.ord - 55).to_s : d
|
69
|
+
end.join.to_i
|
70
|
+
|
71
|
+
# This is answer to (iban_to_num + checksum) % 97 == 1
|
72
|
+
checksum = (1 - account_to_number) % 97
|
73
|
+
|
74
|
+
# Use leftpad to make the size always to 2
|
75
|
+
checksum.to_s.rjust(2, '0')
|
76
|
+
end
|
77
|
+
|
78
|
+
# 731 Method
|
79
|
+
# Source: https://wiki.xmldation.com/support/fk/finnish_reference_number
|
80
|
+
def method_731(base)
|
81
|
+
weighted_sum = calculate_weighted_sum(base, [7, 3, 1])
|
82
|
+
mod10_remainder(weighted_sum)
|
83
|
+
end
|
84
|
+
|
85
|
+
# Norsk Modulus 10 - KIDMOD10
|
86
|
+
def kidmod10(base)
|
87
|
+
weighted_sum = calculate_weighted_sum(base, [1, 2])
|
88
|
+
mod10_remainder(weighted_sum)
|
89
|
+
end
|
90
|
+
|
91
|
+
# Calculates weigthed sum
|
92
|
+
#
|
93
|
+
# For example with 12345678, [1,2]
|
94
|
+
# Ref.num. 1 2 3 4 5 6 7 8
|
95
|
+
# Multipl. 1 2 1 2 1 2 1 2
|
96
|
+
# Total 1+ 4+ 3+ 8+ 5+1+2+ 7+1+6 = 38
|
97
|
+
def calculate_weighted_sum(base, weight_factors)
|
98
|
+
base.to_s.reverse.each_char.with_index.map do |digit, index|
|
99
|
+
digit.to_i * weight_factors.at(index % weight_factors.length)
|
100
|
+
end.reduce(:+) # reduce(:+) = sum() but with better ruby version support
|
101
|
+
end
|
102
|
+
|
103
|
+
# MOD-10 - remainder
|
104
|
+
def mod10_remainder(number)
|
105
|
+
-number % 10
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Faker
|
4
|
+
class Job < Base
|
5
|
+
flexible :job
|
6
|
+
|
7
|
+
class << self
|
8
|
+
def title
|
9
|
+
parse('job.title')
|
10
|
+
end
|
11
|
+
|
12
|
+
def position
|
13
|
+
fetch('job.position')
|
14
|
+
end
|
15
|
+
|
16
|
+
def field
|
17
|
+
fetch('job.field')
|
18
|
+
end
|
19
|
+
|
20
|
+
def key_skill
|
21
|
+
fetch('job.key_skills')
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,87 @@
|
|
1
|
+
module Faker
|
2
|
+
class Json < Base
|
3
|
+
require 'json'
|
4
|
+
|
5
|
+
class << self
|
6
|
+
def shallow_json(legacy_width = NOT_GIVEN, legacy_options = NOT_GIVEN, width: 3, options: { key: 'Name.first_name', value: 'Name.first_name' })
|
7
|
+
warn_for_deprecated_arguments do |keywords|
|
8
|
+
keywords << :width if legacy_width != NOT_GIVEN
|
9
|
+
keywords << :options if legacy_options != NOT_GIVEN
|
10
|
+
end
|
11
|
+
|
12
|
+
options[:key] = 'Faker::' + options[:key]
|
13
|
+
options[:value] = 'Faker::' + options[:value]
|
14
|
+
|
15
|
+
hash = build_shallow_hash(width, options)
|
16
|
+
JSON.generate(hash)
|
17
|
+
end
|
18
|
+
|
19
|
+
# rubocop:disable Metrics/ParameterLists
|
20
|
+
def add_depth_to_json(legacy_json = NOT_GIVEN, legacy_width = NOT_GIVEN, legacy_options = NOT_GIVEN, json: shallow_json, width: 3, options: { key: 'Name.first_name', value: 'Name.first_name' })
|
21
|
+
# rubocop:enable Metrics/ParameterLists
|
22
|
+
warn_for_deprecated_arguments do |keywords|
|
23
|
+
keywords << :json if legacy_json != NOT_GIVEN
|
24
|
+
end
|
25
|
+
warn_for_deprecated_arguments do |keywords|
|
26
|
+
keywords << :width if legacy_width != NOT_GIVEN
|
27
|
+
end
|
28
|
+
warn_for_deprecated_arguments do |keywords|
|
29
|
+
keywords << :options if legacy_options != NOT_GIVEN
|
30
|
+
end
|
31
|
+
|
32
|
+
options[:key] = 'Faker::' + options[:key]
|
33
|
+
options[:value] = 'Faker::' + options[:value]
|
34
|
+
|
35
|
+
hash = JSON.parse(json)
|
36
|
+
hash.each do |key, _|
|
37
|
+
add_hash_to_bottom(hash, [key], width, options)
|
38
|
+
end
|
39
|
+
JSON.generate(hash)
|
40
|
+
end
|
41
|
+
|
42
|
+
private
|
43
|
+
|
44
|
+
def build_shallow_hash(width, options)
|
45
|
+
key = options[:key]
|
46
|
+
value = options[:value]
|
47
|
+
|
48
|
+
hash = {}
|
49
|
+
width.times do
|
50
|
+
hash[eval(key)] = eval(value)
|
51
|
+
end
|
52
|
+
hash
|
53
|
+
end
|
54
|
+
|
55
|
+
def add_hash_to_bottom(hash, key_array, width, options)
|
56
|
+
key_string = build_keys_from_array(key_array)
|
57
|
+
if eval("hash#{key_string}").is_a?(::Hash)
|
58
|
+
eval("hash#{key_string}").each do |key, _|
|
59
|
+
key_array << key
|
60
|
+
add_hash_to_bottom(hash, key_array, width, options)
|
61
|
+
end
|
62
|
+
else
|
63
|
+
add_hash(key_array, hash, width, options)
|
64
|
+
key_array.pop
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
def add_hash(key_array, hash, width, options)
|
69
|
+
string_to_eval = 'hash'
|
70
|
+
key_array.length.times do |index|
|
71
|
+
string_to_eval << "['#{key_array[index]}']"
|
72
|
+
end
|
73
|
+
string_to_eval << " = #{build_shallow_hash(width, options)}"
|
74
|
+
eval(string_to_eval)
|
75
|
+
hash
|
76
|
+
end
|
77
|
+
|
78
|
+
def build_keys_from_array(key_array)
|
79
|
+
key_string = ''
|
80
|
+
key_array.each do |value|
|
81
|
+
key_string << "['#{value}']"
|
82
|
+
end
|
83
|
+
key_string
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Faker
|
4
|
+
class Kpop < Base
|
5
|
+
class << self
|
6
|
+
def i_groups
|
7
|
+
fetch('kpop.i_groups')
|
8
|
+
end
|
9
|
+
|
10
|
+
def ii_groups
|
11
|
+
fetch('kpop.ii_groups')
|
12
|
+
end
|
13
|
+
|
14
|
+
def iii_groups
|
15
|
+
fetch('kpop.iii_groups')
|
16
|
+
end
|
17
|
+
|
18
|
+
def girl_groups
|
19
|
+
fetch('kpop.girl_groups')
|
20
|
+
end
|
21
|
+
|
22
|
+
def boy_bands
|
23
|
+
fetch('kpop.boy_bands')
|
24
|
+
end
|
25
|
+
|
26
|
+
def solo
|
27
|
+
fetch('kpop.solo')
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,150 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Faker
|
4
|
+
# Based on Perl's Text::Lorem
|
5
|
+
class Lorem < Base
|
6
|
+
class << self
|
7
|
+
def word
|
8
|
+
sample(translate('faker.lorem.words'))
|
9
|
+
end
|
10
|
+
|
11
|
+
def words(legacy_number = NOT_GIVEN, legacy_supplemental = NOT_GIVEN, number: 3, supplemental: false)
|
12
|
+
warn_for_deprecated_arguments do |keywords|
|
13
|
+
keywords << :number if legacy_number != NOT_GIVEN
|
14
|
+
keywords << :supplemental if legacy_supplemental != NOT_GIVEN
|
15
|
+
end
|
16
|
+
|
17
|
+
resolved_num = resolve(number)
|
18
|
+
word_list = (
|
19
|
+
translate('faker.lorem.words') +
|
20
|
+
(supplemental ? translate('faker.lorem.supplemental') : [])
|
21
|
+
)
|
22
|
+
word_list *= ((resolved_num / word_list.length) + 1)
|
23
|
+
shuffle(word_list)[0, resolved_num]
|
24
|
+
end
|
25
|
+
|
26
|
+
def character
|
27
|
+
sample(Types::CHARACTERS)
|
28
|
+
end
|
29
|
+
|
30
|
+
##
|
31
|
+
# Produces a random string of alphanumeric characters
|
32
|
+
#
|
33
|
+
# @param [Integer] number
|
34
|
+
# @param [Integer] min_alpha
|
35
|
+
# @param [Integer] min_numeric
|
36
|
+
#
|
37
|
+
# @return [String]
|
38
|
+
#
|
39
|
+
# @example Faker::Lorem.characters #=> "uw1ep04lhs0c4d931n1jmrspprf5wrj85fefue0y7y6m56b6omquh7br7dhqijwlawejpl765nb1716idmp3xnfo85v349pzy2o9rir23y2qhflwr71c1585fnynguiphkjm8p0vktwitcsm16lny7jzp9t4drwav3qmhz4yjq4k04x14gl6p148hulyqioo72tf8nwrxxcclfypz2lc58lsibgfe5w5p0xv95peafjjmm2frkhdc6duoky0aha"
|
40
|
+
# @example Faker::Lorem.characters(number: 10) #=> "ang9cbhoa8"
|
41
|
+
# @example Faker::Lorem.characters(number: 10, min_alpha: 4) #=> "ang9cbhoa8"
|
42
|
+
# @example Faker::Lorem.characters(number: 10, min_alpha: 4, min_numeric: 1) #=> "ang9cbhoa8"
|
43
|
+
#
|
44
|
+
# @faker.version 2.1.3
|
45
|
+
def characters(legacy_number = NOT_GIVEN, number: 255, min_alpha: 0, min_numeric: 0)
|
46
|
+
warn_for_deprecated_arguments do |keywords|
|
47
|
+
keywords << :number if legacy_number != NOT_GIVEN
|
48
|
+
end
|
49
|
+
|
50
|
+
Alphanumeric.alphanumeric(number: number, min_alpha: min_alpha, min_numeric: min_numeric)
|
51
|
+
end
|
52
|
+
|
53
|
+
def multibyte
|
54
|
+
sample(translate('faker.lorem.multibyte')).pack('C*').force_encoding('utf-8')
|
55
|
+
end
|
56
|
+
|
57
|
+
# rubocop:disable Metrics/ParameterLists
|
58
|
+
def sentence(legacy_word_count = NOT_GIVEN, legacy_supplemental = NOT_GIVEN, legacy_random_words_to_add = NOT_GIVEN, word_count: 4, supplemental: false, random_words_to_add: 0)
|
59
|
+
# rubocop:enable Metrics/ParameterLists
|
60
|
+
warn_for_deprecated_arguments do |keywords|
|
61
|
+
keywords << :word_count if legacy_word_count != NOT_GIVEN
|
62
|
+
keywords << :supplemental if legacy_supplemental != NOT_GIVEN
|
63
|
+
keywords << :random_words_to_add if legacy_random_words_to_add != NOT_GIVEN
|
64
|
+
end
|
65
|
+
|
66
|
+
words(number: word_count + rand(random_words_to_add.to_i), supplemental: supplemental).join(' ').capitalize + locale_period
|
67
|
+
end
|
68
|
+
|
69
|
+
def sentences(legacy_number = NOT_GIVEN, legacy_supplemental = NOT_GIVEN, number: 3, supplemental: false)
|
70
|
+
warn_for_deprecated_arguments do |keywords|
|
71
|
+
keywords << :number if legacy_number != NOT_GIVEN
|
72
|
+
keywords << :supplemental if legacy_supplemental != NOT_GIVEN
|
73
|
+
end
|
74
|
+
|
75
|
+
1.upto(resolve(number)).collect { sentence(word_count: 3, supplemental: supplemental) }
|
76
|
+
end
|
77
|
+
|
78
|
+
# rubocop:disable Metrics/ParameterLists
|
79
|
+
def paragraph(legacy_sentence_count = NOT_GIVEN, legacy_supplemental = NOT_GIVEN, legacy_random_sentences_to_add = NOT_GIVEN, sentence_count: 3, supplemental: false, random_sentences_to_add: 0)
|
80
|
+
# rubocop:enable Metrics/ParameterLists
|
81
|
+
warn_for_deprecated_arguments do |keywords|
|
82
|
+
keywords << :sentence_count if legacy_sentence_count != NOT_GIVEN
|
83
|
+
keywords << :supplemental if legacy_supplemental != NOT_GIVEN
|
84
|
+
keywords << :random_sentences_to_add if legacy_random_sentences_to_add != NOT_GIVEN
|
85
|
+
end
|
86
|
+
|
87
|
+
sentences(number: resolve(sentence_count) + rand(random_sentences_to_add.to_i), supplemental: supplemental).join(locale_space)
|
88
|
+
end
|
89
|
+
|
90
|
+
def paragraphs(legacy_number = NOT_GIVEN, legacy_supplemental = NOT_GIVEN, number: 3, supplemental: false)
|
91
|
+
warn_for_deprecated_arguments do |keywords|
|
92
|
+
keywords << :number if legacy_number != NOT_GIVEN
|
93
|
+
end
|
94
|
+
warn_for_deprecated_arguments do |keywords|
|
95
|
+
keywords << :supplemental if legacy_supplemental != NOT_GIVEN
|
96
|
+
end
|
97
|
+
|
98
|
+
1.upto(resolve(number)).collect { paragraph(sentence_count: 3, supplemental: supplemental) }
|
99
|
+
end
|
100
|
+
|
101
|
+
def paragraph_by_chars(legacy_number = NOT_GIVEN, legacy_supplemental = NOT_GIVEN, number: 256, supplemental: false)
|
102
|
+
warn_for_deprecated_arguments do |keywords|
|
103
|
+
keywords << :number if legacy_number != NOT_GIVEN
|
104
|
+
keywords << :supplemental if legacy_supplemental != NOT_GIVEN
|
105
|
+
end
|
106
|
+
|
107
|
+
paragraph = paragraph(sentence_count: 3, supplemental: supplemental)
|
108
|
+
|
109
|
+
paragraph += ' ' + paragraph(sentence_count: 3, supplemental: supplemental) while paragraph.length < number
|
110
|
+
|
111
|
+
paragraph[0...number - 1] + '.'
|
112
|
+
end
|
113
|
+
|
114
|
+
# rubocop:disable Metrics/ParameterLists
|
115
|
+
def question(legacy_word_count = NOT_GIVEN, legacy_supplemental = NOT_GIVEN, legacy_random_words_to_add = NOT_GIVEN, word_count: 4, supplemental: false, random_words_to_add: 0)
|
116
|
+
# rubocop:enable Metrics/ParameterLists
|
117
|
+
warn_for_deprecated_arguments do |keywords|
|
118
|
+
keywords << :word_count if legacy_word_count != NOT_GIVEN
|
119
|
+
keywords << :supplemental if legacy_supplemental != NOT_GIVEN
|
120
|
+
keywords << :random_words_to_add if legacy_random_words_to_add != NOT_GIVEN
|
121
|
+
end
|
122
|
+
|
123
|
+
words(number: word_count + rand(random_words_to_add), supplemental: supplemental).join(' ').capitalize + locale_question_mark
|
124
|
+
end
|
125
|
+
|
126
|
+
def questions(legacy_number = NOT_GIVEN, legacy_supplemental = NOT_GIVEN, number: 3, supplemental: false)
|
127
|
+
warn_for_deprecated_arguments do |keywords|
|
128
|
+
keywords << :number if legacy_number != NOT_GIVEN
|
129
|
+
keywords << :supplemental if legacy_supplemental != NOT_GIVEN
|
130
|
+
end
|
131
|
+
|
132
|
+
1.upto(resolve(number)).collect { question(word_count: 3, supplemental: supplemental) }
|
133
|
+
end
|
134
|
+
|
135
|
+
private
|
136
|
+
|
137
|
+
def locale_period
|
138
|
+
translate('faker.lorem.punctuation.period') || '.'
|
139
|
+
end
|
140
|
+
|
141
|
+
def locale_space
|
142
|
+
translate('faker.lorem.punctuation.space') || ' '
|
143
|
+
end
|
144
|
+
|
145
|
+
def locale_question_mark
|
146
|
+
translate('faker.lorem.punctuation.question_mark') || '?'
|
147
|
+
end
|
148
|
+
end
|
149
|
+
end
|
150
|
+
end
|
@@ -0,0 +1,78 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Faker
|
4
|
+
class LoremFlickr < Base
|
5
|
+
class << self
|
6
|
+
SUPPORTED_COLORIZATIONS = %w[red green blue].freeze
|
7
|
+
|
8
|
+
# rubocop:disable Metrics/ParameterLists
|
9
|
+
def image(legacy_size = NOT_GIVEN, legacy_search_terms = NOT_GIVEN, legacy_match_all = NOT_GIVEN, size: '300x300', search_terms: [], match_all: false)
|
10
|
+
# rubocop:enable Metrics/ParameterLists
|
11
|
+
warn_for_deprecated_arguments do |keywords|
|
12
|
+
keywords << :size if legacy_size != NOT_GIVEN
|
13
|
+
keywords << :search_terms if legacy_search_terms != NOT_GIVEN
|
14
|
+
keywords << :match_all if legacy_match_all != NOT_GIVEN
|
15
|
+
end
|
16
|
+
|
17
|
+
build_url(size, nil, search_terms, match_all)
|
18
|
+
end
|
19
|
+
|
20
|
+
# rubocop:disable Metrics/ParameterLists
|
21
|
+
def grayscale_image(legacy_size = NOT_GIVEN, legacy_search_terms = NOT_GIVEN, legacy_match_all = NOT_GIVEN, size: '300x300', search_terms: ['all'], match_all: false)
|
22
|
+
# rubocop:enable Metrics/ParameterLists
|
23
|
+
warn_for_deprecated_arguments do |keywords|
|
24
|
+
keywords << :size if legacy_size != NOT_GIVEN
|
25
|
+
keywords << :search_terms if legacy_search_terms != NOT_GIVEN
|
26
|
+
keywords << :match_all if legacy_match_all != NOT_GIVEN
|
27
|
+
end
|
28
|
+
|
29
|
+
raise ArgumentError, 'Search terms must be specified for grayscale images' unless search_terms.any?
|
30
|
+
|
31
|
+
build_url(size, 'g', search_terms, match_all)
|
32
|
+
end
|
33
|
+
|
34
|
+
# rubocop:disable Metrics/ParameterLists
|
35
|
+
def pixelated_image(legacy_size = NOT_GIVEN, legacy_search_terms = NOT_GIVEN, legacy_match_all = NOT_GIVEN, size: '300x300', search_terms: ['all'], match_all: false)
|
36
|
+
# rubocop:enable Metrics/ParameterLists
|
37
|
+
warn_for_deprecated_arguments do |keywords|
|
38
|
+
keywords << :size if legacy_size != NOT_GIVEN
|
39
|
+
keywords << :search_terms if legacy_search_terms != NOT_GIVEN
|
40
|
+
keywords << :match_all if legacy_match_all != NOT_GIVEN
|
41
|
+
end
|
42
|
+
|
43
|
+
raise ArgumentError, 'Search terms must be specified for pixelated images' unless search_terms.any?
|
44
|
+
|
45
|
+
build_url(size, 'p', search_terms, match_all)
|
46
|
+
end
|
47
|
+
|
48
|
+
# rubocop:disable Metrics/ParameterLists
|
49
|
+
def colorized_image(legacy_size = NOT_GIVEN, legacy_color = NOT_GIVEN, legacy_search_terms = NOT_GIVEN, legacy_match_all = NOT_GIVEN, size: '300x300', color: 'red', search_terms: ['all'], match_all: false)
|
50
|
+
# rubocop:enable Metrics/ParameterLists
|
51
|
+
warn_for_deprecated_arguments do |keywords|
|
52
|
+
keywords << :size if legacy_size != NOT_GIVEN
|
53
|
+
keywords << :color if legacy_color != NOT_GIVEN
|
54
|
+
keywords << :search_terms if legacy_search_terms != NOT_GIVEN
|
55
|
+
keywords << :match_all if legacy_match_all != NOT_GIVEN
|
56
|
+
end
|
57
|
+
|
58
|
+
raise ArgumentError, 'Search terms must be specified for colorized images' unless search_terms.any?
|
59
|
+
raise ArgumentError, "Supported colorizations are #{SUPPORTED_COLORIZATIONS.join(', ')}" unless SUPPORTED_COLORIZATIONS.include?(color)
|
60
|
+
|
61
|
+
build_url(size, color, search_terms, match_all)
|
62
|
+
end
|
63
|
+
|
64
|
+
private
|
65
|
+
|
66
|
+
def build_url(size, format, search_terms, match_all)
|
67
|
+
raise ArgumentError, 'Size should be specified in format 300x300' unless size =~ /^[0-9]+x[0-9]+$/
|
68
|
+
|
69
|
+
url_parts = ['https://loremflickr.com']
|
70
|
+
url_parts << format
|
71
|
+
url_parts += size.split('x')
|
72
|
+
url_parts << search_terms.compact.join(',') if search_terms.any?
|
73
|
+
url_parts << 'all' if match_all
|
74
|
+
url_parts.compact.join('/')
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|