faker 2.15.1 → 3.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +848 -34
- data/README.md +225 -103
- data/lib/faker/blockchain/aeternity.rb +1 -1
- data/lib/faker/blockchain/bitcoin.rb +2 -2
- data/lib/faker/blockchain/ethereum.rb +1 -1
- data/lib/faker/blockchain/tezos.rb +31 -3
- data/lib/faker/books/dune.rb +2 -10
- data/lib/faker/books/lovecraft.rb +9 -41
- data/lib/faker/books/the_kingkiller_chronicle.rb +61 -0
- data/lib/faker/creature/bird.rb +203 -0
- data/lib/faker/default/address.rb +7 -27
- data/lib/faker/default/alphanumeric.rb +2 -8
- data/lib/faker/default/app.rb +1 -10
- data/lib/faker/default/avatar.rb +1 -12
- data/lib/faker/default/bank.rb +25 -17
- data/lib/faker/default/barcode.rb +33 -22
- data/lib/faker/default/boolean.rb +1 -4
- data/lib/faker/default/cannabis.rb +10 -0
- data/lib/faker/default/chile_rut.rb +25 -25
- data/lib/faker/default/chuck_norris.rb +1 -0
- data/lib/faker/default/code.rb +71 -42
- data/lib/faker/default/color.rb +77 -6
- data/lib/faker/default/commerce.rb +31 -17
- data/lib/faker/default/company.rb +137 -22
- data/lib/faker/default/crypto.rb +26 -4
- data/lib/faker/default/crypto_coin.rb +3 -15
- data/lib/faker/default/date.rb +65 -42
- data/lib/faker/default/demographic.rb +1 -5
- data/lib/faker/default/driving_licence.rb +20 -18
- data/lib/faker/default/drone.rb +1 -1
- data/lib/faker/default/educator.rb +13 -0
- data/lib/faker/default/emotion.rb +33 -0
- data/lib/faker/default/file.rb +5 -22
- data/lib/faker/default/finance.rb +30 -7
- data/lib/faker/default/food.rb +27 -1
- data/lib/faker/default/hipster.rb +8 -48
- data/lib/faker/default/hobby.rb +22 -0
- data/lib/faker/default/html.rb +230 -0
- data/lib/faker/default/id_number.rb +175 -27
- data/lib/faker/default/internet.rb +333 -114
- data/lib/faker/default/invoice.rb +4 -17
- data/lib/faker/default/json.rb +4 -21
- data/lib/faker/default/lorem.rb +175 -73
- data/lib/faker/default/lorem_flickr.rb +4 -37
- data/lib/faker/default/markdown.rb +10 -13
- data/lib/faker/default/marketing.rb +1 -1
- data/lib/faker/default/measurement.rb +16 -48
- data/lib/faker/default/name.rb +1 -5
- data/lib/faker/default/nation.rb +0 -3
- data/lib/faker/default/{nhs.rb → national_health_service.rb} +9 -8
- data/lib/faker/default/number.rb +33 -61
- data/lib/faker/default/omniauth.rb +55 -52
- data/lib/faker/default/phone_number.rb +36 -21
- data/lib/faker/default/placeholdit.rb +10 -20
- data/lib/faker/default/relationship.rb +1 -5
- data/lib/faker/default/religion.rb +6 -0
- data/lib/faker/default/science.rb +108 -0
- data/lib/faker/default/source.rb +3 -16
- data/lib/faker/default/south_africa.rb +3 -3
- data/lib/faker/default/string.rb +1 -7
- data/lib/faker/default/stripe.rb +4 -20
- data/lib/faker/default/tea.rb +41 -0
- data/lib/faker/{music/show.rb → default/theater.rb} +11 -8
- data/lib/faker/default/time.rb +4 -34
- data/lib/faker/default/twitter.rb +7 -23
- data/lib/faker/default/types.rb +12 -34
- data/lib/faker/default/vehicle.rb +44 -54
- data/lib/faker/default/vulnerability_identifier.rb +23 -0
- data/lib/faker/default/world_cup.rb +2 -11
- data/lib/faker/games/clash_of_clans.rb +1 -1
- data/lib/faker/games/dnd.rb +49 -7
- data/lib/faker/games/dota.rb +14 -5
- data/lib/faker/games/final_fantasy_xiv.rb +73 -0
- data/lib/faker/games/minecraft.rb +1 -1
- data/lib/faker/games/myst.rb +1 -1
- data/lib/faker/games/tarkov.rb +205 -0
- data/lib/faker/games/touhou.rb +75 -0
- data/lib/faker/games/witcher.rb +39 -0
- data/lib/faker/japanese_media/cowboy_bebop.rb +61 -0
- data/lib/faker/japanese_media/fullmetal_alchemist_brotherhood.rb +51 -0
- data/lib/faker/japanese_media/kamen_rider.rb +102 -0
- data/lib/faker/japanese_media/one_piece.rb +1 -1
- data/lib/faker/locations/australia.rb +52 -0
- data/lib/faker/movies/avatar.rb +49 -0
- data/lib/faker/movies/hackers.rb +48 -0
- data/lib/faker/movies/star_wars.rb +73 -5
- data/lib/faker/movies/{room.rb → the_room.rb} +4 -4
- data/lib/faker/movies/tron.rb +161 -0
- data/lib/faker/music/hiphop.rb +3 -3
- data/lib/faker/music/music.rb +12 -0
- data/lib/faker/music/rock_band.rb +12 -0
- data/lib/faker/music/smashing_pumpkins.rb +64 -0
- data/lib/faker/quotes/quote.rb +13 -0
- data/lib/faker/quotes/rajnikanth.rb +1 -0
- data/lib/faker/quotes/shakespeare.rb +34 -0
- data/lib/faker/religion/bible.rb +50 -0
- data/lib/faker/sports/chess.rb +90 -0
- data/lib/faker/sports/mountaineering.rb +22 -0
- data/lib/faker/sports/sport.rb +116 -0
- data/lib/faker/travel/airport.rb +43 -0
- data/lib/faker/travel/train_station.rb +54 -0
- data/lib/faker/tv_shows/archer.rb +51 -0
- data/lib/faker/tv_shows/big_bang_theory.rb +1 -1
- data/lib/faker/tv_shows/brooklyn_nine_nine.rb +38 -0
- data/lib/faker/tv_shows/michael_scott.rb +0 -3
- data/lib/faker/tv_shows/south_park.rb +15 -0
- data/lib/faker/tv_shows/spongebob.rb +50 -0
- data/lib/faker/tv_shows/suits.rb +1 -1
- data/lib/faker/tv_shows/supernatural.rb +48 -0
- data/lib/faker/tv_shows/the_office.rb +37 -0
- data/lib/faker/version.rb +2 -2
- data/lib/faker.rb +26 -67
- data/lib/helpers/base58.rb +1 -1
- data/lib/helpers/deprecator.rb +53 -0
- data/lib/helpers/positional_generator.rb +480 -0
- data/lib/helpers/unique_generator.rb +13 -14
- data/lib/locales/README.md +18 -2
- data/lib/locales/ar.yml +6 -1
- data/lib/locales/bg.yml +1 -2
- data/lib/locales/da-DK.yml +529 -35
- data/lib/locales/de-AT.yml +3487 -27
- data/lib/locales/de-CH.yml +4328 -12
- data/lib/locales/de.yml +7185 -99
- data/lib/locales/ee.yml +0 -1
- data/lib/locales/en/address.yml +1826 -562
- data/lib/locales/en/airport.yml +381 -0
- data/lib/locales/en/animal.yml +1 -1
- data/lib/locales/en/archer.yml +75 -0
- data/lib/locales/en/australia.yml +108 -0
- data/lib/locales/en/avatar.yml +31 -0
- data/lib/locales/en/bank.yml +1 -1
- data/lib/locales/en/bible.yml +90 -0
- data/lib/locales/en/bird.yml +1281 -0
- data/lib/locales/en/book.yml +487 -3
- data/lib/locales/en/brooklyn_nine_nine.yml +35 -0
- data/lib/locales/en/cat.yml +1 -1
- data/lib/locales/en/chess.yml +103 -0
- data/lib/locales/en/coffee.yml +1 -1
- data/lib/locales/en/commerce.yml +17 -0
- data/lib/locales/en/community.yml +17 -17
- data/lib/locales/en/company.yml +1 -0
- data/lib/locales/en/computer.yml +23 -4
- data/lib/locales/en/cowboy_bebop.yml +163 -0
- data/lib/locales/en/device.yml +112 -4
- data/lib/locales/en/dnd.yml +186 -1
- data/lib/locales/en/dog.yml +262 -7
- data/lib/locales/en/dota.yml +173 -0
- data/lib/locales/en/dune.yml +266 -397
- data/lib/locales/en/educator.yml +6 -0
- data/lib/locales/en/emotion.yml +480 -0
- data/lib/locales/en/file.yml +9 -1
- data/lib/locales/en/final_fantasy_xiv.yml +754 -0
- data/lib/locales/en/finance.yml +27 -4
- data/lib/locales/en/food.yml +1067 -10
- data/lib/locales/en/football.yml +3 -3
- data/lib/locales/en/fullmetal_alchemist_brotherhood.yml +78 -0
- data/lib/locales/en/game.yml +11 -0
- data/lib/locales/en/hackers.yml +53 -0
- data/lib/locales/en/harry_potter.yml +1 -1
- data/lib/locales/en/heroes.yml +2 -2
- data/lib/locales/en/hobby.yml +171 -0
- data/lib/locales/en/horse.yml +2 -2
- data/lib/locales/en/id_number.yml +1 -1
- data/lib/locales/en/internet.yml +136 -3
- data/lib/locales/en/kamen_rider.yml +452 -0
- data/lib/locales/en/kpop.yml +7 -7
- data/lib/locales/en/lebowski.yml +1 -1
- data/lib/locales/en/lovecraft.yml +76 -6
- data/lib/locales/en/minecraft.yml +4 -4
- data/lib/locales/en/mitch_hedberg.yml +46 -0
- data/lib/locales/en/mountain.yml +14 -1
- data/lib/locales/en/mountaineering.yml +14 -0
- data/lib/locales/en/movie.yml +2 -1
- data/lib/locales/en/music.yml +152 -142
- data/lib/locales/en/naruto.yml +2 -3
- data/lib/locales/en/one_piece.yml +1 -1
- data/lib/locales/en/opera.yml +2 -2
- data/lib/locales/en/overwatch.yml +5 -7
- data/lib/locales/en/phone_number.yml +78 -3
- data/lib/locales/en/rock_band.yml +1 -0
- data/lib/locales/en/science.yml +481 -3
- data/lib/locales/en/shakespeare.yml +21 -24
- data/lib/locales/en/smashing_pumpkins.yml +382 -0
- data/lib/locales/en/source.yml +5 -0
- data/lib/locales/en/south_park.yml +360 -2
- data/lib/locales/en/space.yml +1 -1
- data/lib/locales/en/spongebob.yml +489 -0
- data/lib/locales/en/sport.yml +130 -0
- data/lib/locales/en/star_wars.yml +1 -1
- data/lib/locales/en/stranger_thing.yml +1 -1
- data/lib/locales/en/super_smash_bros.yml +7 -2
- data/lib/locales/en/supernatural.yml +141 -0
- data/lib/locales/en/tarkov.yml +593 -0
- data/lib/locales/en/tea.yml +172 -0
- data/lib/locales/en/the_kingkiller_chronicle.yml +56 -0
- data/lib/locales/en/the_office.yml +86 -0
- data/lib/locales/en/{room.yml → the_room.yml} +1 -1
- data/lib/locales/en/{show.yml → theater.yml} +1 -1
- data/lib/locales/en/touhou.yml +839 -0
- data/lib/locales/en/train_station.yml +280 -0
- data/lib/locales/en/tron.yml +227 -0
- data/lib/locales/en/vehicle.yml +2809 -75
- data/lib/locales/en/witcher.yml +37 -0
- data/lib/locales/en-AU.yml +718 -47
- data/lib/locales/en-CA.yml +373 -18
- data/lib/locales/en-GB.yml +116 -8
- data/lib/locales/en-IND.yml +1259 -17
- data/lib/locales/en-KE.yml +212 -0
- data/lib/locales/en-MS.yml +364 -17
- data/lib/locales/en-NEP.yml +212 -38
- data/lib/locales/en-NG.yml +1 -0
- data/lib/locales/en-NZ.yml +1153 -123
- data/lib/locales/en-PAK.yml +369 -10
- data/lib/locales/en-SG.yml +581 -16
- data/lib/locales/en-UG.yml +1 -0
- data/lib/locales/en-US.yml +6914 -74
- data/lib/locales/en-ZA.yml +1 -1
- data/lib/locales/en-au-ocker.yml +266 -22
- data/lib/locales/es-AR.yml +4570 -0
- data/lib/locales/es-MX.yml +1 -2
- data/lib/locales/es.yml +2 -3
- data/lib/locales/fi-FI.yml +3 -1
- data/lib/locales/fr/address.yml +20 -0
- data/lib/locales/fr/adjective.yml +266 -0
- data/lib/locales/fr/ancient.yml +141 -0
- data/lib/locales/fr/animal.yml +5 -0
- data/lib/locales/fr/appliance.yml +4 -0
- data/lib/locales/fr/book.yml +7 -0
- data/lib/locales/fr/color.yml +4 -0
- data/lib/locales/fr/company.yml +17 -0
- data/lib/locales/fr/compass.yml +23 -0
- data/lib/locales/fr/demographic.yml +4 -0
- data/lib/locales/fr/gender.yml +6 -0
- data/lib/locales/fr/internet.yml +4 -0
- data/lib/locales/fr/lorem.yml +5 -0
- data/lib/locales/fr/measurement.yml +7 -0
- data/lib/locales/fr/name.yml +22 -0
- data/lib/locales/fr/phone_number.yml +7 -0
- data/lib/locales/fr/pokemon.yml +7 -0
- data/lib/locales/fr-CA.yml +2733 -44
- data/lib/locales/fr-CH.yml +1 -2
- data/lib/locales/fr.yml +2 -118
- data/lib/locales/hy.yml +3624 -119
- data/lib/locales/id.yml +839 -12
- data/lib/locales/it.yml +1304 -32
- data/lib/locales/ja/README.md +13 -0
- data/lib/locales/ja/address.yml +120539 -0
- data/lib/locales/ja/adjective.yml +148 -0
- data/lib/locales/ja/ancient.yml +4 -0
- data/lib/locales/ja/animal.yml +5 -0
- data/lib/locales/ja/bank.yml +4 -0
- data/lib/locales/ja/book.yml +7 -0
- data/lib/locales/ja/cat.yml +5 -0
- data/lib/locales/ja/coffee.yml +4 -0
- data/lib/locales/ja/color.yml +4 -0
- data/lib/locales/ja/commerce.yml +11 -0
- data/lib/locales/ja/company.yml +8 -0
- data/lib/locales/ja/dog.yml +6 -0
- data/lib/locales/ja/emotion.yml +51 -0
- data/lib/locales/ja/food.yml +4 -0
- data/lib/locales/ja/football.yml +115 -0
- data/lib/locales/ja/gender.yml +4 -0
- data/lib/locales/ja/lorem.yml +9 -0
- data/lib/locales/ja/name.yml +13 -0
- data/lib/locales/ja/naruto.yml +230 -0
- data/lib/locales/ja/overwatch.yml +5 -0
- data/lib/locales/ja/phone_number.yml +7 -0
- data/lib/locales/ja/pokemon.yml +7 -0
- data/lib/locales/ja/relationship.yml +10 -0
- data/lib/locales/ja/restaurant.yml +11 -0
- data/lib/locales/ja/space.yml +5 -0
- data/lib/locales/ja/sport.yml +130 -0
- data/lib/locales/ja/studio_ghibli.yml +112 -0
- data/lib/locales/ja/subscription.yml +8 -0
- data/lib/locales/ja/super_mario.yml +9 -0
- data/lib/locales/ja/super_smash_bros.yml +8 -0
- data/lib/locales/ja/touhou.yml +466 -0
- data/lib/locales/ja/university.yml +9 -0
- data/lib/locales/ja/zelda.yml +5 -0
- data/lib/locales/ko.yml +1361 -20
- data/lib/locales/lt.yml +315 -0
- data/lib/locales/lv.yml +1 -2
- data/lib/locales/mi-NZ.yml +283 -0
- data/lib/locales/nb-NO.yml +518 -29
- data/lib/locales/nl.yml +1 -1
- data/lib/locales/pl.yml +1 -2
- data/lib/locales/pt-BR.yml +8157 -660
- data/lib/locales/pt.yml +844 -45
- data/lib/locales/ru.yml +1355 -32
- data/lib/locales/sk.yml +4410 -43
- data/lib/locales/sv.yml +100 -0
- data/lib/locales/th.yml +76 -76
- data/lib/locales/tr.yml +1 -2
- data/lib/locales/uk.yml +1808 -44
- data/lib/locales/vi.yml +1 -0
- data/lib/locales/zh-CN/bank.yml +17 -0
- data/lib/locales/zh-CN.yml +1 -0
- data/lib/locales/zh-TW.yml +1 -0
- metadata +134 -133
- data/History.md +0 -176
- data/lib/faker/default/fillmurray.rb +0 -45
- data/lib/faker/default/lorem_pixel.rb +0 -69
- data/lib/locales/ja.yml +0 -105
- /data/lib/faker/default/{faker_adjective.rb → adjective.rb} +0 -0
|
@@ -2,13 +2,35 @@
|
|
|
2
2
|
|
|
3
3
|
module Faker
|
|
4
4
|
class Internet < Base
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
5
|
+
# Private, Host, and Link-Local network address blocks as defined in https://en.wikipedia.org/wiki/IPv4#Special-use_addresses
|
|
6
|
+
PRIVATE_IPV4_ADDRESS_RANGES = [
|
|
7
|
+
[10..10, 0..255, 0..255, 1..255], # 10.0.0.0/8 - Used for local communications within a private network
|
|
8
|
+
[100..100, 64..127, 0..255, 1..255], # 100.64.0.0/10 - Shared address space for communications between an ISP and its subscribers
|
|
9
|
+
[127..127, 0..255, 0..255, 1..255], # 127.0.0.0/8 - Used for loopback addresses to the local host
|
|
10
|
+
[169..169, 254..254, 0..255, 1..255], # 169.254.0.0/16 - Used for link-local addresses between two hosts on a single link when
|
|
11
|
+
[172..172, 16..31, 0..255, 1..255], # 172.16.0.0/12 - Used for local communications within a private network
|
|
12
|
+
[192..192, 0..0, 0..0, 1..255], # 192.0.0.0/24 - IETF Protocol Assignments
|
|
13
|
+
[192..192, 168..168, 0..255, 1..255], # 192.168.0.0/16 - Used for local communications within a private network
|
|
14
|
+
[198..198, 18..19, 0..255, 1..255] # 198.18.0.0/15 - Used for benchmark testing of inter-network communications between subnets
|
|
15
|
+
].each(&:freeze).freeze
|
|
11
16
|
|
|
17
|
+
class << self
|
|
18
|
+
##
|
|
19
|
+
# Returns the email address
|
|
20
|
+
#
|
|
21
|
+
# @return [String]
|
|
22
|
+
#
|
|
23
|
+
# @param name [String]
|
|
24
|
+
# @param separators [Array]
|
|
25
|
+
# @param domain [String]
|
|
26
|
+
#
|
|
27
|
+
# @example
|
|
28
|
+
# Faker::Internet.email #=> "renee@zieme.test"
|
|
29
|
+
# Faker::Internet.email(name: 'smith') #=> "smith@bergnaum.test"
|
|
30
|
+
# Faker::Internet.email(name: 'sam smith', separators: ['-']) #=> "smith-sam@tromp.example"
|
|
31
|
+
# Faker::Internet.email(name: 'sam smith', separators: ['-'], domain: 'test') #=> "sam-smith@test.example"
|
|
32
|
+
# Faker::Internet.email(domain: 'gmail.com') #=> "foo@gmail.com"
|
|
33
|
+
def email(name: nil, separators: nil, domain: nil)
|
|
12
34
|
local_part = if separators
|
|
13
35
|
username(specifier: name, separators: separators)
|
|
14
36
|
else
|
|
@@ -16,41 +38,37 @@ module Faker
|
|
|
16
38
|
end
|
|
17
39
|
|
|
18
40
|
sanitized_local_part = sanitize_email_local_part(local_part)
|
|
19
|
-
construct_email(sanitized_local_part, domain_name(domain: domain))
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def free_email(legacy_name = NOT_GIVEN, name: nil)
|
|
23
|
-
warn_for_deprecated_arguments do |keywords|
|
|
24
|
-
keywords << :name if legacy_name != NOT_GIVEN
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
construct_email(
|
|
28
|
-
sanitize_email_local_part(username(specifier: name)),
|
|
29
|
-
fetch('internet.free_email')
|
|
30
|
-
)
|
|
31
|
-
end
|
|
32
41
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
42
|
+
generate_domain = if domain.nil?
|
|
43
|
+
domain_name
|
|
44
|
+
else
|
|
45
|
+
domain_name(domain: domain)
|
|
46
|
+
end
|
|
37
47
|
|
|
38
|
-
construct_email(
|
|
39
|
-
sanitize_email_local_part(username(specifier: name)),
|
|
40
|
-
"example.#{sample(%w[org com net])}"
|
|
41
|
-
)
|
|
48
|
+
construct_email(sanitized_local_part, generate_domain)
|
|
42
49
|
end
|
|
43
50
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
51
|
+
##
|
|
52
|
+
# Returns the username
|
|
53
|
+
#
|
|
54
|
+
# @return [String]
|
|
55
|
+
#
|
|
56
|
+
# @param specifier [Integer, Range, String] When int value passed it returns the username longer than specifier. Max value can be 10^6
|
|
57
|
+
# @param separators [Array]
|
|
58
|
+
#
|
|
59
|
+
# @example
|
|
60
|
+
# Faker::Internet.username(specifier: 10) #=> "lulu.goodwin"
|
|
61
|
+
# Faker::Internet.username(specifier: 5..10) #=> "morris"
|
|
62
|
+
# Faker::Internet.username(specifier: 5..10) #=> "berryberry"
|
|
63
|
+
# Faker::Internet.username(specifier: 20, separators: ['_']) #=> "nikki_sawaynnikki_saway"
|
|
64
|
+
def username(specifier: nil, separators: %w[. _])
|
|
50
65
|
with_locale(:en) do
|
|
51
|
-
return shuffle(specifier.scan(/[[:word:]]+/)).join(sample(separators)).downcase if specifier.respond_to?(:scan)
|
|
52
|
-
|
|
53
66
|
case specifier
|
|
67
|
+
when ::String
|
|
68
|
+
names = specifier.gsub("'", '').scan(/[[:word:]]+/)
|
|
69
|
+
shuffled_names = shuffle(names)
|
|
70
|
+
|
|
71
|
+
return shuffled_names.join(sample(separators)).downcase
|
|
54
72
|
when Integer
|
|
55
73
|
# If specifier is Integer and has large value, Argument error exception is raised to overcome memory full error
|
|
56
74
|
raise ArgumentError, 'Given argument is too large' if specifier > 10**6
|
|
@@ -83,8 +101,6 @@ module Faker
|
|
|
83
101
|
end
|
|
84
102
|
end
|
|
85
103
|
|
|
86
|
-
# rubocop:disable Metrics/ParameterLists
|
|
87
|
-
|
|
88
104
|
##
|
|
89
105
|
# Produces a randomized string of characters suitable for passwords
|
|
90
106
|
#
|
|
@@ -107,106 +123,184 @@ module Faker
|
|
|
107
123
|
# Faker::Internet.password(min_length: 10, max_length: 20, mix_case: true, special_characters: true) #=> "*%NkOnJsH4"
|
|
108
124
|
#
|
|
109
125
|
# @faker.version 2.1.3
|
|
110
|
-
def password(
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
keywords << :min_length if legacy_min_length != NOT_GIVEN
|
|
114
|
-
keywords << :max_length if legacy_max_length != NOT_GIVEN
|
|
115
|
-
keywords << :mix_case if legacy_mix_case != NOT_GIVEN
|
|
116
|
-
keywords << :special_characters if legacy_special_characters != NOT_GIVEN
|
|
117
|
-
end
|
|
126
|
+
def password(min_length: 8, max_length: 16, mix_case: true, special_characters: false)
|
|
127
|
+
raise ArgumentError, 'min_length and max_length must be greater than or equal to one' if min_length < 1 || max_length < 1
|
|
128
|
+
raise ArgumentError, 'min_length must be smaller than or equal to max_length' unless min_length <= max_length
|
|
118
129
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
diff_length = max_length - min_length
|
|
130
|
+
character_types = []
|
|
131
|
+
required_min_length = 0
|
|
122
132
|
|
|
123
|
-
if
|
|
124
|
-
|
|
125
|
-
|
|
133
|
+
if mix_case
|
|
134
|
+
character_types << :mix_case
|
|
135
|
+
required_min_length += 2
|
|
126
136
|
end
|
|
127
137
|
|
|
138
|
+
if special_characters
|
|
139
|
+
character_types << :special_characters
|
|
140
|
+
required_min_length += 1
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
raise ArgumentError, "min_length should be at least #{required_min_length} to enable #{character_types.join(', ')} configuration" if min_length < required_min_length
|
|
144
|
+
|
|
145
|
+
target_length = rand(min_length..max_length)
|
|
146
|
+
|
|
147
|
+
password = []
|
|
148
|
+
character_bag = []
|
|
149
|
+
|
|
150
|
+
# use lower_chars by default and add upper_chars if mix_case
|
|
151
|
+
lower_chars = self::LLetters
|
|
152
|
+
password << sample(lower_chars)
|
|
153
|
+
character_bag += lower_chars
|
|
154
|
+
|
|
155
|
+
digits = ('0'..'9').to_a
|
|
156
|
+
password << sample(digits)
|
|
157
|
+
character_bag += digits
|
|
158
|
+
|
|
128
159
|
if mix_case
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
temp[index] = char.upcase if alpha_count.even?
|
|
133
|
-
alpha_count += 1
|
|
134
|
-
end
|
|
135
|
-
end
|
|
160
|
+
upper_chars = self::ULetters
|
|
161
|
+
password << sample(upper_chars)
|
|
162
|
+
character_bag += upper_chars
|
|
136
163
|
end
|
|
137
164
|
|
|
138
165
|
if special_characters
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
end
|
|
166
|
+
special_chars = %w[! @ # $ % ^ & *]
|
|
167
|
+
password << sample(special_chars)
|
|
168
|
+
character_bag += special_chars
|
|
143
169
|
end
|
|
144
170
|
|
|
145
|
-
|
|
146
|
-
end
|
|
171
|
+
password << sample(character_bag) while password.length < target_length
|
|
147
172
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
keywords << :subdomain if legacy_subdomain != NOT_GIVEN
|
|
151
|
-
end
|
|
173
|
+
shuffle(password).join
|
|
174
|
+
end
|
|
152
175
|
|
|
176
|
+
##
|
|
177
|
+
# Returns the domain name
|
|
178
|
+
#
|
|
179
|
+
# @return [String]
|
|
180
|
+
#
|
|
181
|
+
# @param subdomain [Bool] If true passed adds a subdomain in response
|
|
182
|
+
# @param domain [String]
|
|
183
|
+
#
|
|
184
|
+
# @example
|
|
185
|
+
# Faker::Internet.domain_name #=> "altenwerth-gerhold.example"
|
|
186
|
+
# Faker::Internet.domain_name(subdomain: true) #=> "metz.mclaughlin-brekke.test"
|
|
187
|
+
# Faker::Internet.domain_name(subdomain: true, domain: 'faker') #=> "foo.faker.test"
|
|
188
|
+
# Faker::Internet.domain_name(domain: 'faker-ruby.org') #=> "faker-ruby.org"
|
|
189
|
+
# Faker::Internet.domain_name(subdomain: true, domain: 'faker-ruby.org') #=> "foo.faker-ruby.org"
|
|
190
|
+
# Faker::Internet.domain_name(subdomain: true, domain: 'faker.faker-ruby.org') #=> "faker.faker-ruby.org"
|
|
191
|
+
def domain_name(subdomain: false, domain: nil)
|
|
153
192
|
with_locale(:en) do
|
|
154
193
|
if domain
|
|
155
194
|
domain
|
|
156
195
|
.split('.')
|
|
157
196
|
.map { |domain_part| Char.prepare(domain_part) }
|
|
158
197
|
.tap do |domain_elements|
|
|
159
|
-
|
|
160
|
-
|
|
198
|
+
if domain_elements.length < 2
|
|
199
|
+
domain_elements << domain_suffix(safe: true)
|
|
200
|
+
end
|
|
201
|
+
if subdomain && domain_elements.length < 3
|
|
202
|
+
domain_elements.unshift(Char.prepare(domain_word))
|
|
203
|
+
end
|
|
161
204
|
end.join('.')
|
|
162
205
|
else
|
|
163
|
-
[domain_word, domain_suffix].tap do |domain_elements|
|
|
164
|
-
|
|
206
|
+
[domain_word, domain_suffix(safe: true)].tap do |domain_elements|
|
|
207
|
+
if subdomain
|
|
208
|
+
domain_elements.unshift(Char.prepare(domain_word))
|
|
209
|
+
end
|
|
165
210
|
end.join('.')
|
|
166
211
|
end
|
|
167
212
|
end
|
|
168
213
|
end
|
|
169
214
|
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
215
|
+
##
|
|
216
|
+
# Fixes ä, ö, ü, ß characters in string passed with ae, oe, ue, ss resp.
|
|
217
|
+
#
|
|
218
|
+
# @return [String]
|
|
219
|
+
#
|
|
220
|
+
# @param string [String]
|
|
221
|
+
#
|
|
222
|
+
# @example
|
|
223
|
+
# Faker::Internet.fix_umlauts #=> ""
|
|
224
|
+
# Faker::Internet.fix_umlauts(string: 'faker') #=> "faker"
|
|
225
|
+
# Faker::Internet.fix_umlauts(string: 'faküer') #=> "fakueer"
|
|
226
|
+
def fix_umlauts(string: '')
|
|
175
227
|
Char.fix_umlauts(string)
|
|
176
228
|
end
|
|
177
229
|
|
|
230
|
+
##
|
|
231
|
+
# Returns the domain word for internet
|
|
232
|
+
#
|
|
233
|
+
# @return [String]
|
|
234
|
+
#
|
|
235
|
+
# @example
|
|
236
|
+
# Faker::Internet.domain_word #=> "senger"
|
|
178
237
|
def domain_word
|
|
179
|
-
with_locale(:en) { Char.prepare(Company.name.split
|
|
238
|
+
with_locale(:en) { Char.prepare(Company.name.split.first) }
|
|
180
239
|
end
|
|
181
240
|
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
241
|
+
## Returns the domain suffix e.g. com, org, co, biz, info etc.
|
|
242
|
+
#
|
|
243
|
+
# @return [String]
|
|
244
|
+
#
|
|
245
|
+
# @example
|
|
246
|
+
# Faker::Internet.domain_suffix #=> "com"
|
|
247
|
+
# Faker::Internet.domain_suffix #=> "biz"
|
|
248
|
+
# Faker::Internet.domain_suffix(safe: true) #=> "example"
|
|
249
|
+
# Faker::Internet.domain_suffix(safe: true) #=> "test"
|
|
250
|
+
def domain_suffix(safe: nil)
|
|
251
|
+
if safe
|
|
252
|
+
fetch('internet.safe_domain_suffix')
|
|
253
|
+
else
|
|
254
|
+
fetch('internet.domain_suffix')
|
|
189
255
|
end
|
|
256
|
+
end
|
|
190
257
|
|
|
258
|
+
##
|
|
259
|
+
# Returns the MAC address
|
|
260
|
+
#
|
|
261
|
+
# @return [String]
|
|
262
|
+
#
|
|
263
|
+
# @example
|
|
264
|
+
# Faker::Internet.mac_address #=> "74:d0:c9:22:95:12"
|
|
265
|
+
# Faker::Internet.mac_address(prefix: 'a') #=> "0a:91:ce:24:89:3b"
|
|
266
|
+
# Faker::Internet.mac_address(prefix: 'aa') #=> "aa:38:a0:3e:e8:41"
|
|
267
|
+
# Faker::Internet.mac_address(prefix: 'aa:44') #=> "aa:44:30:88:6e:95"
|
|
268
|
+
def mac_address(prefix: '')
|
|
191
269
|
prefix_digits = prefix.split(':').map { |d| d.to_i(16) }
|
|
192
270
|
address_digits = Array.new((6 - prefix_digits.size)) { rand(256) }
|
|
193
271
|
(prefix_digits + address_digits).map { |d| format('%02x', d) }.join(':')
|
|
194
272
|
end
|
|
195
273
|
|
|
274
|
+
##
|
|
275
|
+
# Returns the IPv4 address
|
|
276
|
+
#
|
|
277
|
+
# @return [String]
|
|
278
|
+
#
|
|
279
|
+
# @example
|
|
280
|
+
# Faker::Internet.ip_v4_address #=> "97.117.128.93"
|
|
196
281
|
def ip_v4_address
|
|
197
282
|
[rand_in_range(0, 255), rand_in_range(0, 255),
|
|
198
283
|
rand_in_range(0, 255), rand_in_range(0, 255)].join('.')
|
|
199
284
|
end
|
|
200
285
|
|
|
286
|
+
##
|
|
287
|
+
# Returns the private IPv4 address
|
|
288
|
+
#
|
|
289
|
+
# @return [String]
|
|
290
|
+
#
|
|
291
|
+
# @example
|
|
292
|
+
# Faker::Internet.private_ip_v4_address #=> "127.120.80.42"
|
|
201
293
|
def private_ip_v4_address
|
|
202
|
-
|
|
203
|
-
loop do
|
|
204
|
-
addr = ip_v4_address
|
|
205
|
-
break if private_net_checker[addr]
|
|
206
|
-
end
|
|
207
|
-
addr
|
|
294
|
+
sample(PRIVATE_IPV4_ADDRESS_RANGES).map { |range| rand(range) }.join('.')
|
|
208
295
|
end
|
|
209
296
|
|
|
297
|
+
##
|
|
298
|
+
# Returns the public IPv4 address
|
|
299
|
+
#
|
|
300
|
+
# @return [String]
|
|
301
|
+
#
|
|
302
|
+
# @example
|
|
303
|
+
# Faker::Internet.public_ip_v4_address #=> "127.120.80.42"
|
|
210
304
|
def public_ip_v4_address
|
|
211
305
|
addr = nil
|
|
212
306
|
loop do
|
|
@@ -216,6 +310,13 @@ module Faker
|
|
|
216
310
|
addr
|
|
217
311
|
end
|
|
218
312
|
|
|
313
|
+
##
|
|
314
|
+
# Returns the private network regular expressions
|
|
315
|
+
#
|
|
316
|
+
# @return [Array]
|
|
317
|
+
#
|
|
318
|
+
# @example
|
|
319
|
+
# Faker::Internet.private_nets_regex #=> [/^10\./, /^100\.(6[4-9]|[7-9]\d|1[0-1]\d|12[0-7])\./, /^127\./, /^169\.254\./, /^172\.(1[6-9]|2\d|3[0-1])\./, /^192\.0\.0\./, /^192\.168\./, /^198\.(1[8-9])\./]
|
|
219
320
|
def private_nets_regex
|
|
220
321
|
[
|
|
221
322
|
/^10\./, # 10.0.0.0 - 10.255.255.255
|
|
@@ -229,10 +330,25 @@ module Faker
|
|
|
229
330
|
]
|
|
230
331
|
end
|
|
231
332
|
|
|
333
|
+
##
|
|
334
|
+
# Returns lambda to check if address passed is private or not
|
|
335
|
+
#
|
|
336
|
+
# @return [Lambda]
|
|
337
|
+
#
|
|
338
|
+
# @example
|
|
339
|
+
# Faker::Internet.private_net_checker.call("127.120.80.42") #=> true
|
|
340
|
+
# Faker::Internet.private_net_checker.call("148.120.80.42") #=> false
|
|
232
341
|
def private_net_checker
|
|
233
342
|
->(addr) { private_nets_regex.any? { |net| net =~ addr } }
|
|
234
343
|
end
|
|
235
344
|
|
|
345
|
+
##
|
|
346
|
+
# Returns the reserved network regular expressions
|
|
347
|
+
#
|
|
348
|
+
# @return [Array]
|
|
349
|
+
#
|
|
350
|
+
# @example
|
|
351
|
+
# Faker::Internet.reserved_nets_regex #=> [/^0\./, /^192\.0\.2\./, /^192\.88\.99\./, /^198\.51\.100\./, /^203\.0\.113\./, /^(22[4-9]|23\d)\./, /^(24\d|25[0-5])\./]
|
|
236
352
|
def reserved_nets_regex
|
|
237
353
|
[
|
|
238
354
|
/^0\./, # 0.0.0.0 - 0.255.255.255
|
|
@@ -245,58 +361,143 @@ module Faker
|
|
|
245
361
|
]
|
|
246
362
|
end
|
|
247
363
|
|
|
364
|
+
##
|
|
365
|
+
# Returns lambda function to check address passed is reserved or not
|
|
366
|
+
#
|
|
367
|
+
# @return [Lambda]
|
|
368
|
+
#
|
|
369
|
+
# @example
|
|
370
|
+
# Faker::Internet.reserved_net_checker.call('192.88.99.255') #=> true
|
|
371
|
+
# Faker::Internet.reserved_net_checker.call('192.88.199.255') #=> false
|
|
248
372
|
def reserved_net_checker
|
|
249
373
|
->(addr) { (private_nets_regex + reserved_nets_regex).any? { |net| net =~ addr } }
|
|
250
374
|
end
|
|
251
375
|
|
|
376
|
+
##
|
|
377
|
+
# Returns Ipv4 address with CIDR, range from 1 to 31
|
|
378
|
+
#
|
|
379
|
+
# @return [String]
|
|
380
|
+
#
|
|
381
|
+
# @example
|
|
382
|
+
# Faker::Internet.ip_v4_cidr #=> "129.162.99.74/16"
|
|
383
|
+
# Faker::Internet.ip_v4_cidr #=> "129.162.99.74/24"
|
|
252
384
|
def ip_v4_cidr
|
|
253
385
|
"#{ip_v4_address}/#{rand(1..31)}"
|
|
254
386
|
end
|
|
255
387
|
|
|
388
|
+
##
|
|
389
|
+
# Returns Ipv6 address
|
|
390
|
+
#
|
|
391
|
+
# @return [String]
|
|
392
|
+
#
|
|
393
|
+
# @example
|
|
394
|
+
# Faker::Internet.ip_v6_address #=> "7754:76d4:c7aa:7646:ea68:1abb:4055:4343"
|
|
256
395
|
def ip_v6_address
|
|
257
396
|
(1..8).map { rand(65_536).to_s(16) }.join(':')
|
|
258
397
|
end
|
|
259
398
|
|
|
399
|
+
##
|
|
400
|
+
# Returns Ipv6 address with CIDR, range between 1 to 127
|
|
401
|
+
#
|
|
402
|
+
# @return [String]
|
|
403
|
+
#
|
|
404
|
+
# @example
|
|
405
|
+
# Faker::Internet.ip_v6_cidr #=> "beca:9b99:4bb6:9712:af2f:516f:8507:96e1/99"
|
|
260
406
|
def ip_v6_cidr
|
|
261
407
|
"#{ip_v6_address}/#{rand(1..127)}"
|
|
262
408
|
end
|
|
263
409
|
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
410
|
+
##
|
|
411
|
+
# Returns URL
|
|
412
|
+
#
|
|
413
|
+
# @return [String]
|
|
414
|
+
#
|
|
415
|
+
# @param host [String]
|
|
416
|
+
# @param path [String]
|
|
417
|
+
# @param scheme [String]
|
|
418
|
+
#
|
|
419
|
+
# @example
|
|
420
|
+
# Faker::Internet.url #=> "http://treutel.test/demarcus"
|
|
421
|
+
# Faker::Internet.url(host: 'faker') #=> "http://faker/shad"
|
|
422
|
+
# Faker::Internet.url(host: 'faker', path: '/docs') #=> "http://faker/docs"
|
|
423
|
+
# Faker::Internet.url(host: 'faker', path: '/docs', scheme: 'https') #=> "https://faker/docs"
|
|
424
|
+
def url(host: domain_name, path: "/#{username}", scheme: 'http')
|
|
273
425
|
"#{scheme}://#{host}#{path}"
|
|
274
426
|
end
|
|
275
427
|
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
428
|
+
##
|
|
429
|
+
# Returns unique string in URL
|
|
430
|
+
#
|
|
431
|
+
# @return [String]
|
|
432
|
+
#
|
|
433
|
+
# @param words [String] Comma or period separated words list
|
|
434
|
+
# @param glue [String] Separator to add between words passed, default used are '-' or '_'
|
|
435
|
+
#
|
|
436
|
+
# @example
|
|
437
|
+
# Faker::Internet.slug #=> "repudiandae-sed"
|
|
438
|
+
# Faker::Internet.slug(words: 'test, faker') #=> "test-faker"
|
|
439
|
+
# Faker::Internet.slug(words: 'test. faker') #=> "test-faker"
|
|
440
|
+
# Faker::Internet.slug(words: 'test. faker', glue: '$') #=> "test$faker"
|
|
441
|
+
def slug(words: nil, glue: nil)
|
|
282
442
|
glue ||= sample(%w[- _])
|
|
283
|
-
|
|
443
|
+
return words.delete(',.').gsub(' ', glue).downcase unless words.nil?
|
|
444
|
+
|
|
445
|
+
sample(translate('faker.internet.slug'), 2).join(glue)
|
|
284
446
|
end
|
|
285
447
|
|
|
448
|
+
##
|
|
449
|
+
# Generates random token
|
|
450
|
+
#
|
|
451
|
+
# @return[String]
|
|
452
|
+
#
|
|
453
|
+
# @example
|
|
454
|
+
# Faker::Internet.device_token #=> "749f535671cf6b34d8e794d212d00c703b96274e07161b18b082d0d70ef1052f"
|
|
286
455
|
def device_token
|
|
287
456
|
shuffle(rand(16**64).to_s(16).rjust(64, '0').chars.to_a).join
|
|
288
457
|
end
|
|
289
458
|
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
459
|
+
##
|
|
460
|
+
# Generates the random browser identifier
|
|
461
|
+
#
|
|
462
|
+
# @return [String]
|
|
463
|
+
#
|
|
464
|
+
# @param vendor [String] Name of vendor, supported vendors are aol, chrome, firefox, internet_explorer, netscape, opera, safari
|
|
465
|
+
#
|
|
466
|
+
# @example
|
|
467
|
+
# Faker::Internet.user_agent #=> "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36"
|
|
468
|
+
# Faker::Internet.user_agent(vendor: 'chrome') #=> "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36"
|
|
469
|
+
# Faker::Internet.user_agent(vendor: 'safari') #=> "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.75.14 (KHTML, like Gecko) Version/7.0.3 Safari/7046A194A"
|
|
470
|
+
# Faker::Internet.user_agent(vendor: 'faker') #=> "Mozilla/5.0 (Windows; U; Win 9x 4.90; SG; rv:1.9.2.4) Gecko/20101104 Netscape/9.1.0285"
|
|
471
|
+
def user_agent(vendor: nil)
|
|
295
472
|
agent_hash = translate('faker.internet.user_agent')
|
|
296
473
|
agents = vendor.respond_to?(:to_sym) && agent_hash[vendor.to_sym] || agent_hash[sample(agent_hash.keys)]
|
|
297
474
|
sample(agents)
|
|
298
475
|
end
|
|
299
476
|
|
|
477
|
+
##
|
|
478
|
+
# Generate Web Crawler's user agents
|
|
479
|
+
#
|
|
480
|
+
# @return [String]
|
|
481
|
+
#
|
|
482
|
+
# @param vendor [String] Name of vendor, supported vendors are googlebot, bingbot, duckduckbot, baiduspider, yandexbot
|
|
483
|
+
#
|
|
484
|
+
# @example
|
|
485
|
+
# Faker::Internet.bot_user_agent #=> "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)"
|
|
486
|
+
# Faker::Internet.bot_user_agent(vendor: 'googlebot') #=> "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Googlebot/2.1; +http://www.google.com/bot.html) Chrome/99.0.4844.84 Safari/537.36"
|
|
487
|
+
# Faker::Internet.bot_user_agent(vendor: 'bingbot') #=> "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm) Chrome/86.0.4240.68 Safari/537.36 Edg/86.0.622.31"
|
|
488
|
+
def bot_user_agent(vendor: nil)
|
|
489
|
+
agent_hash = translate('faker.internet.bot_user_agent')
|
|
490
|
+
agents = vendor.respond_to?(:to_sym) && agent_hash[vendor.to_sym] || agent_hash[sample(agent_hash.keys)]
|
|
491
|
+
sample(agents)
|
|
492
|
+
end
|
|
493
|
+
|
|
494
|
+
##
|
|
495
|
+
# Generated universally unique identifier
|
|
496
|
+
#
|
|
497
|
+
# @return [String]
|
|
498
|
+
#
|
|
499
|
+
# @example
|
|
500
|
+
# Faker::Internet.uuid #=> "8a6cdd40-6d78-4fdb-912b-190e3057197f"
|
|
300
501
|
def uuid
|
|
301
502
|
# borrowed from: https://github.com/ruby/ruby/blob/d48783bb0236db505fe1205d1d9822309de53a36/lib/securerandom.rb#L250
|
|
302
503
|
ary = Faker::Config.random.bytes(16).unpack('NnnnnN')
|
|
@@ -334,6 +535,24 @@ module Faker
|
|
|
334
535
|
s
|
|
335
536
|
end
|
|
336
537
|
|
|
538
|
+
##
|
|
539
|
+
# Produces a randomized hash of internet user details
|
|
540
|
+
# @example
|
|
541
|
+
# Faker::Internet.user #=> { username: 'alexie', email: 'trudie@grant.test' }
|
|
542
|
+
#
|
|
543
|
+
# @example
|
|
544
|
+
# Faker::Internet.user('username', 'email', 'password') #=> { username: 'alexie', email: 'gayle@kohler.test', password: 'DtEf9P8wS31iMyC' }
|
|
545
|
+
#
|
|
546
|
+
# @return [hash]
|
|
547
|
+
#
|
|
548
|
+
# @faker.version next
|
|
549
|
+
def user(*args)
|
|
550
|
+
user_hash = {}
|
|
551
|
+
args = %w[username email] if args.empty?
|
|
552
|
+
args.each { |arg| user_hash[:"#{arg}"] = send(arg) }
|
|
553
|
+
user_hash
|
|
554
|
+
end
|
|
555
|
+
|
|
337
556
|
alias user_name username
|
|
338
557
|
|
|
339
558
|
private
|
|
@@ -343,10 +562,10 @@ module Faker
|
|
|
343
562
|
Array('0'..'9'),
|
|
344
563
|
Array('A'..'Z'),
|
|
345
564
|
Array('a'..'z'),
|
|
346
|
-
"!#$%&'*+-/=?^_`{|}~.".
|
|
565
|
+
"!#$%&'*+-/=?^_`{|}~.".chars
|
|
347
566
|
].flatten
|
|
348
567
|
|
|
349
|
-
local_part.
|
|
568
|
+
local_part.chars.map do |char|
|
|
350
569
|
char_range.include?(char) ? char : '#'
|
|
351
570
|
end.join
|
|
352
571
|
end
|
|
@@ -17,12 +17,7 @@ module Faker
|
|
|
17
17
|
# Faker::Finance.amount_between(0, 10) #=> 4.33
|
|
18
18
|
#
|
|
19
19
|
# @faker.version 1.9.0
|
|
20
|
-
def amount_between(
|
|
21
|
-
warn_for_deprecated_arguments do |keywords|
|
|
22
|
-
keywords << :from if legacy_from != NOT_GIVEN
|
|
23
|
-
keywords << :to if legacy_to != NOT_GIVEN
|
|
24
|
-
end
|
|
25
|
-
|
|
20
|
+
def amount_between(from: 0, to: 0)
|
|
26
21
|
Faker::Base.rand_in_range(from, to).round(2)
|
|
27
22
|
end
|
|
28
23
|
|
|
@@ -36,11 +31,7 @@ module Faker
|
|
|
36
31
|
# Faker::Invoice.creditor_reference #=> "RF34118592570724925498"
|
|
37
32
|
#
|
|
38
33
|
# @faker.version 1.9.0
|
|
39
|
-
def creditor_reference(
|
|
40
|
-
warn_for_deprecated_arguments do |keywords|
|
|
41
|
-
keywords << :ref if legacy_ref != NOT_GIVEN
|
|
42
|
-
end
|
|
43
|
-
|
|
34
|
+
def creditor_reference(ref: '')
|
|
44
35
|
ref = reference if ref.empty?
|
|
45
36
|
|
|
46
37
|
"RF#{iban_checksum('RF', ref)}#{ref}"
|
|
@@ -56,11 +47,7 @@ module Faker
|
|
|
56
47
|
# Faker::Invoice.reference #=> "45656646957845"
|
|
57
48
|
#
|
|
58
49
|
# @faker.version 1.9.0
|
|
59
|
-
def reference(
|
|
60
|
-
warn_for_deprecated_arguments do |keywords|
|
|
61
|
-
keywords << :ref if legacy_ref != NOT_GIVEN
|
|
62
|
-
end
|
|
63
|
-
|
|
50
|
+
def reference(ref: '')
|
|
64
51
|
pattern = fetch('invoice.reference.pattern')
|
|
65
52
|
|
|
66
53
|
ref = Base.regexify(/#{pattern}/) if ref.empty?
|
|
@@ -115,7 +102,7 @@ module Faker
|
|
|
115
102
|
mod10_remainder(weighted_sum)
|
|
116
103
|
end
|
|
117
104
|
|
|
118
|
-
# Calculates
|
|
105
|
+
# Calculates weighted sum
|
|
119
106
|
#
|
|
120
107
|
# For example with 12345678, [1,2]
|
|
121
108
|
# Ref.num. 1 2 3 4 5 6 7 8
|