ffaker 2.21.0 → 2.23.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Changelog.md +131 -17
- data/Gemfile +15 -0
- data/README.md +18 -6
- data/REFERENCE.md +1012 -969
- data/Rakefile +16 -47
- data/bin/console +9 -0
- data/ffaker.gemspec +9 -23
- data/lib/ffaker/address.rb +4 -4
- data/lib/ffaker/address_fr.rb +3 -5
- data/lib/ffaker/address_it.rb +1 -4
- data/lib/ffaker/address_ua.rb +1 -1
- data/lib/ffaker/avatar.rb +11 -3
- data/lib/ffaker/bank.rb +1 -1
- data/lib/ffaker/bank_us.rb +33 -0
- data/lib/ffaker/book.rb +15 -7
- data/lib/ffaker/cheesy_lingo.rb +2 -2
- data/lib/ffaker/code.rb +1 -1
- data/lib/ffaker/company.rb +2 -2
- data/lib/ffaker/company_fr.rb +2 -2
- data/lib/ffaker/crypto.rb +14 -0
- data/lib/ffaker/data/address_de/state +1 -0
- data/lib/ffaker/data/jo_jo/first_names +356 -0
- data/lib/ffaker/data/jo_jo/full_names +225 -0
- data/lib/ffaker/data/jo_jo/last_names +153 -0
- data/lib/ffaker/data/jo_jo/stands +149 -0
- data/lib/ffaker/date.rb +40 -0
- data/lib/ffaker/filesystem.rb +12 -2
- data/lib/ffaker/geolocation.rb +2 -2
- data/lib/ffaker/identification_br.rb +3 -12
- data/lib/ffaker/identification_ec.rb +39 -0
- data/lib/ffaker/identification_es_cl.rb +2 -2
- data/lib/ffaker/identification_es_co.rb +1 -1
- data/lib/ffaker/identification_kr.rb +11 -4
- data/lib/ffaker/identification_pl.rb +6 -6
- data/lib/ffaker/identification_tw.rb +1 -1
- data/lib/ffaker/image.rb +28 -4
- data/lib/ffaker/jo_jo.rb +24 -0
- data/lib/ffaker/lorem_ja.rb +1 -1
- data/lib/ffaker/lorem_ru.rb +1 -1
- data/lib/ffaker/movie.rb +1 -1
- data/lib/ffaker/name_fr.rb +4 -3
- data/lib/ffaker/name_pl.rb +1 -1
- data/lib/ffaker/number.rb +6 -2
- data/lib/ffaker/phone_number_de.rb +3 -3
- data/lib/ffaker/skill.rb +1 -1
- data/lib/ffaker/ssn.rb +4 -2
- data/lib/ffaker/ssn_se.rb +2 -2
- data/lib/ffaker/string.rb +1 -1
- data/lib/ffaker/time.rb +3 -3
- data/lib/ffaker/utils/module_utils.rb +5 -6
- data/lib/ffaker/utils/unique_utils.rb +33 -21
- data/lib/ffaker/vehicle.rb +2 -2
- data/lib/{version.rb → ffaker/version.rb} +1 -1
- data/lib/ffaker.rb +63 -191
- data/scripts/reference.rb +8 -10
- data/test/helper.rb +3 -5
- data/test/test_address_da.rb +3 -3
- data/test/test_address_fi.rb +2 -2
- data/test/test_address_se.rb +2 -2
- data/test/test_avatar.rb +30 -7
- data/test/test_bank_us.rb +35 -0
- data/test/test_book.rb +29 -0
- data/test/test_cheesy_lingo.rb +1 -1
- data/test/test_color.rb +3 -3
- data/test/test_crypto.rb +15 -0
- data/test/test_date.rb +47 -0
- data/test/test_filesystem.rb +30 -4
- data/test/test_freedom_ipsum.rb +1 -1
- data/test/test_gender_it.rb +1 -1
- data/test/test_gender_ja.rb +1 -1
- data/test/test_gender_jp.rb +1 -1
- data/test/test_gender_pl.rb +1 -1
- data/test/test_healthcare_ru.rb +1 -1
- data/test/test_hipster_ipsum.rb +1 -1
- data/test/test_html_ipsum.rb +2 -2
- data/test/test_identification.rb +12 -2
- data/test/test_identification_ec.rb +33 -0
- data/test/test_identification_es_mx.rb +3 -1
- data/test/test_identification_it.rb +12 -1
- data/test/test_identification_kr.rb +3 -3
- data/test/test_image.rb +51 -5
- data/test/test_internet.rb +3 -1
- data/test/test_internet_se.rb +5 -2
- data/test/test_jo_jo.rb +29 -0
- data/test/test_lorem_br.rb +2 -2
- data/test/test_lorem_cn.rb +3 -3
- data/test/test_lorem_fr.rb +3 -3
- data/test/test_lorem_ie.rb +2 -2
- data/test/test_lorem_kr.rb +3 -3
- data/test/test_lorem_pl.rb +2 -2
- data/test/test_lorem_ru.rb +3 -3
- data/test/test_lorem_ua.rb +3 -3
- data/test/test_module_utils.rb +33 -0
- data/test/test_name_da.rb +1 -1
- data/test/test_name_ph.rb +1 -1
- data/test/test_name_ru.rb +2 -2
- data/test/test_name_ua.rb +2 -2
- data/test/test_number.rb +13 -1
- data/test/test_phone_number_nl.rb +1 -1
- data/test/test_phone_number_se.rb +1 -1
- data/test/test_phone_number_sg.rb +8 -8
- data/test/test_unique_utils.rb +29 -5
- data/test/test_units.rb +6 -6
- data/test/test_units_english.rb +15 -15
- data/test/test_units_metric.rb +15 -15
- data/test/test_vehicle.rb +22 -0
- metadata +24 -241
@@ -0,0 +1,149 @@
|
|
1
|
+
Anubis
|
2
|
+
Atum
|
3
|
+
Bastet
|
4
|
+
Cream
|
5
|
+
Death Thirteen
|
6
|
+
Geb
|
7
|
+
High Priestess
|
8
|
+
Horus
|
9
|
+
Judgement
|
10
|
+
Khnum
|
11
|
+
Osiris
|
12
|
+
Sethan
|
13
|
+
Tenore Sax
|
14
|
+
Tohth
|
15
|
+
Dark Blue Moon
|
16
|
+
Emperor
|
17
|
+
Ebony Devil
|
18
|
+
Empress
|
19
|
+
Hanged Man
|
20
|
+
Hermit Purple
|
21
|
+
Hierophant Green
|
22
|
+
Justice
|
23
|
+
Lovers
|
24
|
+
Magician's Red
|
25
|
+
Silver Chariot
|
26
|
+
Star Platinum
|
27
|
+
Strength
|
28
|
+
Sun
|
29
|
+
The Fool
|
30
|
+
The World
|
31
|
+
Tower of Gray
|
32
|
+
Wheel of Fortune
|
33
|
+
Yellow Temperance
|
34
|
+
Achtung Baby
|
35
|
+
Aqua Necklace
|
36
|
+
Atom Heart Father
|
37
|
+
Bad Company
|
38
|
+
Boy II Man
|
39
|
+
Cheap Trick
|
40
|
+
Cinderella
|
41
|
+
Crazy Diamond
|
42
|
+
Enigma
|
43
|
+
Earth Wind and Fire
|
44
|
+
Harvest
|
45
|
+
Heaven's Door
|
46
|
+
Highway Star
|
47
|
+
Killer Queen
|
48
|
+
Sheer Heart Attack
|
49
|
+
Bites the Dust
|
50
|
+
Love Deluxe
|
51
|
+
Pearl Jam
|
52
|
+
Ratt
|
53
|
+
Red Hot Chili Pepper
|
54
|
+
Super Fly
|
55
|
+
Surface
|
56
|
+
The Lock
|
57
|
+
The Hand
|
58
|
+
Stray Cat
|
59
|
+
Black Sabbath
|
60
|
+
Baby Face
|
61
|
+
Gold Experience
|
62
|
+
Sticky Fingers
|
63
|
+
Metallica
|
64
|
+
Purple Haze
|
65
|
+
Moody Blues
|
66
|
+
Sex Pistols
|
67
|
+
The Grateful Dead
|
68
|
+
Aerosmith
|
69
|
+
Beach Boy
|
70
|
+
Man in the Mirror
|
71
|
+
Baby Face (GoGo)
|
72
|
+
Chariot Requiem
|
73
|
+
Clash
|
74
|
+
Echoes
|
75
|
+
Gold Experience Requiem
|
76
|
+
Green Day
|
77
|
+
King Crimson
|
78
|
+
Kraft Work
|
79
|
+
Little Feet
|
80
|
+
Mr.President
|
81
|
+
Notorious B.I.G
|
82
|
+
Oasis
|
83
|
+
Rolling Stones
|
84
|
+
Soft Machine
|
85
|
+
Spice Girl
|
86
|
+
Talking Head
|
87
|
+
White Album
|
88
|
+
Whitesnake
|
89
|
+
C-Moon
|
90
|
+
Jail House Lock
|
91
|
+
Stone Free
|
92
|
+
Goo Goo Dolls
|
93
|
+
Under World
|
94
|
+
Sky High
|
95
|
+
Star Platinum
|
96
|
+
Bohemian Rhapsody
|
97
|
+
Burning Down the House
|
98
|
+
Diver Down
|
99
|
+
Dragon's Dream
|
100
|
+
Foo Fighters
|
101
|
+
Green
|
102
|
+
Highway to Hell
|
103
|
+
Kiss
|
104
|
+
Jumpin' Jack Flash
|
105
|
+
Limp Bizkit
|
106
|
+
Made in Heaven
|
107
|
+
Manhattan Transfer
|
108
|
+
Marilyn Manson
|
109
|
+
Planet Waves
|
110
|
+
Survivor
|
111
|
+
Weather Report
|
112
|
+
Yo-Yo Ma
|
113
|
+
20th Century Boy
|
114
|
+
Ball Breaker
|
115
|
+
Boku no Rhythm wo Kiitekure
|
116
|
+
Catch the Rainbow
|
117
|
+
Chocolate Disco
|
118
|
+
Civil War
|
119
|
+
Cream Starter
|
120
|
+
Dirty Deeds Done Dirt Cheap
|
121
|
+
D4C Love Train
|
122
|
+
Hey Ya!
|
123
|
+
In a Silent Way
|
124
|
+
Mandom
|
125
|
+
Oh! Lonesome Me
|
126
|
+
Scary Monsters
|
127
|
+
Sugar Mountain
|
128
|
+
Tatoo You!
|
129
|
+
Ticket to Ride
|
130
|
+
Tomb of the Boom
|
131
|
+
Tubular Bells
|
132
|
+
Tusk
|
133
|
+
Wired
|
134
|
+
Born This Way
|
135
|
+
California King Bed
|
136
|
+
Fun Fun Fun
|
137
|
+
Nut King Call
|
138
|
+
Paisley Park
|
139
|
+
Paper Moon King
|
140
|
+
Soft & Wet
|
141
|
+
Manic Depression
|
142
|
+
Voodoo Child
|
143
|
+
All Along Watchtower
|
144
|
+
Dolly Dagger
|
145
|
+
Nightbird Flying
|
146
|
+
Purple Haze Distortion
|
147
|
+
Rainy Day Dream Away
|
148
|
+
Remote Romance
|
149
|
+
House of Holy
|
data/lib/ffaker/date.rb
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'date'
|
4
|
+
|
5
|
+
module FFaker
|
6
|
+
module Date
|
7
|
+
extend FFaker::ModuleUtils
|
8
|
+
extend self
|
9
|
+
|
10
|
+
# Generates a random date between 2 dates
|
11
|
+
def between(from, to)
|
12
|
+
FFaker::Time.between(from, to).to_date
|
13
|
+
end
|
14
|
+
|
15
|
+
# Generates a random date up to `days` days in the past
|
16
|
+
def backward(days = 365)
|
17
|
+
from = ::Date.today - days
|
18
|
+
to = ::Date.today - 1
|
19
|
+
|
20
|
+
between(from, to)
|
21
|
+
end
|
22
|
+
|
23
|
+
# Generates a random date up to `days` days in the future
|
24
|
+
def forward(days = 365)
|
25
|
+
from = ::Date.today + 1
|
26
|
+
to = ::Date.today + days
|
27
|
+
|
28
|
+
between(from, to)
|
29
|
+
end
|
30
|
+
|
31
|
+
# Random birthday date (maximum age between 18 and 65)
|
32
|
+
# Keyword arguments: min_age, max_age
|
33
|
+
def birthday(min_age: 18, max_age: 65)
|
34
|
+
from = ::Date.today.prev_year(max_age + 1).next_day
|
35
|
+
to = ::Date.today.prev_year(min_age)
|
36
|
+
|
37
|
+
between(from, to)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
data/lib/ffaker/filesystem.rb
CHANGED
@@ -17,8 +17,18 @@ module FFaker
|
|
17
17
|
Lorem.words.join(directory_separator)
|
18
18
|
end
|
19
19
|
|
20
|
-
def file_name(
|
21
|
-
|
20
|
+
def file_name(
|
21
|
+
*args,
|
22
|
+
dir: directory, name: Lorem.word.downcase, ext: extension, directory_separator: File::SEPARATOR
|
23
|
+
)
|
24
|
+
if args.any?
|
25
|
+
warn "Positional arguments for Filesystem##{__method__} are deprecated. Please use keyword arguments."
|
26
|
+
dir = args[0]
|
27
|
+
name = args[1] if args.size > 1
|
28
|
+
ext = args[2] if args.size > 2
|
29
|
+
directory_separator = args[3] if args.size > 3
|
30
|
+
end
|
31
|
+
|
22
32
|
"#{dir}#{directory_separator}#{name}.#{ext}"
|
23
33
|
end
|
24
34
|
end
|
data/lib/ffaker/geolocation.rb
CHANGED
@@ -51,8 +51,8 @@ module FFaker
|
|
51
51
|
latitude_range = [upper_left[0], lower_right[0]].sort
|
52
52
|
longitude_range = [upper_left[1], lower_right[1]].sort
|
53
53
|
|
54
|
-
latitude = latitude_range[0] + rand * (latitude_range[1] - latitude_range[0])
|
55
|
-
longitude = longitude_range[0] + rand * (longitude_range[1] - longitude_range[0])
|
54
|
+
latitude = latitude_range[0] + (rand * (latitude_range[1] - latitude_range[0]))
|
55
|
+
longitude = longitude_range[0] + (rand * (longitude_range[1] - longitude_range[0]))
|
56
56
|
|
57
57
|
[latitude, longitude]
|
58
58
|
end
|
@@ -17,11 +17,7 @@ module FFaker
|
|
17
17
|
|
18
18
|
def pretty_cpf
|
19
19
|
cpf_numbers = cpf
|
20
|
-
|
21
|
-
cpf_numbers[0..2],
|
22
|
-
cpf_numbers[3..5],
|
23
|
-
cpf_numbers[6..8],
|
24
|
-
cpf_numbers[9..10])
|
20
|
+
"#{cpf_numbers[0..2]}.#{cpf_numbers[3..5]}.#{cpf_numbers[6..8]}-#{cpf_numbers[9..10]}"
|
25
21
|
end
|
26
22
|
|
27
23
|
def cnpj
|
@@ -32,12 +28,7 @@ module FFaker
|
|
32
28
|
|
33
29
|
def pretty_cnpj
|
34
30
|
cnpj_numbers = cnpj.to_s.rjust(14, '0')
|
35
|
-
|
36
|
-
cnpj_numbers[0..1],
|
37
|
-
cnpj_numbers[2..4],
|
38
|
-
cnpj_numbers[5..7],
|
39
|
-
cnpj_numbers[8..11],
|
40
|
-
cnpj_numbers[12..14])
|
31
|
+
"#{cnpj_numbers[0..1]}.#{cnpj_numbers[2..4]}.#{cnpj_numbers[5..7]}/#{cnpj_numbers[8..11]}-#{cnpj_numbers[12..14]}"
|
41
32
|
end
|
42
33
|
|
43
34
|
def rg
|
@@ -71,7 +62,7 @@ module FFaker
|
|
71
62
|
if document_digits.size + 1 == verification_multipliers.size && document_digits.uniq.size > 1
|
72
63
|
0.upto(1) do |i|
|
73
64
|
sum = verification_multipliers.drop(1 - i).each_with_index.inject(0) do |val, (value, j)|
|
74
|
-
val + document_digits[j] * value
|
65
|
+
val + (document_digits[j] * value)
|
75
66
|
end
|
76
67
|
validation_digits[i] = (sum %= 11) < 2 ? 0 : 11 - sum
|
77
68
|
document_digits.push(validation_digits[i])
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module FFaker
|
4
|
+
module IdentificationEC
|
5
|
+
extend ModuleUtils
|
6
|
+
extend self
|
7
|
+
|
8
|
+
# https://medium.com/@bryansuarez/c%C3%B3mo-validar-c%C3%A9dula-y-ruc-en-ecuador-b62c5666186f
|
9
|
+
# Cedula de Identificacion
|
10
|
+
def ci
|
11
|
+
first_digits = ci_digits
|
12
|
+
"#{first_digits}#{last_digit(first_digits)}"
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
def ci_digits
|
18
|
+
"#{FFaker.numerify('##')}#{rand(0..5)}#{FFaker.numerify('######')}"
|
19
|
+
end
|
20
|
+
|
21
|
+
def last_digit(digits)
|
22
|
+
mod = digits_sum(digits) % 10
|
23
|
+
10 - mod if mod.positive?
|
24
|
+
end
|
25
|
+
|
26
|
+
def digits_sum(digits)
|
27
|
+
sum = 0
|
28
|
+
digits.chars.each_with_index do |char, index|
|
29
|
+
if index.even?
|
30
|
+
multiple = char.to_i * 2
|
31
|
+
sum += multiple > 9 ? multiple - 9 : multiple
|
32
|
+
else
|
33
|
+
sum += char.to_i
|
34
|
+
end
|
35
|
+
end
|
36
|
+
sum
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -20,10 +20,10 @@ module FFaker
|
|
20
20
|
private
|
21
21
|
|
22
22
|
def dv(rut)
|
23
|
-
total = rut.to_s.rjust(8, '0').
|
23
|
+
total = rut.to_s.rjust(8, '0').chars.zip(%w[3 2 7 6 5 4 3 2]).sum do |a, b|
|
24
24
|
a.to_i * b.to_i
|
25
25
|
end
|
26
|
-
(11 - total % 11).to_s.gsub(
|
26
|
+
(11 - (total % 11)).to_s.gsub('10', 'k').gsub('11', '0')
|
27
27
|
end
|
28
28
|
end
|
29
29
|
end
|
@@ -1,18 +1,25 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module FFaker
|
4
|
-
module
|
4
|
+
module IdentificationKR
|
5
5
|
extend ModuleUtils
|
6
6
|
extend self
|
7
7
|
|
8
8
|
# Resident Registration Number
|
9
9
|
# http://ko.wikipedia.org/wiki/%EC%A3%BC%EB%AF%BC%EB%93%B1%EB%A1%9D%EB%B2%88%ED%98%B8
|
10
10
|
def rrn
|
11
|
-
birth = fetch_sample(Date.new(1970, 1, 1)
|
11
|
+
birth = fetch_sample(::Date.new(1970, 1, 1)..::Date.new(1999, 12, 31)).strftime('%y%d%m')
|
12
12
|
sex = fetch_sample([1, 2])
|
13
13
|
loc = FFaker.numerify("#{fetch_sample(Array('00'..'95'))}###")
|
14
|
-
a, b, c, d, e, f, g, h, i, j, k, l = "#{birth}#{sex}#{loc}".
|
15
|
-
checksum = (
|
14
|
+
a, b, c, d, e, f, g, h, i, j, k, l = "#{birth}#{sex}#{loc}".chars.map(&:to_i)
|
15
|
+
checksum = (
|
16
|
+
11 - (
|
17
|
+
(
|
18
|
+
(2 * a) + (3 * b) + (4 * c) + (5 * d) + (6 * e) + (7 * f) + (8 * g) + (9 * h) +
|
19
|
+
(2 * i) + (3 * j) + (4 * k) + (5 * l)
|
20
|
+
) % 11
|
21
|
+
)
|
22
|
+
) % 10
|
16
23
|
"#{birth}-#{sex}#{loc}#{checksum}"
|
17
24
|
end
|
18
25
|
end
|
@@ -37,8 +37,8 @@ module FFaker
|
|
37
37
|
private
|
38
38
|
|
39
39
|
def generate_valid_pesel_date
|
40
|
-
from = Date.new(1800, 1, 1)
|
41
|
-
to = [Date.today, Date.new(2299, 12, 31)].min
|
40
|
+
from = ::Date.new(1800, 1, 1)
|
41
|
+
to = [::Date.today, ::Date.new(2299, 12, 31)].min
|
42
42
|
fetch_sample(from..to)
|
43
43
|
end
|
44
44
|
|
@@ -63,15 +63,15 @@ module FFaker
|
|
63
63
|
end
|
64
64
|
|
65
65
|
def pesel_checksum(date, serial_number)
|
66
|
-
pesel_digits = "#{date}#{serial_number}".
|
66
|
+
pesel_digits = "#{date}#{serial_number}".chars.map(&:to_i)
|
67
67
|
a, b, c, d, e, f, g, h, i, j = pesel_digits
|
68
|
-
(a * 9 + b * 7 + c * 3 + d + e * 9 + f * 7 + g * 3 + h + i * 9 + j * 7) % 10
|
68
|
+
((a * 9) + (b * 7) + (c * 3) + d + (e * 9) + (f * 7) + (g * 3) + h + (i * 9) + (j * 7)) % 10
|
69
69
|
end
|
70
70
|
|
71
71
|
def identity_card_checksum(letter_part, number_part)
|
72
72
|
a, b, c = letter_part.codepoints.map { |codepoints| codepoints - 55 }
|
73
|
-
d, e, f, g, h = number_part.
|
74
|
-
(a * 7 + b * 3 + c + 7 * d + 3 * e + f + 7 * g + 3 * h) % 10
|
73
|
+
d, e, f, g, h = number_part.chars.map(&:to_i)
|
74
|
+
((a * 7) + (b * 3) + c + (7 * d) + (3 * e) + f + (7 * g) + (3 * h)) % 10
|
75
75
|
end
|
76
76
|
end
|
77
77
|
end
|
@@ -17,7 +17,7 @@ module FFaker
|
|
17
17
|
serial = FFaker.numerify('#######')
|
18
18
|
a, b, c, d, e, f, g, h, i, j = "#{code}#{gender}#{serial}".chars.map(&:to_i)
|
19
19
|
|
20
|
-
checksum = (9 * a + b + 2 * c + 3 * d + 4 * e + 5 * f + 6 * g + 7 * h + 8 * i + 9 * j) % 10
|
20
|
+
checksum = ((9 * a) + b + (2 * c) + (3 * d) + (4 * e) + (5 * f) + (6 * g) + (7 * h) + (8 * i) + (9 * j)) % 10
|
21
21
|
"#{letter.upcase}#{gender}#{serial}#{checksum}"
|
22
22
|
end
|
23
23
|
end
|
data/lib/ffaker/image.rb
CHANGED
@@ -11,7 +11,18 @@ module FFaker
|
|
11
11
|
|
12
12
|
SUPPORTED_FORMATS = %w[png jpg jpeg gif].freeze
|
13
13
|
|
14
|
-
|
14
|
+
## `*args` for old format support, it will be removed with deprecation
|
15
|
+
# rubocop:disable Metrics/ParameterLists
|
16
|
+
def url(*args, size: '300x300', format: 'png', bg_color: :random, text_color: :random, text: nil)
|
17
|
+
if args.any?
|
18
|
+
warn "Positional arguments for Image##{__method__} are deprecated. Please use keyword arguments."
|
19
|
+
size = args[0]
|
20
|
+
format = args[1] if args.size > 1
|
21
|
+
bg_color = args[2] if args.size > 2
|
22
|
+
text_color = args[3] if args.size > 3
|
23
|
+
text = args[4] if args.size > 4
|
24
|
+
end
|
25
|
+
|
15
26
|
check_size!(size)
|
16
27
|
check_format!(format)
|
17
28
|
|
@@ -21,20 +32,33 @@ module FFaker
|
|
21
32
|
|
22
33
|
"https://dummyimage.com/#{size}/#{bg_color}/#{text_color}.#{format}?text=#{text}"
|
23
34
|
end
|
35
|
+
# rubocop:enable Metrics/ParameterLists
|
36
|
+
|
37
|
+
## `*args` for old format support, it will be removed with deprecation
|
38
|
+
# rubocop:disable Metrics/ParameterLists
|
39
|
+
def file(*args, size: '300x300', format: 'png', bg_color: :random, text_color: :random, text: nil)
|
40
|
+
if args.any?
|
41
|
+
warn "Positional arguments for Image##{__method__} are deprecated. Please use keyword arguments."
|
42
|
+
size = args[0]
|
43
|
+
format = args[1] if args.size > 1
|
44
|
+
bg_color = args[2] if args.size > 2
|
45
|
+
text_color = args[3] if args.size > 3
|
46
|
+
text = args[4] if args.size > 4
|
47
|
+
end
|
24
48
|
|
25
|
-
|
26
|
-
uri = URI.parse(url(size, format, bg_color, text_color, text))
|
49
|
+
uri = URI.parse(url(size: size, format: format, bg_color: bg_color, text_color: text_color, text: text))
|
27
50
|
file = Tempfile.new('ffaker_image')
|
28
51
|
file.binmode
|
29
52
|
file << uri.open.read
|
30
53
|
file.close
|
31
54
|
File.new(file.path)
|
32
55
|
end
|
56
|
+
# rubocop:enable Metrics/ParameterLists
|
33
57
|
|
34
58
|
private
|
35
59
|
|
36
60
|
def check_size!(size)
|
37
|
-
return true if size
|
61
|
+
return true if size.match?(/\A\d+x\d+\z/)
|
38
62
|
|
39
63
|
raise ArgumentError, 'Size should be specified in format 300x300'
|
40
64
|
end
|
data/lib/ffaker/jo_jo.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module FFaker
|
4
|
+
module JoJo
|
5
|
+
extend ModuleUtils
|
6
|
+
extend self
|
7
|
+
|
8
|
+
def full_name
|
9
|
+
fetch_sample(FULL_NAMES)
|
10
|
+
end
|
11
|
+
|
12
|
+
def first_name
|
13
|
+
fetch_sample(FIRST_NAMES)
|
14
|
+
end
|
15
|
+
|
16
|
+
def last_name
|
17
|
+
fetch_sample(LAST_NAMES)
|
18
|
+
end
|
19
|
+
|
20
|
+
def stand
|
21
|
+
fetch_sample(STANDS)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
data/lib/ffaker/lorem_ja.rb
CHANGED
data/lib/ffaker/lorem_ru.rb
CHANGED
data/lib/ffaker/movie.rb
CHANGED
data/lib/ffaker/name_fr.rb
CHANGED
@@ -25,9 +25,10 @@ module FFaker
|
|
25
25
|
|
26
26
|
def name
|
27
27
|
case rand(0..9)
|
28
|
-
when 7
|
29
|
-
|
30
|
-
else
|
28
|
+
when 5, 7
|
29
|
+
"#{first_name} #{prefix} #{last_name}"
|
30
|
+
else
|
31
|
+
"#{first_name} #{last_name}"
|
31
32
|
end
|
32
33
|
end
|
33
34
|
end
|
data/lib/ffaker/name_pl.rb
CHANGED
@@ -11,7 +11,7 @@ module FFaker
|
|
11
11
|
GENDERS = %i[random female male].freeze
|
12
12
|
MALE_PREFIXES = %w[Pan].freeze
|
13
13
|
FEMALE_PREFIXES = %w[Pani].freeze
|
14
|
-
ACADEMIC_DEGREE_PREFIXES =
|
14
|
+
ACADEMIC_DEGREE_PREFIXES = ['lic.', 'inż.', 'mgr', 'mgr inż.', 'dr', 'dr hab.', 'prof.'].freeze
|
15
15
|
PREFIXES = (MALE_PREFIXES + FEMALE_PREFIXES + ACADEMIC_DEGREE_PREFIXES).freeze
|
16
16
|
|
17
17
|
# Generates a random full name for a given gender (random by default).
|
data/lib/ffaker/number.rb
CHANGED
@@ -15,12 +15,16 @@ module FFaker
|
|
15
15
|
FFaker.numerify("#{whole_part_pattern}.#{fractional_part_pattern}").to_f
|
16
16
|
end
|
17
17
|
|
18
|
+
def between(from: 1.00, to: 5000.00)
|
19
|
+
fetch_sample(from..to)
|
20
|
+
end
|
21
|
+
|
18
22
|
private
|
19
23
|
|
20
24
|
def generate_pattern(digits)
|
21
|
-
raise ArgumentError
|
25
|
+
raise ArgumentError, 'Digits cannot be less than 1' if digits < 1
|
22
26
|
|
23
|
-
"#{fetch_sample(1..9)}#{
|
27
|
+
"#{fetch_sample(1..9)}#{'#' * (digits - 1)}"
|
24
28
|
end
|
25
29
|
end
|
26
30
|
end
|
@@ -7,15 +7,15 @@ module FFaker
|
|
7
7
|
|
8
8
|
# Mobile prefixes are in the 015x, 016x, 017x ranges
|
9
9
|
def mobile_prefix(leading_zero = true)
|
10
|
-
mobile_prefix =
|
11
|
-
mobile_prefix =
|
10
|
+
mobile_prefix = "1#{rand(5..7)}#{rand(0..9)}"
|
11
|
+
mobile_prefix = "0#{mobile_prefix}" if leading_zero
|
12
12
|
mobile_prefix
|
13
13
|
end
|
14
14
|
|
15
15
|
# Region prefixes are in range 02..09 with length of 3 to 5 digits
|
16
16
|
def region_prefix(leading_zero = true)
|
17
17
|
region_prefix = rand(2..9).to_s + FFaker.numerify('#' * rand(1..3)).to_s
|
18
|
-
region_prefix =
|
18
|
+
region_prefix = "0#{region_prefix}" if leading_zero
|
19
19
|
region_prefix
|
20
20
|
end
|
21
21
|
|
data/lib/ffaker/skill.rb
CHANGED
data/lib/ffaker/ssn.rb
CHANGED
@@ -15,8 +15,10 @@ module FFaker
|
|
15
15
|
second_group = rand(1..99)
|
16
16
|
third_group = rand(1..9999)
|
17
17
|
|
18
|
-
|
19
|
-
|
18
|
+
format(
|
19
|
+
'%<first_group>.3d-%<second_group>.2d-%<third_group>.4d',
|
20
|
+
first_group: first_group, second_group: second_group, third_group: third_group
|
21
|
+
)
|
20
22
|
end
|
21
23
|
end
|
22
24
|
end
|
data/lib/ffaker/ssn_se.rb
CHANGED
@@ -54,7 +54,7 @@ module FFaker
|
|
54
54
|
end
|
55
55
|
|
56
56
|
def random_birth_time_between(from = ::Time.local(1940, 1, 1), to = ::Time.now)
|
57
|
-
::Time.at(from + rand * (to.to_f - from.to_f))
|
57
|
+
::Time.at(from + (rand * (to.to_f - from.to_f)))
|
58
58
|
end
|
59
59
|
|
60
60
|
def random_region_for(gender)
|
@@ -70,7 +70,7 @@ module FFaker
|
|
70
70
|
end
|
71
71
|
|
72
72
|
def random_region_odd
|
73
|
-
rand(0..498) * 2 + 1
|
73
|
+
(rand(0..498) * 2) + 1
|
74
74
|
end
|
75
75
|
|
76
76
|
def three_character_string(number)
|
data/lib/ffaker/string.rb
CHANGED
data/lib/ffaker/time.rb
CHANGED
@@ -25,14 +25,14 @@ module FFaker
|
|
25
25
|
latest_year = params[:year_latest] || 0
|
26
26
|
year = (rand * years_back).ceil + (::DateTime.now.year - latest_year - years_back)
|
27
27
|
month = rand(1..12)
|
28
|
-
day = rand(1
|
28
|
+
day = rand(1..::Date.new(year, month, -1).day)
|
29
29
|
hours = params[:hours] || rand(0..23)
|
30
30
|
minutes = params[:minutes] || rand(0..59)
|
31
31
|
series = [date = ::DateTime.new(year, month, day, hours, minutes)]
|
32
32
|
return date unless params[:series]
|
33
33
|
|
34
34
|
params[:series].each do |some_time_after|
|
35
|
-
series << series.last + (rand * some_time_after).ceil
|
35
|
+
series << (series.last + (rand * some_time_after).ceil)
|
36
36
|
end
|
37
37
|
series
|
38
38
|
end
|
@@ -44,7 +44,7 @@ module FFaker
|
|
44
44
|
def between(from, to)
|
45
45
|
from_value = convert_to_time(from)
|
46
46
|
to_value = convert_to_time(to)
|
47
|
-
::Time.at(from_value + rand * (to_value.to_f - from_value.to_f))
|
47
|
+
::Time.at(from_value + (rand * (to_value.to_f - from_value.to_f)))
|
48
48
|
end
|
49
49
|
|
50
50
|
private
|