faker 3.0.0 → 3.1.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 (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