ffaker 2.13.0 → 2.18.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (133) hide show
  1. checksums.yaml +4 -4
  2. data/Changelog.md +31 -0
  3. data/README.md +14 -5
  4. data/REFERENCE.md +1398 -1249
  5. data/Rakefile +3 -9
  6. data/ffaker.gemspec +14 -5
  7. data/lib/ffaker.rb +12 -6
  8. data/lib/ffaker/address_ch.rb +0 -2
  9. data/lib/ffaker/address_ch_de.rb +0 -2
  10. data/lib/ffaker/address_ch_fr.rb +0 -2
  11. data/lib/ffaker/address_ch_it.rb +0 -2
  12. data/lib/ffaker/address_da.rb +0 -2
  13. data/lib/ffaker/address_de.rb +0 -2
  14. data/lib/ffaker/address_fi.rb +0 -2
  15. data/lib/ffaker/address_fr.rb +5 -3
  16. data/lib/ffaker/address_gr.rb +0 -2
  17. data/lib/ffaker/address_id.rb +0 -2
  18. data/lib/ffaker/address_in.rb +0 -2
  19. data/lib/ffaker/address_ja.rb +0 -2
  20. data/lib/ffaker/address_nl.rb +1 -5
  21. data/lib/ffaker/address_ru.rb +0 -2
  22. data/lib/ffaker/address_se.rb +0 -2
  23. data/lib/ffaker/address_sn.rb +0 -2
  24. data/lib/ffaker/address_ua.rb +0 -2
  25. data/lib/ffaker/address_uk.rb +0 -2
  26. data/lib/ffaker/address_us.rb +0 -2
  27. data/lib/ffaker/{animals.rb → animal.rb} +1 -1
  28. data/lib/ffaker/{animals_cn.rb → animal_cn.rb} +0 -0
  29. data/lib/ffaker/animal_es.rb +12 -0
  30. data/lib/ffaker/{animals_us.rb → animal_us.rb} +0 -0
  31. data/lib/ffaker/bacon_ipsum.rb +0 -2
  32. data/lib/ffaker/code.rb +17 -0
  33. data/lib/ffaker/company_ja.rb +24 -0
  34. data/lib/ffaker/data/address_fr/region +27 -0
  35. data/lib/ffaker/data/animal_es/common_names +135 -0
  36. data/lib/ffaker/data/filesystem/extension +31 -31
  37. data/lib/ffaker/data/food_pl/diary +14 -0
  38. data/lib/ffaker/data/food_pl/fermented +13 -0
  39. data/lib/ffaker/data/food_pl/fruits +34 -0
  40. data/lib/ffaker/data/food_pl/herbs +20 -0
  41. data/lib/ffaker/data/food_pl/meats +9 -0
  42. data/lib/ffaker/data/food_pl/preserves +10 -0
  43. data/lib/ffaker/data/food_pl/spices +26 -0
  44. data/lib/ffaker/data/food_pl/vegetables +45 -0
  45. data/lib/ffaker/data/freedom_ipsum/freedom_words +161 -0
  46. data/lib/ffaker/data/lorem/words +0 -67
  47. data/lib/ffaker/data/phone_number_ja/four_disit_area_codes +41 -0
  48. data/lib/ffaker/data/phone_number_ja/one_disit_area_codes +3 -0
  49. data/lib/ffaker/data/phone_number_ja/three_disit_area_codes +296 -0
  50. data/lib/ffaker/data/phone_number_ja/two_disit_area_codes +48 -0
  51. data/lib/ffaker/dizzle_ipsum.rb +0 -2
  52. data/lib/ffaker/education.rb +4 -8
  53. data/lib/ffaker/education_cn.rb +3 -6
  54. data/lib/ffaker/filesystem.rb +7 -7
  55. data/lib/ffaker/food_pl.rb +65 -0
  56. data/lib/ffaker/freedom_ipsum.rb +20 -0
  57. data/lib/ffaker/healthcare_ipsum.rb +0 -2
  58. data/lib/ffaker/hipster_ipsum.rb +0 -2
  59. data/lib/ffaker/identification_es_cl.rb +0 -2
  60. data/lib/ffaker/identification_es_co.rb +0 -1
  61. data/lib/ffaker/identification_in.rb +15 -0
  62. data/lib/ffaker/identification_kr.rb +1 -1
  63. data/lib/ffaker/identification_mx.rb +1 -3
  64. data/lib/ffaker/identification_tw.rb +23 -0
  65. data/lib/ffaker/image.rb +8 -11
  66. data/lib/ffaker/internet.rb +1 -1
  67. data/lib/ffaker/internet_se.rb +1 -3
  68. data/lib/ffaker/lorem_cn.rb +0 -1
  69. data/lib/ffaker/name_cs.rb +0 -2
  70. data/lib/ffaker/name_da.rb +0 -2
  71. data/lib/ffaker/name_de.rb +0 -2
  72. data/lib/ffaker/name_mx.rb +2 -4
  73. data/lib/ffaker/name_nb.rb +0 -2
  74. data/lib/ffaker/name_nl.rb +0 -2
  75. data/lib/ffaker/name_ph.rb +0 -2
  76. data/lib/ffaker/name_ru.rb +0 -2
  77. data/lib/ffaker/name_se.rb +0 -2
  78. data/lib/ffaker/name_ua.rb +0 -2
  79. data/lib/ffaker/phone_number_br.rb +2 -2
  80. data/lib/ffaker/phone_number_da.rb +0 -1
  81. data/lib/ffaker/phone_number_ja.rb +88 -0
  82. data/lib/ffaker/product.rb +1 -1
  83. data/lib/ffaker/ssn.rb +1 -3
  84. data/lib/ffaker/string.rb +5 -5
  85. data/lib/ffaker/unit.rb +9 -10
  86. data/lib/ffaker/unit_english.rb +18 -21
  87. data/lib/ffaker/unit_metric.rb +15 -18
  88. data/lib/ffaker/utils/unique_utils.rb +0 -2
  89. data/lib/ffaker/vehicle.rb +1 -1
  90. data/lib/version.rb +5 -0
  91. data/scripts/benchmark.rb +10 -11
  92. data/test/helper.rb +3 -3
  93. data/test/test_address_au.rb +2 -2
  94. data/test/test_address_br.rb +1 -1
  95. data/test/test_address_fi.rb +2 -2
  96. data/test/test_address_fr.rb +1 -1
  97. data/test/test_address_id.rb +1 -1
  98. data/test/test_address_ja.rb +1 -1
  99. data/test/test_address_nl.rb +1 -1
  100. data/test/test_address_se.rb +2 -2
  101. data/test/test_animal_es.rb +17 -0
  102. data/test/test_array_utils.rb +0 -1
  103. data/test/test_aws.rb +1 -1
  104. data/test/test_bank.rb +2 -3
  105. data/test/test_book.rb +4 -4
  106. data/test/test_code.rb +22 -1
  107. data/test/test_company_ja.rb +28 -0
  108. data/test/{test_faker.rb → test_ffaker.rb} +5 -1
  109. data/test/test_filesystem.rb +11 -3
  110. data/test/test_food_pl.rb +61 -0
  111. data/test/test_freedom_ipsum.rb +21 -0
  112. data/test/test_geolocation.rb +2 -2
  113. data/test/test_healthcare_ru.rb +1 -1
  114. data/test/test_html_ipsum.rb +1 -1
  115. data/test/test_identification_co.rb +1 -1
  116. data/test/test_identification_es_cl.rb +1 -1
  117. data/test/test_identification_in.rb +20 -0
  118. data/test/test_identification_tw.rb +17 -0
  119. data/test/test_image.rb +4 -4
  120. data/test/test_internet_se.rb +1 -1
  121. data/test/test_lorem.rb +4 -0
  122. data/test/test_lorem_fr.rb +9 -7
  123. data/test/test_lorem_pl.rb +1 -1
  124. data/test/test_lorem_ru.rb +1 -1
  125. data/test/test_lorem_ua.rb +1 -1
  126. data/test/test_music.rb +4 -4
  127. data/test/test_phone_number_ja.rb +63 -0
  128. data/test/test_ssn_se.rb +3 -3
  129. data/test/test_string.rb +3 -3
  130. data/test/test_time.rb +2 -3
  131. data/test/test_tweet.rb +4 -4
  132. data/test/test_vehicle.rb +2 -2
  133. metadata +214 -162
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'ffaker/name'
4
-
5
3
  module FFaker
6
4
  module NameNB
7
5
  include FFaker::Name
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'ffaker/name'
4
-
5
3
  module FFaker
6
4
  module NameNL
7
5
  include FFaker::Name
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'ffaker/name'
4
-
5
3
  module FFaker
6
4
  # Philippine names based on http://en.wikipedia.org/wiki/Philippine_name
7
5
  module NamePH
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'ffaker/name'
4
-
5
3
  module FFaker
6
4
  module NameRU
7
5
  extend ModuleUtils
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'ffaker/name'
4
-
5
3
  module FFaker
6
4
  module NameSE
7
5
  include FFaker::Name
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'ffaker/name'
4
-
5
3
  module FFaker
6
4
  module NameUA
7
5
  extend ModuleUtils
@@ -14,8 +14,8 @@ module FFaker
14
14
 
15
15
  COUNTRY_PREFIX = '+55'
16
16
  AREA_CODE = [
17
- 10..19, 21..22, 24, 27..28, 31..35, 37..38, 41..49,
18
- 51..54, 55, 61..69, 71..75, 77, 79, 81..89, 91..99
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
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module FFaker
4
- # Based on information from http://en.wikipedia.org/wiki/Telephone_numbers_in_Australia
5
4
  module PhoneNumberDA
6
5
  extend ModuleUtils
7
6
  extend self
@@ -0,0 +1,88 @@
1
+ # frozen_string_literal: true
2
+
3
+ # sourse: https://www.soumu.go.jp/main_sosiki/joho_tsusin/top/tel_number/number_shitei.html#kotei-denwa
4
+
5
+ module FFaker
6
+ module PhoneNumberJA
7
+ extend ModuleUtils
8
+ extend self
9
+
10
+ JAPAN_PREFIX = '0'
11
+ JAPAN_COUNTRY_CODE = '+81'
12
+
13
+ ONE_DISIT_FORMAT = '%s #### ####'
14
+ TWO_DISIT_FORMAT = '%s ### ####'
15
+ THREE_DISIT_FORMAT = '%s ## ####'
16
+ FOUR_DISIT_FORMAT = '%s # ####'
17
+
18
+ MOBILE_PHONE_PREFIXES = %w[90 80 70].freeze
19
+ IP_PHONE_PREFIX = '50'
20
+ MOBILE_NUMBER_FORMAT = '%s #### ####'
21
+
22
+ def home_phone_number
23
+ disit = rand(1..4)
24
+ FFaker.numerify("#{JAPAN_PREFIX}#{home_phone_number_format(disit)}")
25
+ end
26
+
27
+ def mobile_phone_number
28
+ FFaker.numerify("#{JAPAN_PREFIX}#{mobile_phone_number_format}")
29
+ end
30
+
31
+ def phone_number
32
+ case rand(0..1)
33
+ when 0 then home_phone_number
34
+ when 1 then mobile_phone_number
35
+ end
36
+ end
37
+
38
+ def international_home_phone_number
39
+ disit = rand(1..4)
40
+ FFaker.numerify("#{JAPAN_COUNTRY_CODE} #{home_phone_number_format(disit)}")
41
+ end
42
+
43
+ def international_mobile_phone_number
44
+ FFaker.numerify("#{JAPAN_COUNTRY_CODE} #{mobile_phone_number_format}")
45
+ end
46
+
47
+ def international_phone_number
48
+ case rand(0..1)
49
+ when 0 then international_mobile_phone_number
50
+ when 1 then international_home_phone_number
51
+ end
52
+ end
53
+
54
+ def home_phone_prefix(disit = nil)
55
+ case disit
56
+ when 1 then fetch_sample(ONE_DISIT_AREA_CODES)
57
+ when 2 then fetch_sample(TWO_DISIT_AREA_CODES)
58
+ when 3 then fetch_sample(THREE_DISIT_AREA_CODES)
59
+ when 4 then fetch_sample(FOUR_DISIT_AREA_CODES)
60
+ end
61
+ end
62
+
63
+ def home_phone_number_format(disit)
64
+ prefix = home_phone_prefix(disit)
65
+ select_home_phone_format(disit) % prefix
66
+ end
67
+
68
+ def mobile_prefix
69
+ fetch_sample(MOBILE_PHONE_PREFIXES)
70
+ end
71
+
72
+ def mobile_phone_number_format
73
+ prefix = mobile_prefix
74
+ MOBILE_NUMBER_FORMAT % prefix
75
+ end
76
+
77
+ private
78
+
79
+ def select_home_phone_format(disit)
80
+ case disit
81
+ when 1 then ONE_DISIT_FORMAT
82
+ when 2 then TWO_DISIT_FORMAT
83
+ when 3 then THREE_DISIT_FORMAT
84
+ when 4 then FOUR_DISIT_FORMAT
85
+ end
86
+ end
87
+ end
88
+ end
@@ -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) then
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
data/lib/ffaker/ssn.rb CHANGED
@@ -16,9 +16,7 @@ module FFaker
16
16
  third_group = rand(1..9999)
17
17
 
18
18
  group_numbers = [first_group, second_group, third_group]
19
- result = format('%.3d-%.2d-%.4d', *group_numbers)
20
-
21
- result
19
+ format('%.3d-%.2d-%.4d', *group_numbers)
22
20
  end
23
21
  end
24
22
  end
data/lib/ffaker/string.rb CHANGED
@@ -8,10 +8,10 @@ module FFaker
8
8
  BACKSLASH = '\\'
9
9
  DASH = '-'
10
10
 
11
- LOWERS = [*'a'..'z'].freeze
12
- UPPERS = [*'A'..'Z'].freeze
11
+ LOWERS = Array('a'..'z').freeze
12
+ UPPERS = Array('A'..'Z').freeze
13
13
  LETTERS = LOWERS + UPPERS
14
- NUMBERS = [*'0'..'9'].freeze
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 += [*result.pop..tokens.shift]
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 '?' then
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: 'Minutes' },
11
+ { name: 'Hours', abbreviation: 'h' },
12
+ { name: 'Minutes', abbreviation: 'm' },
14
13
  { name: 'Seconds', abbreviation: 's' },
15
- { name: 'Milliseconds', abbreviation: 'msec' }
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.name
23
+ time[:name]
25
24
  end
26
25
 
27
26
  def time_abbr
28
- time.abbreviation
27
+ time[:abbreviation]
29
28
  end
30
29
 
31
30
  def temperature_name
32
- temperature.name
31
+ temperature[:name]
33
32
  end
34
33
 
35
34
  def temperature_abbr
36
- temperature.abbreviation
35
+ temperature[:abbreviation]
37
36
  end
38
37
 
39
38
  private
40
39
 
41
40
  def time
42
- OpenStruct.new(fetch_sample(TIME_UNITS))
41
+ fetch_sample(TIME_UNITS)
43
42
  end
44
43
 
45
44
  def temperature
46
- OpenStruct.new(fetch_sample(TEMPERATURE_UNITS))
45
+ fetch_sample(TEMPERATURE_UNITS)
47
46
  end
48
47
  end
49
48
  end
@@ -1,8 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'ffaker/unit'
4
- require 'ostruct'
5
-
6
3
  module FFaker
7
4
  module UnitEnglish
8
5
  include FFaker::Unit
@@ -15,7 +12,7 @@ module FFaker
15
12
  { name: 'foot', abbreviation: 'ft' },
16
13
  { name: 'yard', abbreviation: 'yd' },
17
14
  { name: 'furlong', abbreviation: 'fur' },
18
- { name: 'mile', abbreviation: 'm' }
15
+ { name: 'mile', abbreviation: 'mi' }
19
16
  ].freeze
20
17
  MASS_UNITS = [
21
18
  { name: 'grains', abbreviation: 'gr' },
@@ -36,75 +33,75 @@ module FFaker
36
33
  { name: 'cubic yard', abbreviation: 'CY' }
37
34
  ].freeze
38
35
  AREA_UNITS = [
39
- { name: 'square inch', abbreviation: 'sq. in' },
36
+ { name: 'square inch', abbreviation: 'sq in' },
40
37
  { name: 'square foot', abbreviation: 'sq ft' },
41
38
  { name: 'square yard', abbreviation: 'sq yd' },
42
39
  { name: 'acre', abbreviation: 'ac' },
43
40
  { name: 'section', abbreviation: 's' },
44
41
  { name: 'square mile', abbreviation: 'sq mi' },
45
- { name: 'township', abbreviation: 'Twp' }
42
+ { name: 'township', abbreviation: 'twp' }
46
43
  ].freeze
47
44
 
48
45
  def mass_name
49
- mass.name
46
+ mass[:name]
50
47
  end
51
48
 
52
49
  def mass_abbr
53
- mass.abbreviation
50
+ mass[:abbreviation]
54
51
  end
55
52
 
56
53
  def length_name
57
- length.name
54
+ length[:name]
58
55
  end
59
56
 
60
57
  def length_abbr
61
- length.abbreviation
58
+ length[:abbreviation]
62
59
  end
63
60
 
64
61
  def liquid_name
65
- liquid.name
62
+ liquid[:name]
66
63
  end
67
64
 
68
65
  def liquid_abbr
69
- liquid.abbreviation
66
+ liquid[:abbreviation]
70
67
  end
71
68
 
72
69
  def volume_name
73
- volume.name
70
+ volume[:name]
74
71
  end
75
72
 
76
73
  def volume_abbr
77
- volume.abbreviation
74
+ volume[:abbreviation]
78
75
  end
79
76
 
80
77
  def area_name
81
- area.name
78
+ area[:name]
82
79
  end
83
80
 
84
81
  def area_abbr
85
- area.abbreviation
82
+ area[:abbreviation]
86
83
  end
87
84
 
88
85
  private
89
86
 
90
87
  def length
91
- OpenStruct.new(fetch_sample(LENGTH_UNITS))
88
+ fetch_sample(LENGTH_UNITS)
92
89
  end
93
90
 
94
91
  def mass
95
- OpenStruct.new(fetch_sample(MASS_UNITS))
92
+ fetch_sample(MASS_UNITS)
96
93
  end
97
94
 
98
95
  def liquid
99
- OpenStruct.new(fetch_sample(LIQUID_UNITS))
96
+ fetch_sample(LIQUID_UNITS)
100
97
  end
101
98
 
102
99
  def volume
103
- OpenStruct.new(fetch_sample(VOLUME_UNITS))
100
+ fetch_sample(VOLUME_UNITS)
104
101
  end
105
102
 
106
103
  def area
107
- OpenStruct.new(fetch_sample(AREA_UNITS))
104
+ fetch_sample(AREA_UNITS)
108
105
  end
109
106
  end
110
107
  end
@@ -1,8 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'ffaker/unit'
4
- require 'ostruct'
5
-
6
3
  module FFaker
7
4
  module UnitMetric
8
5
  include FFaker::Unit
@@ -37,65 +34,65 @@ module FFaker
37
34
  ].freeze
38
35
 
39
36
  def mass_name
40
- mass.name
37
+ mass[:name]
41
38
  end
42
39
 
43
40
  def mass_abbr
44
- mass.abbreviation
41
+ mass[:abbreviation]
45
42
  end
46
43
 
47
44
  def length_name
48
- length.name
45
+ length[:name]
49
46
  end
50
47
 
51
48
  def length_abbr
52
- length.abbreviation
49
+ length[:abbreviation]
53
50
  end
54
51
 
55
52
  def liquid_name
56
- liquid.name
53
+ liquid[:name]
57
54
  end
58
55
 
59
56
  def liquid_abbr
60
- liquid.abbreviation
57
+ liquid[:abbreviation]
61
58
  end
62
59
 
63
60
  def volume_name
64
- volume.name
61
+ volume[:name]
65
62
  end
66
63
 
67
64
  def volume_abbr
68
- volume.abbreviation
65
+ volume[:abbreviation]
69
66
  end
70
67
 
71
68
  def area_name
72
- area.name
69
+ area[:name]
73
70
  end
74
71
 
75
72
  def area_abbr
76
- area.abbreviation
73
+ area[:abbreviation]
77
74
  end
78
75
 
79
76
  private
80
77
 
81
78
  def length
82
- OpenStruct.new(fetch_sample(LENGTH_UNITS))
79
+ fetch_sample(LENGTH_UNITS)
83
80
  end
84
81
 
85
82
  def mass
86
- OpenStruct.new(fetch_sample(MASS_UNITS))
83
+ fetch_sample(MASS_UNITS)
87
84
  end
88
85
 
89
86
  def liquid
90
- OpenStruct.new(fetch_sample(LIQUID_UNITS))
87
+ fetch_sample(LIQUID_UNITS)
91
88
  end
92
89
 
93
90
  def volume
94
- OpenStruct.new(fetch_sample(VOLUME_UNITS))
91
+ fetch_sample(VOLUME_UNITS)
95
92
  end
96
93
 
97
94
  def area
98
- OpenStruct.new(fetch_sample(AREA_UNITS))
95
+ fetch_sample(AREA_UNITS)
99
96
  end
100
97
  end
101
98
  end