ffaker 2.12.0 → 2.17.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 (112) hide show
  1. checksums.yaml +4 -4
  2. data/Changelog.md +28 -0
  3. data/README.md +8 -1
  4. data/REFERENCE.md +1365 -1234
  5. data/Rakefile +0 -6
  6. data/ffaker.gemspec +14 -5
  7. data/lib/ffaker.rb +12 -6
  8. data/lib/ffaker/address_fr.rb +5 -1
  9. data/lib/ffaker/address_nl.rb +1 -3
  10. data/lib/ffaker/address_us.rb +22 -2
  11. data/lib/ffaker/{animals.rb → animal.rb} +0 -0
  12. data/lib/ffaker/{animals_cn.rb → animal_cn.rb} +0 -0
  13. data/lib/ffaker/animal_es.rb +12 -0
  14. data/lib/ffaker/{animals_us.rb → animal_us.rb} +0 -0
  15. data/lib/ffaker/bank.rb +15 -3
  16. data/lib/ffaker/code.rb +17 -0
  17. data/lib/ffaker/color_pl.rb +14 -0
  18. data/lib/ffaker/company_ja.rb +24 -0
  19. data/lib/ffaker/data/address_fr/region +27 -0
  20. data/lib/ffaker/data/address_ja/city +0 -23
  21. data/lib/ffaker/data/address_us/state_abbr +0 -1
  22. data/lib/ffaker/data/animal_es/common_names +135 -0
  23. data/lib/ffaker/data/bank/card_types +12 -0
  24. data/lib/ffaker/data/book/nouns +2 -2
  25. data/lib/ffaker/data/color_pl/names_list +122 -0
  26. data/lib/ffaker/data/filesystem/extension +31 -31
  27. data/lib/ffaker/data/movie/nouns +2 -2
  28. data/lib/ffaker/data/name/first_names_female +0 -230
  29. data/lib/ffaker/data/name/first_names_male +0 -37
  30. data/lib/ffaker/data/sport_pl/summer +53 -0
  31. data/lib/ffaker/data/sport_pl/winter +14 -0
  32. data/lib/ffaker/data/vehicle/color_prefixes +25 -0
  33. data/lib/ffaker/education.rb +4 -8
  34. data/lib/ffaker/education_cn.rb +3 -6
  35. data/lib/ffaker/filesystem.rb +7 -7
  36. data/lib/ffaker/identification_in.rb +15 -0
  37. data/lib/ffaker/identification_kr.rb +2 -2
  38. data/lib/ffaker/identification_mx.rb +1 -1
  39. data/lib/ffaker/identification_pl.rb +77 -0
  40. data/lib/ffaker/identification_tw.rb +23 -0
  41. data/lib/ffaker/internet.rb +4 -6
  42. data/lib/ffaker/internet_se.rb +1 -1
  43. data/lib/ffaker/name_mx.rb +2 -2
  44. data/lib/ffaker/phone_number_br.rb +2 -2
  45. data/lib/ffaker/product.rb +1 -1
  46. data/lib/ffaker/sport_pl.rb +25 -0
  47. data/lib/ffaker/ssn.rb +1 -3
  48. data/lib/ffaker/string.rb +5 -5
  49. data/lib/ffaker/unit.rb +9 -10
  50. data/lib/ffaker/unit_english.rb +18 -19
  51. data/lib/ffaker/unit_metric.rb +15 -16
  52. data/lib/ffaker/utils/random_utils.rb +2 -0
  53. data/lib/ffaker/utils/unique_utils.rb +0 -2
  54. data/lib/ffaker/vehicle.rb +1 -6
  55. data/lib/version.rb +5 -0
  56. data/scripts/benchmark.rb +10 -11
  57. data/test/helper.rb +35 -0
  58. data/test/test_address_au.rb +2 -2
  59. data/test/test_address_br.rb +1 -1
  60. data/test/test_address_fi.rb +2 -2
  61. data/test/test_address_fr.rb +1 -1
  62. data/test/test_address_id.rb +1 -1
  63. data/test/test_address_ja.rb +1 -1
  64. data/test/test_address_nl.rb +1 -1
  65. data/test/test_address_se.rb +2 -2
  66. data/test/test_address_us.rb +9 -0
  67. data/test/test_animal_es.rb +17 -0
  68. data/test/test_array_utils.rb +0 -1
  69. data/test/test_aws.rb +1 -1
  70. data/test/test_bank.rb +41 -5
  71. data/test/test_book.rb +4 -4
  72. data/test/test_code.rb +22 -1
  73. data/test/test_color_pl.rb +13 -0
  74. data/test/test_company_ja.rb +28 -0
  75. data/test/{test_faker.rb → test_ffaker.rb} +5 -1
  76. data/test/test_filesystem.rb +11 -3
  77. data/test/test_geolocation.rb +2 -2
  78. data/test/test_healthcare_ru.rb +1 -1
  79. data/test/test_html_ipsum.rb +1 -1
  80. data/test/test_identification_co.rb +2 -2
  81. data/test/test_identification_es_cl.rb +1 -1
  82. data/test/test_identification_in.rb +20 -0
  83. data/test/test_identification_pl.rb +28 -0
  84. data/test/test_identification_tw.rb +17 -0
  85. data/test/test_image.rb +3 -3
  86. data/test/test_internet.rb +9 -9
  87. data/test/test_internet_se.rb +1 -1
  88. data/test/test_job_cn.rb +1 -1
  89. data/test/test_job_ja.rb +1 -1
  90. data/test/test_job_kr.rb +1 -1
  91. data/test/test_job_vn.rb +1 -1
  92. data/test/test_lorem_cn.rb +6 -6
  93. data/test/test_lorem_ja.rb +3 -3
  94. data/test/test_lorem_pl.rb +1 -1
  95. data/test/test_lorem_ru.rb +1 -1
  96. data/test/test_lorem_ua.rb +1 -1
  97. data/test/test_music.rb +4 -4
  98. data/test/test_name_da.rb +3 -3
  99. data/test/test_phone_number_se.rb +2 -2
  100. data/test/test_sport_pl.rb +30 -0
  101. data/test/test_ssn_se.rb +6 -8
  102. data/test/test_string.rb +3 -3
  103. data/test/test_time.rb +13 -6
  104. data/test/test_tweet.rb +9 -9
  105. data/test/test_vehicle.rb +2 -2
  106. metadata +201 -162
  107. data/lib/ffaker/data/address_jp/city +0 -127
  108. data/lib/ffaker/data/address_jp/designated_city +0 -20
  109. data/lib/ffaker/data/address_jp/street +0 -37
  110. data/lib/ffaker/data/address_jp/tokyo_ward +0 -23
  111. data/lib/ffaker/data/address_jp/village +0 -183
  112. data/lib/ffaker/data/address_jp/ward +0 -188
data/Rakefile CHANGED
@@ -42,10 +42,6 @@ def date
42
42
  Date.today.to_s
43
43
  end
44
44
 
45
- def rubyforge_project
46
- name
47
- end
48
-
49
45
  def gemspec_file
50
46
  "#{name}.gemspec"
51
47
  end
@@ -121,8 +117,6 @@ task gemspec: :validate do
121
117
  replace_header(head, :name)
122
118
  replace_header(head, :version)
123
119
  replace_header(head, :date)
124
- # comment this out if your rubyforge_project has a different name
125
- replace_header(head, :rubyforge_project)
126
120
 
127
121
  # determine file list from git ls-files
128
122
  files = `git ls-files`
@@ -1,15 +1,18 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ lib = File.expand_path('lib', __dir__)
4
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
+ require 'version'
6
+
3
7
  Gem::Specification.new do |s|
4
8
  s.specification_version = 2 if s.respond_to? :specification_version=
5
9
  s.required_rubygems_version = Gem::Requirement.new('>= 0') if s.respond_to? :required_rubygems_version=
6
10
  s.rubygems_version = '1.3.5'
7
11
 
8
12
  s.name = 'ffaker'
9
- s.version = '2.12.0'
10
- s.date = '2019-08-24'
11
- s.rubyforge_project = 'ffaker'
12
- s.required_ruby_version = '>= 2.4'
13
+ s.version = FFaker::VERSION
14
+ s.date = '2020-08-17'
15
+ s.required_ruby_version = '>= 2.5'
13
16
 
14
17
  s.license = 'MIT'
15
18
 
@@ -43,6 +46,12 @@ Gem::Specification.new do |s|
43
46
 
44
47
  s.test_files = Dir['test/**/*']
45
48
 
46
- s.add_development_dependency 'rake', '~> 10.1.1'
49
+ s.metadata = {
50
+ 'changelog_uri' => 'https://github.com/ffaker/ffaker/blob/master/Changelog.md',
51
+ 'documentation_uri' => 'https://github.com/ffaker/ffaker/blob/master/REFERENCE.md'
52
+ }
53
+
54
+ s.add_development_dependency 'rake', '~> 13.0'
55
+ s.add_development_dependency 'rubocop'
47
56
  s.add_development_dependency 'test-unit'
48
57
  end
@@ -1,8 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module FFaker
4
- VERSION = '2.12.0'
5
-
6
4
  require 'ffaker/utils/array_utils'
7
5
  require 'ffaker/utils/module_utils'
8
6
 
@@ -10,7 +8,7 @@ module FFaker
10
8
 
11
9
  BASE_LIB_PATH = File.expand_path(__dir__)
12
10
 
13
- LETTERS = [*'a'..'z'].freeze
11
+ LETTERS = Array('a'..'z').freeze
14
12
 
15
13
  HEX = %w[0 1 2 3 4 5 6 7 8 9 A B C D E F].freeze
16
14
 
@@ -57,10 +55,11 @@ module FFaker
57
55
  autoload :AddressUK, 'ffaker/address_uk'
58
56
  autoload :AddressUS, 'ffaker/address_us'
59
57
  autoload :Airline, 'ffaker/airline'
60
- autoload :Animal, 'ffaker/animals'
61
- autoload :AnimalCN, 'ffaker/animals_cn'
58
+ autoload :Animal, 'ffaker/animal'
59
+ autoload :AnimalCN, 'ffaker/animal_cn'
60
+ autoload :AnimalES, 'ffaker/animal_es'
62
61
  autoload :AnimalPL, 'ffaker/animal_pl'
63
- autoload :AnimalUS, 'ffaker/animals_us'
62
+ autoload :AnimalUS, 'ffaker/animal_us'
64
63
  autoload :Avatar, 'ffaker/avatar'
65
64
  autoload :AWS, 'ffaker/aws'
66
65
  autoload :BaconIpsum, 'ffaker/bacon_ipsum'
@@ -70,10 +69,12 @@ module FFaker
70
69
  autoload :CheesyLingo, 'ffaker/cheesy_lingo'
71
70
  autoload :Code, 'ffaker/code'
72
71
  autoload :Color, 'ffaker/color'
72
+ autoload :ColorPL, 'ffaker/color_pl'
73
73
  autoload :ColorUA, 'ffaker/color_ua'
74
74
  autoload :Company, 'ffaker/company'
75
75
  autoload :CompanyCN, 'ffaker/company_cn'
76
76
  autoload :CompanyIT, 'ffaker/company_it'
77
+ autoload :CompanyJA, 'ffaker/company_ja'
77
78
  autoload :CompanySE, 'ffaker/company_se'
78
79
  autoload :Conference, 'ffaker/conference'
79
80
  autoload :CoursesFR, 'ffaker/courses'
@@ -102,8 +103,11 @@ module FFaker
102
103
  autoload :IdentificationES, 'ffaker/identification_es'
103
104
  autoload :IdentificationESCL, 'ffaker/identification_es_cl'
104
105
  autoload :IdentificationESCO, 'ffaker/identification_es_co'
106
+ autoload :IdentificationIN, 'ffaker/identification_in'
105
107
  autoload :IdentificationKr, 'ffaker/identification_kr'
106
108
  autoload :IdentificationMX, 'ffaker/identification_mx'
109
+ autoload :IdentificationPL, 'ffaker/identification_pl'
110
+ autoload :IdentificationTW, 'ffaker/identification_tw'
107
111
  autoload :Image, 'ffaker/image'
108
112
  autoload :Internet, 'ffaker/internet'
109
113
  autoload :InternetSE, 'ffaker/internet_se'
@@ -182,6 +186,7 @@ module FFaker
182
186
  autoload :SemVer, 'ffaker/sem_ver'
183
187
  autoload :Skill, 'ffaker/skill'
184
188
  autoload :Sport, 'ffaker/sport'
189
+ autoload :SportPL, 'ffaker/sport_pl'
185
190
  autoload :SportUS, 'ffaker/sport_us'
186
191
  autoload :SSN, 'ffaker/ssn'
187
192
  autoload :SSNMX, 'ffaker/ssn_mx'
@@ -192,6 +197,7 @@ module FFaker
192
197
  autoload :Unit, 'ffaker/unit'
193
198
  autoload :UnitEnglish, 'ffaker/unit_english'
194
199
  autoload :UnitMetric, 'ffaker/unit_metric'
200
+ autoload :VERSION, 'version'
195
201
  autoload :Vehicle, 'ffaker/vehicle'
196
202
  autoload :Venue, 'ffaker/venue'
197
203
  autoload :Youtube, 'ffaker/youtube'
@@ -13,7 +13,7 @@ module FFaker
13
13
  MOD = [' B', ' T', ' Q', ' BIS', ' TER', ' QUATER', '', '', '', ''].freeze
14
14
  SEP = [', ', ' '].freeze
15
15
  TYPE = %w[rue avenue av boulevard bd impasse].freeze
16
- POSTAL_CODE_FORMATS = ['####', '#####', '97####', '2A###', '2B###'].freeze
16
+ POSTAL_CODE_FORMATS = ['#####', '97###', '2A###', '2B###'].freeze
17
17
 
18
18
  def street_address
19
19
  FFaker.numerify(fetch_sample(NUM)) +
@@ -34,5 +34,9 @@ module FFaker
34
34
  def full_address
35
35
  %(#{street_address}#{fetch_sample(SEP)}#{postal_code} #{fetch_sample(CITY)})
36
36
  end
37
+
38
+ def region
39
+ fetch_sample(REGION)
40
+ end
37
41
  end
38
42
  end
@@ -9,10 +9,8 @@ module FFaker
9
9
  extend ModuleUtils
10
10
  extend self
11
11
 
12
- POSTAL_CODE_FORMAT = ['#### ??'].freeze
13
-
14
12
  def postal_code
15
- FFaker.bothify POSTAL_CODE_FORMAT
13
+ FFaker::String.from_regexp(/[1-9]\d{3} [A-RT-Z][A-Z]/)
16
14
  end
17
15
 
18
16
  def zip_code
@@ -21,8 +21,12 @@ module FFaker
21
21
  fetch_sample(STATE)
22
22
  end
23
23
 
24
- def state_abbr
25
- fetch_sample(STATE_ABBR)
24
+ def state_abbr(st_name = nil)
25
+ return find_abbr(state) unless st_name
26
+
27
+ st_name = capitalize_all_words(st_name)
28
+ check_state_existence(st_name)
29
+ find_abbr(st_name)
26
30
  end
27
31
 
28
32
  def state_and_territories_abbr
@@ -36,5 +40,21 @@ module FFaker
36
40
  def continental_state_abbr
37
41
  fetch_sample(CONTINENTAL_STATE_ABBR)
38
42
  end
43
+
44
+ private
45
+
46
+ def check_state_existence(state_name)
47
+ return if STATE.include?(state_name)
48
+
49
+ raise ArgumentError, "Unexpected state name: '#{state_name}'"
50
+ end
51
+
52
+ def find_abbr(state)
53
+ STATE_ABBR[STATE.index(state)]
54
+ end
55
+
56
+ def capitalize_all_words(string)
57
+ string.split.map(&:capitalize).join(' ')
58
+ end
39
59
  end
40
60
  end
File without changes
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module FFaker
4
+ module AnimalES
5
+ extend ModuleUtils
6
+ extend self
7
+
8
+ def common_name
9
+ fetch_sample(COMMON_NAMES)
10
+ end
11
+ end
12
+ end
@@ -91,6 +91,18 @@ module FFaker
91
91
  formatify_iban(COUNTRIES[country_code.upcase])
92
92
  end
93
93
 
94
+ def card_number
95
+ FFaker.numerify('#### #### #### ####')
96
+ end
97
+
98
+ def card_expiry_date(year_range: 5, year_latest: -5, format: '%m/%y')
99
+ FFaker::Time.date({ year_range: year_range, year_latest: year_latest }).strftime(format)
100
+ end
101
+
102
+ def card_type
103
+ fetch_sample(CARD_TYPES)
104
+ end
105
+
94
106
  private
95
107
 
96
108
  def formatify_iban(code)
@@ -98,9 +110,9 @@ module FFaker
98
110
  end
99
111
 
100
112
  def check_country_existence(country_code)
101
- unless COUNTRIES.keys.include?(country_code.upcase)
102
- raise ArgumentError, "Unexpected country code: '#{country_code}'"
103
- end
113
+ return if COUNTRIES.keys.include?(country_code.upcase)
114
+
115
+ raise ArgumentError, "Unexpected country code: '#{country_code}'"
104
116
  end
105
117
  end
106
118
  end
@@ -5,6 +5,23 @@ module FFaker
5
5
  extend ModuleUtils
6
6
  extend self
7
7
 
8
+ def npi(legacy: false)
9
+ max = legacy ? 299_999_999 : 999_999_999
10
+ base_npi = rand(100_000_000..max).to_s
11
+
12
+ summed_digits = base_npi
13
+ .chars
14
+ .each_with_index
15
+ .map { |n, i| (i.even? ? n.to_i * 2 : n).to_s }
16
+ .join
17
+ .chars
18
+ .inject(0) { |sum, digit| sum + digit.to_i }
19
+
20
+ npi_checksum = (10 - (24 + summed_digits) % 10).to_s.chars.last
21
+
22
+ base_npi + npi_checksum
23
+ end
24
+
8
25
  def ean
9
26
  ean = rand(100_000_000_000..999_999_999_999).to_s
10
27
 
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module FFaker
4
+ # Inspiration:
5
+ # https://pl.wikipedia.org/wiki/Lista_kolor%C3%B3w
6
+ module ColorPL
7
+ extend ModuleUtils
8
+ extend self
9
+
10
+ def name
11
+ fetch_sample(NAMES_LIST)
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module FFaker
4
+ module CompanyJA
5
+ extend ModuleUtils
6
+ extend self
7
+
8
+ TYPES = %w[株式会社 有限会社].freeze
9
+ DETAILED_TYPES = %w[ホールディングス 建設 商業 書店 不動産 銀行 証券].freeze
10
+ POSITIONS = %w[会長 社長 部長 課長 係長 社員 契約社員 派遣社員 アルバイト インターン].freeze
11
+
12
+ def name
13
+ case rand(0..2)
14
+ when 0 then "#{NameJA.last_name}#{fetch_sample(TYPES)}"
15
+ when 1 then "#{fetch_sample(TYPES)}#{NameJA.last_name}"
16
+ when 2 then "#{NameJA.last_name}#{fetch_sample(DETAILED_TYPES)}"
17
+ end
18
+ end
19
+
20
+ def position
21
+ fetch_sample(POSITIONS)
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,27 @@
1
+ Alsace
2
+ Aquitaine
3
+ Auvergne
4
+ Basse-Normandie
5
+ Bourgogne
6
+ Bretagne
7
+ Centre
8
+ Champagne-Ardenne
9
+ Corse
10
+ Franche-Comté
11
+ Haute-Normandie
12
+ Île-de-France
13
+ Languedoc-Roussillon
14
+ Limousin
15
+ Lorraine
16
+ Midi-Pyrénées
17
+ Nord-Pas-de-Calais
18
+ Pays de la Loire
19
+ Picardie
20
+ Poitou-Charentes
21
+ Provence-Alpes-Côte d'Azur
22
+ Rhône-Alpes
23
+ Guadeloupe
24
+ Guyane
25
+ La Réunion
26
+ Martinique
27
+ Mayotte
@@ -11,25 +11,18 @@
11
11
  仙台市
12
12
  北九州市
13
13
  千葉市
14
- 世田谷区
15
14
  堺市
16
15
  新潟市
17
16
  浜松市
18
17
  熊本市
19
18
  相模原市
20
- 練馬区
21
19
  静岡市
22
20
  岡山市
23
- 大田区
24
- 足立区
25
- 江戸川区
26
21
  船橋市
27
22
  鹿児島市
28
23
  八王子市
29
24
  川口市
30
- 杉並区
31
25
  姫路市
32
- 板橋区
33
26
  松山市
34
27
  宇都宮市
35
28
  東大阪市
@@ -40,10 +33,8 @@
40
33
  大分市
41
34
  金沢市
42
35
  福山市
43
- 江東区
44
36
  尼崎市
45
37
  長崎市
46
- 葛飾区
47
38
  町田市
48
39
  富山市
49
40
  豊田市
@@ -62,7 +53,6 @@
62
53
  高崎市
63
54
  和歌山市
64
55
  奈良市
65
- 品川区
66
56
  高槻市
67
57
  吹田市
68
58
  旭川市
@@ -73,12 +63,9 @@
73
63
  前橋市
74
64
  郡山市
75
65
  大津市
76
- 北区
77
66
  越谷市
78
- 新宿区
79
67
  秋田市
80
68
  那覇市
81
- 中野区
82
69
  四日市市
83
70
  春日井市
84
71
  久留米市
@@ -87,14 +74,12 @@
87
74
  福島市
88
75
  明石市
89
76
  津市
90
- 豊島区
91
77
  長岡市
92
78
  下関市
93
79
  市原市
94
80
  函館市
95
81
  茨木市
96
82
  水戸市
97
- 目黒区
98
83
  八尾市
99
84
  加古川市
100
85
  福井市
@@ -104,7 +89,6 @@
104
89
  府中市
105
90
  山形市
106
91
  富士市
107
- 墨田区
108
92
  草加市
109
93
  松本市
110
94
  呉市
@@ -122,10 +106,6 @@
122
106
  つくば市
123
107
  松江市
124
108
  伊勢崎市
125
- 文京区
126
- 港区
127
- 渋谷区
128
- 荒川区
129
109
  上越市
130
110
  熊谷市
131
111
  沼津市
@@ -151,7 +131,6 @@
151
131
  日野市
152
132
  安城市
153
133
  高岡市
154
- 台東区
155
134
  鎌倉市
156
135
  宇部市
157
136
  苫小牧市
@@ -234,7 +213,6 @@
234
213
  江別市
235
214
  大牟田市
236
215
  戸田市
237
- 中央区
238
216
  新居浜市
239
217
  桐生市
240
218
  佐野市
@@ -580,7 +558,6 @@
580
558
  洲本市
581
559
  雲仙市
582
560
  大洲市
583
- 千代田区
584
561
  富谷市
585
562
  菊川市
586
563
  北茨城市