ffaker 2.0.0 → 2.1.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 +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
|