ffaker 2.12.0 → 2.17.0

Sign up to get free protection for your applications and to get access to all the features.
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
  北茨城市