ffaker 2.13.0 → 2.18.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.
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