ffaker 2.0.0 → 2.1.0
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 +32 -0
- data/README.md +7 -6
- data/REFERENCE.md +1355 -0
- data/Rakefile +6 -6
- data/ffaker.gemspec +16 -3
- data/lib/ffaker.rb +1 -1
- data/lib/ffaker/address_ca.rb +3 -3
- data/lib/ffaker/avatar.rb +20 -0
- data/lib/ffaker/bacon_ipsum.rb +1 -1
- data/lib/ffaker/data/job_cn/job_nouns +300 -0
- data/lib/ffaker/data/sport/names +34 -0
- data/lib/ffaker/dizzle_ipsum.rb +1 -1
- data/lib/ffaker/healthcare_ipsum.rb +1 -1
- data/lib/ffaker/hipster_ipsum.rb +1 -1
- data/lib/ffaker/html_ipsum.rb +1 -1
- data/lib/ffaker/identification_kr.rb +20 -0
- data/lib/ffaker/identification_mx.rb +3 -3
- data/lib/ffaker/internet.rb +3 -3
- data/lib/ffaker/internet_se.rb +1 -1
- data/lib/ffaker/job_cn.rb +12 -0
- data/lib/ffaker/job_fr.rb +6 -2
- data/lib/ffaker/locale.rb +1 -1
- data/lib/ffaker/lorem.rb +7 -5
- data/lib/ffaker/lorem_ar.rb +1 -1
- data/lib/ffaker/lorem_cn.rb +1 -1
- data/lib/ffaker/lorem_fr.rb +1 -1
- data/lib/ffaker/lorem_kr.rb +1 -1
- data/lib/ffaker/movie.rb +6 -0
- data/lib/ffaker/phone_number.rb +46 -17
- data/lib/ffaker/product.rb +1 -1
- data/lib/ffaker/skill.rb +1 -1
- data/lib/ffaker/sport.rb +10 -0
- data/lib/ffaker/string.rb +22 -11
- data/lib/ffaker/utils/array_utils.rb +4 -3
- data/lib/ffaker/vehicle.rb +1 -1
- data/scripts/reference.rb +89 -0
- data/test/test_address_ca.rb +6 -4
- data/test/test_array_utils.rb +3 -3
- data/test/test_avatar.rb +50 -0
- data/test/test_company.rb +8 -6
- data/test/test_identification.rb +5 -4
- data/test/test_identification_kr.rb +13 -0
- data/test/test_internet.rb +4 -0
- data/test/test_job.rb +1 -2
- data/test/test_job_cn.rb +17 -0
- data/test/test_job_fr.rb +4 -7
- data/test/test_job_ja.rb +1 -1
- data/test/test_job_kr.rb +1 -1
- data/test/test_locale.rb +21 -0
- data/test/test_lorem_kr.rb +1 -1
- data/test/test_movie.rb +8 -0
- data/test/test_name.rb +3 -3
- data/test/test_name_br.rb +7 -8
- data/test/test_name_cs.rb +8 -6
- data/test/test_name_de.rb +3 -3
- data/test/test_name_fr.rb +15 -17
- data/test/test_name_ga.rb +12 -14
- data/test/test_name_it.rb +14 -15
- data/test/test_name_ja.rb +1 -1
- data/test/test_name_mx.rb +82 -80
- data/test/test_name_nb.rb +6 -9
- data/test/test_name_nl.rb +3 -3
- data/test/test_name_ph.rb +12 -2
- data/test/test_name_ru.rb +14 -10
- data/test/test_name_se.rb +6 -9
- data/test/test_name_sn.rb +39 -52
- data/test/test_name_th.rb +7 -9
- data/test/test_phone_number.rb +9 -0
- data/test/test_sports.rb +13 -0
- data/test/test_string.rb +26 -16
- data/test/test_units.rb +8 -10
- data/test/test_units_english.rb +15 -22
- data/test/test_units_metric.rb +15 -21
- metadata +22 -4
@@ -0,0 +1,34 @@
|
|
1
|
+
Surfing
|
2
|
+
Bodyboarding
|
3
|
+
Wakeboarding
|
4
|
+
Kitesurfing
|
5
|
+
Mountain Bike
|
6
|
+
Longboard
|
7
|
+
Skateboarding
|
8
|
+
Windsurfing
|
9
|
+
Bodysurfing
|
10
|
+
BMX
|
11
|
+
Base jumping
|
12
|
+
Ski
|
13
|
+
Skimboarding
|
14
|
+
Snowboarding
|
15
|
+
Sandboarding
|
16
|
+
Soccer
|
17
|
+
Volleyball
|
18
|
+
Football
|
19
|
+
Hockey
|
20
|
+
Basketball
|
21
|
+
Rugby
|
22
|
+
Running
|
23
|
+
Jiu Jitsu
|
24
|
+
Mixed Martial Arts
|
25
|
+
Karate
|
26
|
+
Judo
|
27
|
+
Wrestling
|
28
|
+
Kickboxing
|
29
|
+
Muay-Thai
|
30
|
+
Rapel
|
31
|
+
Formula One
|
32
|
+
Formula Indy
|
33
|
+
Nascar
|
34
|
+
Rafting
|
data/lib/ffaker/dizzle_ipsum.rb
CHANGED
data/lib/ffaker/hipster_ipsum.rb
CHANGED
data/lib/ffaker/html_ipsum.rb
CHANGED
@@ -0,0 +1,20 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module FFaker
|
4
|
+
module IdentificationKr
|
5
|
+
extend ModuleUtils
|
6
|
+
extend self
|
7
|
+
|
8
|
+
# Resident Registration Number
|
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
|
+
def rrn
|
11
|
+
birth = [*Date.new(1970, 1, 1)..Date.new(1999, 12, 31)].sample.strftime("%y%d%m")
|
12
|
+
sex = [1, 2].sample
|
13
|
+
loc = FFaker.numerify("#{[*"00".."95"].sample}###")
|
14
|
+
a, b, c, d, e, f, g, h, i, j, k, l = "#{birth}#{sex}#{loc}".split(//).map(&:to_i)
|
15
|
+
checksum = (11 - (2 * a + 3 * b + 4 * c + 5 * d + 6 * e + 7 * f + 8 * g + 9 * h + 2 * i + 3 * j + 4 * k + 5 * l) % 11) % 10
|
16
|
+
"#{birth}-#{sex}#{loc}#{checksum}"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
@@ -18,7 +18,7 @@ module FFaker
|
|
18
18
|
consonants_n = CONSONANTS + ["Ñ"]
|
19
19
|
all_letters = consonants_n + VOWELS
|
20
20
|
date = ::Time.at(rand * ::Time.now.to_f).strftime("%y%m%d")
|
21
|
-
"#{consonants_n.sample}#{VOWELS.sample}#{
|
21
|
+
"#{consonants_n.sample}#{VOWELS.sample}#{all_letters.sample(2).join}#{date}#{HOMOCLAVE.sample(3).join}"
|
22
22
|
end
|
23
23
|
|
24
24
|
# http://es.wikipedia.org/wiki/Registro_Federal_de_Contribuyentes_(M%C3%A9xico)
|
@@ -27,7 +27,7 @@ module FFaker
|
|
27
27
|
consonants_n_amp = CONSONANTS + ["Ñ", "&"]
|
28
28
|
all_letters = consonants_n_amp + VOWELS
|
29
29
|
date = ::Time.at(rand * ::Time.now.to_f).strftime("%y%m%d")
|
30
|
-
"#{
|
30
|
+
"#{all_letters.sample(3).join}#{date}#{HOMOCLAVE.sample(3).join}"
|
31
31
|
end
|
32
32
|
|
33
33
|
# http://es.wikipedia.org/wiki/Registro_Federal_de_Contribuyentes_(M%C3%A9xico)
|
@@ -42,7 +42,7 @@ module FFaker
|
|
42
42
|
all_letters = CONSONANTS + VOWELS
|
43
43
|
hm = ["H","M"]
|
44
44
|
date = ::Time.at(rand * ::Time.now.to_f).strftime("%y%m%d")
|
45
|
-
"#{CONSONANTS.sample}#{VOWELS.sample}#{
|
45
|
+
"#{CONSONANTS.sample}#{VOWELS.sample}#{all_letters.sample(2).join}#{date}#{hm.sample}#{ESTADOS_CURP.sample}#{CONSONANTS.sample(3).join}#{HOMOCLAVE.sample}#{rand(10)}"
|
46
46
|
end
|
47
47
|
end
|
48
48
|
end
|
data/lib/ffaker/internet.rb
CHANGED
@@ -26,12 +26,12 @@ module FFaker
|
|
26
26
|
end
|
27
27
|
|
28
28
|
def safe_email(name = nil)
|
29
|
-
[user_name(name), 'example.'+ %w[org com net].
|
29
|
+
[user_name(name), 'example.'+ %w[org com net].sample].join('@')
|
30
30
|
end
|
31
31
|
|
32
32
|
def user_name(name = nil)
|
33
33
|
if name
|
34
|
-
parts =
|
34
|
+
parts = name.scan(/\w+/).shuffle.join(%w(. _).sample)
|
35
35
|
parts.downcase
|
36
36
|
else
|
37
37
|
case rand(2)
|
@@ -84,7 +84,7 @@ module FFaker
|
|
84
84
|
while temp.length < min_length
|
85
85
|
temp += Lorem.word
|
86
86
|
end
|
87
|
-
if max_length
|
87
|
+
if max_length >= min_length && temp.length > max_length
|
88
88
|
temp = temp.slice(0, max_length)
|
89
89
|
end
|
90
90
|
|
data/lib/ffaker/internet_se.rb
CHANGED
data/lib/ffaker/job_fr.rb
CHANGED
@@ -5,10 +5,14 @@ module FFaker
|
|
5
5
|
extend ModuleUtils
|
6
6
|
extend self
|
7
7
|
|
8
|
-
JOB_ADJECTIVES =
|
8
|
+
JOB_ADJECTIVES = %w(general adjoint associé)
|
9
9
|
|
10
10
|
def title
|
11
|
-
|
11
|
+
if rand(2).zero?
|
12
|
+
"#{JOB_PREFIXES.sample} #{JOB_ADJECTIVES.sample} #{JOB_NOUNS.sample}"
|
13
|
+
else
|
14
|
+
"#{JOB_PREFIXES.sample} #{JOB_NOUNS.sample}"
|
15
|
+
end
|
12
16
|
end
|
13
17
|
end
|
14
18
|
end
|
data/lib/ffaker/locale.rb
CHANGED
@@ -15,7 +15,7 @@ module FFaker
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def language(given_code = nil)
|
18
|
-
language_index = LANGUAGE_CODE.index(given_code.upcase)
|
18
|
+
language_index = LANGUAGE_CODE.index(given_code && given_code.upcase)
|
19
19
|
if given_code && language_index
|
20
20
|
LANGUAGE[language_index]
|
21
21
|
else
|
data/lib/ffaker/lorem.rb
CHANGED
@@ -15,14 +15,16 @@ module FFaker
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def words(num = 3)
|
18
|
-
WORDS.
|
18
|
+
WORDS.sample(num)
|
19
19
|
end
|
20
20
|
|
21
21
|
def sentence(word_count = 4)
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
22
|
+
first_word, *last_words = words(word_count + rand(5) + 1)
|
23
|
+
if last_words.nil?
|
24
|
+
first_word.capitalize
|
25
|
+
else
|
26
|
+
"#{first_word.capitalize} #{last_words.join(' ')}."
|
27
|
+
end
|
26
28
|
end
|
27
29
|
|
28
30
|
alias_method :phrase, :sentence
|
data/lib/ffaker/lorem_ar.rb
CHANGED
data/lib/ffaker/lorem_cn.rb
CHANGED
data/lib/ffaker/lorem_fr.rb
CHANGED
data/lib/ffaker/lorem_kr.rb
CHANGED
data/lib/ffaker/movie.rb
CHANGED
@@ -11,6 +11,8 @@ module FFaker
|
|
11
11
|
]
|
12
12
|
COLORS = %w{Red Yellow Black White}
|
13
13
|
|
14
|
+
RATINGS = %w(G PG PG-13 R NC-17) # According to MPAA
|
15
|
+
|
14
16
|
def title
|
15
17
|
case rand(4)
|
16
18
|
when 0 then title_with_prefix
|
@@ -20,6 +22,10 @@ module FFaker
|
|
20
22
|
end
|
21
23
|
end
|
22
24
|
|
25
|
+
def rating
|
26
|
+
RATINGS.sample
|
27
|
+
end
|
28
|
+
|
23
29
|
private
|
24
30
|
|
25
31
|
def title_with_prefix
|
data/lib/ffaker/phone_number.rb
CHANGED
@@ -7,27 +7,56 @@ module FFaker
|
|
7
7
|
|
8
8
|
def phone_number
|
9
9
|
FFaker.numerify case rand(20)
|
10
|
-
when 0 then
|
11
|
-
when 1 then
|
12
|
-
when 2 then
|
13
|
-
when 3..4 then
|
14
|
-
when 5 then
|
15
|
-
when 6 then
|
16
|
-
when 7 then
|
17
|
-
when 8..9 then
|
18
|
-
when 10 then
|
19
|
-
when 11 then
|
20
|
-
when 12 then
|
21
|
-
when 13..14 then
|
22
|
-
when 15 then
|
23
|
-
when 16 then
|
24
|
-
when 17 then
|
25
|
-
when 18..19 then
|
10
|
+
when 0 then "#{area_code}-###-#### x#####"
|
11
|
+
when 1 then "#{area_code}-###-#### x####"
|
12
|
+
when 2 then "#{area_code}-###-#### x###"
|
13
|
+
when 3..4 then "#{area_code}-###-####"
|
14
|
+
when 5 then "#{area_code}.###.#### x#####"
|
15
|
+
when 6 then "#{area_code}.###.#### x####"
|
16
|
+
when 7 then "#{area_code}.###.#### x###"
|
17
|
+
when 8..9 then "#{area_code}.###.####"
|
18
|
+
when 10 then "(#{area_code})###-#### x#####"
|
19
|
+
when 11 then "(#{area_code})###-#### x####"
|
20
|
+
when 12 then "(#{area_code})###-#### x###"
|
21
|
+
when 13..14 then "(#{area_code})###-####"
|
22
|
+
when 15 then "1-#{area_code}-###-#### x#####"
|
23
|
+
when 16 then "1-#{area_code}-###-#### x####"
|
24
|
+
when 17 then "1-#{area_code}-###-#### x###"
|
25
|
+
when 18..19 then "1-#{area_code}-###-####"
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
29
|
+
def area_code
|
30
|
+
# The North American Numbering Plan (NANP) does not permit the digits 0
|
31
|
+
# and 1 as the leading digit of an area code.
|
32
|
+
# https://en.wikipedia.org/wiki/List_of_North_American_Numbering_Plan_area_codes
|
33
|
+
rand(201..999)
|
34
|
+
end
|
35
|
+
|
29
36
|
def short_phone_number
|
30
|
-
FFaker.numerify(
|
37
|
+
FFaker.numerify("#{area_code}-###-####")
|
38
|
+
end
|
39
|
+
|
40
|
+
def imei(serial_number=nil)
|
41
|
+
# IMEI Format:
|
42
|
+
# AA-BBBBBB-CCCCCC-D
|
43
|
+
|
44
|
+
rbi = "00" # Test IMEI for countries with 2-digit country codes
|
45
|
+
tac = "#{rbi}124500" # iPhone
|
46
|
+
|
47
|
+
serial_number ||= rand(1_000_000)
|
48
|
+
serial_number = sprintf('%06d', serial_number)
|
49
|
+
|
50
|
+
imei_base = tac + serial_number
|
51
|
+
|
52
|
+
check_digit = 0
|
53
|
+
base_digits = imei_base.split('').map(&:to_i)
|
54
|
+
base_digits.each_with_index do |digit, i|
|
55
|
+
check_digit += i.even? ? 2*digit : digit
|
56
|
+
end
|
57
|
+
check_digit = (10 - check_digit % 10) % 10
|
58
|
+
|
59
|
+
"#{imei_base}#{check_digit}"
|
31
60
|
end
|
32
61
|
|
33
62
|
end
|
data/lib/ffaker/product.rb
CHANGED
data/lib/ffaker/skill.rb
CHANGED
data/lib/ffaker/sport.rb
ADDED
data/lib/ffaker/string.rb
CHANGED
@@ -6,13 +6,14 @@ module FFaker
|
|
6
6
|
extend self
|
7
7
|
|
8
8
|
BACKSLASH = '\\'
|
9
|
+
DASH = '-'
|
9
10
|
|
10
11
|
LOWERS = [*'a'..'z']
|
11
12
|
UPPERS = [*'A'..'Z']
|
12
13
|
LETTERS = LOWERS + UPPERS
|
13
14
|
NUMBERS = [*'0'..'9']
|
14
15
|
WORD_CHARS = LETTERS + NUMBERS + ['_']
|
15
|
-
SPACES = [
|
16
|
+
SPACES = [' ', "\t"]
|
16
17
|
ESCAPEABLE_CHARS = '\\', '/', '.', '(', ')', '[', ']', '{', '}'
|
17
18
|
|
18
19
|
def from_regexp(exp)
|
@@ -30,12 +31,17 @@ module FFaker
|
|
30
31
|
|
31
32
|
private
|
32
33
|
|
33
|
-
def
|
34
|
+
def generate_range(tokens)
|
34
35
|
result = []
|
35
36
|
while tokens.any?
|
36
37
|
token = tokens.shift
|
37
|
-
token
|
38
|
-
|
38
|
+
if token == DASH && tokens.first && result.last
|
39
|
+
result += [*result.pop..tokens.shift]
|
40
|
+
elsif token == BACKSLASH
|
41
|
+
result << special(tokens.shift)
|
42
|
+
else
|
43
|
+
result << token
|
44
|
+
end
|
39
45
|
end
|
40
46
|
result
|
41
47
|
end
|
@@ -47,18 +53,18 @@ module FFaker
|
|
47
53
|
|
48
54
|
case token
|
49
55
|
when '?' then
|
50
|
-
# TODO: Let ? generate
|
51
|
-
|
56
|
+
# TODO: Let ? generate nothing
|
57
|
+
'' # We already printed its target
|
52
58
|
when '+' then
|
53
59
|
tokens.unshift(token) if rand(2) == 1 # Leave the `+` on to run again
|
54
|
-
|
60
|
+
process_token(@last_token) # Run the last one at least once
|
55
61
|
when '*' then
|
56
62
|
tokens.unshift(token) if rand(2) == 1 # Leave the `*` on to run again
|
57
63
|
return '' if rand(2) == 1 # Or maybe do nothing
|
58
|
-
|
64
|
+
process_token(@last_token) # Else run the last one again
|
65
|
+
else
|
66
|
+
generate_token token, tokens
|
59
67
|
end
|
60
|
-
|
61
|
-
generate_token token, tokens
|
62
68
|
end
|
63
69
|
|
64
70
|
def generate_token(token, tokens)
|
@@ -76,7 +82,10 @@ module FFaker
|
|
76
82
|
set << ch
|
77
83
|
end
|
78
84
|
@last_token = ['['] + set + [']']
|
79
|
-
|
85
|
+
|
86
|
+
process_token([generate_range(set).sample])
|
87
|
+
else
|
88
|
+
token
|
80
89
|
end
|
81
90
|
end
|
82
91
|
|
@@ -86,6 +95,8 @@ module FFaker
|
|
86
95
|
when 'd' then NUMBERS.sample
|
87
96
|
when 's' then SPACES.sample
|
88
97
|
when *ESCAPEABLE_CHARS then token
|
98
|
+
else
|
99
|
+
''
|
89
100
|
end
|
90
101
|
end
|
91
102
|
end
|