faker 2.0.0 → 3.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (584) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +1896 -11
  3. data/README.md +140 -307
  4. data/lib/faker/blockchain/aeternity.rb +70 -0
  5. data/lib/faker/blockchain/bitcoin.rb +27 -2
  6. data/lib/faker/blockchain/ethereum.rb +11 -1
  7. data/lib/faker/blockchain/tezos.rb +92 -9
  8. data/lib/faker/blockchain.rb +9 -0
  9. data/lib/faker/books/culture_series.rb +49 -0
  10. data/lib/faker/books/dune.rb +71 -5
  11. data/lib/faker/books/lovecraft.rb +182 -7
  12. data/lib/faker/books/the_kingkiller_chronicle.rb +61 -0
  13. data/lib/faker/books.rb +9 -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/creature.rb +9 -0
  20. data/lib/faker/default/address.rb +251 -6
  21. data/lib/faker/default/adjective.rb +35 -0
  22. data/lib/faker/default/alphanumeric.rb +49 -6
  23. data/lib/faker/default/ancient.rb +36 -0
  24. data/lib/faker/default/app.rb +45 -0
  25. data/lib/faker/default/appliance.rb +18 -0
  26. data/lib/faker/default/artist.rb +9 -0
  27. data/lib/faker/default/avatar.rb +32 -1
  28. data/lib/faker/default/bank.rb +117 -22
  29. data/lib/faker/default/barcode.rb +165 -0
  30. data/lib/faker/default/beer.rb +75 -3
  31. data/lib/faker/default/blood.rb +48 -0
  32. data/lib/faker/default/book.rb +61 -0
  33. data/lib/faker/default/boolean.rb +14 -1
  34. data/lib/faker/default/business.rb +27 -0
  35. data/lib/faker/default/camera.rb +46 -0
  36. data/lib/faker/default/cannabis.rb +90 -0
  37. data/lib/faker/default/chile_rut.rb +62 -8
  38. data/lib/faker/default/chuck_norris.rb +13 -2
  39. data/lib/faker/default/code.rb +165 -38
  40. data/lib/faker/default/coffee.rb +45 -0
  41. data/lib/faker/default/coin.rb +18 -0
  42. data/lib/faker/default/color.rb +123 -5
  43. data/lib/faker/default/commerce.rb +102 -11
  44. data/lib/faker/default/company.rb +445 -23
  45. data/lib/faker/default/compass.rb +135 -0
  46. data/lib/faker/default/computer.rb +63 -0
  47. data/lib/faker/default/construction.rb +54 -0
  48. data/lib/faker/default/cosmere.rb +90 -0
  49. data/lib/faker/default/crypto.rb +52 -5
  50. data/lib/faker/default/crypto_coin.rb +45 -0
  51. data/lib/faker/default/currency.rb +27 -0
  52. data/lib/faker/default/date.rb +145 -5
  53. data/lib/faker/default/dc_comics.rb +45 -0
  54. data/lib/faker/default/demographic.rb +57 -0
  55. data/lib/faker/default/dessert.rb +27 -0
  56. data/lib/faker/default/device.rb +54 -0
  57. data/lib/faker/default/driving_licence.rb +87 -14
  58. data/lib/faker/default/drone.rb +332 -0
  59. data/lib/faker/default/educator.rb +73 -6
  60. data/lib/faker/default/electrical_components.rb +27 -0
  61. data/lib/faker/default/emotion.rb +33 -0
  62. data/lib/faker/default/esport.rb +45 -0
  63. data/lib/faker/default/file.rb +53 -4
  64. data/lib/faker/default/finance.rb +74 -2
  65. data/lib/faker/default/food.rb +93 -3
  66. data/lib/faker/default/funny_name.rb +45 -0
  67. data/lib/faker/default/game.rb +48 -0
  68. data/lib/faker/default/gender.rb +31 -0
  69. data/lib/faker/default/greek_philosophers.rb +18 -0
  70. data/lib/faker/default/hacker.rb +59 -1
  71. data/lib/faker/default/hipster.rb +103 -7
  72. data/lib/faker/default/hobby.rb +22 -0
  73. data/lib/faker/default/house.rb +18 -0
  74. data/lib/faker/default/html.rb +230 -0
  75. data/lib/faker/default/id_number.rb +313 -8
  76. data/lib/faker/default/industry_segments.rb +36 -0
  77. data/lib/faker/default/invoice.rb +34 -7
  78. data/lib/faker/default/job.rb +36 -0
  79. data/lib/faker/default/json.rb +68 -8
  80. data/lib/faker/default/kpop.rb +54 -0
  81. data/lib/faker/default/lorem.rb +194 -21
  82. data/lib/faker/default/lorem_flickr.rb +67 -2
  83. data/lib/faker/default/markdown.rb +100 -9
  84. data/lib/faker/default/marketing.rb +9 -0
  85. data/lib/faker/default/measurement.rb +93 -2
  86. data/lib/faker/default/military.rb +71 -0
  87. data/lib/faker/default/mountain.rb +33 -0
  88. data/lib/faker/default/movie.rb +33 -0
  89. data/lib/faker/default/name.rb +98 -0
  90. data/lib/faker/default/nation.rb +45 -5
  91. data/lib/faker/default/{nhs.rb → national_health_service.rb} +27 -4
  92. data/lib/faker/default/nato_phonetic_alphabet.rb +9 -0
  93. data/lib/faker/default/number.rb +151 -12
  94. data/lib/faker/default/omniauth.rb +233 -92
  95. data/lib/faker/default/phone_number.rb +113 -11
  96. data/lib/faker/default/placeholdit.rb +24 -3
  97. data/lib/faker/default/programming_language.rb +18 -0
  98. data/lib/faker/default/quote.rb +124 -0
  99. data/lib/faker/default/relationship.rb +46 -1
  100. data/lib/faker/default/restaurant.rb +54 -2
  101. data/lib/faker/default/science.rb +135 -0
  102. data/lib/faker/default/slack_emoji.rb +81 -0
  103. data/lib/faker/default/source.rb +43 -0
  104. data/lib/faker/default/south_africa.rb +93 -3
  105. data/lib/faker/default/space.rb +128 -1
  106. data/lib/faker/default/sport.rb +116 -0
  107. data/lib/faker/default/string.rb +18 -4
  108. data/lib/faker/default/stripe.rb +64 -3
  109. data/lib/faker/default/subscription.rb +45 -0
  110. data/lib/faker/default/superhero.rb +45 -0
  111. data/lib/faker/default/tea.rb +41 -0
  112. data/lib/faker/default/team.rb +45 -0
  113. data/lib/faker/default/theater.rb +49 -0
  114. data/lib/faker/default/time.rb +80 -0
  115. data/lib/faker/default/types.rb +91 -11
  116. data/lib/faker/default/university.rb +45 -0
  117. data/lib/faker/default/vehicle.rb +225 -42
  118. data/lib/faker/default/verb.rb +45 -0
  119. data/lib/faker/default/vulnerability_identifier.rb +23 -0
  120. data/lib/faker/default/world_cup.rb +50 -0
  121. data/lib/faker/default/x.rb +189 -0
  122. data/lib/faker/default.rb +9 -0
  123. data/lib/faker/fantasy/tolkien.rb +67 -0
  124. data/lib/faker/fantasy.rb +9 -0
  125. data/lib/faker/games/clash_of_clans.rb +48 -0
  126. data/lib/faker/games/control.rb +113 -0
  127. data/lib/faker/games/dnd.rb +178 -0
  128. data/lib/faker/games/dota.rb +60 -0
  129. data/lib/faker/games/elder_scrolls.rb +98 -0
  130. data/lib/faker/games/fallout.rb +37 -0
  131. data/lib/faker/games/final_fantasy_xiv.rb +73 -0
  132. data/lib/faker/games/half_life.rb +27 -0
  133. data/lib/faker/games/heroes.rb +40 -0
  134. data/lib/faker/games/heroes_of_the_storm.rb +38 -2
  135. data/lib/faker/games/league_of_legends.rb +54 -0
  136. data/lib/faker/games/minecraft.rb +113 -0
  137. data/lib/faker/games/myst.rb +45 -0
  138. data/lib/faker/games/overwatch.rb +27 -0
  139. data/lib/faker/games/pokemon.rb +27 -0
  140. data/lib/faker/games/sonic_the_hedgehog.rb +27 -0
  141. data/lib/faker/games/street_fighter.rb +61 -0
  142. data/lib/faker/games/super_mario.rb +48 -0
  143. data/lib/faker/games/super_smash_bros.rb +18 -0
  144. data/lib/faker/games/tarkov.rb +205 -0
  145. data/lib/faker/games/touhou.rb +75 -0
  146. data/lib/faker/games/warhammer_fantasy.rb +74 -0
  147. data/lib/faker/games/witcher.rb +93 -0
  148. data/lib/faker/games/world_of_warcraft.rb +44 -1
  149. data/lib/faker/games/zelda.rb +37 -1
  150. data/lib/faker/games.rb +9 -0
  151. data/lib/faker/internet/http.rb +48 -0
  152. data/lib/faker/internet.rb +582 -0
  153. data/lib/faker/japanese_media/conan.rb +48 -0
  154. data/lib/faker/japanese_media/cowboy_bebop.rb +61 -0
  155. data/lib/faker/japanese_media/doraemon.rb +48 -0
  156. data/lib/faker/japanese_media/dragon_ball.rb +35 -0
  157. data/lib/faker/japanese_media/fullmetal_alchemist_brotherhood.rb +48 -0
  158. data/lib/faker/japanese_media/kamen_rider.rb +102 -0
  159. data/lib/faker/japanese_media/naruto.rb +61 -0
  160. data/lib/faker/japanese_media/one_piece.rb +55 -1
  161. data/lib/faker/japanese_media/studio_ghibli.rb +48 -0
  162. data/lib/faker/japanese_media/sword_art_online.rb +36 -0
  163. data/lib/faker/japanese_media.rb +9 -0
  164. data/lib/faker/locations/australia.rb +49 -0
  165. data/lib/faker/locations.rb +9 -0
  166. data/lib/faker/movies/avatar.rb +49 -0
  167. data/lib/faker/movies/back_to_the_future.rb +28 -0
  168. data/lib/faker/movies/departed.rb +49 -0
  169. data/lib/faker/movies/ghostbusters.rb +28 -0
  170. data/lib/faker/movies/hackers.rb +48 -0
  171. data/lib/faker/movies/harry_potter.rb +54 -0
  172. data/lib/faker/movies/hitchhikers_guide_to_the_galaxy.rb +69 -0
  173. data/lib/faker/movies/hobbit.rb +41 -4
  174. data/lib/faker/movies/how_to_train_your_dragon.rb +48 -0
  175. data/lib/faker/movies/lebowski.rb +27 -0
  176. data/lib/faker/movies/lord_of_the_rings.rb +31 -3
  177. data/lib/faker/movies/princess_bride.rb +19 -0
  178. data/lib/faker/movies/star_wars.rb +169 -5
  179. data/lib/faker/movies/the_room.rb +63 -0
  180. data/lib/faker/movies/tron.rb +161 -0
  181. data/lib/faker/movies/v_for_vendetta.rb +29 -0
  182. data/lib/faker/movies.rb +9 -0
  183. data/lib/faker/music/bossa_nova.rb +35 -0
  184. data/lib/faker/music/grateful_dead.rb +18 -2
  185. data/lib/faker/music/hiphop.rb +48 -0
  186. data/lib/faker/music/opera.rb +273 -1
  187. data/lib/faker/music/pearl_jam.rb +48 -0
  188. data/lib/faker/music/phish.rb +36 -1
  189. data/lib/faker/music/prince.rb +64 -0
  190. data/lib/faker/music/rock_band.rb +21 -0
  191. data/lib/faker/music/rush.rb +35 -0
  192. data/lib/faker/music/smashing_pumpkins.rb +62 -0
  193. data/lib/faker/music/umphreys_mcgee.rb +9 -0
  194. data/lib/faker/music.rb +149 -0
  195. data/lib/faker/quotes/chiquito.rb +80 -0
  196. data/lib/faker/quotes/rajnikanth.rb +27 -0
  197. data/lib/faker/quotes/shakespeare.rb +70 -0
  198. data/lib/faker/quotes.rb +9 -0
  199. data/lib/faker/religion/bible.rb +50 -0
  200. data/lib/faker/religion.rb +9 -0
  201. data/lib/faker/sports/basketball.rb +36 -0
  202. data/lib/faker/sports/chess.rb +90 -0
  203. data/lib/faker/sports/football.rb +45 -0
  204. data/lib/faker/sports/mountaineering.rb +22 -0
  205. data/lib/faker/sports/volleyball.rb +74 -0
  206. data/lib/faker/sports.rb +9 -0
  207. data/lib/faker/travel/airport.rb +43 -0
  208. data/lib/faker/travel/train_station.rb +54 -0
  209. data/lib/faker/travel.rb +9 -0
  210. data/lib/faker/tv_shows/aqua_teen_hunger_force.rb +22 -0
  211. data/lib/faker/tv_shows/archer.rb +51 -0
  212. data/lib/faker/tv_shows/big_bang_theory.rb +37 -0
  213. data/lib/faker/tv_shows/bojack_horseman.rb +28 -0
  214. data/lib/faker/tv_shows/breaking_bad.rb +18 -0
  215. data/lib/faker/tv_shows/brooklyn_nine_nine.rb +38 -0
  216. data/lib/faker/tv_shows/buffy.rb +47 -2
  217. data/lib/faker/tv_shows/community.rb +19 -0
  218. data/lib/faker/tv_shows/dr_who.rb +65 -2
  219. data/lib/faker/tv_shows/dumb_and_dumber.rb +28 -0
  220. data/lib/faker/tv_shows/family_guy.rb +28 -0
  221. data/lib/faker/tv_shows/final_space.rb +51 -0
  222. data/lib/faker/tv_shows/friends.rb +27 -0
  223. data/lib/faker/tv_shows/futurama.rb +65 -0
  224. data/lib/faker/tv_shows/game_of_thrones.rb +46 -0
  225. data/lib/faker/tv_shows/hey_arnold.rb +27 -0
  226. data/lib/faker/tv_shows/how_i_met_your_mother.rb +37 -0
  227. data/lib/faker/tv_shows/michael_scott.rb +10 -0
  228. data/lib/faker/tv_shows/new_girl.rb +19 -0
  229. data/lib/faker/tv_shows/parks_and_rec.rb +18 -0
  230. data/lib/faker/tv_shows/rick_and_morty.rb +28 -0
  231. data/lib/faker/tv_shows/ru_paul.rb +18 -0
  232. data/lib/faker/tv_shows/seinfeld.rb +28 -0
  233. data/lib/faker/tv_shows/silicon_valley.rb +75 -0
  234. data/lib/faker/tv_shows/simpsons.rb +42 -0
  235. data/lib/faker/tv_shows/south_park.rb +34 -0
  236. data/lib/faker/tv_shows/spongebob.rb +50 -0
  237. data/lib/faker/tv_shows/star_trek.rb +36 -0
  238. data/lib/faker/tv_shows/stargate.rb +28 -0
  239. data/lib/faker/tv_shows/stranger_things.rb +19 -0
  240. data/lib/faker/tv_shows/suits.rb +37 -0
  241. data/lib/faker/tv_shows/supernatural.rb +48 -0
  242. data/lib/faker/tv_shows/the_expanse.rb +36 -0
  243. data/lib/faker/tv_shows/the_fresh_prince_of_bel_air.rb +30 -2
  244. data/lib/faker/tv_shows/the_it_crowd.rb +37 -0
  245. data/lib/faker/tv_shows/the_office.rb +37 -0
  246. data/lib/faker/tv_shows/the_thick_of_it.rb +28 -0
  247. data/lib/faker/tv_shows/twin_peaks.rb +28 -0
  248. data/lib/faker/tv_shows/venture_bros.rb +38 -0
  249. data/lib/faker/tv_shows.rb +9 -0
  250. data/lib/faker/version.rb +2 -2
  251. data/lib/faker.rb +125 -45
  252. data/lib/helpers/base58.rb +1 -1
  253. data/lib/helpers/char.rb +22 -27
  254. data/lib/helpers/deprecator.rb +118 -0
  255. data/lib/helpers/positional_generator.rb +478 -0
  256. data/lib/helpers/unique_generator.rb +18 -14
  257. data/lib/locales/README.md +18 -2
  258. data/lib/locales/ar.yml +1608 -46
  259. data/lib/locales/bg.yml +937 -21
  260. data/lib/locales/ca-CAT.yml +347 -12
  261. data/lib/locales/ca.yml +580 -15
  262. data/lib/locales/da-DK.yml +530 -36
  263. data/lib/locales/de-AT.yml +3487 -25
  264. data/lib/locales/de-CH.yml +6051 -9
  265. data/lib/locales/de.yml +7185 -97
  266. data/lib/locales/ee.yml +1185 -27
  267. data/lib/locales/en/address.yml +1829 -559
  268. data/lib/locales/en/adjective.yml +179 -0
  269. data/lib/locales/en/airport.yml +381 -0
  270. data/lib/locales/en/ancient.yml +128 -4
  271. data/lib/locales/en/animal.yml +141 -2
  272. data/lib/locales/en/app.yml +89 -2
  273. data/lib/locales/en/appliance.yml +81 -2
  274. data/lib/locales/en/aqua_teen_hunger_force.yml +33 -1
  275. data/lib/locales/en/archer.yml +75 -0
  276. data/lib/locales/en/artist.yml +43 -1
  277. data/lib/locales/en/australia.yml +108 -0
  278. data/lib/locales/en/avatar.yml +57 -0
  279. data/lib/locales/en/back_to_the_future.yml +145 -117
  280. data/lib/locales/en/bank.yml +92 -3
  281. data/lib/locales/en/barcode.yml +24 -0
  282. data/lib/locales/en/beer.yml +232 -6
  283. data/lib/locales/en/bible.yml +87 -0
  284. data/lib/locales/en/big_bang_theory.yml +37 -0
  285. data/lib/locales/en/bird.yml +1280 -0
  286. data/lib/locales/en/blood.yml +13 -0
  287. data/lib/locales/en/bojack_horseman.yml +63 -3
  288. data/lib/locales/en/book.yml +486 -3
  289. data/lib/locales/en/bossa_nova.yml +110 -3
  290. data/lib/locales/en/breaking_bad.yml +110 -25
  291. data/lib/locales/en/brooklyn_nine_nine.yml +34 -0
  292. data/lib/locales/en/buffy.yml +239 -257
  293. data/lib/locales/en/business.yml +18 -2
  294. data/lib/locales/en/camera.yml +611 -0
  295. data/lib/locales/en/cannabis.yml +344 -10
  296. data/lib/locales/en/cat.yml +155 -3
  297. data/lib/locales/en/chess.yml +102 -0
  298. data/lib/locales/en/chiquito.yml +63 -0
  299. data/lib/locales/en/chuck_norris.yml +78 -79
  300. data/lib/locales/en/clash_of_clan.yml +99 -0
  301. data/lib/locales/en/code.yml +501 -1
  302. data/lib/locales/en/coffee.yml +450 -25
  303. data/lib/locales/en/color.yml +73 -1
  304. data/lib/locales/en/commerce.yml +117 -6
  305. data/lib/locales/en/community.yml +55 -30
  306. data/lib/locales/en/company.yml +1756 -13
  307. data/lib/locales/en/compass.yml +108 -12
  308. data/lib/locales/en/computer.yml +55 -0
  309. data/lib/locales/en/conan.yml +169 -0
  310. data/lib/locales/en/construction.yml +416 -422
  311. data/lib/locales/en/control.yml +247 -0
  312. data/lib/locales/en/cosmere.yml +219 -54
  313. data/lib/locales/en/cowboy_bebop.yml +160 -0
  314. data/lib/locales/en/culture_series.yml +298 -298
  315. data/lib/locales/en/currency.yml +358 -3
  316. data/lib/locales/en/dc_comics.yml +178 -49
  317. data/lib/locales/en/demographic.yml +218 -5
  318. data/lib/locales/en/departed.yml +46 -0
  319. data/lib/locales/en/dessert.yml +78 -3
  320. data/lib/locales/en/device.yml +112 -4
  321. data/lib/locales/en/dnd.yml +636 -0
  322. data/lib/locales/en/dog.yml +262 -7
  323. data/lib/locales/en/doraemon.yml +284 -0
  324. data/lib/locales/en/dota.yml +704 -63
  325. data/lib/locales/en/dr_who.yml +468 -93
  326. data/lib/locales/en/dragon_ball.yml +243 -1
  327. data/lib/locales/en/driving_license.yml +181 -0
  328. data/lib/locales/en/drone.yml +95 -0
  329. data/lib/locales/en/dumb_and_dumber.yml +72 -56
  330. data/lib/locales/en/dune.yml +270 -131
  331. data/lib/locales/en/educator.yml +75 -6
  332. data/lib/locales/en/elder_scrolls.yml +582 -9
  333. data/lib/locales/en/electrical_components.yml +49 -3
  334. data/lib/locales/en/emotion.yml +480 -0
  335. data/lib/locales/en/esport.yml +58 -5
  336. data/lib/locales/en/fallout.yml +311 -133
  337. data/lib/locales/en/family_guy.yml +54 -4
  338. data/lib/locales/en/file.yml +109 -2
  339. data/lib/locales/en/final_fantasy_xiv.yml +754 -0
  340. data/lib/locales/en/final_space.yml +35 -0
  341. data/lib/locales/en/finance.yml +80 -4
  342. data/lib/locales/en/food.yml +1067 -10
  343. data/lib/locales/en/football.yml +121 -5
  344. data/lib/locales/en/fresh_prince_of_bel_air.yml +119 -70
  345. data/lib/locales/en/friends.yml +162 -3
  346. data/lib/locales/en/fullmetal_alchemist_brotherhood.yml +78 -0
  347. data/lib/locales/en/funny_name.yml +752 -1
  348. data/lib/locales/en/futurama.yml +336 -0
  349. data/lib/locales/en/game.yml +11 -0
  350. data/lib/locales/en/game_of_thrones.yml +2487 -5
  351. data/lib/locales/en/gender.yml +15 -2
  352. data/lib/locales/en/ghostbusters.yml +101 -88
  353. data/lib/locales/en/grateful_dead.yml +47 -45
  354. data/lib/locales/en/greek_philosophers.yml +44 -23
  355. data/lib/locales/en/hacker.yml +110 -5
  356. data/lib/locales/en/hackers.yml +53 -0
  357. data/lib/locales/en/half_life.yml +84 -3
  358. data/lib/locales/en/harry_potter.yml +323 -6
  359. data/lib/locales/en/heroes.yml +408 -3
  360. data/lib/locales/en/heroes_of_the_storm.yml +131 -4
  361. data/lib/locales/en/hey_arnold.yml +104 -21
  362. data/lib/locales/en/hipster.yml +203 -1
  363. data/lib/locales/en/hitchhikers_guide_to_the_galaxy.yml +243 -42
  364. data/lib/locales/en/hobby.yml +170 -0
  365. data/lib/locales/en/horse.yml +446 -2
  366. data/lib/locales/en/house.yml +34 -2
  367. data/lib/locales/en/how_i_met_your_mother.yml +97 -25
  368. data/lib/locales/en/how_to_train_your_dragon.yml +173 -0
  369. data/lib/locales/en/id_number.yml +7 -2
  370. data/lib/locales/en/industry_segments.yml +188 -4
  371. data/lib/locales/en/internet.yml +136 -3
  372. data/lib/locales/en/jack_handey.yml +54 -0
  373. data/lib/locales/en/job.yml +98 -7
  374. data/lib/locales/en/kamen_rider.yml +718 -0
  375. data/lib/locales/en/kpop.yml +954 -80
  376. data/lib/locales/en/league_of_legends.yml +285 -6
  377. data/lib/locales/en/lebowski.yml +58 -40
  378. data/lib/locales/en/lorem.yml +1095 -6
  379. data/lib/locales/en/lovecraft.yml +76 -6
  380. data/lib/locales/en/markdown.yml +12 -2
  381. data/lib/locales/en/marketing.yml +54 -1
  382. data/lib/locales/en/measurement.yml +42 -8
  383. data/lib/locales/en/michael_scott.yml +41 -42
  384. data/lib/locales/en/military.yml +179 -5
  385. data/lib/locales/en/minecraft.yml +663 -0
  386. data/lib/locales/en/mitch_hedberg.yml +46 -0
  387. data/lib/locales/en/mountain.yml +171 -0
  388. data/lib/locales/en/mountaineering.yml +14 -0
  389. data/lib/locales/en/movie.yml +206 -2
  390. data/lib/locales/en/music.yml +461 -29
  391. data/lib/locales/en/myst.yml +87 -31
  392. data/lib/locales/en/name.yml +6068 -5
  393. data/lib/locales/en/naruto.yml +230 -0
  394. data/lib/locales/en/nato_phonetic_alphabet.yml +27 -1
  395. data/lib/locales/en/new_girl.yml +35 -37
  396. data/lib/locales/en/one_piece.yml +359 -6
  397. data/lib/locales/en/opera.yml +169 -1
  398. data/lib/locales/en/overwatch.yml +2648 -37
  399. data/lib/locales/en/parks_and_rec.yml +33 -4
  400. data/lib/locales/en/pearl_jam.yml +213 -0
  401. data/lib/locales/en/phish.yml +391 -1
  402. data/lib/locales/en/phone_number.yml +78 -3
  403. data/lib/locales/en/pokemon.yml +417 -4
  404. data/lib/locales/en/prince.yml +227 -0
  405. data/lib/locales/en/princess_bride.yml +48 -2
  406. data/lib/locales/en/programming_language.yml +753 -3
  407. data/lib/locales/en/quote.yml +606 -163
  408. data/lib/locales/en/rajnikanth.yml +77 -0
  409. data/lib/locales/en/relationship.yml +29 -6
  410. data/lib/locales/en/restaurant.yml +31 -31
  411. data/lib/locales/en/rick_and_morty.yml +116 -3
  412. data/lib/locales/en/rock_band.yml +228 -1
  413. data/lib/locales/en/rupaul.yml +120 -122
  414. data/lib/locales/en/rush.yml +32 -0
  415. data/lib/locales/en/science.yml +481 -3
  416. data/lib/locales/en/seinfeld.yml +110 -3
  417. data/lib/locales/en/shakespeare.yml +46 -53
  418. data/lib/locales/en/silicon_valley.yml +122 -50
  419. data/lib/locales/en/simpsons.yml +897 -23
  420. data/lib/locales/en/slack_emoji.yml +874 -8
  421. data/lib/locales/en/smashing_pumpkins.yml +382 -0
  422. data/lib/locales/en/source.yml +35 -0
  423. data/lib/locales/en/south_park.yml +360 -2
  424. data/lib/locales/en/space.yml +373 -14
  425. data/lib/locales/en/spongebob.yml +489 -0
  426. data/lib/locales/en/sport.yml +130 -0
  427. data/lib/locales/en/star_trek.yml +105 -4
  428. data/lib/locales/en/star_wars.yml +564 -219
  429. data/lib/locales/en/stargate.yml +65 -18
  430. data/lib/locales/en/stranger_thing.yml +31 -33
  431. data/lib/locales/en/street_fighter.yml +1524 -0
  432. data/lib/locales/en/stripe.yml +3 -3
  433. data/lib/locales/en/studio_ghibli.yml +107 -0
  434. data/lib/locales/en/subscription.yml +47 -5
  435. data/lib/locales/en/suits.yml +45 -0
  436. data/lib/locales/en/super_mario.yml +58 -0
  437. data/lib/locales/en/super_smash_bros.yml +23 -5
  438. data/lib/locales/en/superhero.yml +574 -4
  439. data/lib/locales/en/supernatural.yml +141 -0
  440. data/lib/locales/en/sword_art_online.yml +327 -331
  441. data/lib/locales/en/tarkov.yml +593 -0
  442. data/lib/locales/en/tea.yml +172 -0
  443. data/lib/locales/en/team.yml +125 -3
  444. data/lib/locales/en/the_expanse.yml +92 -4
  445. data/lib/locales/en/the_it_crowd.yml +148 -152
  446. data/lib/locales/en/the_kingkiller_chronicle.yml +56 -0
  447. data/lib/locales/en/the_office.yml +82 -0
  448. data/lib/locales/en/the_room.yml +68 -0
  449. data/lib/locales/en/the_thick_of_it.yml +83 -3
  450. data/lib/locales/en/theater.yml +597 -0
  451. data/lib/locales/en/tolkien.yml +2453 -0
  452. data/lib/locales/en/touhou.yml +839 -0
  453. data/lib/locales/en/train_station.yml +280 -0
  454. data/lib/locales/en/tron.yml +227 -0
  455. data/lib/locales/en/twin_peaks.yml +130 -3
  456. data/lib/locales/en/umphreys_mcgee.yml +266 -1
  457. data/lib/locales/en/university.yml +15 -2
  458. data/lib/locales/en/v_for_vendetta.yml +157 -160
  459. data/lib/locales/en/vehicle.yml +2809 -75
  460. data/lib/locales/en/venture_bros.yml +225 -4
  461. data/lib/locales/en/verbs.yml +3785 -5
  462. data/lib/locales/en/volleyball.yml +501 -0
  463. data/lib/locales/en/warhammer_fantasy.yml +549 -0
  464. data/lib/locales/en/witcher.yml +426 -7
  465. data/lib/locales/en/world_cup.yml +1132 -235
  466. data/lib/locales/en/world_of_warcraft.yml +122 -4
  467. data/lib/locales/en/yoda.yml +38 -1
  468. data/lib/locales/en/zelda.yml +962 -4
  469. data/lib/locales/en-AU.yml +728 -17
  470. data/lib/locales/en-BORK.yml +104 -1
  471. data/lib/locales/en-CA.yml +373 -15
  472. data/lib/locales/en-GB.yml +118 -8
  473. data/lib/locales/en-IND.yml +1259 -16
  474. data/lib/locales/en-KE.yml +212 -0
  475. data/lib/locales/en-MS.yml +364 -16
  476. data/lib/locales/en-NEP.yml +213 -36
  477. data/lib/locales/en-NG.yml +737 -65
  478. data/lib/locales/en-NZ.yml +1183 -27
  479. data/lib/locales/en-PAK.yml +392 -9
  480. data/lib/locales/en-SG.yml +581 -15
  481. data/lib/locales/en-TH.yml +360 -0
  482. data/lib/locales/en-UG.yml +374 -75
  483. data/lib/locales/en-US.yml +6937 -71
  484. data/lib/locales/en-ZA.yml +1394 -13
  485. data/lib/locales/en-au-ocker.yml +266 -21
  486. data/lib/locales/en.yml +0 -50
  487. data/lib/locales/es-AR.yml +4570 -0
  488. data/lib/locales/es-MX.yml +1910 -41
  489. data/lib/locales/es.yml +2172 -52
  490. data/lib/locales/fa.yml +1624 -3
  491. data/lib/locales/fi-FI.yml +316 -16
  492. data/lib/locales/fr/address.yml +773 -0
  493. data/lib/locales/fr/adjective.yml +266 -0
  494. data/lib/locales/fr/ancient.yml +141 -0
  495. data/lib/locales/fr/animal.yml +122 -0
  496. data/lib/locales/fr/appliance.yml +69 -0
  497. data/lib/locales/fr/book.yml +31 -0
  498. data/lib/locales/fr/color.yml +34 -0
  499. data/lib/locales/fr/company.yml +497 -0
  500. data/lib/locales/fr/compass.yml +71 -0
  501. data/lib/locales/fr/demographic.yml +6 -0
  502. data/lib/locales/fr/gender.yml +21 -0
  503. data/lib/locales/fr/internet.yml +15 -0
  504. data/lib/locales/fr/lorem.yml +1094 -0
  505. data/lib/locales/fr/measurement.yml +34 -0
  506. data/lib/locales/fr/name.yml +1193 -0
  507. data/lib/locales/fr/phone_number.yml +38 -0
  508. data/lib/locales/fr/pokemon.yml +421 -0
  509. data/lib/locales/fr-CA.yml +2756 -44
  510. data/lib/locales/fr-CH.yml +2455 -42
  511. data/lib/locales/fr.yml +2 -111
  512. data/lib/locales/he.yml +255 -9
  513. data/lib/locales/hy.yml +3630 -124
  514. data/lib/locales/id.yml +840 -10
  515. data/lib/locales/it.yml +1310 -31
  516. data/lib/locales/ja/README.md +13 -0
  517. data/lib/locales/ja/address.yml +363 -0
  518. data/lib/locales/ja/adjective.yml +148 -0
  519. data/lib/locales/ja/ancient.yml +18 -0
  520. data/lib/locales/ja/animal.yml +87 -0
  521. data/lib/locales/ja/artist.yml +46 -0
  522. data/lib/locales/ja/bank.yml +139 -0
  523. data/lib/locales/ja/book.yml +496 -0
  524. data/lib/locales/ja/cat.yml +79 -0
  525. data/lib/locales/ja/coffee.yml +22 -0
  526. data/lib/locales/ja/color.yml +35 -0
  527. data/lib/locales/ja/commerce.yml +103 -0
  528. data/lib/locales/ja/company.yml +26 -0
  529. data/lib/locales/ja/dog.yml +339 -0
  530. data/lib/locales/ja/emotion.yml +49 -0
  531. data/lib/locales/ja/food.yml +41 -0
  532. data/lib/locales/ja/football.yml +115 -0
  533. data/lib/locales/ja/gender.yml +6 -0
  534. data/lib/locales/ja/lorem.yml +1020 -0
  535. data/lib/locales/ja/name.yml +213 -0
  536. data/lib/locales/ja/naruto.yml +230 -0
  537. data/lib/locales/ja/overwatch.yml +37 -0
  538. data/lib/locales/ja/phone_number.yml +13 -0
  539. data/lib/locales/ja/pokemon.yml +441 -0
  540. data/lib/locales/ja/relationship.yml +33 -0
  541. data/lib/locales/ja/restaurant.yml +82 -0
  542. data/lib/locales/ja/space.yml +23 -0
  543. data/lib/locales/ja/sport.yml +130 -0
  544. data/lib/locales/ja/studio_ghibli.yml +112 -0
  545. data/lib/locales/ja/subscription.yml +50 -0
  546. data/lib/locales/ja/super_mario.yml +73 -0
  547. data/lib/locales/ja/super_smash_bros.yml +8 -0
  548. data/lib/locales/ja/touhou.yml +466 -0
  549. data/lib/locales/ja/university.yml +22 -0
  550. data/lib/locales/ja/zelda.yml +19 -0
  551. data/lib/locales/ko.yml +1450 -17
  552. data/lib/locales/lt.yml +315 -0
  553. data/lib/locales/lv.yml +1221 -27
  554. data/lib/locales/mi-NZ.yml +283 -0
  555. data/lib/locales/nb-NO.yml +518 -27
  556. data/lib/locales/nl.yml +33514 -55
  557. data/lib/locales/pl.yml +4008 -38
  558. data/lib/locales/pt-BR.yml +8210 -641
  559. data/lib/locales/pt.yml +846 -45
  560. data/lib/locales/ru.yml +1355 -30
  561. data/lib/locales/sk.yml +4416 -41
  562. data/lib/locales/sv.yml +731 -41
  563. data/lib/locales/th.yml +380 -0
  564. data/lib/locales/tr.yml +77 -19
  565. data/lib/locales/uk.yml +1814 -48
  566. data/lib/locales/vi.yml +392 -48
  567. data/lib/locales/zh-CN/bank.yml +17 -0
  568. data/lib/locales/zh-CN.yml +541 -19
  569. data/lib/locales/zh-TW.yml +1031 -15
  570. metadata +230 -125
  571. data/History.md +0 -176
  572. data/lib/faker/books/book.rb +0 -25
  573. data/lib/faker/default/bossa_nova.rb +0 -15
  574. data/lib/faker/default/fillmurray.rb +0 -15
  575. data/lib/faker/default/internet.rb +0 -207
  576. data/lib/faker/default/lorem_pixel.rb +0 -38
  577. data/lib/faker/default/twitter.rb +0 -174
  578. data/lib/faker/games/game.rb +0 -21
  579. data/lib/faker/movies/movie.rb +0 -11
  580. data/lib/faker/music/music.rb +0 -47
  581. data/lib/faker/quotes/quote.rb +0 -32
  582. data/lib/locales/en/hobbit.yml +0 -19
  583. data/lib/locales/en/lord_of_the_rings.yml +0 -6
  584. data/lib/locales/ja.yml +0 -98
@@ -5,41 +5,134 @@ module Faker
5
5
  flexible :address
6
6
 
7
7
  class << self
8
+ ##
9
+ # Produces the name of a city.
10
+ #
11
+ # @param options [Hash]
12
+ # @option with_state [Boolean] Whether to include the state name in the output.
13
+ # @return [String]
14
+ #
15
+ # @example
16
+ # Faker::Address.city #=> "Imogeneborough"
17
+ # Faker::Address.city(options: { with_state: true })
18
+ # #=> "Northfort, California"
19
+ #
20
+ # @faker.version 0.3.0
8
21
  def city(options: {})
9
22
  parse(options[:with_state] ? 'address.city_with_state' : 'address.city')
10
23
  end
11
24
 
25
+ ##
26
+ # Produces a street name.
27
+ #
28
+ # @return [String]
29
+ #
30
+ # @example
31
+ # Faker::Address.street_name #=> "Larkin Fork"
32
+ #
33
+ # @faker.version 0.3.0
12
34
  def street_name
13
35
  parse('address.street_name')
14
36
  end
15
37
 
38
+ ##
39
+ # Produces a street address.
40
+ #
41
+ # @param include_secondary [Boolean] Whether or not to include the secondary address.
42
+ # @return [String]
43
+ #
44
+ # @example
45
+ # Faker::Address.street_address #=> "282 Kevin Brook"
46
+ #
47
+ # @faker.version 0.3.0
16
48
  def street_address(include_secondary: false)
17
- numerify(parse('address.street_address') + (include_secondary ? ' ' + secondary_address : ''))
49
+ numerify(parse('address.street_address') + (include_secondary ? " #{secondary_address}" : ''))
18
50
  end
19
51
 
52
+ ##
53
+ # Produces a secondary address.
54
+ #
55
+ # @return [String]
56
+ #
57
+ # @example
58
+ # Faker::Address.secondary_address #=> "Apt. 672"
59
+ #
60
+ # @faker.version 0.3.0
20
61
  def secondary_address
21
62
  bothify(fetch('address.secondary_address'))
22
63
  end
23
64
 
65
+ ##
66
+ # Produces a building number.
67
+ #
68
+ # @return [String]
69
+ #
70
+ # @example
71
+ # Faker::Address.building_number #=> "7304"
72
+ #
73
+ # @faker.version 0.3.0
24
74
  def building_number
25
75
  bothify(fetch('address.building_number'))
26
76
  end
27
77
 
78
+ ##
79
+ # Produces the name of a community.
80
+ #
81
+ # @return [String]
82
+ #
83
+ # @example
84
+ # Faker::Address.community #=> "University Crossing"
85
+ #
86
+ # @faker.version 1.8.0
28
87
  def community
29
88
  parse('address.community')
30
89
  end
31
90
 
91
+ ##
92
+ #
93
+ # Produces a mail box number.
94
+ # @return [String]
95
+ #
96
+ # @example
97
+ # Faker::Address.mail_box #=> "PO Box 123"
98
+ #
99
+ # @faker.version 2.9.1
100
+ def mail_box
101
+ bothify(fetch('address.mail_box'))
102
+ end
103
+
104
+ ##
105
+ # Produces a Zip Code.
106
+ #
107
+ # @param state_abbreviation [String] an abbreviation for a state where the zip code should be located.
108
+ # @return [String]
109
+ #
110
+ # @example
111
+ # Faker::Address.zip_code #=> "58517"
112
+ # Faker::Address.zip_code #=> "23285-4905"
113
+ # Faker::Address.zip_code(state_abbreviation: 'CO') #=> "80011"
114
+ #
115
+ # @faker.version 0.3.0
32
116
  def zip_code(state_abbreviation: '')
33
117
  if state_abbreviation.empty?
34
118
  letterified_string = letterify(fetch('address.postcode'))
35
119
  return numerify(letterified_string, leading_zero: true)
36
120
  end
37
121
 
38
- # provide a zip code that is valid for the state provided
39
- # see http://www.fincen.gov/forms/files/us_state_territory_zip_codes.pdf
40
- bothify(fetch('address.postcode_by_state.' + state_abbreviation))
122
+ # provide a zip code that may be valid for the state provided
123
+ # note: zip code may appear in the correct format for the state provided but may not be an actual state zip.
124
+ bothify(fetch("address.postcode_by_state.#{state_abbreviation}"))
41
125
  end
42
126
 
127
+ ##
128
+ # Produces the name of a time zone.
129
+ #
130
+ # @return [String]
131
+ #
132
+ # @example
133
+ # Faker::Address.time_zone #=> "Asia/Yakutsk"
134
+ #
135
+ # @faker.version 1.2.0
43
136
  def time_zone
44
137
  fetch('address.time_zone')
45
138
  end
@@ -47,57 +140,209 @@ module Faker
47
140
  alias zip zip_code
48
141
  alias postcode zip_code
49
142
 
143
+ ##
144
+ # Produces a street suffix.
145
+ #
146
+ # @return [String]
147
+ #
148
+ # @example
149
+ # Faker::Address.street_suffix #=> "Street"
150
+ #
151
+ # @faker.version 0.3.0
50
152
  def street_suffix
51
153
  fetch('address.street_suffix')
52
154
  end
53
155
 
156
+ ##
157
+ # Produces a city suffix.
158
+ #
159
+ # @return [String]
160
+ #
161
+ # @example
162
+ # Faker::Address.city_suffix #=> "fort"
163
+ #
164
+ # @faker.version 0.3.0
54
165
  def city_suffix
55
166
  fetch('address.city_suffix')
56
167
  end
57
168
 
169
+ ##
170
+ # Produces a city prefix.
171
+ #
172
+ # @return [String]
173
+ #
174
+ # @example
175
+ # Faker::Address.city_prefix #=> "Lake"
176
+ #
177
+ # @faker.version 0.3.0
58
178
  def city_prefix
59
179
  fetch('address.city_prefix')
60
180
  end
61
181
 
182
+ ##
183
+ # Produces a state abbreviation.
184
+ #
185
+ # @return [String]
186
+ #
187
+ # @example
188
+ # Faker::Address.state_abbr #=> "AP"
189
+ #
190
+ # @faker.version 0.3.0
62
191
  def state_abbr
63
192
  fetch('address.state_abbr')
64
193
  end
65
194
 
195
+ ##
196
+ # Produces the name of a state.
197
+ #
198
+ # @return [String]
199
+ #
200
+ # @example
201
+ # Faker::Address.state #=> "California"
202
+ #
203
+ # @faker.version 0.3.0
66
204
  def state
67
205
  fetch('address.state')
68
206
  end
69
207
 
208
+ ##
209
+ # Produces the name of a country.
210
+ #
211
+ # @return [String]
212
+ #
213
+ # @example
214
+ # Faker::Address.country #=> "French Guiana"
215
+ #
216
+ # @faker.version 0.3.0
70
217
  def country
71
218
  fetch('address.country')
72
219
  end
73
220
 
221
+ ##
222
+ # Produces a country by ISO country code. See the
223
+ # [List of ISO 3166 country codes](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes)
224
+ # on Wikipedia for a full list.
225
+ #
226
+ # @param code [String] An ISO country code.
227
+ # @return [String]
228
+ #
229
+ # @example
230
+ # Faker::Address.country_by_code(code: 'NL') #=> "Netherlands"
231
+ #
232
+ # @faker.version 1.9.2
74
233
  def country_by_code(code: 'US')
75
- fetch('address.country_by_code.' + code)
234
+ fetch("address.country_by_code.#{code}")
76
235
  end
77
236
 
237
+ ##
238
+ # Produces an ISO 3166 country code when given a country name.
239
+ #
240
+ # @param name [String] Country name in snake_case format.
241
+ # @return [String]
242
+ #
243
+ # @example
244
+ # Faker::Address.country_name_to_code(name: 'united_states') #=> "US"
245
+ #
246
+ # @faker.version 1.9.2
78
247
  def country_name_to_code(name: 'united_states')
79
- fetch('address.country_by_name.' + name)
248
+ fetch("address.country_by_name.#{name}")
80
249
  end
81
250
 
251
+ ##
252
+ # Produces an ISO 3166 country code.
253
+ #
254
+ # @return [String]
255
+ #
256
+ # @example
257
+ # Faker::Address.country_code #=> "IT"
258
+ #
259
+ # @faker.version 1.4.0
82
260
  def country_code
83
261
  fetch('address.country_code')
84
262
  end
85
263
 
264
+ ##
265
+ # Produces a long (alpha-3) ISO 3166 country code.
266
+ #
267
+ # @return [String]
268
+ #
269
+ # @example
270
+ # Faker::Address.country_code_long #=> "ITA"
271
+ #
272
+ # @faker.version 0.3.0
86
273
  def country_code_long
87
274
  fetch('address.country_code_long')
88
275
  end
89
276
 
277
+ ##
278
+ # Produces a latitude.
279
+ #
280
+ # @return [Float]
281
+ #
282
+ # @example
283
+ # Faker::Address.latitude #=> -58.17256227443719
284
+ #
285
+ # @faker.version 1.0.0
90
286
  def latitude
91
287
  ((rand * 180) - 90).to_f
92
288
  end
93
289
 
290
+ ##
291
+ # Produces a longitude.
292
+ #
293
+ # @return [Float]
294
+ #
295
+ # @example
296
+ # Faker::Address.longitude #=> -156.65548382095133
297
+ #
298
+ # @faker.version 1.0.0
94
299
  def longitude
95
300
  ((rand * 360) - 180).to_f
96
301
  end
97
302
 
303
+ ##
304
+ # Produces a full address.
305
+ #
306
+ # @return [String]
307
+ #
308
+ # @example
309
+ # Faker::Address.full_address
310
+ # #=> "282 Kevin Brook, Imogeneborough, CA 58517"
311
+ #
312
+ # @faker.version 0.3.0
98
313
  def full_address
99
314
  parse('address.full_address')
100
315
  end
316
+
317
+ ##
318
+ # Produces Address hash of required fields
319
+ #
320
+ # @return [Hash]
321
+ #
322
+ # @example
323
+ # Faker::Address.full_address_as_hash(:longitude,
324
+ # :latitude,
325
+ # :country_name_to_code,
326
+ # country_name_to_code: {name: 'united_states'})
327
+ # #=> {:longitude=>-101.74428917174603, :latitude=>-37.40056749089944, :country_name_to_code=>"US"}
328
+ #
329
+ # Faker::Address.full_address_as_hash(:full_address)
330
+ # #=> {:full_address=>"87635 Rice Street, Lake Brentonton, OR 61896-5968"}
331
+ #
332
+ # Faker::Address.full_address_as_hash(:city, :time_zone)
333
+ # #=> {:city=>"East Faustina", :time_zone=>"America/Mexico_City"}
334
+ #
335
+ # Faker::Address.full_address_as_hash(:street_address, street_address: {include_secondary: true})
336
+ # #=> {:street_address=>"29423 Kenneth Causeway Suite 563"}
337
+ #
338
+ # @faker.version 2.13.0
339
+ def full_address_as_hash(*attrs, **attrs_params)
340
+ attrs.map!(&:to_sym)
341
+ attrs_params.transform_keys!(&:to_sym)
342
+ attrs.map do |attr|
343
+ { "#{attr}": attrs_params[attr] ? send(attr, **attrs_params[attr]) : send(attr) }
344
+ end.reduce({}, :merge)
345
+ end
101
346
  end
102
347
  end
103
348
  end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Adjective < Base
5
+ flexible :adjective
6
+
7
+ class << self
8
+ ##
9
+ # Produces a positive adjective.
10
+ #
11
+ # @return [String]
12
+ #
13
+ # @example
14
+ # Faker::Adjective.positive #=> "Kind"
15
+ #
16
+ # @faker.version next
17
+ def positive
18
+ fetch('adjective.positive')
19
+ end
20
+
21
+ ##
22
+ # Produces a negative adjective.
23
+ #
24
+ # @return [String]
25
+ #
26
+ # @example
27
+ # Faker::Adjective.negative #=> "Creepy"
28
+ #
29
+ # @faker.version next
30
+ def negative
31
+ fetch('adjective.negative')
32
+ end
33
+ end
34
+ end
35
+ end
@@ -2,22 +2,65 @@
2
2
 
3
3
  module Faker
4
4
  class Alphanumeric < Base
5
- class << self
6
- ALPHABET = ('a'..'z').to_a
7
- ALPHANUMS = ALPHABET + (0..9).to_a
5
+ ##
6
+ # List of characters allowed for alphanumeric strings
7
+ # @private
8
+ ALPHANUMS = LLetters + Numbers
8
9
 
10
+ class << self
11
+ ##
12
+ # Produces a random string of alphabetic characters (no digits)
13
+ #
14
+ # @param number [Integer] The length of the string to generate
15
+ #
16
+ # @return [String]
17
+ #
18
+ # @example
19
+ # Faker::Alphanumeric.alpha(number: 10) #=> "zlvubkrwga"
20
+ #
21
+ # @faker.version 1.9.2
9
22
  def alpha(number: 32)
10
23
  char_count = resolve(number)
11
24
  return '' if char_count.to_i < 1
12
25
 
13
- Array.new(char_count) { sample(ALPHABET) }.join
26
+ Array.new(char_count) { sample(self::LLetters) }.join
14
27
  end
15
28
 
16
- def alphanumeric(number: 32)
29
+ ##
30
+ # Produces a random string of alphanumeric characters
31
+ #
32
+ # @param number [Integer] The number of characters to generate
33
+ # @param min_alpha [Integer] The minimum number of alphabetic to add to the string
34
+ # @param min_numeric [Integer] The minimum number of numbers to add to the string
35
+ #
36
+ # @return [String]
37
+ #
38
+ # @example
39
+ # Faker::Alphanumeric.alphanumeric(number: 10) #=> "3yfq2phxtb"
40
+ # @example
41
+ # Faker::Alphanumeric.alphanumeric(number: 10, min_alpha: 3) #=> "3yfq2phxtb"
42
+ # @example
43
+ # Faker::Alphanumeric.alphanumeric(number: 10, min_alpha: 3, min_numeric: 3) #=> "3yfq2phx8b"
44
+ #
45
+ # @faker.version 2.1.3
46
+ def alphanumeric(number: 32, min_alpha: 0, min_numeric: 0)
17
47
  char_count = resolve(number)
18
48
  return '' if char_count.to_i < 1
49
+ raise ArgumentError, 'min_alpha must be greater than or equal to 0' if min_alpha&.negative?
50
+ raise ArgumentError, 'min_numeric must be greater than or equal to 0' if min_numeric&.negative?
51
+
52
+ return Array.new(char_count) { sample(ALPHANUMS) }.join if min_alpha.zero? && min_numeric.zero?
53
+
54
+ raise ArgumentError, 'min_alpha + min_numeric must be <= number' if min_alpha + min_numeric > char_count
55
+
56
+ random_count = char_count - min_alpha - min_numeric
57
+
58
+ alphas = Array.new(min_alpha) { sample(self::LLetters) }
59
+ numbers = Array.new(min_numeric) { sample(self::Numbers) }
60
+ randoms = Array.new(random_count) { sample(ALPHANUMS) }
19
61
 
20
- Array.new(char_count) { sample(ALPHANUMS) }.join
62
+ combined = alphas + numbers + randoms
63
+ shuffle!(combined).join
21
64
  end
22
65
  end
23
66
  end
@@ -3,18 +3,54 @@
3
3
  module Faker
4
4
  class Ancient < Base
5
5
  class << self
6
+ ##
7
+ # Produces a god from ancient mythology.
8
+ #
9
+ # @return [String]
10
+ #
11
+ # @example
12
+ # Faker::Ancient.god #=> "Zeus"
13
+ #
14
+ # @faker.version 1.7.0
6
15
  def god
7
16
  fetch('ancient.god')
8
17
  end
9
18
 
19
+ ##
20
+ # Produces a primordial from ancient mythology.
21
+ #
22
+ # @return [String]
23
+ #
24
+ # @example
25
+ # Faker::Ancient.primordial #=> "Gaia"
26
+ #
27
+ # @faker.version 1.7.0
10
28
  def primordial
11
29
  fetch('ancient.primordial')
12
30
  end
13
31
 
32
+ ##
33
+ # Produces a titan from ancient mythology.
34
+ #
35
+ # @return [String]
36
+ #
37
+ # @example
38
+ # Faker::Ancient.titan #=> "Atlas"
39
+ #
40
+ # @faker.version 1.7.0
14
41
  def titan
15
42
  fetch('ancient.titan')
16
43
  end
17
44
 
45
+ ##
46
+ # Produces a hero from ancient mythology.
47
+ #
48
+ # @return [String]
49
+ #
50
+ # @example
51
+ # Faker::Ancient.hero #=> "Achilles"
52
+ #
53
+ # @faker.version 1.7.0
18
54
  def hero
19
55
  fetch('ancient.hero')
20
56
  end
@@ -3,18 +3,63 @@
3
3
  module Faker
4
4
  class App < Base
5
5
  class << self
6
+ ##
7
+ # Produces an app name.
8
+ #
9
+ # @return [String]
10
+ #
11
+ # @example
12
+ # Faker::App.name #=> "Treeflex"
13
+ #
14
+ # @faker.version 1.4.3
6
15
  def name
7
16
  fetch('app.name')
8
17
  end
9
18
 
19
+ ##
20
+ # Produces a version string.
21
+ #
22
+ # @return [String]
23
+ #
24
+ # @example
25
+ # Faker::App.version #=> "1.85"
26
+ #
27
+ # @faker.version 1.4.3
10
28
  def version
11
29
  parse('app.version')
12
30
  end
13
31
 
32
+ ##
33
+ # Produces the name of an app's author.
34
+ #
35
+ # @return [String]
36
+ #
37
+ # @example
38
+ # Faker::App.author #=> "Daphne Swift"
39
+ #
40
+ # @faker.version 1.4.3
14
41
  def author
15
42
  parse('app.author')
16
43
  end
17
44
 
45
+ ##
46
+ # Produces a String representing a semantic version identifier.
47
+ #
48
+ # @param major [Integer, Range] An integer to use or a range to pick the integer from.
49
+ # @param minor [Integer, Range] An integer to use or a range to pick the integer from.
50
+ # @param patch [Integer, Range] An integer to use or a range to pick the integer from.
51
+ # @return [String]
52
+ #
53
+ # @example
54
+ # Faker::App.semantic_version #=> "3.2.5"
55
+ # @example
56
+ # Faker::App.semantic_version(major: 42) #=> "42.5.2"
57
+ # @example
58
+ # Faker::App.semantic_version(minor: 100..101) #=> "42.100.4"
59
+ # @example
60
+ # Faker::App.semantic_version(patch: 5..6) #=> "7.2.6"
61
+ #
62
+ # @faker.version 1.4.3
18
63
  def semantic_version(major: 0..9, minor: 0..9, patch: 1..9)
19
64
  [major, minor, patch].map { |chunk| sample(Array(chunk)) }.join('.')
20
65
  end
@@ -3,10 +3,28 @@
3
3
  module Faker
4
4
  class Appliance < Base
5
5
  class << self
6
+ ##
7
+ # Produces the name of an appliance brand.
8
+ #
9
+ # @return [String]
10
+ #
11
+ # @example
12
+ # Faker::Appliance.brand #=> "Bosch"
13
+ #
14
+ # @faker.version 1.9.0
6
15
  def brand
7
16
  fetch('appliance.brand')
8
17
  end
9
18
 
19
+ ##
20
+ # Produces the name of a type of appliance equipment.
21
+ #
22
+ # @return [String]
23
+ #
24
+ # @example
25
+ # Faker::Appliance.equipment #=> "Appliance plug"
26
+ #
27
+ # @faker.version 1.9.0
10
28
  def equipment
11
29
  fetch('appliance.equipment')
12
30
  end
@@ -3,6 +3,15 @@
3
3
  module Faker
4
4
  class Artist < Base
5
5
  class << self
6
+ ##
7
+ # Produces the name of an artist.
8
+ #
9
+ # @return [String]
10
+ #
11
+ # @example
12
+ # Faker::Artist.name #=> "Michelangelo"
13
+ #
14
+ # @faker.version 1.8.8
6
15
  def name
7
16
  fetch('artist.names')
8
17
  end
@@ -3,10 +3,41 @@
3
3
  module Faker
4
4
  class Avatar < Base
5
5
  class << self
6
+ # @private
6
7
  SUPPORTED_FORMATS = %w[png jpg bmp].freeze
7
8
 
9
+ ##
10
+ # Produces a URL for an avatar from robohash.org
11
+ #
12
+ # @param slug [String, nil]
13
+ # @param size [String] image size in pixels, in the format of 'AxB'
14
+ # @param format [String] The image file format
15
+ # @param set [String] The avatar set to use
16
+ # @param bgset [String, nil] The background set to use
17
+ # @return [String] A robohash.org URL
18
+ #
19
+ # @example
20
+ # Faker::Avatar.image
21
+ # #=> "https://robohash.org/sitsequiquia.png?size=300x300&set=set1"
22
+ # @example
23
+ # Faker::Avatar.image(slug: "my-own-slug")
24
+ # #=> "https://robohash.org/my-own-slug.png?size=300x300&set=set1"
25
+ # @example
26
+ # Faker::Avatar.image(slug: "my-own-slug", size: "50x50")
27
+ # #=> "https://robohash.org/my-own-slug.png?size=50x50&set=set1"
28
+ # @example
29
+ # Faker::Avatar.image(slug: "my-own-slug", size: "50x50", format: "jpg")
30
+ # #=> "https://robohash.org/my-own-slug.jpg?size=50x50&set=set1"
31
+ # @example
32
+ # Faker::Avatar.image(slug: "my-own-slug", size: "50x50", format: "bmp")
33
+ # #=> "https://robohash.org/my-own-slug.bmp?size=50x50&set=set1"
34
+ # @example
35
+ # Faker::Avatar.image(slug: "my-own-slug", size: "50x50", format: "bmp", set: "set1", bgset: "bg1")
36
+ # #=> "https://robohash.org/my-own-slug.bmp?size=50x50&set=set1&bgset=bg1"
37
+ #
38
+ # @faker.version 1.4.3
8
39
  def image(slug: nil, size: '300x300', format: 'png', set: 'set1', bgset: nil)
9
- raise ArgumentError, 'Size should be specified in format 300x300' unless size =~ /^[0-9]+x[0-9]+$/
40
+ raise ArgumentError, 'Size should be specified in format 300x300' unless size =~ /\A[0-9]+x[0-9]+\z/
10
41
  raise ArgumentError, "Supported formats are #{SUPPORTED_FORMATS.join(', ')}" unless SUPPORTED_FORMATS.include?(format)
11
42
 
12
43
  slug ||= Faker::Lorem.words.join