faker 3.0.0 → 3.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +60 -0
  3. data/README.md +171 -101
  4. data/lib/faker/default/code.rb +1 -1
  5. data/lib/faker/default/drone.rb +1 -1
  6. data/lib/faker/default/food.rb +1 -1
  7. data/lib/faker/default/internet.rb +33 -22
  8. data/lib/faker/default/invoice.rb +1 -1
  9. data/lib/faker/default/measurement.rb +8 -8
  10. data/lib/faker/default/phone_number.rb +1 -1
  11. data/lib/faker/default/twitter.rb +3 -5
  12. data/lib/faker/default/vehicle.rb +12 -33
  13. data/lib/faker/games/clash_of_clans.rb +1 -1
  14. data/lib/faker/games/minecraft.rb +1 -1
  15. data/lib/faker/games/myst.rb +1 -1
  16. data/lib/faker/japanese_media/cowboy_bebop.rb +61 -0
  17. data/lib/faker/sports/sport.rb +9 -3
  18. data/lib/faker/tv_shows/spongebob.rb +50 -0
  19. data/lib/faker/version.rb +1 -1
  20. data/lib/locales/da-DK.yml +0 -1
  21. data/lib/locales/de-AT.yml +0 -1
  22. data/lib/locales/de-CH.yml +0 -1
  23. data/lib/locales/de.yml +0 -1
  24. data/lib/locales/en/cowboy_bebop.yml +163 -0
  25. data/lib/locales/en/heroes.yml +0 -0
  26. data/lib/locales/en/spongebob.yml +489 -0
  27. data/lib/locales/en-AU.yml +0 -1
  28. data/lib/locales/en-CA.yml +0 -1
  29. data/lib/locales/en-GB.yml +0 -1
  30. data/lib/locales/en-US.yml +0 -1
  31. data/lib/locales/en-ZA.yml +0 -1
  32. data/lib/locales/es-MX.yml +0 -1
  33. data/lib/locales/es.yml +0 -1
  34. data/lib/locales/fr/address.yml +0 -1
  35. data/lib/locales/fr-CA.yml +0 -1
  36. data/lib/locales/fr-CH.yml +0 -1
  37. data/lib/locales/ja/super_mario.yml +1 -1
  38. data/lib/locales/lt.yml +0 -1
  39. data/lib/locales/pl.yml +0 -1
  40. data/lib/locales/pt.yml +0 -1
  41. data/lib/locales/uk.yml +1 -1
  42. metadata +16 -13
  43. data/lib/faker/default/lorem_pixel.rb +0 -64
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6a9b68cfd73d84ab10a3382407a6675395cdb07fa17113b99b84390fef9a4fb5
4
- data.tar.gz: 12fbdbeb4cbb3409954520b90a9fdfe871ad08db697cf8477b2b236e1810297e
3
+ metadata.gz: 61b4ec829c7b57771a22a4efdc7488d3ffb7833ab3b3ed19c044e022b690c9e6
4
+ data.tar.gz: 798f8d07f165e30b6a84fd9c27d942c79c3157fdee001dd074bb93ba91f10322
5
5
  SHA512:
6
- metadata.gz: f0b5d764aa8f24a5e95efe003aac284070d918f326e511dee2e88a34e3ff94d703720056be7e408730aee439cc0be5d26e8c657b3922fce218ce01f75375489e
7
- data.tar.gz: 705a4e403466b231ff18223bf8904387eb3f8aabbe7544826375c5f332b64b362ac174b2b5b8c00de2a8dfc0aacf63a66ab708ea876dd78d92ee61a27bc9c9aa
6
+ metadata.gz: 47bbbd3123be42d96bae0c83db2572d696c00e32fa29712c370dce59adea5850f08d8de4116ec00c0d08381a915854d1b4343256df7c1efeee6caa2fc2dcef37
7
+ data.tar.gz: e6c6d174fd957b365ba6c08b84bfa8dc4890d42c443de7b21c07de2c462246399530f5acfd722bfbc4953270c040418fb5369006796da6aa1a80d9e70561c7ad
data/CHANGELOG.md CHANGED
@@ -1,5 +1,65 @@
1
1
  # Changelog
2
2
 
3
+ ## [v3.1.0](https://github.com/faker-ruby/faker/tree/v3.1.0) (2022-12-23)
4
+
5
+ Happy Holidays with a new Faker release! 🎉
6
+
7
+ This version:
8
+
9
+ - adds and removes generators
10
+ - fixes bugs
11
+ - updates dependencies
12
+
13
+ ## Features
14
+ * Simple Japanesemedia::CowboyBebop module by @Ivan-P23994 in https://github.com/faker-ruby/faker/pull/2617
15
+ * added travel folder and airports by @ZionMiller in https://github.com/faker-ruby/faker/pull/2601
16
+ * Spongebob TV show collections by @kleinjm in https://github.com/faker-ruby/faker/pull/2619
17
+ * Add pre-push hook example by @akanshak984 in https://github.com/faker-ruby/faker/pull/2606
18
+
19
+ ## Bug fixes
20
+ * fix: ensure generated passwords have correct characters when mix_case & special_characters enabled by @tiff-o in https://github.com/faker-ruby/faker/pull/2533
21
+ * Fix: ensure sport generator produces single sport unless a number of sports is requested by @si-lens in https://github.com/faker-ruby/faker/pull/2616
22
+ * Remove typo in ISSUE_TEMPLATE to check Faker version by @loqimean in https://github.com/faker-ruby/faker/pull/2621
23
+ * Typo in Ukrainian locale, fixes #2620 by @Newman101 in https://github.com/faker-ruby/faker/pull/2622
24
+ * Remove english characters in ja locale file, fixes faker-ruby#2637 by @alextaujenis in https://github.com/faker-ruby/faker/pull/2638
25
+ * Fix country code length for non EN locale by @vbrazo in https://github.com/faker-ruby/faker/pull/2669
26
+
27
+ ## What's Changed
28
+ * Removed LoremPixel Files by @uzorjchibuzor in https://github.com/faker-ruby/faker/pull/2664
29
+ * Document IBAN digits validity generator by @stefannibrasil in https://github.com/faker-ruby/faker/pull/2625
30
+ * Create random vehicle vin numbers with the correct check-digit by @alextaujenis in https://github.com/faker-ruby/faker/pull/2633
31
+ * Fix formatting in internet/http.md documentation by @Newman101 in https://github.com/faker-ruby/faker/pull/2647
32
+ * Remove deprecated ru paul documentation by @italopires in https://github.com/faker-ruby/faker/pull/2651
33
+ * Add Ruby as specified language in code block by @luciagirasoles in https://github.com/faker-ruby/faker/pull/2654
34
+ * Fix some typos by @jdufresne in https://github.com/faker-ruby/faker/pull/2662
35
+ * Remove unnecessary executable bit from several files by @jdufresne in https://github.com/faker-ruby/faker/pull/2645
36
+ * Remove broken readme links by @vbrazo in https://github.com/faker-ruby/faker/pull/2668
37
+ * Update minecraft.rb by @lepinejf in https://github.com/faker-ruby/faker/pull/2635
38
+ * Update README and CONTRIBUTING guides by @stefannibrasil in https://github.com/faker-ruby/faker/pull/2630
39
+ * Update dependabot ignore list by @stefannibrasil in https://github.com/faker-ruby/faker/pull/2629
40
+
41
+ ## Update local dependencies
42
+ * Update simplecov requirement from = 0.21.0 to = 0.21.2 by @dependabot in https://github.com/faker-ruby/faker/pull/2636
43
+ * Update timecop requirement from = 0.9.5 to = 0.9.6 by @dependabot in https://github.com/faker-ruby/faker/pull/2642
44
+ * Update rubocop-minitest requirement from = 0.23.2 to = 0.25.0 by @dependabot in https://github.com/faker-ruby/faker/pull/2653
45
+ * Update test-unit requirement from = 3.5.6 to = 3.5.7 by @dependabot in https://github.com/faker-ruby/faker/pull/2659
46
+ * Update rubocop requirement from = 1.41.0 to = 1.41.1 by @dependabot in https://github.com/faker-ruby/faker/pull/2667
47
+
48
+ ## New Contributors
49
+ * @si-lens made their first contribution in https://github.com/faker-ruby/faker/pull/2616
50
+ * @Ivan-P23994 made their first contribution in https://github.com/faker-ruby/faker/pull/2617
51
+ * @ZionMiller made their first contribution in https://github.com/faker-ruby/faker/pull/2601
52
+ * @loqimean made their first contribution in https://github.com/faker-ruby/faker/pull/2621
53
+ * @kleinjm made their first contribution in https://github.com/faker-ruby/faker/pull/2619
54
+ * @akanshak984 made their first contribution in https://github.com/faker-ruby/faker/pull/2606
55
+ * @lepinejf made their first contribution in https://github.com/faker-ruby/faker/pull/2635
56
+ * @italopires made their first contribution in https://github.com/faker-ruby/faker/pull/2651
57
+ * @luciagirasoles made their first contribution in https://github.com/faker-ruby/faker/pull/2654
58
+
59
+ **Full Changelog**: https://github.com/faker-ruby/faker/compare/v3.0.0...v3.1.0
60
+
61
+ ------------------------------------------------------------------------------
62
+
3
63
  ## [v3.0.0](https://github.com/faker-ruby/faker/tree/v3.0.0) (2022-11-01)
4
64
 
5
65
  ### Breaking Changes
data/README.md CHANGED
@@ -7,73 +7,106 @@
7
7
  [![Test Coverage](https://api.codeclimate.com/v1/badges/ef54c7f9df86e965d64b/test_coverage)](https://codeclimate.com/github/stympy/faker/test_coverage)
8
8
  [![Maintainability](https://api.codeclimate.com/v1/badges/ef54c7f9df86e965d64b/maintainability)](https://codeclimate.com/github/stympy/faker/maintainability)
9
9
 
10
- This gem is a port of [Perl's Data::Faker library](https://metacpan.org/pod/Data::Faker) that generates fake data.
10
+ Faker is a port of [Perl's Data::Faker library](https://metacpan.org/pod/Data::Faker).
11
+ It's a library for generating fake data such as names, addresses, and phone numbers.
11
12
 
12
- It comes in very handy for taking screenshots (taking screenshots for my
13
- project, [Catch the Best](http://catchthebest.com/) was the original impetus
14
- for the creation of this gem), having real-looking test data, and having your
15
- database populated with more than one or two records while you're doing
16
- development.
13
+ Faker helps you generate realistic test data, and populate your
14
+ database with more than a couple of records while you're doing development.
15
+
16
+ It comes in very handy for taking screenshots (taking screenshots for a personal project)
17
+ and it was the original impetus for the creation of this gem).
18
+
19
+ ## Quick links
20
+
21
+ - 📖 **[Read the documentation for the latest version][rubydocs].**
22
+ - 📢 **[See what's changed in recent versions][changelog].**
23
+
24
+ [rubydocs]: https://www.rubydoc.info/gems/faker/
25
+ [changelog]: CHANGELOG.md
26
+
27
+ ## Table of Contents
17
28
 
18
29
  - [Faker](#faker)
19
- - [NOTE](#note)
20
- - [Installing](#installing)
30
+ - [Notes](#notes)
31
+ - [Getting Started](#getting-started)
21
32
  - [Usage](#usage)
22
- - [CLI](#cli)
23
33
  - [Ensuring unique values](#ensuring-unique-values)
24
34
  - [Deterministic Random](#deterministic-random)
35
+ - [Customization](#customization)
25
36
  - [Generators](#generators)
26
- - [Default](#default)
27
- - [Blockchain](#blockchain)
28
- - [Books](#books)
29
- - [Fantasy](#fantasy)
30
- - [Creature](#creature)
31
- - [Games](#games)
32
- - [Japanese Media](#japanese-media)
33
- - [Movies](#movies)
34
- - [Music](#music)
35
- - [Quotes](#quotes)
36
- - [Sports](#sports)
37
- - [Tv Shows](#tv-shows)
38
- - [Customization](#customization)
39
37
  - [Contributing](#contributing)
40
- - [Contact](#contact)
38
+ - [Versioning](#versioning)
41
39
  - [License](#license)
42
40
 
43
- ### NOTE
41
+ ### Notes
42
+
44
43
  * While Faker generates data at random, returned values are not guaranteed to be unique by default.
45
- You must explicitly specify when you require unique values, see [details](#ensuring-unique-values).
46
- Values also can be deterministic if you use the deterministic feature, see [details](#deterministic-random)
47
- * Minitest and Faker >= 2.22 users might need to add the following to the `test_helper.rb` or `rails_helper.rb` file:
48
- `Faker::Config.random = Random.new`. See [Issue #2534](https://github.com/faker-ruby/faker/issues/2534) for more details.
44
+ To explicitly specify when you require unique values, see [Ensuring Unique Values](#ensuring-unique-values).
45
+ Values also can be deterministic if you use the deterministic feature, see [Deterministic Random](#deterministic-random)
49
46
  * This is the `main` branch of Faker and may contain changes that are not yet released.
50
- Please refer the README of your version for the available methods.
51
- List of all versions is [available here](https://github.com/stympy/faker/releases).
47
+ Please refer to the README of your version for the available methods.
48
+ The list of all versions is [available here](https://github.com/stympy/faker/releases).
52
49
 
53
- ## Installing
54
- ```bash
55
- gem install faker
56
- ```
57
- Note: if you are getting a `uninitialized constant Faker::[some_class]` error, your version of the gem is behind the one documented here. To make sure that your gem is the one documented here, change the line in your Gemfile to:
50
+ ## Getting Started
51
+
52
+ Start by including `faker` in your Gemfile:
58
53
 
59
54
  ```ruby
60
- gem 'faker', :git => 'https://github.com/faker-ruby/faker.git', :branch => 'main'
55
+ gem 'faker'
61
56
  ```
62
57
 
58
+ Then run `bundle install`.
59
+
63
60
  ## Usage
61
+
62
+ Here are some examples of how to use Faker:
63
+
64
64
  ```ruby
65
65
  require 'faker'
66
66
 
67
67
  Faker::Name.name #=> "Christophe Bartell"
68
68
 
69
- Faker::Internet.email #=> "kirsten.greenholt@corkeryfisher.info"
69
+ Faker::Address.full_address #=> "5479 William Way, East Sonnyhaven, LA 63637"
70
+
71
+ Faker::Markdown.emphasis #=> "Quo qui aperiam. Amet corrupti distinctio. Sit quia *dolor.*"
72
+
73
+ Faker::TvShows::RuPaul.queen #=> "Violet Chachki"
74
+
75
+ Faker::Alphanumeric.alpha(number: 10) #=> "zlvubkrwga"
76
+
77
+ Faker::ProgrammingLanguage.name #=> "Ruby"
78
+ ```
79
+
80
+ For a complete list of the generators, see [Generators](#generators).
81
+
82
+ #### A note about the Generators versions
83
+
84
+ If you get a `uninitialized constant Faker::[some_class]` error, your version of
85
+ the gem is behind main.
86
+
87
+ To make sure that your gem is the one
88
+ documented here, change the line in your Gemfile to:
89
+
90
+ ```ruby
91
+ gem 'faker', :git => 'https://github.com/faker-ruby/faker.git', :branch => 'main'
70
92
  ```
71
93
 
72
- ### CLI
73
- Instructions are available in the [faker-bot README](https://github.com/faker-ruby/faker-bot).
94
+ The generators have the `@faker.version` tag on top of their implementation.
95
+ From the tags, you can identify the version the generator was added:
96
+
97
+ ```ruby
98
+ # Faker::TvShows::ParksAndRec.character
99
+
100
+ # @faker.version 1.9.0
101
+ def character
102
+ fetch('parks_and_rec.characters')
103
+ end
104
+ ```
74
105
 
75
106
  ### Ensuring unique values
76
- Prefix your method call with `unique`. For example:
107
+
108
+ To ensure Faker generates unique values, prefix your method call with `unique`:
109
+
77
110
  ```ruby
78
111
  Faker::Name.unique.name # This will return a unique name every time it is called
79
112
  ```
@@ -82,6 +115,7 @@ If too many unique values are requested from a generator that has a limited
82
115
  number of potential values, a `Faker::UniqueGenerator::RetryLimitExceeded`
83
116
  exception may be raised. It is possible to clear the record of unique values
84
117
  that have been returned, for example between tests.
118
+
85
119
  ```ruby
86
120
  Faker::Name.unique.clear # Clears used values for Faker::Name
87
121
  Faker::UniqueGenerator.clear # Clears used values for all generators
@@ -100,7 +134,9 @@ Faker::Lorem.unique.exclude :string, [number: 6], %w[azerty wxcvbn]
100
134
  ```
101
135
 
102
136
  ### Deterministic Random
103
- Faker supports seeding of its pseudo-random number generator (PRNG) to provide deterministic output of repeated method calls.
137
+
138
+ Faker supports seeding of its pseudo-random number generator (PRNG)
139
+ to provide deterministic output of repeated method calls.
104
140
 
105
141
  ```ruby
106
142
  Faker::Config.random = Random.new(42)
@@ -115,14 +151,49 @@ Faker::Config.random.seed #=> 185180369676275068918401850258677722187
115
151
  Faker::Company.bs #=> "cultivate viral synergies"
116
152
  ```
117
153
 
154
+ ### Customization
155
+
156
+ You may want Faker to print information depending on your location in the world.
157
+ To assist you in this, Faker uses the `I18n` gem to store strings and formats to
158
+ represent the names and postal codes of the area of your choosing.
159
+
160
+ Just set the locale you want as shown below, and Faker will take care of the rest.
161
+
162
+ ```ruby
163
+ Faker::Config.locale = 'es'
164
+ # or
165
+ Faker::Config.locale = :es
166
+ ```
167
+
168
+ Note: Overriding the default locale might not be thread-safe. See [Locale setting can be ignored #2563](https://github.com/faker-ruby/faker/issues/2563) for more details.
169
+
170
+ To override Faker's locales,
171
+ check out the [locales README](lib/locales/README.md).
172
+
173
+ ### Minitest and Faker >= 2.22
174
+
175
+ To prevent Faker (version >= 2.22) from generating duplicate values when using Minitest,
176
+ you might need to add the following to the `test_helper.rb` or `rails_helper.rb` file:
177
+
178
+ ```ruby
179
+ Faker::Config.random = Random.new
180
+ ```
181
+
182
+ See [Issue #2534](https://github.com/faker-ruby/faker/issues/2534) for more details.
183
+
118
184
  ## Generators
185
+
186
+ This is the full list of generators available with this gem. If you need details about any of them, make sure to consult the documentation.
187
+
119
188
  **NOTE: Some of the generators below aren't released yet. If you want to use them, change the line in your gemfile to:**
120
189
 
121
190
  ```ruby
122
191
  gem 'faker', :git => 'https://github.com/faker-ruby/faker.git', :branch => 'main'
123
192
  ```
124
193
 
125
- ### Default
194
+ <details>
195
+ <summary>Default</summary>
196
+
126
197
  - [Faker::Address](doc/default/address.md)
127
198
  - [Faker::Alphanumeric](doc/default/alphanumeric.md)
128
199
  - [Faker::Ancient](doc/default/ancient.md)
@@ -185,7 +256,6 @@ gem 'faker', :git => 'https://github.com/faker-ruby/faker.git', :branch => 'main
185
256
  - [Faker::Kpop](doc/default/kpop.md)
186
257
  - [Faker::Lorem](doc/default/lorem.md)
187
258
  - [Faker::LoremFlickr](doc/default/lorem_flickr.md)
188
- - [Faker::LoremPixel](doc/default/lorem_pixel.md)
189
259
  - [Faker::Markdown](doc/default/markdown.md)
190
260
  - [Faker::Marketing](doc/default/marketing.md)
191
261
  - [Faker::Measurement](doc/default/measurement.md)
@@ -221,31 +291,46 @@ gem 'faker', :git => 'https://github.com/faker-ruby/faker.git', :branch => 'main
221
291
  - [Faker::Verbs](doc/default/verbs.md)
222
292
  - [Faker::VulnerabilityIdentifier](doc/default/vulnerability_identifier.md)
223
293
  - [Faker::WorldCup](doc/default/world_cup.md)
294
+ </details>
295
+
296
+ <details>
297
+ <summary>Blockchain</summary>
224
298
 
225
- ### Blockchain
226
299
  - [Faker::Blockchain::Aeternity](doc/blockchain/aeternity.md)
227
300
  - [Faker::Blockchain::Bitcoin](doc/blockchain/bitcoin.md)
228
301
  - [Faker::Blockchain::Ethereum](doc/blockchain/ethereum.md)
229
302
  - [Faker::Blockchain::Tezos](doc/blockchain/tezos.md)
303
+ </details>
304
+
305
+ <details>
306
+ <summary>Books</summary>
230
307
 
231
- ### Books
232
308
  - [Faker::Book](doc/books/book.md)
233
309
  - [Faker::Books::CultureSeries](doc/books/culture_series.md)
234
310
  - [Faker::Books::Dune](doc/books/dune.md)
235
311
  - [Faker::Books::Lovecraft](doc/books/lovecraft.md)
236
312
  - [Faker::Books::TheKingkillerChronicle](doc/books/the_kingkiller_chronicle.md)
313
+ </details>
314
+
315
+ <details>
316
+ <summary>Fantasy</summary>
237
317
 
238
- ### Fantasy
239
318
  - [Faker::Fantasy::Tolkien](doc/fantasy/tolkien.md)
319
+ </details>
320
+
321
+ <details>
322
+ <summary>Creature</summary>
240
323
 
241
- ### Creature
242
324
  - [Faker::Creature::Animal](doc/creature/animal.md)
243
325
  - [Faker::Creature::Bird](doc/creature/bird.md)
244
326
  - [Faker::Creature::Cat](doc/creature/cat.md)
245
327
  - [Faker::Creature::Dog](doc/creature/dog.md)
246
328
  - [Faker::Creature::Horse](doc/creature/horse.md)
329
+ </details>
330
+
331
+ <details>
332
+ <summary>Games</summary>
247
333
 
248
- ### Games
249
334
  - [Faker::Game](doc/games/game.md)
250
335
  - [Faker::Games::ClashOfClans](doc/games/clash_of_clans.md)
251
336
  - [Faker::Games::DnD](doc/games/dnd.md)
@@ -269,8 +354,12 @@ gem 'faker', :git => 'https://github.com/faker-ruby/faker.git', :branch => 'main
269
354
  - [Faker::Games::Witcher](doc/games/witcher.md)
270
355
  - [Faker::Games::WorldOfWarcraft](doc/games/world_of_warcraft.md)
271
356
  - [Faker::Games::Zelda](doc/games/zelda.md)
357
+ </details>
358
+
359
+ <details>
360
+ <summary>Japanese Media</summary>
272
361
 
273
- ### Japanese Media
362
+ - [Faker::JapaneseMedia::CowboyBebop](doc/japanese_media/cowboy_bebop.md)
274
363
  - [Faker::JapaneseMedia::DragonBall](doc/japanese_media/dragon_ball.md)
275
364
  - [Faker::JapaneseMedia::OnePiece](doc/japanese_media/one_piece.md)
276
365
  - [Faker::JapaneseMedia::StudioGhibli](doc/japanese_media/studio_ghibli.md)
@@ -279,8 +368,11 @@ gem 'faker', :git => 'https://github.com/faker-ruby/faker.git', :branch => 'main
279
368
  - [Faker::JapaneseMedia::Doraemon](doc/japanese_media/doraemon.md)
280
369
  - [Faker::JapaneseMedia::Conan](doc/japanese_media/conan.md)
281
370
  - [Faker::JapaneseMedia::FmaBrotherhood](doc/japanese_media/fullmetal_alchemist_brotherhood.md)
371
+ </details>
372
+
373
+ <details>
374
+ <summary>Movies</summary>
282
375
 
283
- ### Movies
284
376
  - [Faker::Movie](doc/movies/movie.md)
285
377
  - [Faker::Movies::BackToTheFuture](doc/movies/back_to_the_future.md)
286
378
  - [Faker::Movies::Departed](doc/movies/departed.md)
@@ -295,8 +387,11 @@ gem 'faker', :git => 'https://github.com/faker-ruby/faker.git', :branch => 'main
295
387
  - [Faker::Movies::StarWars](doc/movies/star_wars.md)
296
388
  - [Faker::Movies::TRON](doc/movies/tron.md)
297
389
  - [Faker::Movies::VForVendetta](doc/movies/v_for_vendetta.md)
390
+ </details>
391
+
392
+ <details>
393
+ <summary>Music</summary>
298
394
 
299
- ### Music
300
395
  - [Faker::Music](doc/music/music.md)
301
396
  - [Faker::Music::GratefulDead](doc/music/grateful_dead.md)
302
397
  - [Faker::Music::Hiphop](doc/music/hiphop.md)
@@ -307,22 +402,30 @@ gem 'faker', :git => 'https://github.com/faker-ruby/faker.git', :branch => 'main
307
402
  - [Faker::Music::RockBand](doc/music/rock_band.md)
308
403
  - [Faker::Music::Rush](doc/music/rush.md)
309
404
  - [Faker::Music::UmphreysMcgee](doc/music/umphreys_mcgee.md)
405
+ </details>
406
+
407
+ <details>
408
+ <summary>Quotes</summary>
310
409
 
311
- ### Quotes
312
410
  - [Faker::Quote](doc/quotes/quote.md)
313
411
  - [Faker::Quotes::Chiquito](doc/quotes/chiquito.md)
314
412
  - [Faker::Quotes::Rajnikanth](doc/quotes/rajnikanth.md)
315
413
  - [Faker::Quotes::Shakespeare](doc/quotes/shakespeare.md)
414
+ </details>
316
415
 
416
+ <details>
417
+ <summary>Sports</summary>
317
418
 
318
- ### Sports
319
419
  - [Faker::Sports](doc/sports/sports.md)
320
420
  - [Faker::Sports::Basketball](doc/sports/basketball.md)
321
421
  - [Faker::Sports::Football](doc/sports/football.md)
322
422
  - [Faker::Sports::Mountaineering](doc/sports/mountaineering.md)
323
423
  - [Faker::Sports::Volleyball](doc/sports/volleyball.md)
424
+ </details>
425
+
426
+ <details>
427
+ <summary>Tv Shows</summary>
324
428
 
325
- ### Tv Shows
326
429
  - [Faker::TvShows::AquaTeenHungerForce](doc/tv_shows/aqua_teen_hunger_force.md)
327
430
  - [Faker::TvShows::BigBangTheory](doc/tv_shows/big_bang_theory.md)
328
431
  - [Faker::TvShows::BojackHorseman](doc/tv_shows/bojack_horseman.md)
@@ -347,6 +450,7 @@ gem 'faker', :git => 'https://github.com/faker-ruby/faker.git', :branch => 'main
347
450
  - [Faker::TvShows::SiliconValley](doc/tv_shows/silicon_valley.md)
348
451
  - [Faker::TvShows::Simpsons](doc/tv_shows/simpsons.md)
349
452
  - [Faker::TvShows::SouthPark](doc/tv_shows/south_park.md)
453
+ - [Faker::TvShows::Spongebob](doc/tv_shows/spongebob.md)
350
454
  - [Faker::TvShows::StarTrek](doc/tv_shows/star_trek.md)
351
455
  - [Faker::TvShows::Stargate](doc/tv_shows/stargate.md)
352
456
  - [Faker::TvShows::StrangerThings](doc/tv_shows/stranger_things.md)
@@ -358,59 +462,25 @@ gem 'faker', :git => 'https://github.com/faker-ruby/faker.git', :branch => 'main
358
462
  - [Faker::TvShows::TheThickOfIt](doc/tv_shows/the_thick_of_it.md)
359
463
  - [Faker::TvShows::TwinPeaks](doc/tv_shows/twin_peaks.md)
360
464
  - [Faker::TvShows::VentureBros](doc/tv_shows/venture_bros.md)
465
+ </details>
361
466
 
362
- ## Customization
363
- You may want Faker to print information depending on your location in the world.
364
- To assist you in this, Faker uses I18n gem to store strings and formats to
365
- represent the names and postal codes of the area of your choosing.
366
- Just set the locale you want as shown below, and Faker will take care of the rest.
467
+ ## Contributing
367
468
 
368
- ```ruby
369
- Faker::Config.locale = 'es'
370
- # or
371
- Faker::Config.locale = :es
372
- ```
469
+ If you have problems, please create a [GitHub Issue](/.github/ISSUE_TEMPLATE/bug-report.md).
373
470
 
374
- If your locale doesn't already exist, create it in the `lib/locales` directory
375
- and you can then override or add elements to suit your needs. See more about how to
376
- use locales [here](lib/locales/README.md)
377
-
378
- ```yaml
379
- en-au-ocker:
380
- faker:
381
- name:
382
- # Existing faker field, new data
383
- first_name:
384
- - Charlotte
385
- - Ava
386
- - Chloe
387
- - Emily
388
-
389
- # New faker fields
390
- ocker_first_name:
391
- - Bazza
392
- - Bluey
393
- - Davo
394
- - Johno
395
- - Shano
396
- - Shazza
397
- region:
398
- - South East Queensland
399
- - Wide Bay Burnett
400
- - Margaret River
401
- - Port Pirie
402
- - Gippsland
403
- - Elizabeth
404
- - Barossa
405
- ```
471
+ Take a look at the [Contributing](CONTRIBUTING.md) document for
472
+ instructions on setting up the repo on your machine, understanding the codebase,
473
+ and creating a good pull request.
406
474
 
407
- ## Contributing
408
- See [CONTRIBUTING.md](https://github.com/stympy/faker/blob/main/CONTRIBUTING.md).
475
+ There is a [Discord channel](https://discord.gg/RMumTwB) to discuss anything
476
+ regarding improvements or feature requests.
409
477
 
410
- ## Contact
411
- Comments and feedback are welcome. Send an email to Benjamin Curtis via the [google group](http://groups.google.com/group/ruby-faker).
478
+ Thank you, contributors!
412
479
 
413
- You can also join our [discord channel](https://discord.gg/RMumTwB) to discuss anything regarding improvements or feature requests.
480
+ ## Versioning
481
+
482
+ Faker follows Semantic Versioning 2.0 as defined at https://semver.org.
414
483
 
415
484
  ## License
485
+
416
486
  This code is free to use under the terms of the MIT license.
@@ -5,7 +5,7 @@ module Faker
5
5
  flexible :code
6
6
  class << self
7
7
  ##
8
- # Produces a random NPI (National Provider Identifer) code.
8
+ # Produces a random NPI (National Provider Identifier) code.
9
9
  #
10
10
  # @return [String]
11
11
  #
@@ -147,7 +147,7 @@ module Faker
147
147
  end
148
148
 
149
149
  ##
150
- # Returns operating temprature for drone in Fahrenheit
150
+ # Returns operating temperature for drone in Fahrenheit
151
151
  #
152
152
  # @return [String]
153
153
  #
@@ -97,7 +97,7 @@ module Faker
97
97
  end
98
98
 
99
99
  ##
100
- # Retrieves metric mesurements
100
+ # Retrieves metric measurements
101
101
  #
102
102
  # @return [String]
103
103
  #
@@ -147,37 +147,48 @@ module Faker
147
147
  #
148
148
  # @faker.version 2.1.3
149
149
  def password(min_length: 8, max_length: 16, mix_case: true, special_characters: false)
150
- raise ArgumentError, 'Password of length 1 can not have both mixed case and special characters' if min_length <= 1 && mix_case && special_characters
150
+ raise ArgumentError, 'max_length must be more than min_length' if max_length < min_length
151
151
 
152
- min_alpha = mix_case && min_length > 1 ? 2 : 0
153
- temp = Lorem.characters(number: min_length, min_alpha: min_alpha)
154
- diff_length = max_length - min_length
155
-
156
- if diff_length.positive?
157
- diff_rand = rand(diff_length + 1)
158
- temp += Lorem.characters(number: diff_rand)
159
- end
152
+ character_types = []
153
+ required_min_length = 0
160
154
 
161
155
  if mix_case
162
- alpha_count = 0
163
- temp.chars.each_with_index do |char, index|
164
- if char =~ /[[:alpha:]]/
165
- temp[index] = char.upcase if alpha_count.even?
166
- alpha_count += 1
167
- end
168
- end
156
+ character_types << :mix_case
157
+ required_min_length += 2
169
158
  end
170
159
 
171
160
  if special_characters
172
- chars = %w[! @ # $ % ^ & *]
173
- rand(1..min_length).times do |i|
174
- temp[i] = chars[rand(chars.length)]
175
- end
161
+ character_types << :special_characters
162
+ required_min_length += 1
163
+ end
164
+
165
+ raise ArgumentError, "min_length should be at least #{required_min_length} to enable #{character_types.join(', ')} configuration" if min_length < required_min_length
166
+
167
+ target_length = rand(min_length..max_length)
168
+
169
+ password = []
170
+ character_bag = []
171
+
172
+ # use lower_chars by default and add upper_chars if mix_case
173
+ lower_chars = ('a'..'z').to_a
174
+ password << lower_chars[rand(lower_chars.count - 1)]
175
+ character_bag += lower_chars
176
+
177
+ if character_types.include?(:mix_case)
178
+ upper_chars = ('A'..'Z').to_a
179
+ password << upper_chars[rand(upper_chars.count - 1)]
180
+ character_bag += upper_chars
181
+ end
182
+
183
+ if character_types.include?(:special_characters)
184
+ special_chars = %w[! @ # $ % ^ & *]
185
+ password << special_chars[rand(special_chars.count - 1)]
186
+ character_bag += special_chars
176
187
  end
177
188
 
178
- temp[rand(temp.size - 1)] = Lorem.characters(number: 1, min_alpha: 1).upcase if mix_case && special_characters && !temp.match(/[A-z]+/)
189
+ password << character_bag[rand(character_bag.count - 1)] while password.length < target_length
179
190
 
180
- temp
191
+ shuffle(password).join
181
192
  end
182
193
 
183
194
  ##
@@ -102,7 +102,7 @@ module Faker
102
102
  mod10_remainder(weighted_sum)
103
103
  end
104
104
 
105
- # Calculates weigthed sum
105
+ # Calculates weighted sum
106
106
  #
107
107
  # For example with 12345678, [1,2]
108
108
  # Ref.num. 1 2 3 4 5 6 7 8