faker 1.9.3 → 2.1.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 +279 -3
- data/README.md +26 -11
- data/bin/faker +5 -0
- data/lib/faker/blockchain/tezos.rb +10 -5
- data/lib/faker/books/dune.rb +2 -2
- data/lib/faker/books/lovecraft.rb +18 -18
- data/lib/faker/creature/animal.rb +1 -1
- data/lib/faker/creature/cat.rb +1 -1
- data/lib/faker/creature/dog.rb +1 -1
- data/lib/faker/creature/horse.rb +19 -0
- data/lib/faker/default/address.rb +3 -3
- data/lib/faker/default/alphanumeric.rb +4 -4
- data/lib/faker/default/avatar.rb +1 -1
- data/lib/faker/default/bank.rb +2 -2
- data/lib/faker/default/boolean.rb +1 -1
- data/lib/faker/default/cannabis.rb +4 -0
- data/lib/faker/default/chile_rut.rb +3 -3
- data/lib/faker/default/code.rb +5 -5
- data/lib/faker/default/coffee.rb +2 -0
- data/lib/faker/default/commerce.rb +4 -4
- data/lib/faker/default/company.rb +6 -2
- data/lib/faker/default/crypto_coin.rb +9 -4
- data/lib/faker/default/date.rb +9 -9
- data/lib/faker/default/demographic.rb +1 -1
- data/lib/faker/default/device.rb +2 -2
- data/lib/faker/default/driving_licence.rb +2 -2
- data/lib/faker/default/educator.rb +0 -3
- data/lib/faker/default/file.rb +11 -2
- data/lib/faker/default/fillmurray.rb +2 -2
- data/lib/faker/default/finance.rb +1 -1
- data/lib/faker/default/hipster.rb +16 -16
- data/lib/faker/default/id_number.rb +47 -10
- data/lib/faker/default/internet.rb +35 -22
- data/lib/faker/default/invoice.rb +3 -3
- data/lib/faker/default/json.rb +6 -6
- data/lib/faker/default/lorem.rb +20 -20
- data/lib/faker/default/lorem_flickr.rb +4 -4
- data/lib/faker/default/lorem_pixel.rb +1 -1
- data/lib/faker/default/markdown.rb +7 -7
- data/lib/faker/default/measurement.rb +8 -8
- data/lib/faker/default/name.rb +2 -4
- data/lib/faker/default/nhs.rb +7 -7
- data/lib/faker/default/number.rb +35 -27
- data/lib/faker/default/omniauth.rb +11 -11
- data/lib/faker/default/phone_number.rb +1 -1
- data/lib/faker/default/placeholdit.rb +1 -1
- data/lib/faker/default/relationship.rb +1 -1
- data/lib/faker/default/source.rb +2 -2
- data/lib/faker/default/south_africa.rb +1 -1
- data/lib/faker/default/space.rb +2 -2
- data/lib/faker/default/string.rb +1 -1
- data/lib/faker/default/stripe.rb +4 -4
- data/lib/faker/default/time.rb +23 -8
- data/lib/faker/default/twitter.rb +30 -30
- data/lib/faker/default/types.rb +7 -7
- data/lib/faker/default/vehicle.rb +5 -5
- data/lib/faker/default/world_cup.rb +2 -2
- data/lib/faker/games/dota.rb +1 -1
- data/lib/faker/games/elder_scrolls.rb +1 -1
- data/lib/faker/games/fallout.rb +1 -1
- data/lib/faker/games/game.rb +21 -0
- data/lib/faker/games/half_life.rb +1 -1
- data/lib/faker/games/heroes.rb +1 -1
- data/lib/faker/games/heroes_of_the_storm.rb +1 -1
- data/lib/faker/games/league_of_legends.rb +1 -1
- data/lib/faker/games/myst.rb +1 -1
- data/lib/faker/games/overwatch.rb +1 -1
- data/lib/faker/games/pokemon.rb +1 -1
- data/lib/faker/games/sonic_the_hedgehog.rb +1 -1
- data/lib/faker/games/super_smash_bros.rb +1 -1
- data/lib/faker/games/witcher.rb +1 -1
- data/lib/faker/games/world_of_warcraft.rb +1 -1
- data/lib/faker/games/zelda.rb +1 -1
- data/lib/faker/japanese_media/dragon_ball.rb +1 -1
- data/lib/faker/japanese_media/one_piece.rb +1 -1
- data/lib/faker/japanese_media/sword_art_online.rb +1 -1
- data/lib/faker/movies/back_to_the_future.rb +1 -1
- data/lib/faker/movies/ghostbusters.rb +1 -1
- data/lib/faker/movies/harry_potter.rb +1 -1
- data/lib/faker/movies/hitchhikers_guide_to_the_galaxy.rb +1 -1
- data/lib/faker/movies/hobbit.rb +1 -1
- data/lib/faker/movies/lebowski.rb +1 -1
- data/lib/faker/movies/lord_of_the_rings.rb +1 -1
- data/lib/faker/movies/princess_bride.rb +1 -1
- data/lib/faker/movies/star_wars.rb +2 -2
- data/lib/faker/movies/v_for_vendetta.rb +1 -1
- data/lib/faker/{movies → music}/grateful_dead.rb +3 -1
- data/lib/faker/music/opera.rb +26 -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 +1 -1
- data/lib/faker/tv_shows/bojack_horseman.rb +1 -1
- data/lib/faker/tv_shows/breaking_bad.rb +1 -1
- data/lib/faker/tv_shows/buffy.rb +1 -1
- data/lib/faker/tv_shows/community.rb +1 -1
- data/lib/faker/tv_shows/dr_who.rb +1 -1
- data/lib/faker/tv_shows/dumb_and_dumber.rb +1 -1
- data/lib/faker/tv_shows/family_guy.rb +1 -1
- data/lib/faker/tv_shows/friends.rb +1 -1
- data/lib/faker/tv_shows/game_of_thrones.rb +1 -1
- data/lib/faker/tv_shows/hey_arnold.rb +1 -1
- data/lib/faker/tv_shows/how_i_met_your_mother.rb +1 -1
- data/lib/faker/tv_shows/michael_scott.rb +1 -1
- data/lib/faker/tv_shows/new_girl.rb +1 -1
- data/lib/faker/tv_shows/parks_and_rec.rb +1 -1
- data/lib/faker/tv_shows/rick_and_morty.rb +1 -1
- data/lib/faker/tv_shows/ru_paul.rb +1 -1
- data/lib/faker/tv_shows/seinfeld.rb +1 -1
- data/lib/faker/tv_shows/silicon_valley.rb +1 -1
- data/lib/faker/tv_shows/simpsons.rb +1 -1
- data/lib/faker/tv_shows/south_park.rb +1 -1
- data/lib/faker/tv_shows/star_trek.rb +1 -1
- data/lib/faker/tv_shows/stargate.rb +1 -1
- data/lib/faker/tv_shows/stranger_things.rb +1 -1
- data/lib/faker/tv_shows/the_expanse.rb +1 -1
- data/lib/faker/tv_shows/the_fresh_prince_of_bel_air.rb +1 -1
- data/lib/faker/tv_shows/the_it_crowd.rb +1 -1
- data/lib/faker/tv_shows/the_thick_of_it.rb +1 -1
- data/lib/faker/tv_shows/twin_peaks.rb +1 -1
- data/lib/faker/tv_shows/venture_bros.rb +1 -1
- data/lib/faker/version.rb +1 -1
- data/lib/locales/en-AU.yml +1 -1
- data/lib/locales/en-IND.yml +1 -1
- data/lib/locales/en.yml +4 -1
- data/lib/locales/en/address.yml +1 -4
- data/lib/locales/en/animal.yml +2 -2
- data/lib/locales/en/basketball.yml +99 -0
- data/lib/locales/en/cannabis.yml +1 -0
- data/lib/locales/en/company.yml +1 -0
- data/lib/locales/en/crypto_coin.yml +22 -6
- data/lib/locales/en/dc_comics.yml +5 -5
- data/lib/locales/en/dota.yml +3 -1
- data/lib/locales/en/food.yml +1 -1
- data/lib/locales/en/game.yml +283 -0
- data/lib/locales/en/grateful_dead.yml +2 -1
- data/lib/locales/en/heroes_of_the_storm.yml +2 -2
- data/lib/locales/en/horse.yml +6 -0
- data/lib/locales/en/kpop.yml +1 -1
- data/lib/locales/en/league_of_legends.yml +2 -2
- data/lib/locales/en/music.yml +1 -1
- data/lib/locales/en/nation.yml +1 -1
- data/lib/locales/en/opera.yml +172 -0
- data/lib/locales/en/phish.yml +1 -1
- data/lib/locales/en/rupaul.yml +51 -21
- data/lib/locales/en/space.yml +2 -2
- data/lib/locales/en/stargate.yml +1 -2
- data/lib/locales/en/subscription.yml +1 -1
- data/lib/locales/en/super_smash_bros.yml +8 -0
- data/lib/locales/en/verbs.yml +2 -2
- data/lib/locales/fr-CA.yml +0 -5
- data/lib/locales/fr-CH.yml +0 -1
- data/lib/locales/fr.yml +1 -1
- data/lib/locales/hy.yml +47 -2
- data/lib/locales/ja.yml +16 -0
- data/lib/locales/pt-BR.yml +4 -1
- data/lib/locales/vi.yml +1 -1
- data/lib/locales/zh-CN.yml +3 -6
- data/lib/locales/zh-TW.yml +2 -2
- metadata +62 -110
- data/lib/faker/default/creature.rb +0 -6
- data/lib/faker/default/football.rb +0 -27
- data/lib/faker/default/games.rb +0 -6
- data/lib/faker/default/japanese_media.rb +0 -6
- data/lib/faker/default/movies.rb +0 -6
- data/lib/faker/default/tv_shows.rb +0 -6
- data/lib/faker/deprecate/aqua_teen_hunger_force.rb +0 -15
- data/lib/faker/deprecate/back_to_the_future.rb +0 -25
- data/lib/faker/deprecate/bitcoin.rb +0 -20
- data/lib/faker/deprecate/bojack_horseman.rb +0 -25
- data/lib/faker/deprecate/breaking_bad.rb +0 -20
- data/lib/faker/deprecate/buffy.rb +0 -35
- data/lib/faker/deprecate/cat.rb +0 -25
- data/lib/faker/deprecate/community.rb +0 -20
- data/lib/faker/deprecate/dog.rb +0 -50
- data/lib/faker/deprecate/dota.rb +0 -35
- data/lib/faker/deprecate/dr_who.rb +0 -45
- data/lib/faker/deprecate/dragon_ball.rb +0 -15
- data/lib/faker/deprecate/dumb_and_dumber.rb +0 -25
- data/lib/faker/deprecate/dune.rb +0 -35
- data/lib/faker/deprecate/elder_scrolls.rb +0 -50
- data/lib/faker/deprecate/ethereum.rb +0 -15
- data/lib/faker/deprecate/fallout.rb +0 -30
- data/lib/faker/deprecate/family_guy.rb +0 -25
- data/lib/faker/deprecate/famous_last_words.rb +0 -15
- data/lib/faker/deprecate/friends.rb +0 -25
- data/lib/faker/deprecate/game_of_thrones.rb +0 -35
- data/lib/faker/deprecate/harry_potter.rb +0 -40
- data/lib/faker/deprecate/heroes_of_the_storm.rb +0 -30
- data/lib/faker/deprecate/hey_arnold.rb +0 -25
- data/lib/faker/deprecate/hitchhikers_guide_to_the_galaxy.rb +0 -44
- data/lib/faker/deprecate/hobbit.rb +0 -30
- data/lib/faker/deprecate/how_i_met_your_mother.rb +0 -30
- data/lib/faker/deprecate/league_of_legends.rb +0 -40
- data/lib/faker/deprecate/lebowski.rb +0 -25
- data/lib/faker/deprecate/lord_of_the_rings.rb +0 -25
- data/lib/faker/deprecate/lovecraft.rb +0 -65
- data/lib/faker/deprecate/matz.rb +0 -15
- data/lib/faker/deprecate/michael_scott.rb +0 -15
- data/lib/faker/deprecate/most_interesting_man_in_the_world.rb +0 -15
- data/lib/faker/deprecate/myst.rb +0 -35
- data/lib/faker/deprecate/new_girl.rb +0 -20
- data/lib/faker/deprecate/one_piece.rb +0 -40
- data/lib/faker/deprecate/overwatch.rb +0 -25
- data/lib/faker/deprecate/parks_and_rec.rb +0 -20
- data/lib/faker/deprecate/pokemon.rb +0 -25
- data/lib/faker/deprecate/princess_bride.rb +0 -20
- data/lib/faker/deprecate/rick_and_morty.rb +0 -25
- data/lib/faker/deprecate/robin.rb +0 -15
- data/lib/faker/deprecate/rock_band.rb +0 -15
- data/lib/faker/deprecate/ru_paul.rb +0 -20
- data/lib/faker/deprecate/seinfeld.rb +0 -25
- data/lib/faker/deprecate/shakespeare.rb +0 -50
- data/lib/faker/deprecate/silicon_valley.rb +0 -50
- data/lib/faker/deprecate/simpsons.rb +0 -25
- data/lib/faker/deprecate/singular_siegler.rb +0 -15
- data/lib/faker/deprecate/south_park.rb +0 -20
- data/lib/faker/deprecate/star_trek.rb +0 -30
- data/lib/faker/deprecate/star_wars.rb +0 -95
- data/lib/faker/deprecate/stargate.rb +0 -25
- data/lib/faker/deprecate/stranger_things.rb +0 -20
- data/lib/faker/deprecate/sword_art_online.rb +0 -30
- data/lib/faker/deprecate/tezos.rb +0 -33
- data/lib/faker/deprecate/the_fresh_prince_of_bel_air.rb +0 -25
- data/lib/faker/deprecate/the_it_crowd.rb +0 -30
- data/lib/faker/deprecate/the_thick_of_it.rb +0 -25
- data/lib/faker/deprecate/twin_peaks.rb +0 -25
- data/lib/faker/deprecate/umphreys_mcgee.rb +0 -15
- data/lib/faker/deprecate/v_for_vendetta.rb +0 -25
- data/lib/faker/deprecate/venture_bros.rb +0 -30
- data/lib/faker/deprecate/witcher.rb +0 -40
- data/lib/faker/deprecate/world_of_warcraft.rb +0 -20
- data/lib/faker/deprecate/yoda.rb +0 -16
- data/lib/faker/deprecate/zelda.rb +0 -30
data/lib/faker/default/device.rb
CHANGED
|
@@ -4,7 +4,7 @@ module Faker
|
|
|
4
4
|
class Device < Base
|
|
5
5
|
class << self
|
|
6
6
|
def build_number
|
|
7
|
-
Faker::Number.between(1, 500)
|
|
7
|
+
Faker::Number.between(from: 1, to: 500)
|
|
8
8
|
end
|
|
9
9
|
|
|
10
10
|
def manufacturer
|
|
@@ -24,7 +24,7 @@ module Faker
|
|
|
24
24
|
end
|
|
25
25
|
|
|
26
26
|
def version
|
|
27
|
-
Faker::Number.between(1, 1000)
|
|
27
|
+
Faker::Number.between(from: 1, to: 1000)
|
|
28
28
|
end
|
|
29
29
|
end
|
|
30
30
|
end
|
|
@@ -9,7 +9,7 @@ module Faker
|
|
|
9
9
|
def british_driving_licence(last_name: Faker::Name.last_name,
|
|
10
10
|
initials: Faker::Name.initials,
|
|
11
11
|
gender: random_gender,
|
|
12
|
-
date_of_birth: Faker::Date.birthday(18, 65))
|
|
12
|
+
date_of_birth: Faker::Date.birthday(min_age: 18, max_age: 65))
|
|
13
13
|
[
|
|
14
14
|
gb_licence_padding(last_name, 5),
|
|
15
15
|
gb_licence_year(date_of_birth, gender),
|
|
@@ -19,7 +19,7 @@ module Faker
|
|
|
19
19
|
end
|
|
20
20
|
|
|
21
21
|
def northern_irish_driving_licence
|
|
22
|
-
Faker::Number.number(8)
|
|
22
|
+
Faker::Number.number(digits: 8).to_s
|
|
23
23
|
end
|
|
24
24
|
|
|
25
25
|
def uk_driving_licence(*args)
|
|
@@ -5,8 +5,6 @@ module Faker
|
|
|
5
5
|
flexible :educator
|
|
6
6
|
|
|
7
7
|
class << self
|
|
8
|
-
extend Gem::Deprecate
|
|
9
|
-
|
|
10
8
|
def university
|
|
11
9
|
"#{parse('educator.name')} #{fetch('educator.tertiary.type')}"
|
|
12
10
|
end
|
|
@@ -16,7 +14,6 @@ module Faker
|
|
|
16
14
|
end
|
|
17
15
|
|
|
18
16
|
alias course degree
|
|
19
|
-
deprecate :course, :course_name, 2018, 10
|
|
20
17
|
|
|
21
18
|
def subject
|
|
22
19
|
fetch('educator.tertiary.degree.subject')
|
data/lib/faker/default/file.rb
CHANGED
|
@@ -3,6 +3,15 @@
|
|
|
3
3
|
module Faker
|
|
4
4
|
class File < Base
|
|
5
5
|
class << self
|
|
6
|
+
def dir(segment_count: 3, root: nil, directory_separator: '/')
|
|
7
|
+
Array
|
|
8
|
+
.new(segment_count) { Faker::Internet.slug }
|
|
9
|
+
.unshift(root)
|
|
10
|
+
.compact
|
|
11
|
+
.join(directory_separator)
|
|
12
|
+
.squeeze(directory_separator)
|
|
13
|
+
end
|
|
14
|
+
|
|
6
15
|
def extension
|
|
7
16
|
fetch('file.extension')
|
|
8
17
|
end
|
|
@@ -11,8 +20,8 @@ module Faker
|
|
|
11
20
|
fetch('file.mime_type')
|
|
12
21
|
end
|
|
13
22
|
|
|
14
|
-
def file_name(dir
|
|
15
|
-
dir ||=
|
|
23
|
+
def file_name(dir: nil, name: nil, ext: nil, directory_separator: '/')
|
|
24
|
+
dir ||= dir(segment_count: 1)
|
|
16
25
|
name ||= Faker::Lorem.word.downcase
|
|
17
26
|
ext ||= extension
|
|
18
27
|
|
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
module Faker
|
|
4
4
|
class Fillmurray < Base
|
|
5
5
|
class << self
|
|
6
|
-
def image(grayscale
|
|
6
|
+
def image(grayscale: false, width: 200, height: 200)
|
|
7
7
|
raise ArgumentError, 'Width should be a number' unless width.to_s =~ /^\d+$/
|
|
8
8
|
raise ArgumentError, 'Height should be a number' unless height.to_s =~ /^\d+$/
|
|
9
9
|
raise ArgumentError, 'Grayscale should be a boolean' unless [true, false].include?(grayscale)
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
"https://www.fillmurray.com#{'/g' if grayscale == true}/#{width}/#{height}"
|
|
12
12
|
end
|
|
13
13
|
end
|
|
14
14
|
end
|
|
@@ -26,7 +26,7 @@ module Faker
|
|
|
26
26
|
template.gsub('L', luhn_digit.to_s)
|
|
27
27
|
end
|
|
28
28
|
|
|
29
|
-
def vat_number(country
|
|
29
|
+
def vat_number(country: 'BR')
|
|
30
30
|
numerify(fetch("finance.vat_number.#{country}"))
|
|
31
31
|
rescue I18n::MissingTranslationData
|
|
32
32
|
raise ArgumentError, "Could not find vat number for #{country}"
|
|
@@ -8,8 +8,8 @@ module Faker
|
|
|
8
8
|
random_word =~ /\s/ ? word : random_word
|
|
9
9
|
end
|
|
10
10
|
|
|
11
|
-
def words(
|
|
12
|
-
resolved_num = resolve(
|
|
11
|
+
def words(number: 3, supplemental: false, spaces_allowed: false)
|
|
12
|
+
resolved_num = resolve(number)
|
|
13
13
|
word_list = (
|
|
14
14
|
translate('faker.hipster.words') +
|
|
15
15
|
(supplemental ? translate('faker.lorem.words') : [])
|
|
@@ -22,36 +22,36 @@ module Faker
|
|
|
22
22
|
words.each_with_index { |w, i| words[i] = word if w =~ /\s/ }
|
|
23
23
|
end
|
|
24
24
|
|
|
25
|
-
def sentence(word_count
|
|
26
|
-
words(word_count + rand(random_words_to_add.to_i).to_i, supplemental, true).join(' ').capitalize + '.'
|
|
25
|
+
def sentence(word_count: 4, supplemental: false, random_words_to_add: 6)
|
|
26
|
+
words(number: word_count + rand(random_words_to_add.to_i).to_i, supplemental: supplemental, spaces_allowed: true).join(' ').capitalize + '.'
|
|
27
27
|
end
|
|
28
28
|
|
|
29
|
-
def sentences(
|
|
29
|
+
def sentences(number: 3, supplemental: false)
|
|
30
30
|
[].tap do |sentences|
|
|
31
|
-
1.upto(resolve(
|
|
32
|
-
sentences << sentence(3, supplemental)
|
|
31
|
+
1.upto(resolve(number)) do
|
|
32
|
+
sentences << sentence(word_count: 3, supplemental: supplemental)
|
|
33
33
|
end
|
|
34
34
|
end
|
|
35
35
|
end
|
|
36
36
|
|
|
37
|
-
def paragraph(sentence_count
|
|
38
|
-
sentences(resolve(sentence_count) + rand(random_sentences_to_add.to_i).to_i, supplemental).join(' ')
|
|
37
|
+
def paragraph(sentence_count: 3, supplemental: false, random_sentences_to_add: 3)
|
|
38
|
+
sentences(number: resolve(sentence_count) + rand(random_sentences_to_add.to_i).to_i, supplemental: supplemental).join(' ')
|
|
39
39
|
end
|
|
40
40
|
|
|
41
|
-
def paragraphs(
|
|
41
|
+
def paragraphs(number: 3, supplemental: false)
|
|
42
42
|
[].tap do |paragraphs|
|
|
43
|
-
1.upto(resolve(
|
|
44
|
-
paragraphs << paragraph(3, supplemental)
|
|
43
|
+
1.upto(resolve(number)) do
|
|
44
|
+
paragraphs << paragraph(sentence_count: 3, supplemental: supplemental)
|
|
45
45
|
end
|
|
46
46
|
end
|
|
47
47
|
end
|
|
48
48
|
|
|
49
|
-
def paragraph_by_chars(
|
|
50
|
-
paragraph = paragraph(3, supplemental)
|
|
49
|
+
def paragraph_by_chars(characters: 256, supplemental: false)
|
|
50
|
+
paragraph = paragraph(sentence_count: 3, supplemental: supplemental)
|
|
51
51
|
|
|
52
|
-
paragraph += ' ' + paragraph(3, supplemental) while paragraph.length <
|
|
52
|
+
paragraph += ' ' + paragraph(sentence_count: 3, supplemental: supplemental) while paragraph.length < characters
|
|
53
53
|
|
|
54
|
-
paragraph[0...
|
|
54
|
+
paragraph[0...characters - 1] + '.'
|
|
55
55
|
end
|
|
56
56
|
end
|
|
57
57
|
end
|
|
@@ -12,6 +12,9 @@ module Faker
|
|
|
12
12
|
].freeze
|
|
13
13
|
ZA_RACE_DIGIT = '8'
|
|
14
14
|
ZA_CITIZENSHIP_DIGITS = %w[0 1].freeze
|
|
15
|
+
BRAZILIAN_ID_FORMAT = /(\d{1,2})(\d{3})(\d{3})([\dX])/
|
|
16
|
+
BRAZILIAN_ID_FROM = 10_000_000
|
|
17
|
+
BRAZILIAN_ID_TO = 99_999_999
|
|
15
18
|
|
|
16
19
|
class << self
|
|
17
20
|
def valid
|
|
@@ -29,7 +32,7 @@ module Faker
|
|
|
29
32
|
end
|
|
30
33
|
|
|
31
34
|
def spanish_citizen_number
|
|
32
|
-
num = Faker::Number.number(8)
|
|
35
|
+
num = Faker::Number.number(digits: 8)
|
|
33
36
|
mod = num.to_i % 23
|
|
34
37
|
check = CHECKS[mod]
|
|
35
38
|
"#{num}-#{check}"
|
|
@@ -37,7 +40,7 @@ module Faker
|
|
|
37
40
|
|
|
38
41
|
def spanish_foreign_citizen_number
|
|
39
42
|
code = 'XYZ'
|
|
40
|
-
digits = Faker::Number.number(7)
|
|
43
|
+
digits = Faker::Number.number(digits: 7)
|
|
41
44
|
prefix = code[rand(code.length)]
|
|
42
45
|
prefix_val = 'XYZ'.index(prefix).to_s
|
|
43
46
|
mod = "#{prefix_val}#{digits}".to_i % 23
|
|
@@ -48,7 +51,7 @@ module Faker
|
|
|
48
51
|
def valid_south_african_id_number
|
|
49
52
|
id_number = [
|
|
50
53
|
Faker::Date.birthday.strftime('%y%m%d'),
|
|
51
|
-
Faker::Number.number(4),
|
|
54
|
+
Faker::Number.number(digits: 4),
|
|
52
55
|
ZA_CITIZENSHIP_DIGITS.sample(random: Faker::Config.random),
|
|
53
56
|
ZA_RACE_DIGIT
|
|
54
57
|
].join
|
|
@@ -60,14 +63,14 @@ module Faker
|
|
|
60
63
|
|
|
61
64
|
def invalid_south_african_id_number
|
|
62
65
|
invalid_date_of_birth = [
|
|
63
|
-
Faker::Number.number(2),
|
|
64
|
-
Faker::Number.between(13, 99),
|
|
65
|
-
Faker::Number.between(32, 99)
|
|
66
|
+
Faker::Number.number(digits: 2),
|
|
67
|
+
Faker::Number.between(from: 13, to: 99),
|
|
68
|
+
Faker::Number.between(from: 32, to: 99)
|
|
66
69
|
].map(&:to_s).join
|
|
67
70
|
|
|
68
71
|
id_number = [
|
|
69
72
|
invalid_date_of_birth,
|
|
70
|
-
Faker::Number.number(4),
|
|
73
|
+
Faker::Number.number(digits: 4),
|
|
71
74
|
ZA_CITIZENSHIP_DIGITS.sample(random: Faker::Config.random),
|
|
72
75
|
ZA_RACE_DIGIT
|
|
73
76
|
].join
|
|
@@ -76,13 +79,24 @@ module Faker
|
|
|
76
79
|
end
|
|
77
80
|
|
|
78
81
|
def brazilian_citizen_number(formatted: false)
|
|
79
|
-
digits = Faker::Number.leading_zero_number(9) until digits&.match(/(\d)((?!\1)\d)+/)
|
|
82
|
+
digits = Faker::Number.leading_zero_number(digits: 9) until digits&.match(/(\d)((?!\1)\d)+/)
|
|
80
83
|
first_digit = brazilian_citizen_number_checksum_digit(digits)
|
|
81
84
|
second_digit = brazilian_citizen_number_checksum_digit(digits + first_digit)
|
|
82
85
|
number = [digits, first_digit, second_digit].join
|
|
83
86
|
formatted ? format('%s.%s.%s-%s', *number.scan(/\d{2,3}/).flatten) : number
|
|
84
87
|
end
|
|
85
88
|
|
|
89
|
+
alias brazilian_cpf brazilian_citizen_number
|
|
90
|
+
|
|
91
|
+
def brazilian_id(formatted: false)
|
|
92
|
+
digits = Faker::Number.between(to: BRAZILIAN_ID_FROM, from: BRAZILIAN_ID_TO).to_s
|
|
93
|
+
check_digit = brazilian_id_checksum_digit(digits)
|
|
94
|
+
number = [digits, check_digit].join
|
|
95
|
+
formatted ? format('%s.%s.%s-%s', *number.scan(BRAZILIAN_ID_FORMAT).flatten) : number
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
alias brazilian_rg brazilian_id
|
|
99
|
+
|
|
86
100
|
private
|
|
87
101
|
|
|
88
102
|
def south_african_id_checksum_digit(id_number)
|
|
@@ -104,13 +118,36 @@ module Faker
|
|
|
104
118
|
end
|
|
105
119
|
|
|
106
120
|
def brazilian_citizen_number_checksum_digit(digits)
|
|
107
|
-
|
|
121
|
+
checksum = brazilian_document_checksum(digits)
|
|
122
|
+
brazilian_document_digit(checksum)
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
def brazilian_id_checksum_digit(digits)
|
|
126
|
+
checksum = brazilian_document_checksum(digits)
|
|
127
|
+
brazilian_document_digit(checksum, id: true)
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
def brazilian_document_checksum(digits)
|
|
131
|
+
digits.chars.each_with_index.inject(0) do |acc, (digit, i)|
|
|
108
132
|
acc + digit.to_i * (digits.size + 1 - i)
|
|
109
133
|
end * 10
|
|
110
|
-
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
def brazilian_document_digit(checksum, id = false)
|
|
137
|
+
remainder = checksum % 11
|
|
138
|
+
id ? brazilian_id_digit(remainder) : brazilian_citizen_number_digit(remainder)
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
def brazilian_citizen_number_digit(remainder)
|
|
111
142
|
remainder == 10 ? '0' : remainder.to_s
|
|
112
143
|
end
|
|
113
144
|
|
|
145
|
+
def brazilian_id_digit(remainder)
|
|
146
|
+
subtraction = 11 - remainder.to_i
|
|
147
|
+
digits = { 10 => 'X', 11 => '0' }
|
|
148
|
+
digits.include?(subtraction) ? digits[subtraction] : subtraction.to_s
|
|
149
|
+
end
|
|
150
|
+
|
|
114
151
|
def _translate(key)
|
|
115
152
|
parse("id_number.#{key}")
|
|
116
153
|
end
|
|
@@ -3,23 +3,23 @@
|
|
|
3
3
|
module Faker
|
|
4
4
|
class Internet < Base
|
|
5
5
|
class << self
|
|
6
|
-
def email(name
|
|
6
|
+
def email(name: nil, separators: nil)
|
|
7
7
|
if separators
|
|
8
|
-
[username(name, separators), domain_name].join('@')
|
|
8
|
+
[username(specifier: name, separators: separators), domain_name].join('@')
|
|
9
9
|
else
|
|
10
|
-
[username(name), domain_name].join('@')
|
|
10
|
+
[username(specifier: name), domain_name].join('@')
|
|
11
11
|
end
|
|
12
12
|
end
|
|
13
13
|
|
|
14
|
-
def free_email(name
|
|
15
|
-
[username(name), fetch('internet.free_email')].join('@')
|
|
14
|
+
def free_email(name: nil)
|
|
15
|
+
[username(specifier: name), fetch('internet.free_email')].join('@')
|
|
16
16
|
end
|
|
17
17
|
|
|
18
|
-
def safe_email(name
|
|
19
|
-
[username(name), 'example.' + sample(%w[org com net])].join('@')
|
|
18
|
+
def safe_email(name: nil)
|
|
19
|
+
[username(specifier: name), 'example.' + sample(%w[org com net])].join('@')
|
|
20
20
|
end
|
|
21
21
|
|
|
22
|
-
def username(specifier
|
|
22
|
+
def username(specifier: nil, separators: %w[. _])
|
|
23
23
|
with_locale(:en) do
|
|
24
24
|
return shuffle(specifier.scan(/[[:word:]]+/)).join(sample(separators)).downcase if specifier.respond_to?(:scan)
|
|
25
25
|
|
|
@@ -30,7 +30,7 @@ module Faker
|
|
|
30
30
|
tries = 0 # Don't try forever in case we get something like 1_000_000.
|
|
31
31
|
result = nil
|
|
32
32
|
loop do
|
|
33
|
-
result = username(nil, separators)
|
|
33
|
+
result = username(specifier: nil, separators: separators)
|
|
34
34
|
tries += 1
|
|
35
35
|
break unless result.length < specifier && tries < 7
|
|
36
36
|
end
|
|
@@ -39,7 +39,7 @@ module Faker
|
|
|
39
39
|
tries = 0
|
|
40
40
|
result = nil
|
|
41
41
|
loop do
|
|
42
|
-
result = username(specifier.min, separators)
|
|
42
|
+
result = username(specifier: specifier.min, separators: separators)
|
|
43
43
|
tries += 1
|
|
44
44
|
break unless !specifier.include?(result.length) && tries < 7
|
|
45
45
|
end
|
|
@@ -55,12 +55,13 @@ module Faker
|
|
|
55
55
|
end
|
|
56
56
|
end
|
|
57
57
|
|
|
58
|
-
def password(min_length
|
|
59
|
-
temp = Lorem.characters(min_length)
|
|
58
|
+
def password(min_length: 8, max_length: 16, mix_case: true, special_characters: false)
|
|
59
|
+
temp = Lorem.characters(number: min_length)
|
|
60
60
|
diff_length = max_length - min_length
|
|
61
|
+
|
|
61
62
|
if diff_length.positive?
|
|
62
63
|
diff_rand = rand(diff_length + 1)
|
|
63
|
-
temp += Lorem.characters(diff_rand)
|
|
64
|
+
temp += Lorem.characters(number: diff_rand)
|
|
64
65
|
end
|
|
65
66
|
|
|
66
67
|
if mix_case
|
|
@@ -69,7 +70,7 @@ module Faker
|
|
|
69
70
|
end
|
|
70
71
|
end
|
|
71
72
|
|
|
72
|
-
if
|
|
73
|
+
if special_characters
|
|
73
74
|
chars = %w[! @ # $ % ^ & *]
|
|
74
75
|
rand(1..min_length).times do |i|
|
|
75
76
|
temp[i] = chars[rand(chars.length)]
|
|
@@ -79,11 +80,15 @@ module Faker
|
|
|
79
80
|
temp
|
|
80
81
|
end
|
|
81
82
|
|
|
82
|
-
def domain_name
|
|
83
|
-
with_locale(:en)
|
|
83
|
+
def domain_name(subdomain: false)
|
|
84
|
+
with_locale(:en) do
|
|
85
|
+
domain_elements = [Char.prepare(domain_word), domain_suffix]
|
|
86
|
+
domain_elements.unshift(Char.prepare(domain_word)) if subdomain
|
|
87
|
+
domain_elements.join('.')
|
|
88
|
+
end
|
|
84
89
|
end
|
|
85
90
|
|
|
86
|
-
def fix_umlauts(string
|
|
91
|
+
def fix_umlauts(string: '')
|
|
87
92
|
Char.fix_umlauts(string)
|
|
88
93
|
end
|
|
89
94
|
|
|
@@ -95,7 +100,7 @@ module Faker
|
|
|
95
100
|
fetch('internet.domain_suffix')
|
|
96
101
|
end
|
|
97
102
|
|
|
98
|
-
def mac_address(prefix
|
|
103
|
+
def mac_address(prefix: '')
|
|
99
104
|
prefix_digits = prefix.split(':').map { |d| d.to_i(16) }
|
|
100
105
|
address_digits = Array.new((6 - prefix_digits.size)) { rand(256) }
|
|
101
106
|
(prefix_digits + address_digits).map { |d| format('%02x', d) }.join(':')
|
|
@@ -169,25 +174,33 @@ module Faker
|
|
|
169
174
|
"#{ip_v6_address}/#{rand(1..127)}"
|
|
170
175
|
end
|
|
171
176
|
|
|
172
|
-
def url(host
|
|
177
|
+
def url(host: domain_name, path: "/#{username}", scheme: 'http')
|
|
173
178
|
"#{scheme}://#{host}#{path}"
|
|
174
179
|
end
|
|
175
180
|
|
|
176
|
-
def slug(words
|
|
181
|
+
def slug(words: nil, glue: nil)
|
|
177
182
|
glue ||= sample(%w[- _])
|
|
178
|
-
(words || Faker::Lorem.words(2).join(' ')).delete(',.').gsub(' ', glue).downcase
|
|
183
|
+
(words || Faker::Lorem.words(number: 2).join(' ')).delete(',.').gsub(' ', glue).downcase
|
|
179
184
|
end
|
|
180
185
|
|
|
181
186
|
def device_token
|
|
182
187
|
shuffle(rand(16**64).to_s(16).rjust(64, '0').chars.to_a).join
|
|
183
188
|
end
|
|
184
189
|
|
|
185
|
-
def user_agent(vendor
|
|
190
|
+
def user_agent(vendor: nil)
|
|
186
191
|
agent_hash = translate('faker.internet.user_agent')
|
|
187
192
|
agents = vendor.respond_to?(:to_sym) && agent_hash[vendor.to_sym] || agent_hash[sample(agent_hash.keys)]
|
|
188
193
|
sample(agents)
|
|
189
194
|
end
|
|
190
195
|
|
|
196
|
+
def uuid
|
|
197
|
+
# borrowed from: https://github.com/ruby/ruby/blob/d48783bb0236db505fe1205d1d9822309de53a36/lib/securerandom.rb#L250
|
|
198
|
+
ary = Faker::Config.random.bytes(16).unpack('NnnnnN')
|
|
199
|
+
ary[2] = (ary[2] & 0x0fff) | 0x4000
|
|
200
|
+
ary[3] = (ary[3] & 0x3fff) | 0x8000
|
|
201
|
+
'%08x-%04x-%04x-%04x-%04x%08x' % ary # rubocop:disable Style/FormatString
|
|
202
|
+
end
|
|
203
|
+
|
|
191
204
|
alias user_name username
|
|
192
205
|
end
|
|
193
206
|
end
|
|
@@ -6,13 +6,13 @@ module Faker
|
|
|
6
6
|
|
|
7
7
|
class << self
|
|
8
8
|
# Generate random amount between values with 2 decimals
|
|
9
|
-
def amount_between(from
|
|
9
|
+
def amount_between(from: 0, to: 0)
|
|
10
10
|
Faker::Base.rand_in_range(from, to).round(2)
|
|
11
11
|
end
|
|
12
12
|
|
|
13
13
|
# International bank slip reference https://en.wikipedia.org/wiki/Creditor_Reference
|
|
14
14
|
# ref is optional so that we can create unit tests
|
|
15
|
-
def creditor_reference(ref
|
|
15
|
+
def creditor_reference(ref: '')
|
|
16
16
|
ref = reference if ref.empty?
|
|
17
17
|
|
|
18
18
|
'RF' + iban_checksum('RF', ref) + ref
|
|
@@ -20,7 +20,7 @@ module Faker
|
|
|
20
20
|
|
|
21
21
|
# Payment references have some rules in certain countries
|
|
22
22
|
# ref is optional so that we can create unit tests
|
|
23
|
-
def reference(ref
|
|
23
|
+
def reference(ref: '')
|
|
24
24
|
pattern = fetch('invoice.reference.pattern')
|
|
25
25
|
|
|
26
26
|
ref = Base.regexify(/#{pattern}/) if ref.empty?
|