faker 2.2.0 → 3.2.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 (482) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +1298 -24
  3. data/History.md +5 -5
  4. data/README.md +239 -104
  5. data/lib/faker/blockchain/aeternity.rb +70 -0
  6. data/lib/faker/blockchain/bitcoin.rb +28 -2
  7. data/lib/faker/blockchain/ethereum.rb +11 -1
  8. data/lib/faker/blockchain/tezos.rb +93 -9
  9. data/lib/faker/books/book.rb +36 -0
  10. data/lib/faker/books/culture_series.rb +49 -0
  11. data/lib/faker/books/dune.rb +73 -17
  12. data/lib/faker/books/lovecraft.rb +186 -57
  13. data/lib/faker/books/the_kingkiller_chronicle.rb +61 -0
  14. data/lib/faker/creature/animal.rb +9 -0
  15. data/lib/faker/creature/bird.rb +203 -0
  16. data/lib/faker/creature/cat.rb +27 -0
  17. data/lib/faker/creature/dog.rb +72 -0
  18. data/lib/faker/creature/horse.rb +18 -0
  19. data/lib/faker/default/address.rb +253 -33
  20. data/lib/faker/default/adjective.rb +35 -0
  21. data/lib/faker/default/alphanumeric.rb +27 -22
  22. data/lib/faker/default/ancient.rb +36 -0
  23. data/lib/faker/default/app.rb +46 -16
  24. data/lib/faker/default/appliance.rb +18 -0
  25. data/lib/faker/default/artist.rb +9 -0
  26. data/lib/faker/default/avatar.rb +32 -24
  27. data/lib/faker/default/bank.rb +118 -29
  28. data/lib/faker/default/barcode.rb +165 -0
  29. data/lib/faker/default/beer.rb +75 -3
  30. data/lib/faker/default/blood.rb +48 -0
  31. data/lib/faker/default/boolean.rb +13 -6
  32. data/lib/faker/default/bossa_nova.rb +18 -0
  33. data/lib/faker/default/business.rb +27 -0
  34. data/lib/faker/default/camera.rb +46 -0
  35. data/lib/faker/default/cannabis.rb +90 -0
  36. data/lib/faker/default/chile_rut.rb +62 -26
  37. data/lib/faker/default/chuck_norris.rb +13 -2
  38. data/lib/faker/default/code.rb +162 -58
  39. data/lib/faker/default/coffee.rb +45 -0
  40. data/lib/faker/default/coin.rb +18 -0
  41. data/lib/faker/default/color.rb +123 -5
  42. data/lib/faker/default/commerce.rb +105 -37
  43. data/lib/faker/default/company.rb +446 -34
  44. data/lib/faker/default/compass.rb +135 -0
  45. data/lib/faker/default/computer.rb +63 -0
  46. data/lib/faker/default/construction.rb +54 -0
  47. data/lib/faker/default/cosmere.rb +90 -0
  48. data/lib/faker/default/crypto.rb +44 -4
  49. data/lib/faker/default/crypto_coin.rb +48 -18
  50. data/lib/faker/default/currency.rb +27 -0
  51. data/lib/faker/default/date.rb +149 -52
  52. data/lib/faker/default/dc_comics.rb +45 -0
  53. data/lib/faker/default/demographic.rb +58 -6
  54. data/lib/faker/default/dessert.rb +27 -0
  55. data/lib/faker/default/device.rb +54 -0
  56. data/lib/faker/default/driving_licence.rb +85 -28
  57. data/lib/faker/default/drone.rb +332 -0
  58. data/lib/faker/default/educator.rb +73 -6
  59. data/lib/faker/default/electrical_components.rb +27 -0
  60. data/lib/faker/default/emotion.rb +33 -0
  61. data/lib/faker/default/esport.rb +45 -0
  62. data/lib/faker/default/file.rb +53 -38
  63. data/lib/faker/default/finance.rb +75 -8
  64. data/lib/faker/default/food.rb +93 -3
  65. data/lib/faker/default/funny_name.rb +45 -0
  66. data/lib/faker/default/gender.rb +31 -0
  67. data/lib/faker/default/greek_philosophers.rb +18 -0
  68. data/lib/faker/default/hacker.rb +59 -1
  69. data/lib/faker/default/hipster.rb +106 -81
  70. data/lib/faker/default/hobby.rb +22 -0
  71. data/lib/faker/default/house.rb +18 -0
  72. data/lib/faker/default/html.rb +230 -0
  73. data/lib/faker/default/id_number.rb +276 -18
  74. data/lib/faker/default/industry_segments.rb +36 -0
  75. data/lib/faker/default/internet.rb +442 -147
  76. data/lib/faker/default/internet_http.rb +48 -0
  77. data/lib/faker/default/invoice.rb +37 -29
  78. data/lib/faker/default/job.rb +36 -0
  79. data/lib/faker/default/json.rb +61 -30
  80. data/lib/faker/default/kpop.rb +54 -0
  81. data/lib/faker/default/lorem.rb +184 -121
  82. data/lib/faker/default/lorem_flickr.rb +69 -68
  83. data/lib/faker/default/markdown.rb +97 -15
  84. data/lib/faker/default/marketing.rb +9 -0
  85. data/lib/faker/default/measurement.rb +101 -50
  86. data/lib/faker/default/military.rb +71 -0
  87. data/lib/faker/default/mountain.rb +33 -0
  88. data/lib/faker/default/name.rb +99 -6
  89. data/lib/faker/default/nation.rb +45 -5
  90. data/lib/faker/default/nato_phonetic_alphabet.rb +9 -0
  91. data/lib/faker/default/nhs.rb +21 -7
  92. data/lib/faker/default/number.rb +160 -91
  93. data/lib/faker/default/omniauth.rb +199 -137
  94. data/lib/faker/default/phone_number.rb +89 -11
  95. data/lib/faker/default/placeholdit.rb +23 -25
  96. data/lib/faker/default/programming_language.rb +18 -0
  97. data/lib/faker/default/relationship.rb +47 -7
  98. data/lib/faker/default/religion.rb +6 -0
  99. data/lib/faker/default/restaurant.rb +54 -2
  100. data/lib/faker/default/science.rb +135 -0
  101. data/lib/faker/default/slack_emoji.rb +81 -0
  102. data/lib/faker/default/source.rb +46 -22
  103. data/lib/faker/default/south_africa.rb +90 -0
  104. data/lib/faker/default/space.rb +128 -1
  105. data/lib/faker/default/string.rb +18 -9
  106. data/lib/faker/default/stripe.rb +68 -27
  107. data/lib/faker/default/subscription.rb +45 -0
  108. data/lib/faker/default/superhero.rb +45 -0
  109. data/lib/faker/default/tea.rb +41 -0
  110. data/lib/faker/default/team.rb +45 -0
  111. data/lib/faker/default/time.rb +84 -68
  112. data/lib/faker/default/twitter.rb +57 -47
  113. data/lib/faker/default/types.rb +90 -41
  114. data/lib/faker/default/university.rb +45 -0
  115. data/lib/faker/default/vehicle.rb +223 -60
  116. data/lib/faker/default/verb.rb +45 -0
  117. data/lib/faker/default/vulnerability_identifier.rb +23 -0
  118. data/lib/faker/default/world_cup.rb +52 -16
  119. data/lib/faker/fantasy/tolkien.rb +67 -0
  120. data/lib/faker/games/clash_of_clans.rb +48 -0
  121. data/lib/faker/games/control.rb +113 -0
  122. data/lib/faker/games/dnd.rb +178 -0
  123. data/lib/faker/games/dota.rb +61 -6
  124. data/lib/faker/games/elder_scrolls.rb +98 -0
  125. data/lib/faker/games/fallout.rb +37 -0
  126. data/lib/faker/games/final_fantasy_xiv.rb +73 -0
  127. data/lib/faker/games/game.rb +27 -0
  128. data/lib/faker/games/half_life.rb +27 -0
  129. data/lib/faker/games/heroes.rb +40 -0
  130. data/lib/faker/games/heroes_of_the_storm.rb +48 -1
  131. data/lib/faker/games/league_of_legends.rb +54 -0
  132. data/lib/faker/games/minecraft.rb +113 -0
  133. data/lib/faker/games/myst.rb +45 -0
  134. data/lib/faker/games/overwatch.rb +27 -0
  135. data/lib/faker/games/pokemon.rb +27 -0
  136. data/lib/faker/games/sonic_the_hedgehog.rb +27 -0
  137. data/lib/faker/games/street_fighter.rb +61 -0
  138. data/lib/faker/games/super_mario.rb +48 -0
  139. data/lib/faker/games/super_smash_bros.rb +18 -0
  140. data/lib/faker/games/tarkov.rb +205 -0
  141. data/lib/faker/games/touhou.rb +75 -0
  142. data/lib/faker/games/warhammer_fantasy.rb +74 -0
  143. data/lib/faker/games/witcher.rb +93 -0
  144. data/lib/faker/games/world_of_warcraft.rb +44 -1
  145. data/lib/faker/games/zelda.rb +37 -1
  146. data/lib/faker/japanese_media/conan.rb +48 -0
  147. data/lib/faker/japanese_media/cowboy_bebop.rb +61 -0
  148. data/lib/faker/japanese_media/doraemon.rb +48 -0
  149. data/lib/faker/japanese_media/dragon_ball.rb +35 -0
  150. data/lib/faker/japanese_media/fullmetal_alchemist_brotherhood.rb +48 -0
  151. data/lib/faker/japanese_media/kamen_rider.rb +102 -0
  152. data/lib/faker/japanese_media/naruto.rb +61 -0
  153. data/lib/faker/japanese_media/one_piece.rb +55 -1
  154. data/lib/faker/japanese_media/studio_ghibli.rb +48 -0
  155. data/lib/faker/japanese_media/sword_art_online.rb +36 -0
  156. data/lib/faker/locations/australia.rb +47 -0
  157. data/lib/faker/movies/avatar.rb +49 -0
  158. data/lib/faker/movies/back_to_the_future.rb +28 -0
  159. data/lib/faker/movies/departed.rb +49 -0
  160. data/lib/faker/movies/ghostbusters.rb +28 -0
  161. data/lib/faker/movies/hackers.rb +48 -0
  162. data/lib/faker/movies/harry_potter.rb +54 -0
  163. data/lib/faker/movies/hitchhikers_guide_to_the_galaxy.rb +69 -0
  164. data/lib/faker/movies/hobbit.rb +41 -4
  165. data/lib/faker/movies/how_to_train_your_dragon.rb +48 -0
  166. data/lib/faker/movies/lebowski.rb +27 -0
  167. data/lib/faker/movies/lord_of_the_rings.rb +31 -3
  168. data/lib/faker/movies/movie.rb +22 -0
  169. data/lib/faker/movies/princess_bride.rb +19 -0
  170. data/lib/faker/movies/room.rb +63 -0
  171. data/lib/faker/movies/star_wars.rb +170 -11
  172. data/lib/faker/movies/tron.rb +161 -0
  173. data/lib/faker/movies/v_for_vendetta.rb +29 -0
  174. data/lib/faker/music/grateful_dead.rb +18 -0
  175. data/lib/faker/music/hiphop.rb +48 -0
  176. data/lib/faker/music/music.rb +102 -4
  177. data/lib/faker/music/opera.rb +273 -1
  178. data/lib/faker/music/pearl_jam.rb +50 -0
  179. data/lib/faker/music/phish.rb +36 -1
  180. data/lib/faker/music/prince.rb +64 -0
  181. data/lib/faker/music/rock_band.rb +21 -0
  182. data/lib/faker/music/rush.rb +37 -0
  183. data/lib/faker/music/show.rb +49 -0
  184. data/lib/faker/music/smashing_pumpkins.rb +64 -0
  185. data/lib/faker/music/umphreys_mcgee.rb +9 -0
  186. data/lib/faker/quotes/chiquito.rb +80 -0
  187. data/lib/faker/quotes/quote.rb +93 -1
  188. data/lib/faker/quotes/rajnikanth.rb +27 -0
  189. data/lib/faker/quotes/shakespeare.rb +70 -0
  190. data/lib/faker/religion/bible.rb +50 -0
  191. data/lib/faker/sports/basketball.rb +36 -0
  192. data/lib/faker/sports/chess.rb +90 -0
  193. data/lib/faker/sports/football.rb +45 -0
  194. data/lib/faker/sports/mountaineering.rb +22 -0
  195. data/lib/faker/sports/sport.rb +116 -0
  196. data/lib/faker/sports/volleyball.rb +74 -0
  197. data/lib/faker/travel/airport.rb +43 -0
  198. data/lib/faker/travel/train_station.rb +54 -0
  199. data/lib/faker/tv_shows/aqua_teen_hunger_force.rb +22 -0
  200. data/lib/faker/tv_shows/archer.rb +51 -0
  201. data/lib/faker/tv_shows/big_bang_theory.rb +37 -0
  202. data/lib/faker/tv_shows/bojack_horseman.rb +28 -0
  203. data/lib/faker/tv_shows/breaking_bad.rb +18 -0
  204. data/lib/faker/tv_shows/brooklyn_nine_nine.rb +38 -0
  205. data/lib/faker/tv_shows/buffy.rb +60 -2
  206. data/lib/faker/tv_shows/community.rb +19 -0
  207. data/lib/faker/tv_shows/dr_who.rb +78 -2
  208. data/lib/faker/tv_shows/dumb_and_dumber.rb +28 -0
  209. data/lib/faker/tv_shows/family_guy.rb +28 -0
  210. data/lib/faker/tv_shows/final_space.rb +51 -0
  211. data/lib/faker/tv_shows/friends.rb +27 -0
  212. data/lib/faker/tv_shows/futurama.rb +65 -0
  213. data/lib/faker/tv_shows/game_of_thrones.rb +46 -0
  214. data/lib/faker/tv_shows/hey_arnold.rb +27 -0
  215. data/lib/faker/tv_shows/how_i_met_your_mother.rb +37 -0
  216. data/lib/faker/tv_shows/michael_scott.rb +10 -0
  217. data/lib/faker/tv_shows/new_girl.rb +19 -0
  218. data/lib/faker/tv_shows/parks_and_rec.rb +18 -0
  219. data/lib/faker/tv_shows/rick_and_morty.rb +28 -0
  220. data/lib/faker/tv_shows/ru_paul.rb +18 -0
  221. data/lib/faker/tv_shows/seinfeld.rb +28 -0
  222. data/lib/faker/tv_shows/silicon_valley.rb +75 -0
  223. data/lib/faker/tv_shows/simpsons.rb +42 -0
  224. data/lib/faker/tv_shows/south_park.rb +34 -0
  225. data/lib/faker/tv_shows/spongebob.rb +50 -0
  226. data/lib/faker/tv_shows/star_trek.rb +36 -0
  227. data/lib/faker/tv_shows/stargate.rb +28 -0
  228. data/lib/faker/tv_shows/stranger_things.rb +19 -0
  229. data/lib/faker/tv_shows/suits.rb +37 -0
  230. data/lib/faker/tv_shows/supernatural.rb +48 -0
  231. data/lib/faker/tv_shows/the_expanse.rb +36 -0
  232. data/lib/faker/tv_shows/the_fresh_prince_of_bel_air.rb +43 -2
  233. data/lib/faker/tv_shows/the_it_crowd.rb +37 -0
  234. data/lib/faker/tv_shows/the_office.rb +37 -0
  235. data/lib/faker/tv_shows/the_thick_of_it.rb +28 -0
  236. data/lib/faker/tv_shows/twin_peaks.rb +28 -0
  237. data/lib/faker/tv_shows/venture_bros.rb +38 -0
  238. data/lib/faker/version.rb +2 -2
  239. data/lib/faker.rb +58 -58
  240. data/lib/helpers/base58.rb +1 -1
  241. data/lib/helpers/char.rb +22 -27
  242. data/lib/helpers/positional_generator.rb +480 -0
  243. data/lib/helpers/unique_generator.rb +17 -13
  244. data/lib/locales/README.md +18 -2
  245. data/lib/locales/ar.yml +6 -1
  246. data/lib/locales/bg.yml +3 -3
  247. data/lib/locales/ca.yml +0 -8
  248. data/lib/locales/da-DK.yml +6 -4
  249. data/lib/locales/de-AT.yml +7 -6
  250. data/lib/locales/de-CH.yml +6028 -9
  251. data/lib/locales/de.yml +12 -6
  252. data/lib/locales/en/address.yml +8 -3
  253. data/lib/locales/en/adjective.yml +179 -0
  254. data/lib/locales/en/airport.yml +381 -0
  255. data/lib/locales/en/animal.yml +1 -1
  256. data/lib/locales/en/aqua_teen_hunger_force.yml +33 -1
  257. data/lib/locales/en/archer.yml +75 -0
  258. data/lib/locales/en/australia.yml +107 -0
  259. data/lib/locales/en/avatar.yml +31 -0
  260. data/lib/locales/en/bank.yml +1 -1
  261. data/lib/locales/en/barcode.yml +24 -0
  262. data/lib/locales/en/bible.yml +90 -0
  263. data/lib/locales/en/big_bang_theory.yml +38 -0
  264. data/lib/locales/en/bird.yml +1281 -0
  265. data/lib/locales/en/blood.yml +13 -0
  266. data/lib/locales/en/book.yml +487 -3
  267. data/lib/locales/en/brooklyn_nine_nine.yml +35 -0
  268. data/lib/locales/en/buffy.yml +1 -1
  269. data/lib/locales/en/camera.yml +611 -0
  270. data/lib/locales/en/cat.yml +1 -1
  271. data/lib/locales/en/chess.yml +103 -0
  272. data/lib/locales/en/chiquito.yml +64 -0
  273. data/lib/locales/en/clash_of_clan.yml +101 -0
  274. data/lib/locales/en/coffee.yml +1 -1
  275. data/lib/locales/en/color.yml +1 -1
  276. data/lib/locales/en/commerce.yml +17 -0
  277. data/lib/locales/en/community.yml +17 -17
  278. data/lib/locales/en/company.yml +3 -2
  279. data/lib/locales/en/computer.yml +55 -0
  280. data/lib/locales/en/conan.yml +171 -0
  281. data/lib/locales/en/control.yml +247 -0
  282. data/lib/locales/en/cowboy_bebop.yml +163 -0
  283. data/lib/locales/en/demographic.yml +218 -5
  284. data/lib/locales/en/departed.yml +50 -0
  285. data/lib/locales/en/device.yml +112 -4
  286. data/lib/locales/en/dnd.yml +636 -0
  287. data/lib/locales/en/doraemon.yml +286 -0
  288. data/lib/locales/en/dota.yml +651 -63
  289. data/lib/locales/en/dr_who.yml +1 -1
  290. data/lib/locales/en/dragon_ball.yml +243 -1
  291. data/lib/locales/en/driving_license.yml +181 -0
  292. data/lib/locales/en/drone.yml +95 -0
  293. data/lib/locales/en/dune.yml +270 -131
  294. data/lib/locales/en/educator.yml +75 -6
  295. data/lib/locales/en/elder_scrolls.yml +583 -9
  296. data/lib/locales/en/emotion.yml +480 -0
  297. data/lib/locales/en/fallout.yml +311 -133
  298. data/lib/locales/en/file.yml +9 -1
  299. data/lib/locales/en/final_fantasy_xiv.yml +754 -0
  300. data/lib/locales/en/final_space.yml +37 -0
  301. data/lib/locales/en/finance.yml +77 -1
  302. data/lib/locales/en/fma_brotherhood.yml +78 -0
  303. data/lib/locales/en/food.yml +1066 -10
  304. data/lib/locales/en/football.yml +3 -3
  305. data/lib/locales/en/fresh_prince_of_bel_air.yml +1 -1
  306. data/lib/locales/en/futurama.yml +344 -0
  307. data/lib/locales/en/game.yml +11 -0
  308. data/lib/locales/en/gender.yml +1 -0
  309. data/lib/locales/en/hackers.yml +53 -0
  310. data/lib/locales/en/half_life.yml +84 -3
  311. data/lib/locales/en/heroes.yml +408 -3
  312. data/lib/locales/en/heroes_of_the_storm.yml +131 -4
  313. data/lib/locales/en/hobby.yml +171 -0
  314. data/lib/locales/en/horse.yml +2 -2
  315. data/lib/locales/en/house.yml +1 -1
  316. data/lib/locales/en/how_to_train_your_dragon.yml +174 -0
  317. data/lib/locales/en/internet.yml +140 -3
  318. data/lib/locales/en/jack_handey.yml +54 -0
  319. data/lib/locales/en/kamen_rider.yml +452 -0
  320. data/lib/locales/en/kpop.yml +7 -7
  321. data/lib/locales/en/league_of_legends.yml +285 -6
  322. data/lib/locales/en/lebowski.yml +1 -1
  323. data/lib/locales/en/lovecraft.yml +76 -6
  324. data/lib/locales/en/military.yml +179 -5
  325. data/lib/locales/en/minecraft.yml +663 -0
  326. data/lib/locales/en/mitch_hedberg.yml +46 -0
  327. data/lib/locales/en/mountain.yml +171 -0
  328. data/lib/locales/en/mountaineering.yml +14 -0
  329. data/lib/locales/en/movie.yml +194 -2
  330. data/lib/locales/en/music.yml +461 -29
  331. data/lib/locales/en/myst.yml +87 -31
  332. data/lib/locales/en/name.yml +6 -5
  333. data/lib/locales/en/naruto.yml +230 -0
  334. data/lib/locales/en/one_piece.yml +2 -2
  335. data/lib/locales/en/opera.yml +169 -1
  336. data/lib/locales/en/overwatch.yml +2648 -37
  337. data/lib/locales/en/pearl_jam.yml +213 -0
  338. data/lib/locales/en/phish.yml +392 -1
  339. data/lib/locales/en/phone_number.yml +1 -1
  340. data/lib/locales/en/pokemon.yml +417 -4
  341. data/lib/locales/en/prince.yml +227 -0
  342. data/lib/locales/en/quote.yml +692 -163
  343. data/lib/locales/en/rajnikanth.yml +77 -0
  344. data/lib/locales/en/rock_band.yml +1 -0
  345. data/lib/locales/en/room.yml +68 -0
  346. data/lib/locales/en/rush.yml +32 -0
  347. data/lib/locales/en/science.yml +481 -3
  348. data/lib/locales/en/shakespeare.yml +23 -26
  349. data/lib/locales/en/show.yml +597 -0
  350. data/lib/locales/en/simpsons.yml +668 -0
  351. data/lib/locales/en/smashing_pumpkins.yml +382 -0
  352. data/lib/locales/en/source.yml +35 -0
  353. data/lib/locales/en/south_park.yml +360 -2
  354. data/lib/locales/en/space.yml +1 -1
  355. data/lib/locales/en/spongebob.yml +489 -0
  356. data/lib/locales/en/sport.yml +130 -0
  357. data/lib/locales/en/star_trek.yml +1 -1
  358. data/lib/locales/en/star_wars.yml +568 -220
  359. data/lib/locales/en/stranger_thing.yml +1 -1
  360. data/lib/locales/en/street_fighter.yml +1524 -0
  361. data/lib/locales/en/stripe.yml +3 -3
  362. data/lib/locales/en/studio_ghibli.yml +107 -0
  363. data/lib/locales/en/suits.yml +45 -0
  364. data/lib/locales/en/super_mario.yml +58 -0
  365. data/lib/locales/en/super_smash_bros.yml +23 -5
  366. data/lib/locales/en/supernatural.yml +141 -0
  367. data/lib/locales/en/tarkov.yml +593 -0
  368. data/lib/locales/en/tea.yml +172 -0
  369. data/lib/locales/en/the_kingkiller_chronicle.yml +56 -0
  370. data/lib/locales/en/the_office.yml +86 -0
  371. data/lib/locales/en/tolkien.yml +2453 -0
  372. data/lib/locales/en/touhou.yml +839 -0
  373. data/lib/locales/en/train_station.yml +280 -0
  374. data/lib/locales/en/tron.yml +227 -0
  375. data/lib/locales/en/vehicle.yml +2809 -75
  376. data/lib/locales/en/volleyball.yml +501 -0
  377. data/lib/locales/en/warhammer_fantasy.yml +582 -0
  378. data/lib/locales/en/witcher.yml +426 -7
  379. data/lib/locales/en/world_of_warcraft.yml +122 -4
  380. data/lib/locales/en/zelda.yml +962 -4
  381. data/lib/locales/en-AU.yml +50 -10
  382. data/lib/locales/en-CA.yml +5 -1
  383. data/lib/locales/en-GB.yml +3 -2
  384. data/lib/locales/en-IND.yml +2 -1
  385. data/lib/locales/en-MS.yml +3 -1
  386. data/lib/locales/en-NEP.yml +5 -2
  387. data/lib/locales/en-NG.yml +1 -0
  388. data/lib/locales/en-NZ.yml +135 -8
  389. data/lib/locales/en-PAK.yml +3 -1
  390. data/lib/locales/en-SG.yml +3 -1
  391. data/lib/locales/en-TH.yml +360 -0
  392. data/lib/locales/en-UG.yml +1 -0
  393. data/lib/locales/en-US.yml +38 -12
  394. data/lib/locales/en-ZA.yml +2 -2
  395. data/lib/locales/en-au-ocker.yml +4 -1
  396. data/lib/locales/en.yml +0 -3
  397. data/lib/locales/es-AR.yml +4601 -0
  398. data/lib/locales/es-MX.yml +4 -1
  399. data/lib/locales/es.yml +58 -2
  400. data/lib/locales/fa.yml +2 -0
  401. data/lib/locales/fi-FI.yml +4 -2
  402. data/lib/locales/fr/address.yml +20 -0
  403. data/lib/locales/fr/adjective.yml +266 -0
  404. data/lib/locales/fr/ancient.yml +141 -0
  405. data/lib/locales/fr/animal.yml +5 -0
  406. data/lib/locales/fr/appliance.yml +4 -0
  407. data/lib/locales/fr/book.yml +7 -0
  408. data/lib/locales/fr/color.yml +4 -0
  409. data/lib/locales/fr/company.yml +17 -0
  410. data/lib/locales/fr/compass.yml +23 -0
  411. data/lib/locales/fr/demographic.yml +4 -0
  412. data/lib/locales/fr/gender.yml +6 -0
  413. data/lib/locales/fr/internet.yml +5 -0
  414. data/lib/locales/fr/lorem.yml +5 -0
  415. data/lib/locales/fr/measurement.yml +7 -0
  416. data/lib/locales/fr/name.yml +22 -0
  417. data/lib/locales/fr/phone_number.yml +7 -0
  418. data/lib/locales/fr/pokemon.yml +7 -0
  419. data/lib/locales/fr-CA.yml +28 -11
  420. data/lib/locales/fr-CH.yml +3 -3
  421. data/lib/locales/fr.yml +1 -112
  422. data/lib/locales/hy.yml +3 -7
  423. data/lib/locales/id.yml +5 -2
  424. data/lib/locales/it.yml +3 -1
  425. data/lib/locales/ja/README.md +13 -0
  426. data/lib/locales/ja/address.yml +120539 -0
  427. data/lib/locales/ja/adjective.yml +148 -0
  428. data/lib/locales/ja/ancient.yml +4 -0
  429. data/lib/locales/ja/animal.yml +5 -0
  430. data/lib/locales/ja/bank.yml +4 -0
  431. data/lib/locales/ja/book.yml +7 -0
  432. data/lib/locales/ja/cat.yml +5 -0
  433. data/lib/locales/ja/coffee.yml +4 -0
  434. data/lib/locales/ja/color.yml +4 -0
  435. data/lib/locales/ja/commerce.yml +11 -0
  436. data/lib/locales/ja/company.yml +8 -0
  437. data/lib/locales/ja/dog.yml +6 -0
  438. data/lib/locales/ja/emotion.yml +51 -0
  439. data/lib/locales/ja/food.yml +4 -0
  440. data/lib/locales/ja/gender.yml +4 -0
  441. data/lib/locales/ja/lorem.yml +9 -0
  442. data/lib/locales/ja/name.yml +13 -0
  443. data/lib/locales/ja/naruto.yml +230 -0
  444. data/lib/locales/ja/overwatch.yml +5 -0
  445. data/lib/locales/ja/phone_number.yml +7 -0
  446. data/lib/locales/ja/pokemon.yml +7 -0
  447. data/lib/locales/ja/relationship.yml +10 -0
  448. data/lib/locales/ja/restaurant.yml +11 -0
  449. data/lib/locales/ja/space.yml +5 -0
  450. data/lib/locales/ja/sport.yml +130 -0
  451. data/lib/locales/ja/studio_ghibli.yml +112 -0
  452. data/lib/locales/ja/subscription.yml +8 -0
  453. data/lib/locales/ja/super_mario.yml +9 -0
  454. data/lib/locales/ja/super_smash_bros.yml +8 -0
  455. data/lib/locales/ja/touhou.yml +466 -0
  456. data/lib/locales/ja/university.yml +9 -0
  457. data/lib/locales/ja/zelda.yml +5 -0
  458. data/lib/locales/ko.yml +95 -2
  459. data/lib/locales/lt.yml +34 -0
  460. data/lib/locales/lv.yml +1 -1
  461. data/lib/locales/mi-NZ.yml +283 -0
  462. data/lib/locales/nb-NO.yml +5 -2
  463. data/lib/locales/nl.yml +1 -0
  464. data/lib/locales/pl.yml +2 -2
  465. data/lib/locales/pt-BR.yml +33 -4
  466. data/lib/locales/pt.yml +6 -4
  467. data/lib/locales/ru.yml +43 -1
  468. data/lib/locales/sk.yml +5 -2
  469. data/lib/locales/sv.yml +1 -0
  470. data/lib/locales/th.yml +380 -0
  471. data/lib/locales/tr.yml +1 -0
  472. data/lib/locales/uk.yml +10 -5
  473. data/lib/locales/vi.yml +1 -0
  474. data/lib/locales/zh-CN/bank.yml +17 -0
  475. data/lib/locales/zh-CN.yml +2 -1
  476. data/lib/locales/zh-TW.yml +2 -1
  477. metadata +201 -109
  478. data/lib/faker/default/fillmurray.rb +0 -30
  479. data/lib/faker/default/lorem_pixel.rb +0 -63
  480. data/lib/locales/en/hobbit.yml +0 -19
  481. data/lib/locales/en/lord_of_the_rings.yml +0 -6
  482. data/lib/locales/ja.yml +0 -98
@@ -13,22 +13,29 @@ module Faker
13
13
  }.freeze
14
14
 
15
15
  class << self
16
- # rubocop:disable Metrics/ParameterLists
17
- def between(legacy_from = NOT_GIVEN, legacy_to = NOT_GIVEN, legacy_format = NOT_GIVEN, from:, to:, format: nil)
18
- # rubocop:enable Metrics/ParameterLists
19
- if legacy_from != NOT_GIVEN
20
- warn_with_uplevel 'Passing `from` with the 1st argument of `Time.between` is deprecated. Use keyword argument like `Time.between(from: ...)` instead.', uplevel: 1
21
- from = legacy_from
22
- end
23
- if legacy_to != NOT_GIVEN
24
- warn_with_uplevel 'Passing `to` with the 2nd argument of `Time.between` is deprecated. Use keyword argument like `Time.between(to: ...)` instead.', uplevel: 1
25
- to = legacy_to
26
- end
27
- if legacy_format != NOT_GIVEN
28
- warn_with_uplevel 'Passing `format` with the 3rd argument of `Time.between` is deprecated. Use keyword argument like `Time.between(format: ...)` instead.', uplevel: 1
29
- format = legacy_format
30
- end
31
-
16
+ ##
17
+ # Produce a random time between two times.
18
+ #
19
+ # @param from [Time, Date, DateTime] The start of the usable time range.
20
+ # @param to [Time, Date, DateTime] The end of the usable time range.
21
+ # @param format [Symbol] The name of a DateTime format to use.
22
+ # @return [Time]
23
+ #
24
+ # @example
25
+ # # Random Stringified time between two times, formatted to the specified I18n format
26
+ # # (Examples are from a Rails console with rails-i18n 5.1.1 defaults loaded)
27
+ # I18n.locale = 'en-US'
28
+ # Faker::Time.between(from: DateTime.now - 1, to: DateTime.now, format: :default) #=> "Tue, 16 Oct 2018 10:48:27 AM -05:00"
29
+ # Faker::Time.between(from: DateTime.now - 1, to: DateTime.now, format: :short) #=> "15 Oct 10:48 AM"
30
+ # Faker::Time.between(from: DateTime.now - 1, to: DateTime.now, format: :long) #=> "October 15, 2018 10:48 AM"
31
+ #
32
+ # I18n.locale = 'ja'
33
+ # Faker::Time.between(from: DateTime.now - 1, to: DateTime.now, format: :default) #=> "2018/10/15 10:48:27"
34
+ # Faker::Time.between(from: DateTime.now - 1, to: DateTime.now, format: :short) #=> "18/10/15 10:48"
35
+ # Faker::Time.between(from: DateTime.now - 1, to: DateTime.now, format: :long) #=> "2018年10月16日(火) 10時48分27秒 -0500"
36
+ #
37
+ # @faker.version 1.5.0
38
+ def between(from:, to:, format: nil)
32
39
  from = get_time_object(from)
33
40
  to = get_time_object(to)
34
41
 
@@ -36,66 +43,75 @@ module Faker
36
43
  time_with_format(time, format)
37
44
  end
38
45
 
39
- # rubocop:disable Metrics/ParameterLists
40
- def between_dates(legacy_from = NOT_GIVEN, legacy_to = NOT_GIVEN, legacy_period = NOT_GIVEN, legacy_format = NOT_GIVEN, from:, to:, period: :all, format: nil)
41
- # rubocop:enable Metrics/ParameterLists
42
- if legacy_from != NOT_GIVEN
43
- warn_with_uplevel 'Passing `from` with the 1st argument of `Time.between_dates` is deprecated. Use keyword argument like `Time.between_dates(from: ...)` instead.', uplevel: 1
44
- from = legacy_from
45
- end
46
- if legacy_to != NOT_GIVEN
47
- warn_with_uplevel 'Passing `to` with the 2nd argument of `Time.between_dates` is deprecated. Use keyword argument like `Time.between_dates(to: ...)` instead.', uplevel: 1
48
- to = legacy_to
49
- end
50
- if legacy_period != NOT_GIVEN
51
- warn_with_uplevel 'Passing `period` with the 3rd argument of `Time.between_dates` is deprecated. Use keyword argument like `Time.between_dates(period: ...)` instead.', uplevel: 1
52
- period = legacy_period
53
- end
54
- if legacy_format != NOT_GIVEN
55
- warn_with_uplevel 'Passing `format` with the 4th argument of `Time.between_dates` is deprecated. Use keyword argument like `Time.between_dates(format: ...)` instead.', uplevel: 1
56
- format = legacy_format
57
- end
58
-
46
+ ##
47
+ # Produce a random time between two dates.
48
+ #
49
+ # @param from [Date] The start of the usable time range.
50
+ # @param to [Date] The end of the usable time range.
51
+ # @param period [Symbol] The time of day, if any. See {TIME_RANGES}.
52
+ # @param format [Symbol] The name of a DateTime format to use.
53
+ # @return [Time]
54
+ #
55
+ # @example
56
+ # Faker::Time.between_dates(from: Date.today - 1, to: Date.today, period: :all)
57
+ # #=> "2014-09-19 07:03:30 -0700"
58
+ # Faker::Time.between_dates(from: Date.today - 1, to: Date.today, period: :day)
59
+ # #=> "2014-09-18 16:28:13 -0700"
60
+ # Faker::Time.between_dates(from: Date.today - 1, to: Date.today, period: :night)
61
+ # #=> "2014-09-20 19:39:38 -0700"
62
+ # Faker::Time.between_dates(from: Date.today - 1, to: Date.today, period: :morning)
63
+ # #=> "2014-09-19 08:07:52 -0700"
64
+ # Faker::Time.between_dates(from: Date.today - 1, to: Date.today, period: :afternoon)
65
+ # #=> "2014-09-18 12:10:34 -0700"
66
+ # Faker::Time.between_dates(from: Date.today - 1, to: Date.today, period: :evening)
67
+ # #=> "2014-09-19 20:21:03 -0700"
68
+ # Faker::Time.between_dates(from: Date.today - 1, to: Date.today, period: :midnight)
69
+ # #=> "2014-09-20 00:40:14 -0700"
70
+ # Faker::Time.between_dates(from: Date.today - 5, to: Date.today + 5, period: :afternoon, format: :default)
71
+ # #=> "Fri, 19 Oct 2018 15:17:46 -0500"
72
+ #
73
+ # @faker.version 1.0.0
74
+ def between_dates(from:, to:, period: :all, format: nil)
59
75
  date = Faker::Date.between(from: from, to: to)
60
76
  time = date_with_random_time(date, period)
61
77
  time_with_format(time, format)
62
78
  end
63
79
 
64
- # rubocop:disable Metrics/ParameterLists
65
- def forward(legacy_days = NOT_GIVEN, legacy_period = NOT_GIVEN, legacy_format = NOT_GIVEN, days: 365, period: :all, format: nil)
66
- # rubocop:enable Metrics/ParameterLists
67
- if legacy_days != NOT_GIVEN
68
- warn_with_uplevel 'Passing `days` with the 1st argument of `Time.forward` is deprecated. Use keyword argument like `Time.forward(days: ...)` instead.', uplevel: 1
69
- days = legacy_days
70
- end
71
- if legacy_period != NOT_GIVEN
72
- warn_with_uplevel 'Passing `period` with the 2nd argument of `Time.forward` is deprecated. Use keyword argument like `Time.forward(period: ...)` instead.', uplevel: 1
73
- period = legacy_period
74
- end
75
- if legacy_format != NOT_GIVEN
76
- warn_with_uplevel 'Passing `format` with the 3rd argument of `Time.forward` is deprecated. Use keyword argument like `Time.forward(format: ...)` instead.', uplevel: 1
77
- format = legacy_format
78
- end
79
-
80
+ ##
81
+ # Produce a random time in the future (up to N days).
82
+ #
83
+ # @param days [Integer] The maximum number of days to go into the future.
84
+ # @param period [Symbol] The time of day, if any. See {TIME_RANGES}.
85
+ # @param format [Symbol] The name of a DateTime format to use.
86
+ # @return [Time]
87
+ #
88
+ # @example
89
+ # Faker::Time.forward(days: 23, period: :morning)
90
+ # # => "2014-09-26 06:54:47 -0700"
91
+ # Faker::Time.forward(days: 5, period: :evening, format: :long)
92
+ # #=> "October 21, 2018 20:47"
93
+ #
94
+ # @faker.version 1.5.0
95
+ def forward(days: 365, period: :all, format: nil)
80
96
  time_with_format(date_with_random_time(Faker::Date.forward(days: days), period), format)
81
97
  end
82
98
 
83
- # rubocop:disable Metrics/ParameterLists
84
- def backward(legacy_days = NOT_GIVEN, legacy_period = NOT_GIVEN, legacy_format = NOT_GIVEN, days: 365, period: :all, format: nil)
85
- # rubocop:enable Metrics/ParameterLists
86
- if legacy_days != NOT_GIVEN
87
- warn_with_uplevel 'Passing `days` with the 1st argument of `Time.backward` is deprecated. Use keyword argument like `Time.backward(days: ...)` instead.', uplevel: 1
88
- days = legacy_days
89
- end
90
- if legacy_period != NOT_GIVEN
91
- warn_with_uplevel 'Passing `period` with the 2nd argument of `Time.backward` is deprecated. Use keyword argument like `Time.backward(period: ...)` instead.', uplevel: 1
92
- period = legacy_period
93
- end
94
- if legacy_format != NOT_GIVEN
95
- warn_with_uplevel 'Passing `format` with the 3rd argument of `Time.backward` is deprecated. Use keyword argument like `Time.backward(format: ...)` instead.', uplevel: 1
96
- format = legacy_format
97
- end
98
-
99
+ ##
100
+ # Produce a random time in the past (up to N days).
101
+ #
102
+ # @param days [Integer] The maximum number of days to go into the past.
103
+ # @param period [Symbol] The time of day, if any. See {TIME_RANGES}.
104
+ # @param format [Symbol] The name of a DateTime format to use.
105
+ # @return [Time]
106
+ #
107
+ # @example
108
+ # Faker::Time.backward(days: 14, period: :evening)
109
+ # #=> "2014-09-17 19:56:33 -0700"
110
+ # Faker::Time.backward(days: 5, period: :morning, format: :short)
111
+ # #=> "14 Oct 07:44"
112
+ #
113
+ # @faker.version 1.5.0
114
+ def backward(days: 365, period: :all, format: nil)
99
115
  time_with_format(date_with_random_time(Faker::Date.backward(days: days), period), format)
100
116
  end
101
117
 
@@ -3,18 +3,22 @@
3
3
  module Faker
4
4
  class Twitter < Base
5
5
  class << self
6
- def user(legacy_include_status = NOT_GIVEN, legacy_include_email = NOT_GIVEN, include_status: true, include_email: false)
7
- if legacy_include_status != NOT_GIVEN
8
- warn_with_uplevel 'Passing `include_status` with the 1st argument of `Twitter.user` is deprecated. Use keyword argument like `Twitter.user(include_status: ...)` instead.', uplevel: 1
9
- include_status = legacy_include_status
10
- end
11
- if legacy_include_email != NOT_GIVEN
12
- warn_with_uplevel 'Passing `include_email` with the 2nd argument of `Twitter.user` is deprecated. Use keyword argument like `Twitter.user(include_email: ...)` instead.', uplevel: 1
13
- include_email = legacy_include_email
14
- end
15
-
6
+ ##
7
+ # Produces a random Twitter user.
8
+ #
9
+ # @param include_status [Boolean] Include or exclude user status details
10
+ # @param include_email [Boolean] Include or exclude user email details
11
+ # @return [Hash]
12
+ #
13
+ # @example
14
+ # Faker::Twitter.user #=> {:id=>8821452687517076614, :name=>"Lincoln Paucek", :screen_name=>"cody"...
15
+ # Faker::Twitter.user(include_status: false) # Just get a user object with no embed status
16
+ # Faker::Twitter.user(include_email: true) # Simulate an authenticated user with the email permission
17
+ #
18
+ # @faker.version 1.7.3
19
+ def user(include_status: true, include_email: false)
16
20
  user_id = id
17
- background_image_url = Faker::LoremPixel.image(size: '600x400') # TODO: Make the dimensions change
21
+ background_image_url = Faker::LoremFlickr.image(size: '600x400')
18
22
  profile_image_url = Faker::Avatar.image(slug: user_id, size: '48x48')
19
23
  user = {
20
24
  id: user_id,
@@ -24,7 +28,7 @@ module Faker
24
28
  default_profile_image: Faker::Boolean.boolean(true_ratio: 0.1),
25
29
  default_profile: Faker::Boolean.boolean(true_ratio: 0.1),
26
30
  description: Faker::Lorem.sentence,
27
- entities: user_entities,
31
+ entities: user_entities,
28
32
  favourites_count: Faker::Number.between(to: 1, from: 100_000),
29
33
  follow_request_sent: false,
30
34
  followers_count: Faker::Number.between(to: 1, from: 10_000_000),
@@ -42,7 +46,7 @@ module Faker
42
46
  profile_background_image_url_https: background_image_url,
43
47
  profile_background_image_url: background_image_url.sub('https://', 'http://'),
44
48
  profile_background_tile: Faker::Boolean.boolean(true_ratio: 0.1),
45
- profile_banner_url: Faker::LoremPixel.image(size: '1500x500'),
49
+ profile_banner_url: Faker::LoremFlickr.image(size: '1500x500'),
46
50
  profile_image_url_https: profile_image_url,
47
51
  profile_image_url: profile_image_url.sub('https://', 'http://'),
48
52
  profile_link_color: Faker::Color.hex_color,
@@ -59,20 +63,24 @@ module Faker
59
63
  verified: Faker::Boolean.boolean(true_ratio: 0.1)
60
64
  }
61
65
  user[:status] = Faker::Twitter.status(include_user: false) if include_status
62
- user[:email] = Faker::Internet.safe_email if include_email
66
+ user[:email] = Faker::Internet.email if include_email
63
67
  user
64
68
  end
65
69
 
66
- def status(legacy_include_user = NOT_GIVEN, legacy_include_photo = NOT_GIVEN, include_user: true, include_photo: false)
67
- if legacy_include_user != NOT_GIVEN
68
- warn_with_uplevel 'Passing `include_user` with the 1st argument of `Twitter.status` is deprecated. Use keyword argument like `Twitter.status(include_user: ...)` instead.', uplevel: 1
69
- include_user = legacy_include_user
70
- end
71
- if legacy_include_photo != NOT_GIVEN
72
- warn_with_uplevel 'Passing `include_photo` with the 2nd argument of `Twitter.status` is deprecated. Use keyword argument like `Twitter.status(include_photo: ...)` instead.', uplevel: 1
73
- include_photo = legacy_include_photo
74
- end
75
-
70
+ ##
71
+ # Produces a random Twitter user.
72
+ #
73
+ # @param include_user [Boolean] Include or exclude user details
74
+ # @param include_photo [Boolean] Include or exclude user photo
75
+ # @return [Hash]
76
+ #
77
+ # @example
78
+ # Faker::Twitter.status #=> {:id=>8821452687517076614, :text=>"Ea et laboriosam vel non."...
79
+ # Faker::Twitter.status(include_user: false) # Just get a status object with no embed user
80
+ # Faker::Twitter.status(include_photo: true) # Includes entities for an attached image
81
+ #
82
+ # @faker.version 1.7.3
83
+ def status(include_user: true, include_photo: false)
76
84
  status_id = id
77
85
  status = {
78
86
  id: status_id,
@@ -80,7 +88,7 @@ module Faker
80
88
  contributors: nil,
81
89
  coordinates: nil,
82
90
  created_at: created_at,
83
- entities: status_entities(include_photo: include_photo),
91
+ entities: status_entities(include_photo: include_photo),
84
92
  favorite_count: Faker::Number.between(to: 1, from: 10_000),
85
93
  favorited: false,
86
94
  geo: nil,
@@ -94,7 +102,7 @@ module Faker
94
102
  place: nil,
95
103
  possibly_sensitive: Faker::Boolean.boolean(true_ratio: 0.1),
96
104
  retweet_count: Faker::Number.between(to: 1, from: 10_000),
97
- retweeted_status: nil,
105
+ retweeted_status: nil,
98
106
  retweeted: false,
99
107
  source: "<a href=\"#{Faker::Internet.url(host: 'example.com')}\" rel=\"nofollow\">#{Faker::Company.name}</a>",
100
108
  text: Faker::Lorem.sentence,
@@ -105,6 +113,15 @@ module Faker
105
113
  status
106
114
  end
107
115
 
116
+ ##
117
+ # Produces a random screen name.
118
+ #
119
+ # @return [String]
120
+ #
121
+ # @example
122
+ # Faker::Twitter.screen_name #=> "audreanne_hackett"
123
+ #
124
+ # @faker.version 1.7.3
108
125
  def screen_name
109
126
  Faker::Internet.username(specifier: nil, separators: ['_'])[0...20]
110
127
  end
@@ -125,40 +142,33 @@ module Faker
125
142
 
126
143
  def user_entities
127
144
  {
128
- url: {
145
+ url: {
129
146
  urls: []
130
147
  },
131
- description: {
148
+ description: {
132
149
  urls: []
133
150
  }
134
151
  }
135
152
  end
136
153
 
137
- def status_entities(legacy_include_photo = NOT_GIVEN, include_photo: false)
138
- if legacy_include_photo != NOT_GIVEN
139
- warn_with_uplevel 'Passing `include_photo` with the 1st argument of `Twitter.status_entities` is deprecated. Use keyword argument like `Twitter.status_entities(include_photo: ...)` instead.', uplevel: 1
140
- include_photo = legacy_include_photo
141
- end
142
-
154
+ def status_entities(include_photo: false)
143
155
  entities = {
144
- hashtags: [],
145
- symbols: [],
146
- user_mentions: [],
147
- urls: []
156
+ hashtags: [],
157
+ symbols: [],
158
+ user_mentions: [],
159
+ urls: []
148
160
  }
149
161
  entities[:media] = [photo_entity] if include_photo
150
162
  entities
151
163
  end
152
164
 
153
165
  def photo_entity
154
- # TODO: Dynamic image sizes
155
- # TODO: Return accurate indices
156
- media_url = Faker::LoremPixel.image(size: '1064x600')
166
+ media_url = Faker::LoremFlickr.image(size: '1064x600')
157
167
  media_id = id
158
168
  {
159
169
  id: media_id,
160
170
  id_str: media_id.to_s,
161
- indices: [
171
+ indices: [
162
172
  103,
163
173
  126
164
174
  ],
@@ -168,23 +178,23 @@ module Faker
168
178
  display_url: 'example.com',
169
179
  expanded_url: Faker::Internet.url(host: 'example.com'),
170
180
  type: 'photo',
171
- sizes: {
172
- medium: {
181
+ sizes: {
182
+ medium: {
173
183
  w: 1064,
174
184
  h: 600,
175
185
  resize: 'fit'
176
186
  },
177
- large: {
187
+ large: {
178
188
  w: 1064,
179
189
  h: 600,
180
190
  resize: 'fit'
181
191
  },
182
- small: {
192
+ small: {
183
193
  w: 680,
184
194
  h: 383,
185
195
  resize: 'fit'
186
196
  },
187
- thumb: {
197
+ thumb: {
188
198
  w: 150,
189
199
  h: 150,
190
200
  resize: 'crop'
@@ -7,12 +7,16 @@ module Faker
7
7
  COMPLEX_TYPES = %i[hash array].freeze
8
8
 
9
9
  class << self
10
- def rb_string(legacy_words = NOT_GIVEN, words: 1)
11
- if legacy_words != NOT_GIVEN
12
- warn_with_uplevel 'Passing `words` with the 1st argument of `Types.rb_string` is deprecated. Use keyword argument like `Types.rb_string(words: ...)` instead.', uplevel: 1
13
- words = legacy_words
14
- end
15
-
10
+ ##
11
+ # Produces a random String created from word (Faker::Lorem.word)
12
+ #
13
+ # @return [String]
14
+ #
15
+ # @example
16
+ # Faker::Types.rb_string #=> "foobar"
17
+ #
18
+ # @faker.version 1.8.6
19
+ def rb_string(words: 1)
16
20
  resolved_num = resolve(words)
17
21
  word_list =
18
22
  translate('faker.lorem.words')
@@ -21,62 +25,98 @@ module Faker
21
25
  shuffle(word_list)[0, resolved_num].join(' ')
22
26
  end
23
27
 
28
+ ##
29
+ # Produces a random character from the a-z, 0-9 ranges.
30
+ #
31
+ # @return [String]
32
+ #
33
+ # @example
34
+ # Faker::Types.character #=> "n"
35
+ #
36
+ # @faker.version 1.8.6
24
37
  def character
25
38
  sample(CHARACTERS)
26
39
  end
27
40
 
28
- def rb_integer(legacy_from = NOT_GIVEN, legacy_to = NOT_GIVEN, from: 0, to: 100)
29
- if legacy_from != NOT_GIVEN
30
- warn_with_uplevel 'Passing `from` with the 1st argument of `Types.rb_integer` is deprecated. Use keyword argument like `Types.rb_integer(from: ...)` instead.', uplevel: 1
31
- from = legacy_from
32
- end
33
- if legacy_to != NOT_GIVEN
34
- warn_with_uplevel 'Passing `to` with the 2nd argument of `Types.rb_integer` is deprecated. Use keyword argument like `Types.rb_integer(to: ...)` instead.', uplevel: 1
35
- to = legacy_to
36
- end
37
-
41
+ ##
42
+ # Produces a random integer.
43
+ #
44
+ # @return [Integer]
45
+ #
46
+ # @example
47
+ # Faker::Types.rb_integer #=> 1
48
+ #
49
+ # @faker.version 1.8.6
50
+ def rb_integer(from: 0, to: 100)
38
51
  rand(from..to).to_i
39
52
  end
40
53
 
41
- def rb_hash(legacy_number = NOT_GIVEN, legacy_type = NOT_GIVEN, number: 1, type: random_type)
42
- if legacy_number != NOT_GIVEN
43
- warn_with_uplevel 'Passing `number` with the 1st argument of `Types.rb_hash` is deprecated. Use keyword argument like `Types.rb_hash(number: ...)` instead.', uplevel: 1
44
- number = legacy_number
45
- end
46
- if legacy_type != NOT_GIVEN
47
- warn_with_uplevel 'Passing `type` with the 2nd argument of `Types.rb_hash` is deprecated. Use keyword argument like `Types.rb_hash(type: ...)` instead.', uplevel: 1
48
- type = legacy_type
49
- end
50
-
54
+ ##
55
+ # Produces a random hash with random keys and values.
56
+ #
57
+ # @param number [Integer] Specifies the number of key-value pairs.
58
+ # @return [Hash]
59
+ #
60
+ # @example
61
+ # Faker::Types.rb_hash #=> {name: "bob"}
62
+ # Faker::Types.rb_hash(number: 1) #=> {name: "bob"}
63
+ # Faker::Types.rb_hash(number: 2) #=> {name: "bob", last: "marley"}
64
+ #
65
+ # @faker.version 1.8.6
66
+ def rb_hash(number: 1, type: -> { random_type })
51
67
  {}.tap do |hsh|
52
68
  Lorem.words(number: number * 2).uniq.first(number).each do |s|
53
- hsh.merge!(s.to_sym => type)
69
+ value = type.is_a?(Proc) ? type.call : type
70
+ hsh.merge!(s.to_sym => value)
54
71
  end
55
72
  end
56
73
  end
57
74
 
58
- def complex_rb_hash(legacy_number = NOT_GIVEN, number: 1)
59
- if legacy_number != NOT_GIVEN
60
- warn_with_uplevel 'Passing `number` with the 1st argument of `Types.complex_rb_hash` is deprecated. Use keyword argument like `Types.complex_rb_hash(number: ...)` instead.', uplevel: 1
61
- number = legacy_number
62
- end
63
-
64
- rb_hash(number: number, type: random_complex_type)
75
+ ##
76
+ # Produces a random complex hash with random keys and values where the values may include other hashes and arrays.
77
+ #
78
+ # @param number [Integer] Specifies the number of key-value pairs.
79
+ # @return [Hash]
80
+ #
81
+ # @example
82
+ # Faker::Types.complex_rb_hash #=> {user: {first: "bob", last: "marley"}}
83
+ # Faker::Types.complex_rb_hash(number: 1) #=> {user: {first: "bob", last: "marley"}}
84
+ # Faker::Types.complex_rb_hash(number: 2) #=> {user: {first: "bob", last: "marley"}, son: ["damien", "marley"]}
85
+ #
86
+ # @faker.version 1.8.6
87
+ def complex_rb_hash(number: 1)
88
+ rb_hash(number: number, type: -> { random_complex_type })
65
89
  end
66
90
 
67
- def rb_array(legacy_len = NOT_GIVEN, len: 1)
68
- if legacy_len != NOT_GIVEN
69
- warn_with_uplevel 'Passing `len` with the 1st argument of `Types.rb_array` is deprecated. Use keyword argument like `Types.rb_array(len: ...)` instead.', uplevel: 1
70
- len = legacy_len
71
- end
72
-
91
+ ##
92
+ # Produces a random array.
93
+ #
94
+ # @param len [Integer] Specifies the number of elements in the array.
95
+ # @return [Array]
96
+ #
97
+ # @example
98
+ # Faker::Types.rb_array #=> ["a"]
99
+ # Faker::Types.rb_array(len: 4) #=> ["a", 1, 2, "bob"]
100
+ # Faker::Types.rb_array(len: 2, type: -> { Faker::Types.rb_string }) #=> ["cat", "foo"]
101
+ #
102
+ # @faker.version 1.8.6
103
+ def rb_array(len: 1, type: -> { random_type })
73
104
  [].tap do |ar|
74
105
  len.times do
75
- ar.push random_type
106
+ ar.push type.is_a?(Proc) ? type.call : type
76
107
  end
77
108
  end
78
109
  end
79
110
 
111
+ ##
112
+ # Produces a random type that's either a String or an Integer.
113
+ #
114
+ # @return [String, Integer]
115
+ #
116
+ # @example
117
+ # Faker::Types.random_type #=> 1 or "a" or "bob"
118
+ #
119
+ # @faker.version 1.8.6
80
120
  def random_type
81
121
  type_to_use = SIMPLE_TYPES[rand(0..SIMPLE_TYPES.length - 1)]
82
122
  case type_to_use
@@ -87,6 +127,15 @@ module Faker
87
127
  end
88
128
  end
89
129
 
130
+ ##
131
+ # Produces a random complex type that's either a String, an Integer, an array or a hash.
132
+ #
133
+ # @return [String, Integer]
134
+ #
135
+ # @example
136
+ # Faker::Types.random_complex_type #=> 1 or "a" or "bob" or {foo: "bar"}
137
+ #
138
+ # @faker.version 1.8.6
90
139
  def random_complex_type
91
140
  types = SIMPLE_TYPES + COMPLEX_TYPES
92
141
  type_to_use = types[rand(0..types.length - 1)]
@@ -5,22 +5,67 @@ module Faker
5
5
  flexible :university
6
6
 
7
7
  class << self
8
+ ##
9
+ # Produces a random university name.
10
+ #
11
+ # @return [String]
12
+ #
13
+ # @example
14
+ # Faker::University.name #=> "Eastern Mississippi Academy"
15
+ #
16
+ # @faker.version 1.5.0
8
17
  def name
9
18
  parse('university.name')
10
19
  end
11
20
 
21
+ ##
22
+ # Produces a random university prefix.
23
+ #
24
+ # @return [String]
25
+ #
26
+ # @example
27
+ # Faker::University.prefix #=> "Western"
28
+ #
29
+ # @faker.version 1.5.0
12
30
  def prefix
13
31
  fetch('university.prefix')
14
32
  end
15
33
 
34
+ ##
35
+ # Produces a random university suffix.
36
+ #
37
+ # @return [String]
38
+ #
39
+ # @example
40
+ # Faker::University.suffix #=> "Academy"
41
+ #
42
+ # @faker.version 1.5.0
16
43
  def suffix
17
44
  fetch('university.suffix')
18
45
  end
19
46
 
47
+ ##
48
+ # Produces a random greek organization.
49
+ #
50
+ # @return [String]
51
+ #
52
+ # @example
53
+ # Faker::University.greek_organization #=> "BEX"
54
+ #
55
+ # @faker.version 1.5.0
20
56
  def greek_organization
21
57
  Array.new(3) { |_| sample(greek_alphabet) }.join
22
58
  end
23
59
 
60
+ ##
61
+ # Produces a greek alphabet.
62
+ #
63
+ # @return [Array]
64
+ #
65
+ # @example
66
+ # Faker::University.greek_alphabet #=> ["Α", "B", "Γ", "Δ", ...]
67
+ #
68
+ # @faker.version 1.5.0
24
69
  def greek_alphabet
25
70
  %w[Α B Γ Δ E Z H Θ I K Λ M N Ξ
26
71
  O Π P Σ T Y Φ X Ψ Ω]