faker 2.11.0 → 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 (404) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +1131 -19
  3. data/README.md +249 -105
  4. data/lib/faker/blockchain/aeternity.rb +5 -5
  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 +17 -12
  9. data/lib/faker/books/lovecraft.rb +16 -44
  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 +42 -32
  13. data/lib/faker/default/adjective.rb +35 -0
  14. data/lib/faker/default/alphanumeric.rb +2 -8
  15. data/lib/faker/default/app.rb +1 -10
  16. data/lib/faker/default/avatar.rb +1 -12
  17. data/lib/faker/default/bank.rb +104 -19
  18. data/lib/faker/default/barcode.rb +165 -0
  19. data/lib/faker/default/beer.rb +3 -3
  20. data/lib/faker/default/blood.rb +48 -0
  21. data/lib/faker/default/boolean.rb +1 -4
  22. data/lib/faker/default/business.rb +1 -1
  23. data/lib/faker/default/camera.rb +46 -0
  24. data/lib/faker/default/cannabis.rb +10 -0
  25. data/lib/faker/default/chile_rut.rb +62 -18
  26. data/lib/faker/default/chuck_norris.rb +1 -0
  27. data/lib/faker/default/code.rb +162 -52
  28. data/lib/faker/default/color.rb +77 -6
  29. data/lib/faker/default/commerce.rb +105 -28
  30. data/lib/faker/default/company.rb +210 -28
  31. data/lib/faker/default/compass.rb +135 -0
  32. data/lib/faker/default/computer.rb +63 -0
  33. data/lib/faker/default/construction.rb +54 -0
  34. data/lib/faker/default/cosmere.rb +90 -0
  35. data/lib/faker/default/crypto.rb +26 -4
  36. data/lib/faker/default/crypto_coin.rb +48 -15
  37. data/lib/faker/default/date.rb +81 -54
  38. data/lib/faker/default/demographic.rb +1 -5
  39. data/lib/faker/default/driving_licence.rb +85 -18
  40. data/lib/faker/default/drone.rb +332 -0
  41. data/lib/faker/default/educator.rb +13 -0
  42. data/lib/faker/default/emotion.rb +33 -0
  43. data/lib/faker/default/file.rb +53 -21
  44. data/lib/faker/default/finance.rb +75 -7
  45. data/lib/faker/default/food.rb +28 -2
  46. data/lib/faker/default/gender.rb +1 -1
  47. data/lib/faker/default/hipster.rb +108 -51
  48. data/lib/faker/default/hobby.rb +22 -0
  49. data/lib/faker/default/html.rb +230 -0
  50. data/lib/faker/default/id_number.rb +251 -17
  51. data/lib/faker/default/internet.rb +361 -113
  52. data/lib/faker/default/internet_http.rb +48 -0
  53. data/lib/faker/default/invoice.rb +37 -23
  54. data/lib/faker/default/json.rb +63 -25
  55. data/lib/faker/default/lorem.rb +177 -75
  56. data/lib/faker/default/lorem_flickr.rb +69 -37
  57. data/lib/faker/default/markdown.rb +97 -11
  58. data/lib/faker/default/marketing.rb +1 -1
  59. data/lib/faker/default/measurement.rb +101 -42
  60. data/lib/faker/default/military.rb +26 -0
  61. data/lib/faker/default/mountain.rb +33 -0
  62. data/lib/faker/default/name.rb +99 -5
  63. data/lib/faker/default/nation.rb +0 -3
  64. data/lib/faker/default/{nhs.rb → national_health_service.rb} +26 -6
  65. data/lib/faker/default/number.rb +39 -69
  66. data/lib/faker/default/omniauth.rb +115 -57
  67. data/lib/faker/default/phone_number.rb +112 -14
  68. data/lib/faker/default/placeholdit.rb +23 -12
  69. data/lib/faker/default/relationship.rb +2 -6
  70. data/lib/faker/default/religion.rb +6 -0
  71. data/lib/faker/default/science.rb +108 -0
  72. data/lib/faker/default/slack_emoji.rb +81 -0
  73. data/lib/faker/default/source.rb +3 -16
  74. data/lib/faker/default/south_africa.rb +93 -3
  75. data/lib/faker/default/space.rb +1 -1
  76. data/lib/faker/default/string.rb +18 -8
  77. data/lib/faker/default/stripe.rb +68 -23
  78. data/lib/faker/default/tea.rb +41 -0
  79. data/lib/faker/default/theater.rb +52 -0
  80. data/lib/faker/default/time.rb +4 -34
  81. data/lib/faker/default/twitter.rb +42 -23
  82. data/lib/faker/default/types.rb +92 -34
  83. data/lib/faker/default/university.rb +45 -0
  84. data/lib/faker/default/vehicle.rb +227 -57
  85. data/lib/faker/default/verb.rb +45 -0
  86. data/lib/faker/default/vulnerability_identifier.rb +23 -0
  87. data/lib/faker/default/world_cup.rb +6 -15
  88. data/lib/faker/fantasy/tolkien.rb +67 -0
  89. data/lib/faker/games/clash_of_clans.rb +48 -0
  90. data/lib/faker/games/control.rb +113 -0
  91. data/lib/faker/games/dnd.rb +178 -0
  92. data/lib/faker/games/dota.rb +14 -5
  93. data/lib/faker/games/elder_scrolls.rb +26 -0
  94. data/lib/faker/games/final_fantasy_xiv.rb +73 -0
  95. data/lib/faker/games/heroes.rb +13 -0
  96. data/lib/faker/games/heroes_of_the_storm.rb +16 -5
  97. data/lib/faker/games/minecraft.rb +113 -0
  98. data/lib/faker/games/myst.rb +1 -1
  99. data/lib/faker/games/street_fighter.rb +61 -0
  100. data/lib/faker/games/super_mario.rb +48 -0
  101. data/lib/faker/games/tarkov.rb +205 -0
  102. data/lib/faker/games/touhou.rb +75 -0
  103. data/lib/faker/games/warhammer_fantasy.rb +74 -0
  104. data/lib/faker/games/witcher.rb +39 -0
  105. data/lib/faker/games/world_of_warcraft.rb +26 -1
  106. data/lib/faker/japanese_media/conan.rb +48 -0
  107. data/lib/faker/japanese_media/cowboy_bebop.rb +61 -0
  108. data/lib/faker/japanese_media/doraemon.rb +48 -0
  109. data/lib/faker/japanese_media/dragon_ball.rb +26 -0
  110. data/lib/faker/japanese_media/fullmetal_alchemist_brotherhood.rb +51 -0
  111. data/lib/faker/japanese_media/kamen_rider.rb +102 -0
  112. data/lib/faker/japanese_media/naruto.rb +61 -0
  113. data/lib/faker/japanese_media/one_piece.rb +1 -1
  114. data/lib/faker/japanese_media/studio_ghibli.rb +48 -0
  115. data/lib/faker/locations/australia.rb +52 -0
  116. data/lib/faker/movies/avatar.rb +49 -0
  117. data/lib/faker/movies/departed.rb +49 -0
  118. data/lib/faker/movies/hackers.rb +48 -0
  119. data/lib/faker/movies/hobbit.rb +4 -4
  120. data/lib/faker/movies/how_to_train_your_dragon.rb +48 -0
  121. data/lib/faker/movies/lord_of_the_rings.rb +3 -3
  122. data/lib/faker/movies/movie.rb +13 -0
  123. data/lib/faker/movies/star_wars.rb +75 -7
  124. data/lib/faker/movies/the_room.rb +63 -0
  125. data/lib/faker/movies/tron.rb +161 -0
  126. data/lib/faker/music/hiphop.rb +48 -0
  127. data/lib/faker/music/music.rb +12 -0
  128. data/lib/faker/music/opera.rb +237 -1
  129. data/lib/faker/music/pearl_jam.rb +50 -0
  130. data/lib/faker/music/phish.rb +27 -1
  131. data/lib/faker/music/prince.rb +64 -0
  132. data/lib/faker/music/rock_band.rb +12 -0
  133. data/lib/faker/music/rush.rb +37 -0
  134. data/lib/faker/music/smashing_pumpkins.rb +64 -0
  135. data/lib/faker/quotes/quote.rb +93 -1
  136. data/lib/faker/quotes/rajnikanth.rb +1 -0
  137. data/lib/faker/quotes/shakespeare.rb +70 -0
  138. data/lib/faker/religion/bible.rb +50 -0
  139. data/lib/faker/sports/chess.rb +90 -0
  140. data/lib/faker/sports/mountaineering.rb +22 -0
  141. data/lib/faker/sports/sport.rb +116 -0
  142. data/lib/faker/sports/volleyball.rb +74 -0
  143. data/lib/faker/travel/airport.rb +43 -0
  144. data/lib/faker/travel/train_station.rb +54 -0
  145. data/lib/faker/tv_shows/aqua_teen_hunger_force.rb +13 -0
  146. data/lib/faker/tv_shows/archer.rb +51 -0
  147. data/lib/faker/tv_shows/big_bang_theory.rb +37 -0
  148. data/lib/faker/tv_shows/brooklyn_nine_nine.rb +38 -0
  149. data/lib/faker/tv_shows/buffy.rb +17 -4
  150. data/lib/faker/tv_shows/dr_who.rb +1 -1
  151. data/lib/faker/tv_shows/final_space.rb +51 -0
  152. data/lib/faker/tv_shows/futurama.rb +65 -0
  153. data/lib/faker/tv_shows/michael_scott.rb +0 -3
  154. data/lib/faker/tv_shows/simpsons.rb +14 -0
  155. data/lib/faker/tv_shows/south_park.rb +15 -0
  156. data/lib/faker/tv_shows/spongebob.rb +50 -0
  157. data/lib/faker/tv_shows/suits.rb +37 -0
  158. data/lib/faker/tv_shows/supernatural.rb +48 -0
  159. data/lib/faker/tv_shows/the_fresh_prince_of_bel_air.rb +17 -4
  160. data/lib/faker/tv_shows/the_office.rb +37 -0
  161. data/lib/faker/version.rb +2 -2
  162. data/lib/faker.rb +51 -87
  163. data/lib/helpers/base58.rb +1 -1
  164. data/lib/helpers/char.rb +22 -27
  165. data/lib/helpers/deprecator.rb +53 -0
  166. data/lib/helpers/positional_generator.rb +480 -0
  167. data/lib/helpers/unique_generator.rb +13 -13
  168. data/lib/locales/README.md +18 -2
  169. data/lib/locales/ar.yml +6 -1
  170. data/lib/locales/bg.yml +1 -2
  171. data/lib/locales/da-DK.yml +529 -35
  172. data/lib/locales/de-AT.yml +3487 -25
  173. data/lib/locales/de-CH.yml +6020 -9
  174. data/lib/locales/de.yml +7185 -97
  175. data/lib/locales/ee.yml +0 -1
  176. data/lib/locales/en/address.yml +1828 -562
  177. data/lib/locales/en/adjective.yml +179 -0
  178. data/lib/locales/en/airport.yml +381 -0
  179. data/lib/locales/en/animal.yml +1 -1
  180. data/lib/locales/en/aqua_teen_hunger_force.yml +33 -1
  181. data/lib/locales/en/archer.yml +75 -0
  182. data/lib/locales/en/australia.yml +108 -0
  183. data/lib/locales/en/avatar.yml +31 -0
  184. data/lib/locales/en/bank.yml +2 -2
  185. data/lib/locales/en/barcode.yml +24 -0
  186. data/lib/locales/en/bible.yml +90 -0
  187. data/lib/locales/en/big_bang_theory.yml +38 -0
  188. data/lib/locales/en/bird.yml +1281 -0
  189. data/lib/locales/en/blood.yml +13 -0
  190. data/lib/locales/en/book.yml +487 -3
  191. data/lib/locales/en/brooklyn_nine_nine.yml +35 -0
  192. data/lib/locales/en/buffy.yml +1 -1
  193. data/lib/locales/en/camera.yml +611 -0
  194. data/lib/locales/en/cat.yml +1 -1
  195. data/lib/locales/en/chess.yml +103 -0
  196. data/lib/locales/en/clash_of_clan.yml +101 -0
  197. data/lib/locales/en/coffee.yml +1 -1
  198. data/lib/locales/en/commerce.yml +17 -0
  199. data/lib/locales/en/community.yml +17 -17
  200. data/lib/locales/en/company.yml +3 -2
  201. data/lib/locales/en/computer.yml +55 -0
  202. data/lib/locales/en/conan.yml +171 -0
  203. data/lib/locales/en/control.yml +247 -0
  204. data/lib/locales/en/cowboy_bebop.yml +163 -0
  205. data/lib/locales/en/demographic.yml +218 -5
  206. data/lib/locales/en/departed.yml +50 -0
  207. data/lib/locales/en/device.yml +112 -4
  208. data/lib/locales/en/dnd.yml +636 -0
  209. data/lib/locales/en/dog.yml +262 -7
  210. data/lib/locales/en/doraemon.yml +286 -0
  211. data/lib/locales/en/dota.yml +704 -63
  212. data/lib/locales/en/dragon_ball.yml +243 -1
  213. data/lib/locales/en/driving_license.yml +181 -0
  214. data/lib/locales/en/drone.yml +95 -0
  215. data/lib/locales/en/dune.yml +270 -131
  216. data/lib/locales/en/educator.yml +6 -0
  217. data/lib/locales/en/elder_scrolls.yml +583 -9
  218. data/lib/locales/en/emotion.yml +480 -0
  219. data/lib/locales/en/fallout.yml +311 -133
  220. data/lib/locales/en/file.yml +9 -1
  221. data/lib/locales/en/final_fantasy_xiv.yml +754 -0
  222. data/lib/locales/en/final_space.yml +37 -0
  223. data/lib/locales/en/finance.yml +80 -4
  224. data/lib/locales/en/food.yml +1067 -10
  225. data/lib/locales/en/football.yml +3 -3
  226. data/lib/locales/en/fresh_prince_of_bel_air.yml +1 -1
  227. data/lib/locales/en/fullmetal_alchemist_brotherhood.yml +78 -0
  228. data/lib/locales/en/futurama.yml +344 -0
  229. data/lib/locales/en/game.yml +11 -0
  230. data/lib/locales/en/hackers.yml +53 -0
  231. data/lib/locales/en/half_life.yml +84 -3
  232. data/lib/locales/en/harry_potter.yml +1 -1
  233. data/lib/locales/en/heroes.yml +408 -3
  234. data/lib/locales/en/heroes_of_the_storm.yml +131 -4
  235. data/lib/locales/en/hobby.yml +171 -0
  236. data/lib/locales/en/horse.yml +2 -2
  237. data/lib/locales/en/house.yml +1 -1
  238. data/lib/locales/en/how_to_train_your_dragon.yml +174 -0
  239. data/lib/locales/en/id_number.yml +1 -1
  240. data/lib/locales/en/internet.yml +136 -3
  241. data/lib/locales/en/jack_handey.yml +54 -0
  242. data/lib/locales/en/kamen_rider.yml +452 -0
  243. data/lib/locales/en/kpop.yml +7 -7
  244. data/lib/locales/en/league_of_legends.yml +285 -6
  245. data/lib/locales/en/lebowski.yml +1 -1
  246. data/lib/locales/en/lovecraft.yml +76 -6
  247. data/lib/locales/en/military.yml +179 -5
  248. data/lib/locales/en/minecraft.yml +663 -0
  249. data/lib/locales/en/mitch_hedberg.yml +46 -0
  250. data/lib/locales/en/mountain.yml +171 -0
  251. data/lib/locales/en/mountaineering.yml +14 -0
  252. data/lib/locales/en/movie.yml +194 -2
  253. data/lib/locales/en/music.yml +461 -29
  254. data/lib/locales/en/myst.yml +87 -31
  255. data/lib/locales/en/name.yml +5 -4
  256. data/lib/locales/en/naruto.yml +230 -0
  257. data/lib/locales/en/one_piece.yml +2 -2
  258. data/lib/locales/en/opera.yml +169 -1
  259. data/lib/locales/en/overwatch.yml +2648 -2622
  260. data/lib/locales/en/pearl_jam.yml +213 -0
  261. data/lib/locales/en/phish.yml +392 -1
  262. data/lib/locales/en/phone_number.yml +78 -3
  263. data/lib/locales/en/pokemon.yml +417 -4
  264. data/lib/locales/en/prince.yml +227 -0
  265. data/lib/locales/en/quote.yml +692 -163
  266. data/lib/locales/en/rock_band.yml +1 -0
  267. data/lib/locales/en/rush.yml +32 -0
  268. data/lib/locales/en/science.yml +481 -3
  269. data/lib/locales/en/shakespeare.yml +21 -24
  270. data/lib/locales/en/simpsons.yml +668 -0
  271. data/lib/locales/en/smashing_pumpkins.yml +382 -0
  272. data/lib/locales/en/source.yml +35 -0
  273. data/lib/locales/en/south_park.yml +360 -2
  274. data/lib/locales/en/space.yml +1 -1
  275. data/lib/locales/en/spongebob.yml +489 -0
  276. data/lib/locales/en/sport.yml +130 -0
  277. data/lib/locales/en/star_trek.yml +1 -1
  278. data/lib/locales/en/star_wars.yml +568 -220
  279. data/lib/locales/en/stranger_thing.yml +1 -1
  280. data/lib/locales/en/street_fighter.yml +1524 -0
  281. data/lib/locales/en/studio_ghibli.yml +107 -0
  282. data/lib/locales/en/suits.yml +45 -0
  283. data/lib/locales/en/super_mario.yml +58 -0
  284. data/lib/locales/en/super_smash_bros.yml +23 -6
  285. data/lib/locales/en/supernatural.yml +141 -0
  286. data/lib/locales/en/tarkov.yml +593 -0
  287. data/lib/locales/en/tea.yml +172 -0
  288. data/lib/locales/en/the_kingkiller_chronicle.yml +56 -0
  289. data/lib/locales/en/the_office.yml +86 -0
  290. data/lib/locales/en/the_room.yml +68 -0
  291. data/lib/locales/en/theater.yml +597 -0
  292. data/lib/locales/en/tolkien.yml +2453 -0
  293. data/lib/locales/en/touhou.yml +839 -0
  294. data/lib/locales/en/train_station.yml +280 -0
  295. data/lib/locales/en/tron.yml +227 -0
  296. data/lib/locales/en/vehicle.yml +2809 -75
  297. data/lib/locales/en/volleyball.yml +501 -0
  298. data/lib/locales/en/warhammer_fantasy.yml +582 -0
  299. data/lib/locales/en/witcher.yml +426 -7
  300. data/lib/locales/en/world_of_warcraft.yml +122 -4
  301. data/lib/locales/en/zelda.yml +962 -4
  302. data/lib/locales/en-AU.yml +728 -17
  303. data/lib/locales/en-CA.yml +373 -16
  304. data/lib/locales/en-GB.yml +116 -8
  305. data/lib/locales/en-IND.yml +1259 -16
  306. data/lib/locales/en-KE.yml +212 -0
  307. data/lib/locales/en-MS.yml +364 -16
  308. data/lib/locales/en-NEP.yml +212 -35
  309. data/lib/locales/en-NG.yml +1 -0
  310. data/lib/locales/en-NZ.yml +1153 -121
  311. data/lib/locales/en-PAK.yml +369 -9
  312. data/lib/locales/en-SG.yml +581 -15
  313. data/lib/locales/en-UG.yml +1 -0
  314. data/lib/locales/en-US.yml +6937 -71
  315. data/lib/locales/en-ZA.yml +1 -1
  316. data/lib/locales/en-au-ocker.yml +266 -21
  317. data/lib/locales/en.yml +0 -3
  318. data/lib/locales/es-AR.yml +4570 -0
  319. data/lib/locales/es-MX.yml +1 -2
  320. data/lib/locales/es.yml +58 -3
  321. data/lib/locales/fi-FI.yml +4 -2
  322. data/lib/locales/fr/address.yml +20 -0
  323. data/lib/locales/fr/adjective.yml +266 -0
  324. data/lib/locales/fr/ancient.yml +141 -0
  325. data/lib/locales/fr/animal.yml +5 -0
  326. data/lib/locales/fr/appliance.yml +4 -0
  327. data/lib/locales/fr/book.yml +7 -0
  328. data/lib/locales/fr/color.yml +4 -0
  329. data/lib/locales/fr/company.yml +17 -0
  330. data/lib/locales/fr/compass.yml +23 -0
  331. data/lib/locales/fr/demographic.yml +4 -0
  332. data/lib/locales/fr/gender.yml +6 -0
  333. data/lib/locales/fr/internet.yml +4 -0
  334. data/lib/locales/fr/lorem.yml +5 -0
  335. data/lib/locales/fr/measurement.yml +7 -0
  336. data/lib/locales/fr/name.yml +22 -0
  337. data/lib/locales/fr/phone_number.yml +7 -0
  338. data/lib/locales/fr/pokemon.yml +7 -0
  339. data/lib/locales/fr-CA.yml +2748 -43
  340. data/lib/locales/fr-CH.yml +3 -4
  341. data/lib/locales/fr.yml +2 -112
  342. data/lib/locales/hy.yml +3624 -119
  343. data/lib/locales/id.yml +839 -10
  344. data/lib/locales/it.yml +1304 -31
  345. data/lib/locales/ja/README.md +13 -0
  346. data/lib/locales/ja/address.yml +120539 -0
  347. data/lib/locales/ja/adjective.yml +148 -0
  348. data/lib/locales/ja/ancient.yml +4 -0
  349. data/lib/locales/ja/animal.yml +5 -0
  350. data/lib/locales/ja/bank.yml +4 -0
  351. data/lib/locales/ja/book.yml +7 -0
  352. data/lib/locales/ja/cat.yml +5 -0
  353. data/lib/locales/ja/coffee.yml +4 -0
  354. data/lib/locales/ja/color.yml +4 -0
  355. data/lib/locales/ja/commerce.yml +11 -0
  356. data/lib/locales/ja/company.yml +8 -0
  357. data/lib/locales/ja/dog.yml +6 -0
  358. data/lib/locales/ja/emotion.yml +51 -0
  359. data/lib/locales/ja/food.yml +4 -0
  360. data/lib/locales/ja/football.yml +115 -0
  361. data/lib/locales/ja/gender.yml +4 -0
  362. data/lib/locales/ja/lorem.yml +9 -0
  363. data/lib/locales/ja/name.yml +13 -0
  364. data/lib/locales/ja/naruto.yml +230 -0
  365. data/lib/locales/ja/overwatch.yml +5 -0
  366. data/lib/locales/ja/phone_number.yml +7 -0
  367. data/lib/locales/ja/pokemon.yml +7 -0
  368. data/lib/locales/ja/relationship.yml +10 -0
  369. data/lib/locales/ja/restaurant.yml +11 -0
  370. data/lib/locales/ja/space.yml +5 -0
  371. data/lib/locales/ja/sport.yml +130 -0
  372. data/lib/locales/ja/studio_ghibli.yml +112 -0
  373. data/lib/locales/ja/subscription.yml +8 -0
  374. data/lib/locales/ja/super_mario.yml +9 -0
  375. data/lib/locales/ja/super_smash_bros.yml +8 -0
  376. data/lib/locales/ja/touhou.yml +466 -0
  377. data/lib/locales/ja/university.yml +9 -0
  378. data/lib/locales/ja/zelda.yml +5 -0
  379. data/lib/locales/ko.yml +1450 -17
  380. data/lib/locales/lt.yml +315 -0
  381. data/lib/locales/lv.yml +1 -2
  382. data/lib/locales/mi-NZ.yml +283 -0
  383. data/lib/locales/nb-NO.yml +518 -27
  384. data/lib/locales/nl.yml +1 -1
  385. data/lib/locales/pl.yml +1 -2
  386. data/lib/locales/pt-BR.yml +8157 -659
  387. data/lib/locales/pt.yml +844 -43
  388. data/lib/locales/ru.yml +1355 -30
  389. data/lib/locales/sk.yml +4410 -41
  390. data/lib/locales/sv.yml +100 -0
  391. data/lib/locales/th.yml +76 -76
  392. data/lib/locales/tr.yml +1 -2
  393. data/lib/locales/uk.yml +1810 -44
  394. data/lib/locales/vi.yml +1 -0
  395. data/lib/locales/zh-CN/bank.yml +17 -0
  396. data/lib/locales/zh-CN.yml +1 -0
  397. data/lib/locales/zh-TW.yml +1 -0
  398. metadata +192 -127
  399. data/History.md +0 -176
  400. data/lib/faker/default/fillmurray.rb +0 -45
  401. data/lib/faker/default/lorem_pixel.rb +0 -47
  402. data/lib/locales/en/hobbit.yml +0 -19
  403. data/lib/locales/en/lord_of_the_rings.yml +0 -6
  404. data/lib/locales/ja.yml +0 -101
@@ -5,18 +5,35 @@ module Faker
5
5
  class << self
6
6
  @last_rut = nil
7
7
 
8
- # Fixed param added for testing a specific RUT and check digit combination.
9
- def rut(legacy_min_rut = NOT_GIVEN, legacy_fixed = NOT_GIVEN, min_rut: 1, fixed: false)
10
- warn_for_deprecated_arguments do |keywords|
11
- keywords << :min_rut if legacy_min_rut != NOT_GIVEN
12
- keywords << :fixed if legacy_fixed != NOT_GIVEN
13
- end
14
-
15
- @last_rut = fixed ? min_rut : rand_in_range(min_rut, 99_999_999)
8
+ ##
9
+ # Produces a random Chilean RUT (Rol Unico Tributario, ID with 8 digits).
10
+ #
11
+ # @param min_rut [Integer] Specifies the minimum value of the RUT.
12
+ # @param max_rut [Integer] Specifies the maximum value of the RUT.
13
+ # @param fixed [Boolean] Determines if the RUT is fixed (returns the min_rut value).
14
+ # @return [Number]
15
+ #
16
+ # @example
17
+ # Faker::ChileRut.rut #=> 11235813
18
+ # Faker::ChileRut.rut(min_rut: 10_000_000, max_rut: 30_000_000) #=> 21853211
19
+ # Faker::ChileRut.rut(min_rut: 20_890_156, fixed: true) #=> 20890156
20
+ #
21
+ # @faker.version next
22
+ def rut(min_rut: 1, max_rut: 99_999_999, fixed: false)
23
+ @last_rut = fixed ? min_rut : rand_in_range(min_rut, max_rut)
16
24
  end
17
25
 
26
+ ##
27
+ # Produces a random Chilean digito verificador (check-digit).
28
+ #
29
+ # @return [String]
30
+ #
31
+ # @example
32
+ # Faker::ChileRut.dv #=> "k"
33
+ #
34
+ # @faker.version 1.9.2
18
35
  def dv
19
- split_reversed_rut = @last_rut.to_s.reverse.split('')
36
+ split_reversed_rut = @last_rut.to_s.reverse.chars
20
37
  seq = [2, 3, 4, 5, 6, 7]
21
38
  i = 0
22
39
  digit_sum = split_reversed_rut.reduce(0) do |sum, n|
@@ -25,30 +42,57 @@ module Faker
25
42
  partial_result
26
43
  end
27
44
  partial_check_digit = 11 - (digit_sum % 11)
28
- if partial_check_digit == 11
45
+ case partial_check_digit
46
+ when 11
29
47
  '0'
30
- elsif partial_check_digit == 10
48
+ when 10
31
49
  'k'
32
50
  else
33
51
  partial_check_digit.to_s
34
52
  end
35
53
  end
36
54
 
55
+ ##
56
+ # Produces a random Chilean digito verificador (check-digit).
37
57
  # Alias for english speaking devs.
58
+ #
59
+ # @return [String]
60
+ #
61
+ # @example
62
+ # Faker::ChileRut.check_digit #=> "5"
63
+ #
64
+ # @faker.version 1.9.2
38
65
  def check_digit
39
66
  dv
40
67
  end
41
68
 
42
- def full_rut(legacy_min_rut = NOT_GIVEN, legacy_fixed = NOT_GIVEN, min_rut: 0, fixed: false)
43
- warn_for_deprecated_arguments do |keywords|
44
- keywords << :min_rut if legacy_min_rut != NOT_GIVEN
45
- keywords << :fixed if legacy_fixed != NOT_GIVEN
46
- end
47
-
48
- "#{rut(min_rut: min_rut, fixed: fixed)}-#{dv}"
69
+ ##
70
+ # Produces a random Chilean RUT (Rol Unico Tributario, ID with 8 digits) with a dv (digito verificador, check-digit).
71
+ #
72
+ # @param min_rut [Integer] Specifies the minimum value of the RUT.
73
+ # @param max_rut [Integer] Specifies the maximum value of the RUT.
74
+ # @param fixed [Boolean] Determines if the RUT is fixed (returns the min_rut value).
75
+ # @return [String]
76
+ #
77
+ # @example
78
+ # Faker::ChileRut.full_rut #=> "30686957-4"
79
+ # Faker::ChileRut.full_rut(min_rut: 10_000_000, max_rut: 30_000_000) #=> "20686957-4"
80
+ # Faker::ChileRut.full_rut(min_rut: 30_686_957, fixed: true) #=> "30686957-4"
81
+ #
82
+ # @faker.version next
83
+ def full_rut(min_rut: 1, max_rut: 99_999_999, fixed: false, formatted: false)
84
+ this_rut = rut(min_rut: min_rut, max_rut: max_rut, fixed: fixed)
85
+ this_rut = format_rut(this_rut) if formatted
86
+ "#{this_rut}-#{dv}"
49
87
  end
50
88
 
51
89
  attr_reader :last_rut
90
+
91
+ private
92
+
93
+ def format_rut(rut)
94
+ rut.to_s.reverse.gsub(/(\d{3})(?=\d)/, '\\1.').reverse
95
+ end
52
96
  end
53
97
  end
54
98
  end
@@ -5,6 +5,7 @@ module Faker
5
5
  flexible :chuck_norris
6
6
 
7
7
  class << self
8
+ ##
8
9
  # Produces a Chuck Norris Fact.
9
10
  # Original list of facts:
10
11
  # https://github.com/jenkinsci/chucknorris-plugin/blob/master/src/main/java/hudson/plugins/chucknorris/FactGenerator.java
@@ -4,67 +4,149 @@ module Faker
4
4
  class Code < Base
5
5
  flexible :code
6
6
  class << self
7
- # Generates a 10 digit NPI (National Provider Identifier
8
- # issued to health care providers in the United States)
7
+ ##
8
+ # Produces a random NPI (National Provider Identifier) code.
9
+ #
10
+ # @return [String]
11
+ #
12
+ # @example
13
+ # Faker::Code.npi #=> "9804062802"
14
+ #
15
+ # @faker.version 1.9.4
9
16
  def npi
10
17
  rand(10**10).to_s.rjust(10, '0')
11
18
  end
12
19
 
13
- # By default generates 10 sign isbn code in format 123456789-X
14
- # You can pass 13 to generate new 13 sign code
15
- def isbn(legacy_base = NOT_GIVEN, base: 10)
16
- warn_for_deprecated_arguments do |keywords|
17
- keywords << :base if legacy_base != NOT_GIVEN
20
+ ##
21
+ # Produces a random ISBN (International Standard Book Number) code.
22
+ #
23
+ # @param base [Integer] the length of the code to generate (either 10 or 13)
24
+ # @return [String]
25
+ #
26
+ # @example
27
+ # Faker::Code.isbn(base: 13) #=> "896579606969-8"
28
+ # @example
29
+ # Faker::Code.isbn #=> "170366802-2"
30
+ #
31
+ # @faker.version 2.2.0
32
+ def isbn(base: 10)
33
+ case base
34
+ when 10 then generate_base10_isbn
35
+ when 13 then generate_base13_isbn
36
+ else raise ArgumentError, 'base must be 10 or 13'
18
37
  end
19
-
20
- base == 13 ? generate_base13_isbn : generate_base10_isbn
21
38
  end
22
39
 
23
- # By default generates 13 sign ean code in format 1234567890123
24
- # You can pass 8 to generate ean8 code
25
- def ean(legacy_base = NOT_GIVEN, base: 13)
26
- warn_for_deprecated_arguments do |keywords|
27
- keywords << :base if legacy_base != NOT_GIVEN
40
+ ##
41
+ # Produces a random EAN (European Article Number) code.
42
+ #
43
+ # @param base [Integer] the length of the code to generate (either 8 or 13)
44
+ # @return [String]
45
+ #
46
+ # @example
47
+ # Faker::Code.ean(base: 8) #=> "36941070"
48
+ # @example
49
+ # Faker::Code.ean #=> "9941880131907"
50
+ #
51
+ # @faker.version 2.2.0
52
+ def ean(base: 13)
53
+ case base
54
+ when 8 then generate_base8_ean
55
+ when 13 then generate_base13_ean
56
+ else raise ArgumentError, 'base must be 8 or 13'
28
57
  end
29
-
30
- base == 8 ? generate_base8_ean : generate_base13_ean
31
58
  end
32
59
 
60
+ ##
61
+ # Produces a random RUT (Rol Unico Nacional) code.
62
+ #
63
+ # @return [String]
64
+ #
65
+ # @example
66
+ # Faker::Code.rut #=> "91611842-2"
67
+ #
68
+ # @faker.version 1.9.4
33
69
  def rut
34
70
  value = Number.number(digits: 8).to_s
35
71
  vd = rut_verificator_digit(value)
36
72
  value << "-#{vd}"
37
73
  end
38
74
 
75
+ ##
76
+ # Produces a random NRIC (National Registry Identity Card) code.
39
77
  # By default generates a Singaporean NRIC ID for someone
40
78
  # who is born between the age of 18 and 65.
41
- def nric(legacy_min_age = NOT_GIVEN, legacy_max_age = NOT_GIVEN, min_age: 18, max_age: 65)
42
- warn_for_deprecated_arguments do |keywords|
43
- keywords << :min_age if legacy_min_age != NOT_GIVEN
44
- keywords << :max_age if legacy_max_age != NOT_GIVEN
45
- end
46
-
79
+ #
80
+ # @param min_age [Integer] the min age of the person in years
81
+ # @param max_age [Integer] the max age of the person in years
82
+ # @return [String]
83
+ #
84
+ # @example
85
+ # Faker::Code.nric(min_age: 25, max_age: 50) #=> "S9347283G"
86
+ # @example
87
+ # Faker::Code.nric(max_age: 55) #=> "S7876903C"
88
+ # @example
89
+ # Faker::Code.nric(min_age: 25) #=> "S6281697Z"
90
+ # @example
91
+ # Faker::Code.nric #=> "S6372958B"
92
+ #
93
+ # @faker.version 2.2.0
94
+ def nric(min_age: 18, max_age: 65)
47
95
  birthyear = Date.birthday(min_age: min_age, max_age: max_age).year
48
- prefix = birthyear < 2000 ? 'S' : 'T'
49
- values = birthyear.to_s[-2..-1]
50
- values << regexify(/\d{5}/)
51
- check_alpha = generate_nric_check_alphabet(values, prefix)
52
- "#{prefix}#{values}#{check_alpha}"
96
+
97
+ generate(:string) do |g|
98
+ g.computed(name: :prefix) do
99
+ if birthyear < 2000
100
+ 'S'
101
+ else
102
+ 'T'
103
+ end
104
+ end
105
+ g.computed(name: :yy) do
106
+ birthyear.to_s[-2..]
107
+ end
108
+ g.int(name: :values, length: 5)
109
+ g.computed(name: :check, deps: %i[prefix yy values]) do |prefix, yy, values|
110
+ generate_nric_check_alphabet("#{yy}#{values}", prefix)
111
+ end
112
+ end
53
113
  end
54
114
 
55
- # Generate GSM modem, device or mobile phone 15 digit IMEI number.
115
+ ##
116
+ # Produces a random IMEI (International Mobile Equipment Number) code.
117
+ #
118
+ # @return [String]
119
+ #
120
+ # @example
121
+ # Faker::Code.imei #=> "492033129092256"
122
+ #
123
+ # @faker.version 1.9.4
56
124
  def imei
57
125
  generate_imei
58
126
  end
59
127
 
60
- # Retrieves a real Amazon ASIN code list taken from
61
- # https://archive.org/details/asin_listing
128
+ ##
129
+ # Retrieves a real Amazon ASIN code from https://archive.org/details/asin_listing
130
+ #
131
+ # @return [String]
132
+ #
133
+ # @example
134
+ # Faker::Code.asin #=> "B000MZW1GE"
135
+ #
136
+ # @faker.version 1.9.4
62
137
  def asin
63
138
  fetch('code.asin')
64
139
  end
65
140
 
66
- # Generates Social Insurance Number issued in Canada
67
- # https://en.wikipedia.org/wiki/Social_Insurance_Number
141
+ ##
142
+ # Produces a random SIN (Social Insurance Number for Canada) code.
143
+ #
144
+ # @return [String]
145
+ #
146
+ # @example
147
+ # Faker::Code.sin #=> "996586962"
148
+ #
149
+ # @faker.version 1.9.4
68
150
  def sin
69
151
  # 1 - province or temporary resident
70
152
  # 2-8 - random numbers
@@ -77,7 +159,7 @@ module Faker
77
159
  partial = Array.new(7) { Faker::Config.random.rand(0..9) }.join
78
160
 
79
161
  # Generate 9th digit
80
- check_digit = generate_sin_check_digit(registry + partial + '0').to_s
162
+ check_digit = generate_sin_check_digit("#{registry}#{partial}0").to_s
81
163
 
82
164
  registry + partial + check_digit
83
165
  end
@@ -90,8 +172,6 @@ module Faker
90
172
  def generate_imei
91
173
  str = Array.new(15, 0)
92
174
  sum = 0
93
- t = 0
94
- len_offset = 0
95
175
  len = 15
96
176
 
97
177
  # Fill in the first two values of the string based with the specified prefix.
@@ -125,50 +205,80 @@ module Faker
125
205
  str[len - 1] = (10 - (sum % 10)) % 10
126
206
 
127
207
  # Output the IMEI value.
128
- str.join('')
208
+ str.join
129
209
  end
130
210
 
131
211
  def generate_base10_isbn
132
- values = regexify(/\d{9}/)
133
- remainder = sum(values) { |value, index| (index + 1) * value.to_i } % 11
134
- values << "-#{remainder == 10 ? 'X' : remainder}"
212
+ generate(:string) do |g|
213
+ g.int(name: :values, length: 9)
214
+ g.lit('-')
215
+ g.computed(name: :checksum, deps: [:values]) do |values|
216
+ remainder = sum(values.to_s) { |value, offset| (offset + 1) * value.to_i } % 11
217
+ if remainder == 10
218
+ 'X'
219
+ else
220
+ remainder.to_s
221
+ end
222
+ end
223
+ end
135
224
  end
136
225
 
137
226
  def generate_base13_isbn
138
- values = regexify(/\d{12}/)
139
- remainder = sum(values) { |value, index| index.even? ? value.to_i : value.to_i * 3 } % 10
140
- values << "-#{((10 - remainder) % 10)}"
227
+ generate(:string) do |g|
228
+ g.int(name: :values, length: 12)
229
+ g.lit('-')
230
+ g.computed(name: :checksum, deps: [:values]) do |values|
231
+ remainder = sum(values.to_s) { |value, offset| offset.even? ? value.to_i : value.to_i * 3 } % 10
232
+ (10 - remainder) % 10
233
+ end
234
+ end
141
235
  end
142
236
 
143
237
  def sum(values)
144
- values.split(//).each_with_index.inject(0) do |sum, (value, index)|
238
+ values.chars.each_with_index.inject(0) do |sum, (value, index)|
145
239
  sum + yield(value, index)
146
240
  end
147
241
  end
148
242
 
149
243
  def generate_base8_ean
150
- values = regexify(/\d{7}/)
151
- check_digit = 10 - values.split(//).each_with_index.inject(0) { |s, (v, i)| s + v.to_i * EAN_CHECK_DIGIT8[i] } % 10
152
- values << (check_digit == 10 ? 0 : check_digit).to_s
244
+ generate(:string) do |g|
245
+ g.int(name: :values, length: 7)
246
+ g.computed(name: :checksum, deps: [:values]) do |values|
247
+ check_digit = 10 - values.to_s.chars.each_with_index.inject(0) { |s, (v, i)| s + v.to_i * EAN_CHECK_DIGIT8[i] } % 10
248
+ if check_digit == 10
249
+ 0
250
+ else
251
+ check_digit
252
+ end
253
+ end
254
+ end
153
255
  end
154
256
 
155
257
  def generate_base13_ean
156
- values = regexify(/\d{12}/)
157
- check_digit = 10 - values.split(//).each_with_index.inject(0) { |s, (v, i)| s + v.to_i * EAN_CHECK_DIGIT13[i] } % 10
158
- values << (check_digit == 10 ? 0 : check_digit).to_s
258
+ generate(:string) do |g|
259
+ g.int(name: :values, length: 12)
260
+ g.computed(name: :checksum, deps: [:values]) do |values|
261
+ check_digit = 10 - values.to_s.chars.each_with_index.inject(0) { |s, (v, i)| s + v.to_i * EAN_CHECK_DIGIT13[i] } % 10
262
+ if check_digit == 10
263
+ 0
264
+ else
265
+ check_digit
266
+ end
267
+ end
268
+ end
159
269
  end
160
270
 
161
271
  EAN_CHECK_DIGIT8 = [3, 1, 3, 1, 3, 1, 3].freeze
162
272
  EAN_CHECK_DIGIT13 = [1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3].freeze
163
273
 
164
274
  def rut_verificator_digit(rut)
165
- total = rut.to_s.rjust(8, '0').split(//).zip(%w[3 2 7 6 5 4 3 2]).collect { |a, b| a.to_i * b.to_i }.inject(:+)
166
- (11 - total % 11).to_s.gsub(/10/, 'k').gsub(/11/, '0')
275
+ total = rut.to_s.rjust(8, '0').chars.zip(%w[3 2 7 6 5 4 3 2]).collect { |a, b| a.to_i * b.to_i }.inject(:+)
276
+ (11 - total % 11).to_s.gsub('10', 'k').gsub('11', '0')
167
277
  end
168
278
 
169
279
  def generate_nric_check_alphabet(values, prefix)
170
280
  weight = %w[2 7 6 5 4 3 2]
171
- total = values.split(//).zip(weight).collect { |a, b| a.to_i * b.to_i }.inject(:+)
281
+ total = values.chars.zip(weight).collect { |a, b| a.to_i * b.to_i }.inject(:+)
172
282
  total += 4 if prefix == 'T'
173
283
  %w[A B C D E F G H I Z J][10 - total % 11]
174
284
  end
@@ -3,17 +3,34 @@
3
3
  module Faker
4
4
  class Color < Base
5
5
  class << self
6
+ LIGHTNESS_LOOKUP = {
7
+ light: 0.8,
8
+ dark: 0.2
9
+ }.freeze
6
10
  ##
7
11
  # Produces a hex color code.
12
+ # Clients are able to specify the hue, saturation, or lightness of the required color.
13
+ # Alternatively a client can simply specify that they need a light or dark color.
14
+ #
15
+ # @param args [Hash, Symbol] Allows the client to specify what color should be return
8
16
  #
9
17
  # @return [String]
10
18
  #
11
19
  # @example
12
20
  # Faker::Color.hex_color #=> "#31a785"
21
+ # @example
22
+ # Faker::Color.hex_color(hue: 118, saturation: 1, lightness: 0.53) #=> "#048700"
23
+ # @example
24
+ # Faker::Color.hex_color(:light) #=> "#FFEE99"
25
+ # @example
26
+ # Faker::Color.hex_color(:dark) #=> "#665500"
13
27
  #
14
- # @faker.version 1.5.0
15
- def hex_color
16
- format('#%06x', (rand * 0xffffff))
28
+ # @faker.version next
29
+ def hex_color(args = nil)
30
+ hsl_hash = {}
31
+ hsl_hash = { lightness: LIGHTNESS_LOOKUP[args] } if %i[dark light].include?(args)
32
+ hsl_hash = args if args.is_a?(Hash)
33
+ hsl_to_hex(hsl_color(**hsl_hash))
17
34
  end
18
35
 
19
36
  ##
@@ -51,14 +68,28 @@ module Faker
51
68
  # Produces an array of floats representing an HSL color.
52
69
  # The array is in the form of `[hue, saturation, lightness]`.
53
70
  #
71
+ # @param hue [FLoat] Optional value to use for hue
72
+ # @param saturation [Float] Optional value to use for saturation
73
+ # @param lightness [Float] Optional value to use for lightness
54
74
  # @return [Array(Float, Float, Float)]
55
75
  #
56
76
  # @example
57
77
  # Faker::Color.hsl_color #=> [69.87, 0.66, 0.3]
78
+ # @example
79
+ # Faker::Color.hsl_color(hue: 70, saturation: 0.5, lightness: 0.8) #=> [70, 0.5, 0.8]
80
+ # @example
81
+ # Faker::Color.hsl_color(hue: 70) #=> [70, 0.66, 0.6]
82
+ # @example
83
+ # Faker::Color.hsl_color(saturation: 0.2) #=> [54, 0.2, 0.3]
84
+ # @example
85
+ # Faker::Color.hsl_color(lightness: 0.6) #=> [69.87, 0.66, 0.6]
58
86
  #
59
- # @faker.version 1.5.0
60
- def hsl_color
61
- [sample((0..360).to_a), rand.round(2), rand.round(2)]
87
+ # @faker.version next
88
+ def hsl_color(hue: nil, saturation: nil, lightness: nil)
89
+ valid_hue = hue || sample((0..360).to_a)
90
+ valid_saturation = saturation&.clamp(0, 1) || rand.round(2)
91
+ valid_lightness = lightness&.clamp(0, 1) || rand.round(2)
92
+ [valid_hue, valid_saturation, valid_lightness]
62
93
  end
63
94
 
64
95
  ##
@@ -74,6 +105,46 @@ module Faker
74
105
  def hsla_color
75
106
  hsl_color << rand.round(1)
76
107
  end
108
+
109
+ private
110
+
111
+ ##
112
+ # Produces a hex code representation of an HSL color
113
+ #
114
+ # @param a_hsl_color [Array(Float, Float, Float)] The array that represents the HSL color
115
+ #
116
+ # @return [String]
117
+ #
118
+ # @example
119
+ # hsl_to_hex([50, 100,80]) #=> #FFEE99
120
+ #
121
+ # @see https://en.wikipedia.org/wiki/HSL_and_HSV#HSL_to_RGB
122
+ # @see https://github.com/jpmckinney/color-generator/blob/master/lib/color-generator.rb
123
+ #
124
+ def hsl_to_hex(a_hsl_color)
125
+ h, s, l = a_hsl_color
126
+ c = (1 - (2 * l - 1).abs) * s
127
+ h_prime = h / 60
128
+ x = c * (1 - (h_prime % 2 - 1).abs)
129
+ m = l - 0.5 * c
130
+
131
+ rgb = case h_prime.to_i
132
+ when 0 # 0 <= H' < 1
133
+ [c, x, 0]
134
+ when 1 # 1 <= H' < 2
135
+ [x, c, 0]
136
+ when 2 # 2 <= H' < 3
137
+ [0, c, x]
138
+ when 3 # 3 <= H' < 4
139
+ [0, x, c]
140
+ when 4 # 4 <= H' < 5
141
+ [x, 0, c]
142
+ else # 5 <= H' < 6
143
+ [c, 0, x]
144
+ end.map { |value| ((value + m) * 255).round }
145
+
146
+ format('#%02x%02x%02x', rgb[0], rgb[1], rgb[2])
147
+ end
77
148
  end
78
149
  end
79
150
  end