faker 2.15.1 → 3.4.2

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 (305) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +848 -34
  3. data/README.md +225 -103
  4. data/lib/faker/blockchain/aeternity.rb +1 -1
  5. data/lib/faker/blockchain/bitcoin.rb +2 -2
  6. data/lib/faker/blockchain/ethereum.rb +1 -1
  7. data/lib/faker/blockchain/tezos.rb +31 -3
  8. data/lib/faker/books/dune.rb +2 -10
  9. data/lib/faker/books/lovecraft.rb +9 -41
  10. data/lib/faker/books/the_kingkiller_chronicle.rb +61 -0
  11. data/lib/faker/creature/bird.rb +203 -0
  12. data/lib/faker/default/address.rb +7 -27
  13. data/lib/faker/default/alphanumeric.rb +2 -8
  14. data/lib/faker/default/app.rb +1 -10
  15. data/lib/faker/default/avatar.rb +1 -12
  16. data/lib/faker/default/bank.rb +25 -17
  17. data/lib/faker/default/barcode.rb +33 -22
  18. data/lib/faker/default/boolean.rb +1 -4
  19. data/lib/faker/default/cannabis.rb +10 -0
  20. data/lib/faker/default/chile_rut.rb +25 -25
  21. data/lib/faker/default/chuck_norris.rb +1 -0
  22. data/lib/faker/default/code.rb +71 -42
  23. data/lib/faker/default/color.rb +77 -6
  24. data/lib/faker/default/commerce.rb +31 -17
  25. data/lib/faker/default/company.rb +137 -22
  26. data/lib/faker/default/crypto.rb +26 -4
  27. data/lib/faker/default/crypto_coin.rb +3 -15
  28. data/lib/faker/default/date.rb +65 -42
  29. data/lib/faker/default/demographic.rb +1 -5
  30. data/lib/faker/default/driving_licence.rb +20 -18
  31. data/lib/faker/default/drone.rb +1 -1
  32. data/lib/faker/default/educator.rb +13 -0
  33. data/lib/faker/default/emotion.rb +33 -0
  34. data/lib/faker/default/file.rb +5 -22
  35. data/lib/faker/default/finance.rb +30 -7
  36. data/lib/faker/default/food.rb +27 -1
  37. data/lib/faker/default/hipster.rb +8 -48
  38. data/lib/faker/default/hobby.rb +22 -0
  39. data/lib/faker/default/html.rb +230 -0
  40. data/lib/faker/default/id_number.rb +175 -27
  41. data/lib/faker/default/internet.rb +333 -114
  42. data/lib/faker/default/invoice.rb +4 -17
  43. data/lib/faker/default/json.rb +4 -21
  44. data/lib/faker/default/lorem.rb +175 -73
  45. data/lib/faker/default/lorem_flickr.rb +4 -37
  46. data/lib/faker/default/markdown.rb +10 -13
  47. data/lib/faker/default/marketing.rb +1 -1
  48. data/lib/faker/default/measurement.rb +16 -48
  49. data/lib/faker/default/name.rb +1 -5
  50. data/lib/faker/default/nation.rb +0 -3
  51. data/lib/faker/default/{nhs.rb → national_health_service.rb} +9 -8
  52. data/lib/faker/default/number.rb +33 -61
  53. data/lib/faker/default/omniauth.rb +55 -52
  54. data/lib/faker/default/phone_number.rb +36 -21
  55. data/lib/faker/default/placeholdit.rb +10 -20
  56. data/lib/faker/default/relationship.rb +1 -5
  57. data/lib/faker/default/religion.rb +6 -0
  58. data/lib/faker/default/science.rb +108 -0
  59. data/lib/faker/default/source.rb +3 -16
  60. data/lib/faker/default/south_africa.rb +3 -3
  61. data/lib/faker/default/string.rb +1 -7
  62. data/lib/faker/default/stripe.rb +4 -20
  63. data/lib/faker/default/tea.rb +41 -0
  64. data/lib/faker/{music/show.rb → default/theater.rb} +11 -8
  65. data/lib/faker/default/time.rb +4 -34
  66. data/lib/faker/default/twitter.rb +7 -23
  67. data/lib/faker/default/types.rb +12 -34
  68. data/lib/faker/default/vehicle.rb +44 -54
  69. data/lib/faker/default/vulnerability_identifier.rb +23 -0
  70. data/lib/faker/default/world_cup.rb +2 -11
  71. data/lib/faker/games/clash_of_clans.rb +1 -1
  72. data/lib/faker/games/dnd.rb +49 -7
  73. data/lib/faker/games/dota.rb +14 -5
  74. data/lib/faker/games/final_fantasy_xiv.rb +73 -0
  75. data/lib/faker/games/minecraft.rb +1 -1
  76. data/lib/faker/games/myst.rb +1 -1
  77. data/lib/faker/games/tarkov.rb +205 -0
  78. data/lib/faker/games/touhou.rb +75 -0
  79. data/lib/faker/games/witcher.rb +39 -0
  80. data/lib/faker/japanese_media/cowboy_bebop.rb +61 -0
  81. data/lib/faker/japanese_media/fullmetal_alchemist_brotherhood.rb +51 -0
  82. data/lib/faker/japanese_media/kamen_rider.rb +102 -0
  83. data/lib/faker/japanese_media/one_piece.rb +1 -1
  84. data/lib/faker/locations/australia.rb +52 -0
  85. data/lib/faker/movies/avatar.rb +49 -0
  86. data/lib/faker/movies/hackers.rb +48 -0
  87. data/lib/faker/movies/star_wars.rb +73 -5
  88. data/lib/faker/movies/{room.rb → the_room.rb} +4 -4
  89. data/lib/faker/movies/tron.rb +161 -0
  90. data/lib/faker/music/hiphop.rb +3 -3
  91. data/lib/faker/music/music.rb +12 -0
  92. data/lib/faker/music/rock_band.rb +12 -0
  93. data/lib/faker/music/smashing_pumpkins.rb +64 -0
  94. data/lib/faker/quotes/quote.rb +13 -0
  95. data/lib/faker/quotes/rajnikanth.rb +1 -0
  96. data/lib/faker/quotes/shakespeare.rb +34 -0
  97. data/lib/faker/religion/bible.rb +50 -0
  98. data/lib/faker/sports/chess.rb +90 -0
  99. data/lib/faker/sports/mountaineering.rb +22 -0
  100. data/lib/faker/sports/sport.rb +116 -0
  101. data/lib/faker/travel/airport.rb +43 -0
  102. data/lib/faker/travel/train_station.rb +54 -0
  103. data/lib/faker/tv_shows/archer.rb +51 -0
  104. data/lib/faker/tv_shows/big_bang_theory.rb +1 -1
  105. data/lib/faker/tv_shows/brooklyn_nine_nine.rb +38 -0
  106. data/lib/faker/tv_shows/michael_scott.rb +0 -3
  107. data/lib/faker/tv_shows/south_park.rb +15 -0
  108. data/lib/faker/tv_shows/spongebob.rb +50 -0
  109. data/lib/faker/tv_shows/suits.rb +1 -1
  110. data/lib/faker/tv_shows/supernatural.rb +48 -0
  111. data/lib/faker/tv_shows/the_office.rb +37 -0
  112. data/lib/faker/version.rb +2 -2
  113. data/lib/faker.rb +26 -67
  114. data/lib/helpers/base58.rb +1 -1
  115. data/lib/helpers/deprecator.rb +53 -0
  116. data/lib/helpers/positional_generator.rb +480 -0
  117. data/lib/helpers/unique_generator.rb +13 -14
  118. data/lib/locales/README.md +18 -2
  119. data/lib/locales/ar.yml +6 -1
  120. data/lib/locales/bg.yml +1 -2
  121. data/lib/locales/da-DK.yml +529 -35
  122. data/lib/locales/de-AT.yml +3487 -27
  123. data/lib/locales/de-CH.yml +4328 -12
  124. data/lib/locales/de.yml +7185 -99
  125. data/lib/locales/ee.yml +0 -1
  126. data/lib/locales/en/address.yml +1826 -562
  127. data/lib/locales/en/airport.yml +381 -0
  128. data/lib/locales/en/animal.yml +1 -1
  129. data/lib/locales/en/archer.yml +75 -0
  130. data/lib/locales/en/australia.yml +108 -0
  131. data/lib/locales/en/avatar.yml +31 -0
  132. data/lib/locales/en/bank.yml +1 -1
  133. data/lib/locales/en/bible.yml +90 -0
  134. data/lib/locales/en/bird.yml +1281 -0
  135. data/lib/locales/en/book.yml +487 -3
  136. data/lib/locales/en/brooklyn_nine_nine.yml +35 -0
  137. data/lib/locales/en/cat.yml +1 -1
  138. data/lib/locales/en/chess.yml +103 -0
  139. data/lib/locales/en/coffee.yml +1 -1
  140. data/lib/locales/en/commerce.yml +17 -0
  141. data/lib/locales/en/community.yml +17 -17
  142. data/lib/locales/en/company.yml +1 -0
  143. data/lib/locales/en/computer.yml +23 -4
  144. data/lib/locales/en/cowboy_bebop.yml +163 -0
  145. data/lib/locales/en/device.yml +112 -4
  146. data/lib/locales/en/dnd.yml +186 -1
  147. data/lib/locales/en/dog.yml +262 -7
  148. data/lib/locales/en/dota.yml +173 -0
  149. data/lib/locales/en/dune.yml +266 -397
  150. data/lib/locales/en/educator.yml +6 -0
  151. data/lib/locales/en/emotion.yml +480 -0
  152. data/lib/locales/en/file.yml +9 -1
  153. data/lib/locales/en/final_fantasy_xiv.yml +754 -0
  154. data/lib/locales/en/finance.yml +27 -4
  155. data/lib/locales/en/food.yml +1067 -10
  156. data/lib/locales/en/football.yml +3 -3
  157. data/lib/locales/en/fullmetal_alchemist_brotherhood.yml +78 -0
  158. data/lib/locales/en/game.yml +11 -0
  159. data/lib/locales/en/hackers.yml +53 -0
  160. data/lib/locales/en/harry_potter.yml +1 -1
  161. data/lib/locales/en/heroes.yml +2 -2
  162. data/lib/locales/en/hobby.yml +171 -0
  163. data/lib/locales/en/horse.yml +2 -2
  164. data/lib/locales/en/id_number.yml +1 -1
  165. data/lib/locales/en/internet.yml +136 -3
  166. data/lib/locales/en/kamen_rider.yml +452 -0
  167. data/lib/locales/en/kpop.yml +7 -7
  168. data/lib/locales/en/lebowski.yml +1 -1
  169. data/lib/locales/en/lovecraft.yml +76 -6
  170. data/lib/locales/en/minecraft.yml +4 -4
  171. data/lib/locales/en/mitch_hedberg.yml +46 -0
  172. data/lib/locales/en/mountain.yml +14 -1
  173. data/lib/locales/en/mountaineering.yml +14 -0
  174. data/lib/locales/en/movie.yml +2 -1
  175. data/lib/locales/en/music.yml +152 -142
  176. data/lib/locales/en/naruto.yml +2 -3
  177. data/lib/locales/en/one_piece.yml +1 -1
  178. data/lib/locales/en/opera.yml +2 -2
  179. data/lib/locales/en/overwatch.yml +5 -7
  180. data/lib/locales/en/phone_number.yml +78 -3
  181. data/lib/locales/en/rock_band.yml +1 -0
  182. data/lib/locales/en/science.yml +481 -3
  183. data/lib/locales/en/shakespeare.yml +21 -24
  184. data/lib/locales/en/smashing_pumpkins.yml +382 -0
  185. data/lib/locales/en/source.yml +5 -0
  186. data/lib/locales/en/south_park.yml +360 -2
  187. data/lib/locales/en/space.yml +1 -1
  188. data/lib/locales/en/spongebob.yml +489 -0
  189. data/lib/locales/en/sport.yml +130 -0
  190. data/lib/locales/en/star_wars.yml +1 -1
  191. data/lib/locales/en/stranger_thing.yml +1 -1
  192. data/lib/locales/en/super_smash_bros.yml +7 -2
  193. data/lib/locales/en/supernatural.yml +141 -0
  194. data/lib/locales/en/tarkov.yml +593 -0
  195. data/lib/locales/en/tea.yml +172 -0
  196. data/lib/locales/en/the_kingkiller_chronicle.yml +56 -0
  197. data/lib/locales/en/the_office.yml +86 -0
  198. data/lib/locales/en/{room.yml → the_room.yml} +1 -1
  199. data/lib/locales/en/{show.yml → theater.yml} +1 -1
  200. data/lib/locales/en/touhou.yml +839 -0
  201. data/lib/locales/en/train_station.yml +280 -0
  202. data/lib/locales/en/tron.yml +227 -0
  203. data/lib/locales/en/vehicle.yml +2809 -75
  204. data/lib/locales/en/witcher.yml +37 -0
  205. data/lib/locales/en-AU.yml +718 -47
  206. data/lib/locales/en-CA.yml +373 -18
  207. data/lib/locales/en-GB.yml +116 -8
  208. data/lib/locales/en-IND.yml +1259 -17
  209. data/lib/locales/en-KE.yml +212 -0
  210. data/lib/locales/en-MS.yml +364 -17
  211. data/lib/locales/en-NEP.yml +212 -38
  212. data/lib/locales/en-NG.yml +1 -0
  213. data/lib/locales/en-NZ.yml +1153 -123
  214. data/lib/locales/en-PAK.yml +369 -10
  215. data/lib/locales/en-SG.yml +581 -16
  216. data/lib/locales/en-UG.yml +1 -0
  217. data/lib/locales/en-US.yml +6914 -74
  218. data/lib/locales/en-ZA.yml +1 -1
  219. data/lib/locales/en-au-ocker.yml +266 -22
  220. data/lib/locales/es-AR.yml +4570 -0
  221. data/lib/locales/es-MX.yml +1 -2
  222. data/lib/locales/es.yml +2 -3
  223. data/lib/locales/fi-FI.yml +3 -1
  224. data/lib/locales/fr/address.yml +20 -0
  225. data/lib/locales/fr/adjective.yml +266 -0
  226. data/lib/locales/fr/ancient.yml +141 -0
  227. data/lib/locales/fr/animal.yml +5 -0
  228. data/lib/locales/fr/appliance.yml +4 -0
  229. data/lib/locales/fr/book.yml +7 -0
  230. data/lib/locales/fr/color.yml +4 -0
  231. data/lib/locales/fr/company.yml +17 -0
  232. data/lib/locales/fr/compass.yml +23 -0
  233. data/lib/locales/fr/demographic.yml +4 -0
  234. data/lib/locales/fr/gender.yml +6 -0
  235. data/lib/locales/fr/internet.yml +4 -0
  236. data/lib/locales/fr/lorem.yml +5 -0
  237. data/lib/locales/fr/measurement.yml +7 -0
  238. data/lib/locales/fr/name.yml +22 -0
  239. data/lib/locales/fr/phone_number.yml +7 -0
  240. data/lib/locales/fr/pokemon.yml +7 -0
  241. data/lib/locales/fr-CA.yml +2733 -44
  242. data/lib/locales/fr-CH.yml +1 -2
  243. data/lib/locales/fr.yml +2 -118
  244. data/lib/locales/hy.yml +3624 -119
  245. data/lib/locales/id.yml +839 -12
  246. data/lib/locales/it.yml +1304 -32
  247. data/lib/locales/ja/README.md +13 -0
  248. data/lib/locales/ja/address.yml +120539 -0
  249. data/lib/locales/ja/adjective.yml +148 -0
  250. data/lib/locales/ja/ancient.yml +4 -0
  251. data/lib/locales/ja/animal.yml +5 -0
  252. data/lib/locales/ja/bank.yml +4 -0
  253. data/lib/locales/ja/book.yml +7 -0
  254. data/lib/locales/ja/cat.yml +5 -0
  255. data/lib/locales/ja/coffee.yml +4 -0
  256. data/lib/locales/ja/color.yml +4 -0
  257. data/lib/locales/ja/commerce.yml +11 -0
  258. data/lib/locales/ja/company.yml +8 -0
  259. data/lib/locales/ja/dog.yml +6 -0
  260. data/lib/locales/ja/emotion.yml +51 -0
  261. data/lib/locales/ja/food.yml +4 -0
  262. data/lib/locales/ja/football.yml +115 -0
  263. data/lib/locales/ja/gender.yml +4 -0
  264. data/lib/locales/ja/lorem.yml +9 -0
  265. data/lib/locales/ja/name.yml +13 -0
  266. data/lib/locales/ja/naruto.yml +230 -0
  267. data/lib/locales/ja/overwatch.yml +5 -0
  268. data/lib/locales/ja/phone_number.yml +7 -0
  269. data/lib/locales/ja/pokemon.yml +7 -0
  270. data/lib/locales/ja/relationship.yml +10 -0
  271. data/lib/locales/ja/restaurant.yml +11 -0
  272. data/lib/locales/ja/space.yml +5 -0
  273. data/lib/locales/ja/sport.yml +130 -0
  274. data/lib/locales/ja/studio_ghibli.yml +112 -0
  275. data/lib/locales/ja/subscription.yml +8 -0
  276. data/lib/locales/ja/super_mario.yml +9 -0
  277. data/lib/locales/ja/super_smash_bros.yml +8 -0
  278. data/lib/locales/ja/touhou.yml +466 -0
  279. data/lib/locales/ja/university.yml +9 -0
  280. data/lib/locales/ja/zelda.yml +5 -0
  281. data/lib/locales/ko.yml +1361 -20
  282. data/lib/locales/lt.yml +315 -0
  283. data/lib/locales/lv.yml +1 -2
  284. data/lib/locales/mi-NZ.yml +283 -0
  285. data/lib/locales/nb-NO.yml +518 -29
  286. data/lib/locales/nl.yml +1 -1
  287. data/lib/locales/pl.yml +1 -2
  288. data/lib/locales/pt-BR.yml +8157 -660
  289. data/lib/locales/pt.yml +844 -45
  290. data/lib/locales/ru.yml +1355 -32
  291. data/lib/locales/sk.yml +4410 -43
  292. data/lib/locales/sv.yml +100 -0
  293. data/lib/locales/th.yml +76 -76
  294. data/lib/locales/tr.yml +1 -2
  295. data/lib/locales/uk.yml +1808 -44
  296. data/lib/locales/vi.yml +1 -0
  297. data/lib/locales/zh-CN/bank.yml +17 -0
  298. data/lib/locales/zh-CN.yml +1 -0
  299. data/lib/locales/zh-TW.yml +1 -0
  300. metadata +134 -133
  301. data/History.md +0 -176
  302. data/lib/faker/default/fillmurray.rb +0 -45
  303. data/lib/faker/default/lorem_pixel.rb +0 -69
  304. data/lib/locales/ja.yml +0 -105
  305. /data/lib/faker/default/{faker_adjective.rb → adjective.rb} +0 -0
data/README.md CHANGED
@@ -1,78 +1,124 @@
1
-
2
1
  ![logotype a happy-07](https://user-images.githubusercontent.com/36028424/40263395-4318481e-5b44-11e8-92e5-3dcc1ce169b3.png)
3
2
 
4
3
  # Faker
5
4
  [![Tests](https://github.com/faker-ruby/faker/workflows/Tests/badge.svg)](https://github.com/faker-ruby/faker/actions?query=workflow%3ATests)
6
5
  [![Gem Version](https://badge.fury.io/rb/faker.svg)](https://badge.fury.io/rb/faker)
7
- [![Inline docs](https://inch-ci.org/github/faker-ruby/faker.svg?branch=master)](https://inch-ci.org/github/faker-ruby/faker)
6
+ [![Inline docs](https://inch-ci.org/github/faker-ruby/faker.svg?branch=main)](https://inch-ci.org/github/faker-ruby/faker)
8
7
  [![Test Coverage](https://api.codeclimate.com/v1/badges/ef54c7f9df86e965d64b/test_coverage)](https://codeclimate.com/github/stympy/faker/test_coverage)
9
8
  [![Maintainability](https://api.codeclimate.com/v1/badges/ef54c7f9df86e965d64b/maintainability)](https://codeclimate.com/github/stympy/faker/maintainability)
10
- [![SemVer compatibility](https://api.dependabot.com/badges/compatibility_score?dependency-name=faker&package-manager=bundler&version-scheme=semver)](https://dependabot.com/compatibility-score.html?dependency-name=faker&package-manager=bundler&version-scheme=semver)
11
9
 
12
- 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.
12
+
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
+ ## In the media
28
+
29
+ - 📰 [With Great Humor Comes Great Developer Engagement] - KTH Royal Institute of Technology research
30
+ - 🎧 [Computer und Kommunikation 4.5.2024, komplette Sendung] - Deutschland Funk Radio Interview
31
+
32
+ [With Great Humor Comes Great Developer Engagement]: https://arxiv.org/pdf/2312.01680
33
+ [Computer und Kommunikation 4.5.2024, komplette Sendung]: https://www.deutschlandfunk.de/computer-und-kommunikation-4-5-2024-komplette-sendung-dlf-16492b03-100.html
13
34
 
14
- It comes in very handy for taking screenshots (taking screenshots for my
15
- project, [Catch the Best](http://catchthebest.com/) was the original impetus
16
- for the creation of this gem), having real-looking test data, and having your
17
- database populated with more than one or two records while you're doing
18
- development.
35
+ ## Table of Contents
19
36
 
20
37
  - [Faker](#faker)
21
- - [NOTE](#note)
22
- - [Installing](#installing)
38
+ - [Quick links](#quick-links)
39
+ - [Table of Contents](#table-of-contents)
40
+ - [Notes](#notes)
41
+ - [Getting Started](#getting-started)
23
42
  - [Usage](#usage)
24
- - [CLI](#cli)
43
+ - [A note about the Generators versions](#a-note-about-the-generators-versions)
25
44
  - [Ensuring unique values](#ensuring-unique-values)
26
45
  - [Deterministic Random](#deterministic-random)
46
+ - [Customization](#customization)
47
+ - [Minitest and Faker \>= 2.22](#minitest-and-faker--222)
27
48
  - [Generators](#generators)
28
- - [Default](#default)
29
- - [Blockchain](#blockchain)
30
- - [Books](#books)
31
- - [Creature](#creature)
32
- - [Games](#games)
33
- - [Japanese Media](#japanese-media)
34
- - [Movies](#movies)
35
- - [Music](#music)
36
- - [Quotes](#quotes)
37
- - [Sports](#sports)
38
- - [Tv Shows](#tv-shows)
39
- - [Customization](#customization)
40
49
  - [Contributing](#contributing)
41
- - [Contact](#contact)
50
+ - [Versioning](#versioning)
42
51
  - [License](#license)
43
52
 
44
- ### NOTE
53
+ ### Notes
54
+
45
55
  * While Faker generates data at random, returned values are not guaranteed to be unique by default.
46
- You must explicitly specify when you require unique values, see [details](#ensuring-unique-values).
47
- Values also can be deterministic if you use the deterministic feature, see [details](#deterministic-random)
48
- * This is the `master` branch of Faker and may contain changes that are not yet released.
49
- Please refer the README of your version for the available methods.
50
- List of all versions is [available here](https://github.com/stympy/faker/releases).
51
-
52
- ## Installing
53
- ```bash
54
- gem install faker
55
- ```
56
- 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:
56
+ To explicitly specify when you require unique values, see [Ensuring Unique Values](#ensuring-unique-values).
57
+ Values also can be deterministic if you use the deterministic feature, see [Deterministic Random](#deterministic-random)
58
+ * This is the `main` branch of Faker and may contain changes that are not yet released.
59
+ Please refer to the README of your version for the available methods.
60
+ The list of all versions is [available here](https://github.com/stympy/faker/releases).
61
+
62
+ ## Getting Started
63
+
64
+ Start by including `faker` in your Gemfile:
57
65
 
58
66
  ```ruby
59
- gem 'faker', :git => 'https://github.com/faker-ruby/faker.git', :branch => 'master'
67
+ gem 'faker'
60
68
  ```
61
69
 
70
+ Then run `bundle install`.
71
+
62
72
  ## Usage
73
+
74
+ Here are some examples of how to use Faker:
75
+
63
76
  ```ruby
64
77
  require 'faker'
65
78
 
66
79
  Faker::Name.name #=> "Christophe Bartell"
67
80
 
68
- Faker::Internet.email #=> "kirsten.greenholt@corkeryfisher.info"
81
+ Faker::Address.full_address #=> "5479 William Way, East Sonnyhaven, LA 63637"
82
+
83
+ Faker::Markdown.emphasis #=> "Quo qui aperiam. Amet corrupti distinctio. Sit quia *dolor.*"
84
+
85
+ Faker::TvShows::RuPaul.queen #=> "Violet Chachki"
86
+
87
+ Faker::Alphanumeric.alpha(number: 10) #=> "zlvubkrwga"
88
+
89
+ Faker::ProgrammingLanguage.name #=> "Ruby"
90
+ ```
91
+
92
+ For a complete list of the generators, see [Generators](#generators).
93
+
94
+ #### A note about the Generators versions
95
+
96
+ If you get a `uninitialized constant Faker::[some_class]` error, your version of
97
+ the gem is behind main.
98
+
99
+ To make sure that your gem is the one
100
+ documented here, change the line in your Gemfile to:
101
+
102
+ ```ruby
103
+ gem 'faker', :git => 'https://github.com/faker-ruby/faker.git', :branch => 'main'
69
104
  ```
70
105
 
71
- ### CLI
72
- Instructions are available in the [faker-bot README](https://github.com/faker-ruby/faker-bot).
106
+ The generators have the `@faker.version` tag on top of their implementation.
107
+ From the tags, you can identify the version the generator was added:
108
+
109
+ ```ruby
110
+ # Faker::TvShows::ParksAndRec.character
111
+
112
+ # @faker.version 1.9.0
113
+ def character
114
+ fetch('parks_and_rec.characters')
115
+ end
116
+ ```
73
117
 
74
118
  ### Ensuring unique values
75
- Prefix your method call with `unique`. For example:
119
+
120
+ To ensure Faker generates unique values, prefix your method call with `unique`:
121
+
76
122
  ```ruby
77
123
  Faker::Name.unique.name # This will return a unique name every time it is called
78
124
  ```
@@ -81,6 +127,7 @@ If too many unique values are requested from a generator that has a limited
81
127
  number of potential values, a `Faker::UniqueGenerator::RetryLimitExceeded`
82
128
  exception may be raised. It is possible to clear the record of unique values
83
129
  that have been returned, for example between tests.
130
+
84
131
  ```ruby
85
132
  Faker::Name.unique.clear # Clears used values for Faker::Name
86
133
  Faker::UniqueGenerator.clear # Clears used values for all generators
@@ -99,7 +146,9 @@ Faker::Lorem.unique.exclude :string, [number: 6], %w[azerty wxcvbn]
99
146
  ```
100
147
 
101
148
  ### Deterministic Random
102
- Faker supports seeding of its pseudo-random number generator (PRNG) to provide deterministic output of repeated method calls.
149
+
150
+ Faker supports seeding of its pseudo-random number generator (PRNG)
151
+ to provide deterministic output of repeated method calls.
103
152
 
104
153
  ```ruby
105
154
  Faker::Config.random = Random.new(42)
@@ -114,14 +163,47 @@ Faker::Config.random.seed #=> 185180369676275068918401850258677722187
114
163
  Faker::Company.bs #=> "cultivate viral synergies"
115
164
  ```
116
165
 
166
+ ### Customization
167
+
168
+ You may want Faker to print information depending on your location in the world.
169
+ To assist you in this, Faker uses the `I18n` gem to store strings and formats to
170
+ represent the names and postal codes of the area of your choosing.
171
+
172
+ Just set the locale you want as shown below, and Faker will take care of the rest.
173
+
174
+ ```ruby
175
+ Faker::Config.locale = 'es'
176
+ # or
177
+ Faker::Config.locale = :es
178
+ ```
179
+
180
+ To override Faker's locales, and set it on threaded server environments
181
+ check out the [locales README](lib/locales/README.md).
182
+
183
+ ### Minitest and Faker >= 2.22
184
+
185
+ To prevent Faker (version >= 2.22) from generating duplicate values when using Minitest,
186
+ you might need to add the following to the `test_helper.rb` or `rails_helper.rb` file:
187
+
188
+ ```ruby
189
+ Faker::Config.random = Random.new
190
+ ```
191
+
192
+ See [Issue #2534](https://github.com/faker-ruby/faker/issues/2534) for more details.
193
+
117
194
  ## Generators
195
+
196
+ 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.
197
+
118
198
  **NOTE: Some of the generators below aren't released yet. If you want to use them, change the line in your gemfile to:**
119
199
 
120
200
  ```ruby
121
- gem 'faker', :git => 'https://github.com/faker-ruby/faker.git', :branch => 'master'
201
+ gem 'faker', :git => 'https://github.com/faker-ruby/faker.git', :branch => 'main'
122
202
  ```
123
203
 
124
- ### Default
204
+ <details>
205
+ <summary>Default</summary>
206
+
125
207
  - [Faker::Address](doc/default/address.md)
126
208
  - [Faker::Alphanumeric](doc/default/alphanumeric.md)
127
209
  - [Faker::Ancient](doc/default/ancient.md)
@@ -136,6 +218,7 @@ gem 'faker', :git => 'https://github.com/faker-ruby/faker.git', :branch => 'mast
136
218
  - [Faker::Boolean](doc/default/boolean.md)
137
219
  - [Faker::BossaNova](doc/default/bossa_nova.md)
138
220
  - [Faker::Business](doc/default/business.md)
221
+ - [Faker::Camera](doc/default/camera.md)
139
222
  - [Faker::Cannabis](doc/default/cannabis.md)
140
223
  - [Faker::ChileRut](doc/default/chile_rut.md)
141
224
  - [Faker::ChuckNorris](doc/default/chuck_norris.md)
@@ -161,9 +244,9 @@ gem 'faker', :git => 'https://github.com/faker-ruby/faker.git', :branch => 'mast
161
244
  - [Faker::Drone](doc/drone/drone.md)
162
245
  - [Faker::Educator](doc/default/educator.md)
163
246
  - [Faker::ElectricalComponents](doc/default/electrical_components.md)
247
+ - [Faker::Emotion](doc/default/emotion.md)
164
248
  - [Faker::Esport](doc/default/esport.md)
165
249
  - [Faker::File](doc/default/file.md)
166
- - [Faker::Fillmurray](doc/default/fillmurray.md)
167
250
  - [Faker::Finance](doc/default/finance.md)
168
251
  - [Faker::Food](doc/default/food.md)
169
252
  - [Faker::FunnyName](doc/default/funny_name.md)
@@ -171,8 +254,9 @@ gem 'faker', :git => 'https://github.com/faker-ruby/faker.git', :branch => 'mast
171
254
  - [Faker::GreekPhilosophers](doc/default/greek_philosophers.md)
172
255
  - [Faker::Hacker](doc/default/hacker.md)
173
256
  - [Faker::Hipster](doc/default/hipster.md)
257
+ - [Faker::Hobby](doc/default/hobby.md)
174
258
  - [Faker::House](doc/default/house.md)
175
- - [Faker::IDNumber](doc/default/id_number.md)
259
+ - [Faker::IdNumber](doc/default/id_number.md)
176
260
  - [Faker::IndustrySegments](doc/default/industry_segments.md)
177
261
  - [Faker::Internet](doc/default/internet.md)
178
262
  - [Faker::Invoice](doc/default/invoice.md)
@@ -181,11 +265,11 @@ gem 'faker', :git => 'https://github.com/faker-ruby/faker.git', :branch => 'mast
181
265
  - [Faker::Kpop](doc/default/kpop.md)
182
266
  - [Faker::Lorem](doc/default/lorem.md)
183
267
  - [Faker::LoremFlickr](doc/default/lorem_flickr.md)
184
- - [Faker::LoremPixel](doc/default/lorem_pixel.md)
185
268
  - [Faker::Markdown](doc/default/markdown.md)
186
269
  - [Faker::Marketing](doc/default/marketing.md)
187
270
  - [Faker::Measurement](doc/default/measurement.md)
188
271
  - [Faker::Military](doc/default/military.md)
272
+ - [Faker::Mountain](doc/default/mountain.md)
189
273
  - [Faker::Name](doc/default/name.md)
190
274
  - [Faker::Nation](doc/default/nation.md)
191
275
  - [Faker::NatoPhoneticAlphabet](doc/default/nato_phonetic_alphabet.md)
@@ -206,40 +290,71 @@ gem 'faker', :git => 'https://github.com/faker-ruby/faker.git', :branch => 'mast
206
290
  - [Faker::Stripe](doc/default/stripe.md)
207
291
  - [Faker::Subscription](doc/default/subscription.md)
208
292
  - [Faker::Superhero](doc/default/superhero.md)
293
+ - [Faker::Tea](doc/default/tea.md)
209
294
  - [Faker::Team](doc/default/team.md)
295
+ - [Faker::Theater](doc/default/theater.md)
210
296
  - [Faker::Time](doc/default/time.md)
211
297
  - [Faker::Twitter](doc/default/twitter.md)
212
298
  - [Faker::Types](doc/default/types.md)
213
299
  - [Faker::University](doc/default/university.md)
214
300
  - [Faker::Vehicle](doc/default/vehicle.md)
215
301
  - [Faker::Verbs](doc/default/verbs.md)
302
+ - [Faker::VulnerabilityIdentifier](doc/default/vulnerability_identifier.md)
216
303
  - [Faker::WorldCup](doc/default/world_cup.md)
304
+ </details>
305
+
306
+ <details>
307
+ <summary>Blockchain</summary>
217
308
 
218
- ### Blockchain
219
309
  - [Faker::Blockchain::Aeternity](doc/blockchain/aeternity.md)
220
310
  - [Faker::Blockchain::Bitcoin](doc/blockchain/bitcoin.md)
221
311
  - [Faker::Blockchain::Ethereum](doc/blockchain/ethereum.md)
222
312
  - [Faker::Blockchain::Tezos](doc/blockchain/tezos.md)
313
+ </details>
314
+
315
+ <details>
316
+ <summary>Books</summary>
223
317
 
224
- ### Books
225
318
  - [Faker::Book](doc/books/book.md)
226
319
  - [Faker::Books::CultureSeries](doc/books/culture_series.md)
227
320
  - [Faker::Books::Dune](doc/books/dune.md)
228
321
  - [Faker::Books::Lovecraft](doc/books/lovecraft.md)
322
+ - [Faker::Books::TheKingkillerChronicle](doc/books/the_kingkiller_chronicle.md)
323
+ </details>
324
+
325
+ <details>
326
+ <summary>Fantasy</summary>
327
+
328
+ - [Faker::Fantasy::Tolkien](doc/fantasy/tolkien.md)
329
+ </details>
330
+
331
+ <details>
332
+ <summary>Travel</summary>
333
+
334
+ - [Faker:Travel::Airport](doc/travel/airport.md)
335
+ - [Faker:Travel::TrainStation](doc/travel/train_station.md)
336
+ </details>
337
+
338
+ <details>
339
+ <summary>Creature</summary>
229
340
 
230
- ### Creature
231
341
  - [Faker::Creature::Animal](doc/creature/animal.md)
342
+ - [Faker::Creature::Bird](doc/creature/bird.md)
232
343
  - [Faker::Creature::Cat](doc/creature/cat.md)
233
344
  - [Faker::Creature::Dog](doc/creature/dog.md)
234
345
  - [Faker::Creature::Horse](doc/creature/horse.md)
346
+ </details>
347
+
348
+ <details>
349
+ <summary>Games</summary>
235
350
 
236
- ### Games
237
351
  - [Faker::Game](doc/games/game.md)
238
352
  - [Faker::Games::ClashOfClans](doc/games/clash_of_clans.md)
239
353
  - [Faker::Games::DnD](doc/games/dnd.md)
240
354
  - [Faker::Games::Dota](doc/games/dota.md)
241
355
  - [Faker::Games::ElderScrolls](doc/games/elder_scrolls.md)
242
356
  - [Faker::Games::Fallout](doc/games/fallout.md)
357
+ - [Faker::Games::FinalFantasyXIV](doc/games/final_fantasy_xiv.md)
243
358
  - [Faker::Games::HalfLife](doc/games/half_life.md)
244
359
  - [Faker::Games::Heroes](doc/games/heroes.md)
245
360
  - [Faker::Games::HeroesOfTheStorm](doc/games/heroes_of_the_storm.md)
@@ -252,12 +367,17 @@ gem 'faker', :git => 'https://github.com/faker-ruby/faker.git', :branch => 'mast
252
367
  - [Faker::Games::StreetFighter](doc/games/street_fighter.md)
253
368
  - [Faker::Games::SuperMario](doc/games/super_mario.md)
254
369
  - [Faker::Games::SuperSmashBros](doc/games/super_smash_bros.md)
370
+ - [Faker::Games::Touhou](doc/games/touhou.md)
255
371
  - [Faker::Games::WarhammerFantasy](doc/games/warhammer_fantasy.md)
256
372
  - [Faker::Games::Witcher](doc/games/witcher.md)
257
373
  - [Faker::Games::WorldOfWarcraft](doc/games/world_of_warcraft.md)
258
374
  - [Faker::Games::Zelda](doc/games/zelda.md)
375
+ </details>
259
376
 
260
- ### Japanese Media
377
+ <details>
378
+ <summary>Japanese Media</summary>
379
+
380
+ - [Faker::JapaneseMedia::CowboyBebop](doc/japanese_media/cowboy_bebop.md)
261
381
  - [Faker::JapaneseMedia::DragonBall](doc/japanese_media/dragon_ball.md)
262
382
  - [Faker::JapaneseMedia::OnePiece](doc/japanese_media/one_piece.md)
263
383
  - [Faker::JapaneseMedia::StudioGhibli](doc/japanese_media/studio_ghibli.md)
@@ -265,9 +385,14 @@ gem 'faker', :git => 'https://github.com/faker-ruby/faker.git', :branch => 'mast
265
385
  - [Faker::JapaneseMedia::Naruto](doc/japanese_media/naruto.md)
266
386
  - [Faker::JapaneseMedia::Doraemon](doc/japanese_media/doraemon.md)
267
387
  - [Faker::JapaneseMedia::Conan](doc/japanese_media/conan.md)
388
+ - [Faker::JapaneseMedia::FullmetalAlchemistBrotherhood](doc/japanese_media/fullmetal_alchemist_brotherhood.md)
389
+ </details>
390
+
391
+ <details>
392
+ <summary>Movies</summary>
268
393
 
269
- ### Movies
270
394
  - [Faker::Movie](doc/movies/movie.md)
395
+ - [Faker::Movies::Avatar](doc/movies/avatar.md)
271
396
  - [Faker::Movies::BackToTheFuture](doc/movies/back_to_the_future.md)
272
397
  - [Faker::Movies::Departed](doc/movies/departed.md)
273
398
  - [Faker::Movies::Ghostbusters](doc/movies/ghostbusters.md)
@@ -279,35 +404,55 @@ gem 'faker', :git => 'https://github.com/faker-ruby/faker.git', :branch => 'mast
279
404
  - [Faker::Movies::LordOfTheRings](doc/movies/lord_of_the_rings.md)
280
405
  - [Faker::Movies::PrincessBride](doc/movies/princess_bride.md)
281
406
  - [Faker::Movies::StarWars](doc/movies/star_wars.md)
407
+ - [Faker::Movies::TRON](doc/movies/tron.md)
282
408
  - [Faker::Movies::VForVendetta](doc/movies/v_for_vendetta.md)
409
+ </details>
410
+
411
+ <details>
412
+ <summary>Music</summary>
283
413
 
284
- ### Music
285
414
  - [Faker::Music](doc/music/music.md)
286
415
  - [Faker::Music::GratefulDead](doc/music/grateful_dead.md)
416
+ - [Faker::Music::Hiphop](doc/music/hiphop.md)
287
417
  - [Faker::Music::Opera](doc/music/opera.md)
288
418
  - [Faker::Music::PearlJam](doc/music/pearl_jam.md)
289
419
  - [Faker::Music::Phish](doc/music/phish.md)
290
420
  - [Faker::Music::Prince](doc/music/prince.md)
291
421
  - [Faker::Music::RockBand](doc/music/rock_band.md)
292
422
  - [Faker::Music::Rush](doc/music/rush.md)
423
+ - [Faker::Music::SmashingPumpkins](doc/music/smashing_pumpkins.md)
293
424
  - [Faker::Music::UmphreysMcgee](doc/music/umphreys_mcgee.md)
425
+ </details>
426
+
427
+ <details>
428
+ <summary>Quotes</summary>
294
429
 
295
- ### Quotes
296
430
  - [Faker::Quote](doc/quotes/quote.md)
297
431
  - [Faker::Quotes::Chiquito](doc/quotes/chiquito.md)
298
432
  - [Faker::Quotes::Rajnikanth](doc/quotes/rajnikanth.md)
299
433
  - [Faker::Quotes::Shakespeare](doc/quotes/shakespeare.md)
434
+ </details>
300
435
 
436
+ <details>
437
+ <summary>Sports</summary>
301
438
 
302
- ### Sports
439
+ - [Faker::Sport](doc/sports/sport.md)
303
440
  - [Faker::Sports::Basketball](doc/sports/basketball.md)
441
+ - [Faker::Sports::Chess](doc/sports/chess.md)
304
442
  - [Faker::Sports::Football](doc/sports/football.md)
443
+ - [Faker::Sports::Mountaineering](doc/sports/mountaineering.md)
444
+ - [Faker::Sports::Volleyball](doc/sports/volleyball.md)
445
+ </details>
446
+
447
+ <details>
448
+ <summary>Tv Shows</summary>
305
449
 
306
- ### Tv Shows
307
450
  - [Faker::TvShows::AquaTeenHungerForce](doc/tv_shows/aqua_teen_hunger_force.md)
451
+ - [Faker::TvShows::Archer](doc/tv_shows/archer.md)
308
452
  - [Faker::TvShows::BigBangTheory](doc/tv_shows/big_bang_theory.md)
309
453
  - [Faker::TvShows::BojackHorseman](doc/tv_shows/bojack_horseman.md)
310
454
  - [Faker::TvShows::BreakingBad](doc/tv_shows/breaking_bad.md)
455
+ - [Faker::TvShows::BrooklynNineNine](doc/tv_shows/brooklyn_nine_nine.md)
311
456
  - [Faker::TvShows::Buffy](doc/tv_shows/buffy.md)
312
457
  - [Faker::TvShows::Community](doc/tv_shows/community.md)
313
458
  - [Faker::TvShows::DrWho](doc/tv_shows/dr_who.md)
@@ -327,66 +472,43 @@ gem 'faker', :git => 'https://github.com/faker-ruby/faker.git', :branch => 'mast
327
472
  - [Faker::TvShows::SiliconValley](doc/tv_shows/silicon_valley.md)
328
473
  - [Faker::TvShows::Simpsons](doc/tv_shows/simpsons.md)
329
474
  - [Faker::TvShows::SouthPark](doc/tv_shows/south_park.md)
475
+ - [Faker::TvShows::Spongebob](doc/tv_shows/spongebob.md)
330
476
  - [Faker::TvShows::StarTrek](doc/tv_shows/star_trek.md)
331
477
  - [Faker::TvShows::Stargate](doc/tv_shows/stargate.md)
332
478
  - [Faker::TvShows::StrangerThings](doc/tv_shows/stranger_things.md)
333
479
  - [Faker::TvShows::Suits](doc/tv_shows/suits.md)
480
+ - [Faker::TvShows::Supernatural](doc/tv_shows/supernatural.md)
334
481
  - [Faker::TvShows::TheExpanse](doc/tv_shows/the_expanse.md)
335
482
  - [Faker::TvShows::TheFreshPrinceOfBelAir](doc/tv_shows/the_fresh_prince_of_bel_air.md)
336
483
  - [Faker::TvShows::TheITCrowd](doc/tv_shows/the_it_crowd.md)
337
484
  - [Faker::TvShows::TheThickOfIt](doc/tv_shows/the_thick_of_it.md)
338
485
  - [Faker::TvShows::TwinPeaks](doc/tv_shows/twin_peaks.md)
339
486
  - [Faker::TvShows::VentureBros](doc/tv_shows/venture_bros.md)
487
+ </details>
340
488
 
341
- ## Customization
342
- Since you may want to make addresses and other types of data look different
343
- depending on where in the world you are (US postal codes vs. UK postal codes,
344
- for example), Faker uses the I18n gem to store strings (like state names) and
345
- formats (US postal codes are NNNNN while UK postal codes are AAN NAA),
346
- allowing you to get different formats by switching locales. Just set
347
- Faker::Config.locale to the locale you want, and Faker will take care of the
348
- rest.
349
-
350
- If your locale doesn't already exist, create it in the `lib/locales` directory
351
- and you can then override or add elements to suit your needs. See more about how to
352
- use locales [here](lib/locales/README.md)
353
-
354
- ```yaml
355
- en-au-ocker:
356
- faker:
357
- name:
358
- # Existing faker field, new data
359
- first_name:
360
- - Charlotte
361
- - Ava
362
- - Chloe
363
- - Emily
364
-
365
- # New faker fields
366
- ocker_first_name:
367
- - Bazza
368
- - Bluey
369
- - Davo
370
- - Johno
371
- - Shano
372
- - Shazza
373
- region:
374
- - South East Queensland
375
- - Wide Bay Burnett
376
- - Margaret River
377
- - Port Pirie
378
- - Gippsland
379
- - Elizabeth
380
- - Barossa
381
- ```
489
+ <details>
490
+ <summary>Locations</summary>
491
+
492
+ - [Faker::Locations::Australia](doc/locations/australia.md)
493
+ </details>
382
494
 
383
495
  ## Contributing
384
- See [CONTRIBUTING.md](https://github.com/stympy/faker/blob/master/CONTRIBUTING.md).
385
496
 
386
- ## Contact
387
- Comments and feedback are welcome. Send an email to Benjamin Curtis via the [google group](http://groups.google.com/group/ruby-faker).
497
+ **Note**: We are not accepting proposals for new generators and locales. The [Contributing](https://github.com/faker-ruby/faker/blob/main/CONTRIBUTING.md) guide has a few notes about this decision.
498
+
499
+ Take a look at the [Contributing](https://github.com/faker-ruby/faker/blob/main/CONTRIBUTING.md) document for
500
+ instructions on setting up the repo on your machine, opening bug reports, understanding the codebase,
501
+ and creating a good pull request.
388
502
 
389
- You can also join our [discord channel](https://discord.gg/RMumTwB) to discuss anything regarding improvements or feature requests.
503
+ There is a [Discord channel](https://discord.gg/RMumTwB) to discuss anything
504
+ regarding improvements or feature requests.
505
+
506
+ Thank you, contributors!
507
+
508
+ ## Versioning
509
+
510
+ Faker follows Semantic Versioning 2.0 as defined at https://semver.org.
390
511
 
391
512
  ## License
513
+
392
514
  This code is free to use under the terms of the MIT license.
@@ -61,7 +61,7 @@ module Faker
61
61
  def rand_strings(length = 50)
62
62
  hex_alphabet = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
63
63
  var = +''
64
- length.times { var << sample(shuffle(hex_alphabet.split(''))) }
64
+ length.times { var << sample(shuffle(hex_alphabet.chars)) }
65
65
  var
66
66
  end
67
67
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'digest'
3
+ require 'openssl'
4
4
  require 'securerandom'
5
5
 
6
6
  module Faker
@@ -51,7 +51,7 @@ module Faker
51
51
  def address_for(network)
52
52
  version = PROTOCOL_VERSIONS.fetch(network)
53
53
  packed = version.chr + Faker::Config.random.bytes(20)
54
- checksum = Digest::SHA2.digest(Digest::SHA2.digest(packed))[0..3]
54
+ checksum = OpenSSL::Digest::SHA256.digest(OpenSSL::Digest::SHA256.digest(packed))[0..3]
55
55
  Faker::Base58.encode(packed + checksum)
56
56
  end
57
57
  end
@@ -17,7 +17,7 @@ module Faker
17
17
  def address
18
18
  hex_alphabet = '0123456789abcdef'
19
19
  var = +'0x'
20
- 40.times { var << sample(shuffle(hex_alphabet.split(''))) }
20
+ 40.times { var << sample(shuffle(hex_alphabet.chars)) }
21
21
  var
22
22
  end
23
23
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'digest'
3
+ require 'openssl'
4
4
  require 'securerandom'
5
5
 
6
6
  module Faker
@@ -88,6 +88,34 @@ module Faker
88
88
  encode_tz(:edsig, 64)
89
89
  end
90
90
 
91
+ ##
92
+ # Produces a random Tezos public key
93
+ #
94
+ # @return [String]
95
+ #
96
+ # @example
97
+ # Faker::Blockchain::Tezos.public_key
98
+ # #=> "edpkuib9x8QXRc5nWwHUg7U1dXsVmaUrUNU5sX9pVEEvwbMVdfMCeq"
99
+ #
100
+ # @faker.version 2.15.2
101
+ def public_key
102
+ encode_tz(:edpk, 32)
103
+ end
104
+
105
+ ##
106
+ # Produces a random Tezos public key
107
+ #
108
+ # @return [String]
109
+ #
110
+ # @example
111
+ # Faker::Blockchain::Tezos.secret_key
112
+ # #=> "edsk3HZCAGEGpzQPnQUwQeFY4ESanFhQCgLpKriQw8GHyhKCrjHawv"
113
+ #
114
+ # @faker.version 2.15.2
115
+ def secret_key
116
+ encode_tz(:edsk, 32)
117
+ end
118
+
91
119
  protected
92
120
 
93
121
  ##
@@ -97,8 +125,8 @@ module Faker
97
125
  # @return [String]
98
126
  def encode_tz(prefix, payload_size)
99
127
  prefix = PREFIXES.fetch(prefix)
100
- packed = prefix.map(&:chr).join('') + Faker::Config.random.bytes(payload_size)
101
- checksum = Digest::SHA2.digest(Digest::SHA2.digest(packed))[0..3]
128
+ packed = prefix.map(&:chr).join + Faker::Config.random.bytes(payload_size)
129
+ checksum = OpenSSL::Digest::SHA256.digest(OpenSSL::Digest::SHA256.digest(packed))[0..3]
102
130
  Faker::Base58.encode(packed + checksum)
103
131
  end
104
132
  end
@@ -71,11 +71,7 @@ module Faker
71
71
  # #=> "He who controls the spice, controls the universe!"
72
72
  #
73
73
  # @faker.version 1.9.3
74
- def quote(legacy_character = NOT_GIVEN, character: nil)
75
- warn_for_deprecated_arguments do |keywords|
76
- keywords << :character if legacy_character != NOT_GIVEN
77
- end
78
-
74
+ def quote(character: nil)
79
75
  quoted_characters = translate('faker.dune.quotes').keys
80
76
 
81
77
  if character.nil?
@@ -106,11 +102,7 @@ module Faker
106
102
  # #=> "May thy knife chip and shatter."
107
103
  #
108
104
  # @faker.version 1.9.3
109
- def saying(legacy_source = NOT_GIVEN, source: nil)
110
- warn_for_deprecated_arguments do |keywords|
111
- keywords << :source if legacy_source != NOT_GIVEN
112
- end
113
-
105
+ def saying(source: nil)
114
106
  sourced_sayings = translate('faker.dune.sayings').keys
115
107
 
116
108
  if source.nil?