ffaker 2.12.0 → 2.17.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 +28 -0
- data/README.md +8 -1
- data/REFERENCE.md +1365 -1234
- data/Rakefile +0 -6
- data/ffaker.gemspec +14 -5
- data/lib/ffaker.rb +12 -6
- data/lib/ffaker/address_fr.rb +5 -1
- data/lib/ffaker/address_nl.rb +1 -3
- data/lib/ffaker/address_us.rb +22 -2
- data/lib/ffaker/{animals.rb → animal.rb} +0 -0
- data/lib/ffaker/{animals_cn.rb → animal_cn.rb} +0 -0
- data/lib/ffaker/animal_es.rb +12 -0
- data/lib/ffaker/{animals_us.rb → animal_us.rb} +0 -0
- data/lib/ffaker/bank.rb +15 -3
- data/lib/ffaker/code.rb +17 -0
- data/lib/ffaker/color_pl.rb +14 -0
- data/lib/ffaker/company_ja.rb +24 -0
- data/lib/ffaker/data/address_fr/region +27 -0
- data/lib/ffaker/data/address_ja/city +0 -23
- data/lib/ffaker/data/address_us/state_abbr +0 -1
- data/lib/ffaker/data/animal_es/common_names +135 -0
- data/lib/ffaker/data/bank/card_types +12 -0
- data/lib/ffaker/data/book/nouns +2 -2
- data/lib/ffaker/data/color_pl/names_list +122 -0
- data/lib/ffaker/data/filesystem/extension +31 -31
- data/lib/ffaker/data/movie/nouns +2 -2
- data/lib/ffaker/data/name/first_names_female +0 -230
- data/lib/ffaker/data/name/first_names_male +0 -37
- data/lib/ffaker/data/sport_pl/summer +53 -0
- data/lib/ffaker/data/sport_pl/winter +14 -0
- data/lib/ffaker/data/vehicle/color_prefixes +25 -0
- data/lib/ffaker/education.rb +4 -8
- data/lib/ffaker/education_cn.rb +3 -6
- data/lib/ffaker/filesystem.rb +7 -7
- data/lib/ffaker/identification_in.rb +15 -0
- data/lib/ffaker/identification_kr.rb +2 -2
- data/lib/ffaker/identification_mx.rb +1 -1
- data/lib/ffaker/identification_pl.rb +77 -0
- data/lib/ffaker/identification_tw.rb +23 -0
- data/lib/ffaker/internet.rb +4 -6
- data/lib/ffaker/internet_se.rb +1 -1
- data/lib/ffaker/name_mx.rb +2 -2
- data/lib/ffaker/phone_number_br.rb +2 -2
- data/lib/ffaker/product.rb +1 -1
- data/lib/ffaker/sport_pl.rb +25 -0
- data/lib/ffaker/ssn.rb +1 -3
- data/lib/ffaker/string.rb +5 -5
- data/lib/ffaker/unit.rb +9 -10
- data/lib/ffaker/unit_english.rb +18 -19
- data/lib/ffaker/unit_metric.rb +15 -16
- data/lib/ffaker/utils/random_utils.rb +2 -0
- data/lib/ffaker/utils/unique_utils.rb +0 -2
- data/lib/ffaker/vehicle.rb +1 -6
- data/lib/version.rb +5 -0
- data/scripts/benchmark.rb +10 -11
- data/test/helper.rb +35 -0
- data/test/test_address_au.rb +2 -2
- data/test/test_address_br.rb +1 -1
- data/test/test_address_fi.rb +2 -2
- data/test/test_address_fr.rb +1 -1
- data/test/test_address_id.rb +1 -1
- data/test/test_address_ja.rb +1 -1
- data/test/test_address_nl.rb +1 -1
- data/test/test_address_se.rb +2 -2
- data/test/test_address_us.rb +9 -0
- data/test/test_animal_es.rb +17 -0
- data/test/test_array_utils.rb +0 -1
- data/test/test_aws.rb +1 -1
- data/test/test_bank.rb +41 -5
- data/test/test_book.rb +4 -4
- data/test/test_code.rb +22 -1
- data/test/test_color_pl.rb +13 -0
- data/test/test_company_ja.rb +28 -0
- data/test/{test_faker.rb → test_ffaker.rb} +5 -1
- data/test/test_filesystem.rb +11 -3
- data/test/test_geolocation.rb +2 -2
- data/test/test_healthcare_ru.rb +1 -1
- data/test/test_html_ipsum.rb +1 -1
- data/test/test_identification_co.rb +2 -2
- data/test/test_identification_es_cl.rb +1 -1
- data/test/test_identification_in.rb +20 -0
- data/test/test_identification_pl.rb +28 -0
- data/test/test_identification_tw.rb +17 -0
- data/test/test_image.rb +3 -3
- data/test/test_internet.rb +9 -9
- data/test/test_internet_se.rb +1 -1
- data/test/test_job_cn.rb +1 -1
- data/test/test_job_ja.rb +1 -1
- data/test/test_job_kr.rb +1 -1
- data/test/test_job_vn.rb +1 -1
- data/test/test_lorem_cn.rb +6 -6
- data/test/test_lorem_ja.rb +3 -3
- data/test/test_lorem_pl.rb +1 -1
- data/test/test_lorem_ru.rb +1 -1
- data/test/test_lorem_ua.rb +1 -1
- data/test/test_music.rb +4 -4
- data/test/test_name_da.rb +3 -3
- data/test/test_phone_number_se.rb +2 -2
- data/test/test_sport_pl.rb +30 -0
- data/test/test_ssn_se.rb +6 -8
- data/test/test_string.rb +3 -3
- data/test/test_time.rb +13 -6
- data/test/test_tweet.rb +9 -9
- data/test/test_vehicle.rb +2 -2
- metadata +201 -162
- data/lib/ffaker/data/address_jp/city +0 -127
- data/lib/ffaker/data/address_jp/designated_city +0 -20
- data/lib/ffaker/data/address_jp/street +0 -37
- data/lib/ffaker/data/address_jp/tokyo_ward +0 -23
- data/lib/ffaker/data/address_jp/village +0 -183
- data/lib/ffaker/data/address_jp/ward +0 -188
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module FFaker
|
4
|
+
module IdentificationTW
|
5
|
+
extend ModuleUtils
|
6
|
+
extend self
|
7
|
+
|
8
|
+
AREA_CODE = { a: 10, b: 11, c: 12, d: 13, e: 14, f: 15, g: 16, h: 17, i: 34, j: 18, k: 19, l: 20, m: 21, n: 22, o: 35, p: 23, q: 24, r: 25, s: 26, t: 27, u: 28, v: 29, w: 30, x: 31, y: 32, z: 33 }.freeze
|
9
|
+
|
10
|
+
# Identity Card Number
|
11
|
+
# https://en.wikipedia.org/wiki/National_identification_card_(Taiwan)#Identity_card_number
|
12
|
+
def id
|
13
|
+
letter = FFaker.letterify('?')
|
14
|
+
code = AREA_CODE[letter.to_sym]
|
15
|
+
gender = fetch_sample([1, 2])
|
16
|
+
serial = FFaker.numerify('#######')
|
17
|
+
a, b, c, d, e, f, g, h, i, j = "#{code}#{gender}#{serial}".split(//).map(&:to_i)
|
18
|
+
|
19
|
+
checksum = (9 * a + b + 2 * c + 3 * d + 4 * e + 5 * f + 6 * g + 7 * h + 8 * i + 9 * j) % 10
|
20
|
+
"#{letter.upcase}#{gender}#{serial}#{checksum}"
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
data/lib/ffaker/internet.rb
CHANGED
@@ -5,7 +5,7 @@ module FFaker
|
|
5
5
|
extend ModuleUtils
|
6
6
|
extend self
|
7
7
|
|
8
|
-
BYTE =
|
8
|
+
BYTE = Array('0'..'255').freeze
|
9
9
|
HOSTS = %w[gmail.com yahoo.com hotmail.com].freeze
|
10
10
|
DISPOSABLE_HOSTS = %w[
|
11
11
|
mailinator.com suremail.info spamherelots.com binkmail.com safetymail.info
|
@@ -39,7 +39,7 @@ module FFaker
|
|
39
39
|
|
40
40
|
return sanitize(Name.first_name) if rand(0..1).zero?
|
41
41
|
|
42
|
-
[Name.first_name, Name.last_name].join(fetch_sample(%w[. _]))
|
42
|
+
[sanitize(Name.first_name), sanitize(Name.last_name)].join(fetch_sample(%w[. _]))
|
43
43
|
end
|
44
44
|
|
45
45
|
def domain_name
|
@@ -47,9 +47,7 @@ module FFaker
|
|
47
47
|
end
|
48
48
|
|
49
49
|
def domain_word
|
50
|
-
|
51
|
-
dw.gsub!(/\W/, '')
|
52
|
-
dw.downcase
|
50
|
+
sanitize(Company.name.split(' ').first)
|
53
51
|
end
|
54
52
|
|
55
53
|
def domain_suffix
|
@@ -75,7 +73,7 @@ module FFaker
|
|
75
73
|
end
|
76
74
|
|
77
75
|
def password(min_length = 8, max_length = 16)
|
78
|
-
length = min_length > max_length ? min_length : fetch_sample(
|
76
|
+
length = min_length > max_length ? min_length : fetch_sample(min_length..max_length)
|
79
77
|
String.from_regexp(/\w{#{length}}/)
|
80
78
|
end
|
81
79
|
|
data/lib/ffaker/internet_se.rb
CHANGED
data/lib/ffaker/name_mx.rb
CHANGED
@@ -26,7 +26,7 @@ module FFaker
|
|
26
26
|
# Full name with prefix according to gender, possibly with middle_name
|
27
27
|
def full_name_prefix(gender = :any)
|
28
28
|
case gender
|
29
|
-
when :any
|
29
|
+
when :any
|
30
30
|
case rand(0..8)
|
31
31
|
when 0, 3, 6, 8 then "#{female_prefix} #{female_name} #{paternal_last_names}"
|
32
32
|
else "#{male_prefix} #{male_name} #{paternal_last_names}"
|
@@ -40,7 +40,7 @@ module FFaker
|
|
40
40
|
# Full name with no prefix according to gender, possibly with middle_name
|
41
41
|
def full_name_no_prefix(gender = :any)
|
42
42
|
case gender
|
43
|
-
when :any
|
43
|
+
when :any
|
44
44
|
case rand(0..8)
|
45
45
|
when 0, 3, 6, 8 then "#{female_name} #{paternal_last_names}"
|
46
46
|
else "#{male_name} #{paternal_last_names}"
|
@@ -14,8 +14,8 @@ module FFaker
|
|
14
14
|
|
15
15
|
COUNTRY_PREFIX = '+55'
|
16
16
|
AREA_CODE = [
|
17
|
-
|
18
|
-
51
|
17
|
+
11..19, 21..22, 24, 27..28, 31..35, 37..38, 41..49,
|
18
|
+
51, 53..55, 61..69, 71, 73..75, 77, 79, 81..89, 91..99
|
19
19
|
].flat_map { |x| Array(x) }.map(&:to_s).freeze
|
20
20
|
|
21
21
|
HOME_WORK_PHONE_PREFIX = %w[2 3 4 5].freeze
|
data/lib/ffaker/product.rb
CHANGED
@@ -14,7 +14,7 @@ module FFaker
|
|
14
14
|
def brand
|
15
15
|
case rand(0..11)
|
16
16
|
when (0..4) then fetch_sample(B1) + fetch_sample(B2)
|
17
|
-
when (5..10)
|
17
|
+
when (5..10)
|
18
18
|
[
|
19
19
|
fetch_sample(START), fetch_sample(VOWELS), fetch_sample(SUFFIX),
|
20
20
|
rand(0..1).zero? ? fetch_sample(ADDON) : nil
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module FFaker
|
4
|
+
# Inspirations:
|
5
|
+
# https://pl.wikipedia.org/wiki/Kategoria:Dyscypliny_sportowe
|
6
|
+
# https://pl.wikipedia.org/wiki/Igrzyska_olimpijskie
|
7
|
+
module SportPL
|
8
|
+
extend ModuleUtils
|
9
|
+
extend self
|
10
|
+
|
11
|
+
ALL = SUMMER + WINTER
|
12
|
+
|
13
|
+
def name
|
14
|
+
fetch_sample(ALL)
|
15
|
+
end
|
16
|
+
|
17
|
+
def summer
|
18
|
+
fetch_sample(SUMMER)
|
19
|
+
end
|
20
|
+
|
21
|
+
def winter
|
22
|
+
fetch_sample(WINTER)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
data/lib/ffaker/ssn.rb
CHANGED
data/lib/ffaker/string.rb
CHANGED
@@ -8,10 +8,10 @@ module FFaker
|
|
8
8
|
BACKSLASH = '\\'
|
9
9
|
DASH = '-'
|
10
10
|
|
11
|
-
LOWERS =
|
12
|
-
UPPERS =
|
11
|
+
LOWERS = Array('a'..'z').freeze
|
12
|
+
UPPERS = Array('A'..'Z').freeze
|
13
13
|
LETTERS = LOWERS + UPPERS
|
14
|
-
NUMBERS =
|
14
|
+
NUMBERS = Array('0'..'9').freeze
|
15
15
|
WORD_CHARS = LETTERS + NUMBERS + ['_']
|
16
16
|
SPACES = [' ', "\t"].freeze
|
17
17
|
ESCAPEABLE_CHARS = ['\\', '/', '.', '(', ')', '[', ']', '{', '}'].freeze
|
@@ -34,7 +34,7 @@ module FFaker
|
|
34
34
|
while tokens.any?
|
35
35
|
token = tokens.shift
|
36
36
|
if token == DASH && tokens.first && result.last
|
37
|
-
result +=
|
37
|
+
result += Array(result.pop..tokens.shift)
|
38
38
|
elsif token == BACKSLASH
|
39
39
|
result << special(tokens.shift)
|
40
40
|
else
|
@@ -50,7 +50,7 @@ module FFaker
|
|
50
50
|
token = tokens.shift
|
51
51
|
|
52
52
|
case token
|
53
|
-
when '?'
|
53
|
+
when '?'
|
54
54
|
# TODO: Let ? generate nothing
|
55
55
|
'' # We already printed its target
|
56
56
|
when '+' then
|
data/lib/ffaker/unit.rb
CHANGED
@@ -1,7 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require 'ostruct'
|
4
|
-
|
5
3
|
module FFaker
|
6
4
|
module Unit
|
7
5
|
extend ModuleUtils
|
@@ -10,9 +8,10 @@ module FFaker
|
|
10
8
|
TIME_UNITS = [
|
11
9
|
{ name: 'Years', abbreviation: 'yr' },
|
12
10
|
{ name: 'Days', abbreviation: 'd' },
|
13
|
-
{ name: 'Hours', abbreviation: '
|
11
|
+
{ name: 'Hours', abbreviation: 'h' },
|
12
|
+
{ name: 'Minutes', abbreviation: 'm' },
|
14
13
|
{ name: 'Seconds', abbreviation: 's' },
|
15
|
-
{ name: 'Milliseconds', abbreviation: '
|
14
|
+
{ name: 'Milliseconds', abbreviation: 'ms' }
|
16
15
|
].freeze
|
17
16
|
TEMPERATURE_UNITS = [
|
18
17
|
{ name: 'Kelvin', abbreviation: 'K' },
|
@@ -21,29 +20,29 @@ module FFaker
|
|
21
20
|
].freeze
|
22
21
|
|
23
22
|
def time_name
|
24
|
-
time
|
23
|
+
time[:name]
|
25
24
|
end
|
26
25
|
|
27
26
|
def time_abbr
|
28
|
-
time
|
27
|
+
time[:abbreviation]
|
29
28
|
end
|
30
29
|
|
31
30
|
def temperature_name
|
32
|
-
temperature
|
31
|
+
temperature[:name]
|
33
32
|
end
|
34
33
|
|
35
34
|
def temperature_abbr
|
36
|
-
temperature
|
35
|
+
temperature[:abbreviation]
|
37
36
|
end
|
38
37
|
|
39
38
|
private
|
40
39
|
|
41
40
|
def time
|
42
|
-
|
41
|
+
fetch_sample(TIME_UNITS)
|
43
42
|
end
|
44
43
|
|
45
44
|
def temperature
|
46
|
-
|
45
|
+
fetch_sample(TEMPERATURE_UNITS)
|
47
46
|
end
|
48
47
|
end
|
49
48
|
end
|
data/lib/ffaker/unit_english.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'ffaker/unit'
|
4
|
-
require 'ostruct'
|
5
4
|
|
6
5
|
module FFaker
|
7
6
|
module UnitEnglish
|
@@ -15,7 +14,7 @@ module FFaker
|
|
15
14
|
{ name: 'foot', abbreviation: 'ft' },
|
16
15
|
{ name: 'yard', abbreviation: 'yd' },
|
17
16
|
{ name: 'furlong', abbreviation: 'fur' },
|
18
|
-
{ name: 'mile', abbreviation: '
|
17
|
+
{ name: 'mile', abbreviation: 'mi' }
|
19
18
|
].freeze
|
20
19
|
MASS_UNITS = [
|
21
20
|
{ name: 'grains', abbreviation: 'gr' },
|
@@ -36,75 +35,75 @@ module FFaker
|
|
36
35
|
{ name: 'cubic yard', abbreviation: 'CY' }
|
37
36
|
].freeze
|
38
37
|
AREA_UNITS = [
|
39
|
-
{ name: 'square inch', abbreviation: 'sq
|
38
|
+
{ name: 'square inch', abbreviation: 'sq in' },
|
40
39
|
{ name: 'square foot', abbreviation: 'sq ft' },
|
41
40
|
{ name: 'square yard', abbreviation: 'sq yd' },
|
42
41
|
{ name: 'acre', abbreviation: 'ac' },
|
43
42
|
{ name: 'section', abbreviation: 's' },
|
44
43
|
{ name: 'square mile', abbreviation: 'sq mi' },
|
45
|
-
{ name: 'township', abbreviation: '
|
44
|
+
{ name: 'township', abbreviation: 'twp' }
|
46
45
|
].freeze
|
47
46
|
|
48
47
|
def mass_name
|
49
|
-
mass
|
48
|
+
mass[:name]
|
50
49
|
end
|
51
50
|
|
52
51
|
def mass_abbr
|
53
|
-
mass
|
52
|
+
mass[:abbreviation]
|
54
53
|
end
|
55
54
|
|
56
55
|
def length_name
|
57
|
-
length
|
56
|
+
length[:name]
|
58
57
|
end
|
59
58
|
|
60
59
|
def length_abbr
|
61
|
-
length
|
60
|
+
length[:abbreviation]
|
62
61
|
end
|
63
62
|
|
64
63
|
def liquid_name
|
65
|
-
liquid
|
64
|
+
liquid[:name]
|
66
65
|
end
|
67
66
|
|
68
67
|
def liquid_abbr
|
69
|
-
liquid
|
68
|
+
liquid[:abbreviation]
|
70
69
|
end
|
71
70
|
|
72
71
|
def volume_name
|
73
|
-
volume
|
72
|
+
volume[:name]
|
74
73
|
end
|
75
74
|
|
76
75
|
def volume_abbr
|
77
|
-
volume
|
76
|
+
volume[:abbreviation]
|
78
77
|
end
|
79
78
|
|
80
79
|
def area_name
|
81
|
-
area
|
80
|
+
area[:name]
|
82
81
|
end
|
83
82
|
|
84
83
|
def area_abbr
|
85
|
-
area
|
84
|
+
area[:abbreviation]
|
86
85
|
end
|
87
86
|
|
88
87
|
private
|
89
88
|
|
90
89
|
def length
|
91
|
-
|
90
|
+
fetch_sample(LENGTH_UNITS)
|
92
91
|
end
|
93
92
|
|
94
93
|
def mass
|
95
|
-
|
94
|
+
fetch_sample(MASS_UNITS)
|
96
95
|
end
|
97
96
|
|
98
97
|
def liquid
|
99
|
-
|
98
|
+
fetch_sample(LIQUID_UNITS)
|
100
99
|
end
|
101
100
|
|
102
101
|
def volume
|
103
|
-
|
102
|
+
fetch_sample(VOLUME_UNITS)
|
104
103
|
end
|
105
104
|
|
106
105
|
def area
|
107
|
-
|
106
|
+
fetch_sample(AREA_UNITS)
|
108
107
|
end
|
109
108
|
end
|
110
109
|
end
|
data/lib/ffaker/unit_metric.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'ffaker/unit'
|
4
|
-
require 'ostruct'
|
5
4
|
|
6
5
|
module FFaker
|
7
6
|
module UnitMetric
|
@@ -37,65 +36,65 @@ module FFaker
|
|
37
36
|
].freeze
|
38
37
|
|
39
38
|
def mass_name
|
40
|
-
mass
|
39
|
+
mass[:name]
|
41
40
|
end
|
42
41
|
|
43
42
|
def mass_abbr
|
44
|
-
mass
|
43
|
+
mass[:abbreviation]
|
45
44
|
end
|
46
45
|
|
47
46
|
def length_name
|
48
|
-
length
|
47
|
+
length[:name]
|
49
48
|
end
|
50
49
|
|
51
50
|
def length_abbr
|
52
|
-
length
|
51
|
+
length[:abbreviation]
|
53
52
|
end
|
54
53
|
|
55
54
|
def liquid_name
|
56
|
-
liquid
|
55
|
+
liquid[:name]
|
57
56
|
end
|
58
57
|
|
59
58
|
def liquid_abbr
|
60
|
-
liquid
|
59
|
+
liquid[:abbreviation]
|
61
60
|
end
|
62
61
|
|
63
62
|
def volume_name
|
64
|
-
volume
|
63
|
+
volume[:name]
|
65
64
|
end
|
66
65
|
|
67
66
|
def volume_abbr
|
68
|
-
volume
|
67
|
+
volume[:abbreviation]
|
69
68
|
end
|
70
69
|
|
71
70
|
def area_name
|
72
|
-
area
|
71
|
+
area[:name]
|
73
72
|
end
|
74
73
|
|
75
74
|
def area_abbr
|
76
|
-
area
|
75
|
+
area[:abbreviation]
|
77
76
|
end
|
78
77
|
|
79
78
|
private
|
80
79
|
|
81
80
|
def length
|
82
|
-
|
81
|
+
fetch_sample(LENGTH_UNITS)
|
83
82
|
end
|
84
83
|
|
85
84
|
def mass
|
86
|
-
|
85
|
+
fetch_sample(MASS_UNITS)
|
87
86
|
end
|
88
87
|
|
89
88
|
def liquid
|
90
|
-
|
89
|
+
fetch_sample(LIQUID_UNITS)
|
91
90
|
end
|
92
91
|
|
93
92
|
def volume
|
94
|
-
|
93
|
+
fetch_sample(VOLUME_UNITS)
|
95
94
|
end
|
96
95
|
|
97
96
|
def area
|
98
|
-
|
97
|
+
fetch_sample(AREA_UNITS)
|
99
98
|
end
|
100
99
|
end
|
101
100
|
end
|