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
@@ -9,14 +9,26 @@ module Faker
9
9
  :email
10
10
 
11
11
  def initialize(name: nil, email: nil)
12
- @name = name || "#{Name.first_name} #{Name.last_name}"
13
- @email = email || Internet.safe_email(name: self.name)
12
+ super()
13
+
14
+ @name = name || "#{Faker::Name.first_name} #{Faker::Name.last_name}"
15
+ @email = email || Faker::Internet.email(name: self.name)
14
16
  @first_name, @last_name = self.name.split
15
17
  end
16
18
 
17
19
  class << self
18
- def google(name: nil, email: nil, uid: Number.number(digits: 9).to_s)
19
- auth = Omniauth.new(name: name, email: email)
20
+ ##
21
+ # Generate a mock Omniauth response from Google.
22
+ #
23
+ # @param name [String] A specific name to return in the response.
24
+ # @param email [String] A specific email to return in the response.
25
+ # @param uid [String] A specific UID to return in the response.
26
+ #
27
+ # @return [Hash] An auth hash in the format provided by omniauth-google.
28
+ #
29
+ # @faker.version 1.8.0
30
+ def google(name: nil, email: nil, uid: Faker::Number.number(digits: 9).to_s)
31
+ auth = new(name: name, email: email)
20
32
  {
21
33
  provider: 'google_oauth2',
22
34
  uid: uid,
@@ -27,15 +39,15 @@ module Faker
27
39
  email: auth.email,
28
40
  image: image
29
41
  },
30
- credentials: {
31
- token: Crypto.md5,
32
- refresh_token: Crypto.md5,
33
- expires_at: Time.forward.to_i,
42
+ credentials: {
43
+ token: Faker::Crypto.md5,
44
+ refresh_token: Faker::Crypto.md5,
45
+ expires_at: Faker::Time.forward.to_i,
34
46
  expires: true
35
47
  },
36
48
  extra: {
37
49
  raw_info: {
38
- sub: uid,
50
+ sub: uid,
39
51
  email: auth.email,
40
52
  email_verified: random_boolean.to_s,
41
53
  name: auth.name,
@@ -44,28 +56,39 @@ module Faker
44
56
  profile: "https://plus.google.com/#{uid}",
45
57
  picture: image,
46
58
  gender: gender,
47
- birthday: Date.backward(days: 36_400).strftime('%Y-%m-%d'),
48
- local: 'en',
49
- hd: "#{Company.name.downcase}.com"
59
+ birthday: Faker::Date.backward(days: 36_400).strftime('%Y-%m-%d'),
60
+ locale: 'en',
61
+ hd: "#{Faker::Company.name.downcase}.com"
50
62
  },
51
63
  id_info: {
52
- 'iss' => 'accounts.google.com',
53
- 'at_hash' => Crypto.md5,
54
- 'email_verified' => true,
55
- 'sub' => Number.number(digits: 28).to_s,
56
- 'azp' => 'APP_ID',
57
- 'email' => auth.email,
58
- 'aud' => 'APP_ID',
59
- 'iat' => Time.forward.to_i,
60
- 'exp' => Time.forward.to_i,
61
- 'openid_id' => "https://www.google.com/accounts/o8/id?id=#{uid}"
64
+ iss: 'accounts.google.com',
65
+ at_hash: Faker::Crypto.md5,
66
+ email_verified: true,
67
+ sub: Faker::Number.number(digits: 28).to_s,
68
+ azp: 'APP_ID',
69
+ email: auth.email,
70
+ aud: 'APP_ID',
71
+ iat: Faker::Time.forward.to_i,
72
+ exp: Faker::Time.forward.to_i,
73
+ openid_id: "https://www.google.com/accounts/o8/id?id=#{uid}"
62
74
  }
63
75
  }
64
76
  }
65
77
  end
66
78
 
67
- def facebook(name: nil, email: nil, username: nil, uid: Number.number(digits: 7).to_s)
68
- auth = Omniauth.new(name: name, email: email)
79
+ ##
80
+ # Generate a mock Omniauth response from Facebook.
81
+ #
82
+ # @param name [String] A specific name to return in the response.
83
+ # @param email [String] A specific email to return in the response.
84
+ # @param username [String] A specific username to return in the response.
85
+ # @param uid [String] A specific UID to return in the response.
86
+ #
87
+ # @return [Hash] An auth hash in the format provided by omniauth-facebook.
88
+ #
89
+ # @faker.version 1.8.0
90
+ def facebook(name: nil, email: nil, username: nil, uid: Faker::Number.number(digits: 7).to_s)
91
+ auth = new(name: name, email: email)
69
92
  username ||= "#{auth.first_name.downcase[0]}#{auth.last_name.downcase}"
70
93
  {
71
94
  provider: 'facebook',
@@ -79,7 +102,7 @@ module Faker
79
102
  verified: random_boolean
80
103
  },
81
104
  credentials: {
82
- token: Crypto.md5,
105
+ token: Faker::Crypto.md5,
83
106
  expires_at: Time.forward.to_i,
84
107
  expires: true
85
108
  },
@@ -92,7 +115,7 @@ module Faker
92
115
  link: "http://www.facebook.com/#{username}",
93
116
  username: username,
94
117
  location: {
95
- id: Number.number(digits: 9).to_s,
118
+ id: Faker::Number.number(digits: 9).to_s,
96
119
  name: city_state
97
120
  },
98
121
  gender: gender,
@@ -100,17 +123,27 @@ module Faker
100
123
  timezone: timezone,
101
124
  locale: 'en_US',
102
125
  verified: random_boolean,
103
- updated_time: Time.backward.iso8601
126
+ updated_time: Faker::Time.backward.iso8601
104
127
  }
105
128
  }
106
129
  }
107
130
  end
108
131
 
109
- def twitter(name: nil, nickname: nil, uid: Number.number(digits: 6).to_s)
110
- auth = Omniauth.new(name: name)
132
+ ##
133
+ # Generate a mock Omniauth response from Twitter.
134
+ #
135
+ # @param name [String] A specific name to return in the response.
136
+ # @param nickname [String] A specific nickname to return in the response.
137
+ # @param uid [String] A specific UID to return in the response.
138
+ #
139
+ # @return [Hash] An auth hash in the format provided by omniauth-twitter.
140
+ #
141
+ # @faker.version 1.8.0
142
+ def twitter(name: nil, nickname: nil, uid: Faker::Number.number(digits: 6).to_s)
143
+ auth = new(name: name)
111
144
  nickname ||= auth.name.downcase.delete(' ')
112
145
  location = city_state
113
- description = Lorem.sentence
146
+ description = Faker::Lorem.sentence
114
147
  {
115
148
  provider: 'twitter',
116
149
  uid: uid,
@@ -126,26 +159,26 @@ module Faker
126
159
  }
127
160
  },
128
161
  credentials: {
129
- token: Crypto.md5,
130
- secret: Crypto.md5
162
+ token: Faker::Crypto.md5,
163
+ secret: Faker::Crypto.md5
131
164
  },
132
165
  extra: {
133
166
  access_token: '',
134
167
  raw_info: {
135
168
  name: auth.name,
136
169
  listed_count: random_number_from_range(1..10),
137
- profile_sidebar_border_color: Color.hex_color,
170
+ profile_sidebar_border_color: Faker::Color.hex_color,
138
171
  url: nil,
139
172
  lang: 'en',
140
173
  statuses_count: random_number_from_range(1..1000),
141
174
  profile_image_url: image,
142
175
  profile_background_image_url_https: image,
143
176
  location: location,
144
- time_zone: Address.city,
177
+ time_zone: Faker::Address.city,
145
178
  follow_request_sent: random_boolean,
146
179
  id: uid,
147
180
  profile_background_tile: random_boolean,
148
- profile_sidebar_fill_color: Color.hex_color,
181
+ profile_sidebar_fill_color: Faker::Color.hex_color,
149
182
  followers_count: random_number_from_range(1..10_000),
150
183
  default_profile_image: random_boolean,
151
184
  screen_name: '',
@@ -153,7 +186,7 @@ module Faker
153
186
  utc_offset: timezone,
154
187
  verified: random_boolean,
155
188
  favourites_count: random_number_from_range(1..10),
156
- profile_background_color: Color.hex_color,
189
+ profile_background_color: Faker::Color.hex_color,
157
190
  is_translator: random_boolean,
158
191
  friends_count: random_number_from_range(1..10_000),
159
192
  notifications: random_boolean,
@@ -161,8 +194,8 @@ module Faker
161
194
  profile_background_image_url: image,
162
195
  protected: random_boolean,
163
196
  description: description,
164
- profile_link_color: Color.hex_color,
165
- created_at: Time.backward.strftime('%a %b %d %H:%M:%S %z %Y'),
197
+ profile_link_color: Faker::Color.hex_color,
198
+ created_at: Faker::Time.backward.strftime('%a %b %d %H:%M:%S %z %Y'),
166
199
  id_str: uid,
167
200
  profile_image_url_https: image,
168
201
  default_profile: random_boolean,
@@ -179,71 +212,91 @@ module Faker
179
212
  }
180
213
  end
181
214
 
182
- def linkedin(name: nil, email: nil, uid: Number.number(digits: 6).to_s)
215
+ ##
216
+ # Generate a mock Omniauth response from LinkedIn.
217
+ #
218
+ # @param name [String] A specific name to return in the response.
219
+ # @param email [String] A specific email to return in the response.
220
+ # @param uid [String] A specific UID to return in the response.
221
+ #
222
+ # @return [Hash] An auth hash in the format provided by omniauth-linkedin.
223
+ #
224
+ # @faker.version 1.8.0
225
+ def linkedin(name: nil, email: nil, uid: Faker::Number.number(digits: 6).to_s)
183
226
  auth = Omniauth.new(name: name, email: email)
184
227
  first_name = auth.first_name.downcase
185
228
  last_name = auth.last_name.downcase
186
229
  location = city_state
187
- description = Lorem.sentence
188
- token = Crypto.md5
189
- secret = Crypto.md5
190
- industry = Commerce.department
230
+ description = Faker::Lorem.sentence
231
+ token = Faker::Crypto.md5
232
+ secret = Faker::Crypto.md5
233
+ industry = Faker::Commerce.department
191
234
  url = "http://www.linkedin.com/in/#{first_name}#{last_name}"
192
235
  {
193
- 'provider' => 'linkedin',
194
- 'uid' => uid,
195
- 'info' => {
196
- 'name' => auth.name,
197
- 'email' => auth.email,
198
- 'nickname' => auth.name,
199
- 'first_name' => auth.first_name,
200
- 'last_name' => auth.last_name,
201
- 'location' => location,
202
- 'description' => description,
203
- 'image' => image,
204
- 'phone' => PhoneNumber.phone_number,
205
- 'headline' => description,
206
- 'industry' => industry,
207
- 'urls' => {
208
- 'public_profile' => url
236
+ provider: 'linkedin',
237
+ uid: uid,
238
+ info: {
239
+ name: auth.name,
240
+ email: auth.email,
241
+ nickname: auth.name,
242
+ first_name: auth.first_name,
243
+ last_name: auth.last_name,
244
+ location: location,
245
+ description: description,
246
+ image: image,
247
+ phone: Faker::PhoneNumber.phone_number,
248
+ headline: description,
249
+ industry: industry,
250
+ urls: {
251
+ public_profile: url
209
252
  }
210
253
  },
211
- 'credentials' => {
212
- 'token' => token,
213
- 'secret' => secret
254
+ credentials: {
255
+ token: token,
256
+ secret: secret
214
257
  },
215
- 'extra' => {
216
- 'access_token' => {
217
- 'token' => token,
218
- 'secret' => secret,
219
- 'consumer' => nil,
220
- 'params' => {
258
+ extra: {
259
+ access_token: {
260
+ token: token,
261
+ secret: secret,
262
+ consumer: nil,
263
+ params: {
221
264
  oauth_token: token,
222
265
  oauth_token_secret: secret,
223
266
  oauth_expires_in: Time.forward.to_i,
224
267
  oauth_authorization_expires_in: Time.forward.to_i
225
268
  },
226
- 'response' => nil
269
+ response: nil
227
270
  },
228
- 'raw_info' => {
229
- 'firstName' => auth.first_name,
230
- 'headline' => description,
231
- 'id' => uid,
232
- 'industry' => industry,
233
- 'lastName' => auth.last_name,
234
- 'location' => {
235
- 'country' => { 'code' => Address.country_code.downcase },
236
- 'name' => city_state.split(', ').first
271
+ raw_info: {
272
+ firstName: auth.first_name,
273
+ headline: description,
274
+ id: uid,
275
+ industry: industry,
276
+ lastName: auth.last_name,
277
+ location: {
278
+ country: { code: Faker::Address.country_code.downcase },
279
+ name: city_state.split(', ').first
237
280
  },
238
- 'pictureUrl' => image,
239
- 'publicProfileUrl' => url
281
+ pictureUrl: image,
282
+ publicProfileUrl: url
240
283
  }
241
284
  }
242
285
  }
243
286
  end
244
287
 
245
- def github(name: nil, email: nil, uid: Number.number(digits: 8).to_s)
246
- auth = Omniauth.new(name: name, email: email)
288
+ ##
289
+ # Generate a mock Omniauth response from Github.
290
+ #
291
+ # @param name [String] A specific name to return in the response.
292
+ # @param email [String] A specific email to return in the response.
293
+ # @param uid [String] A specific UID to return in the response.
294
+ #
295
+ # @return [Hash] An auth hash in the format provided by omniauth-github.
296
+ #
297
+ # @faker.version 1.8.0
298
+ def github(name: nil, email: nil, uid: Faker::Number.number(digits: 8).to_s)
299
+ auth = new(name: name, email: email)
247
300
  login = auth.name.downcase.tr(' ', '-')
248
301
  html_url = "https://github.com/#{login}"
249
302
  api_url = "https://api.github.com/users/#{login}"
@@ -261,7 +314,7 @@ module Faker
261
314
  },
262
315
  credentials: {
263
316
  token: Crypto.md5,
264
- expires: false
317
+ expires: false
265
318
  },
266
319
  extra: {
267
320
  raw_info: {
@@ -281,7 +334,7 @@ module Faker
281
334
  events_url: "#{api_url}/events{/privacy}",
282
335
  received_events_url: "#{api_url}/received_events",
283
336
  type: 'User',
284
- site_admin: random_boolean,
337
+ site_admin: random_boolean,
285
338
  name: auth.name,
286
339
  company: nil,
287
340
  blog: nil,
@@ -293,8 +346,96 @@ module Faker
293
346
  public_gists: random_number_from_range(1..1000),
294
347
  followers: random_number_from_range(1..1000),
295
348
  following: random_number_from_range(1..1000),
296
- created_at: Time.backward(days: 36_400).iso8601,
297
- updated_at: Time.backward(days: 2).iso8601
349
+ created_at: Faker::Time.backward(days: 36_400).iso8601,
350
+ updated_at: Faker::Time.backward(days: 2).iso8601
351
+ }
352
+ }
353
+ }
354
+ end
355
+
356
+ ##
357
+ # Generate a mock Omniauth response from Apple.
358
+ #
359
+ # @param name [String] A specific name to return in the response.
360
+ # @param email [String] A specific email to return in the response.
361
+ # @param uid [String] A specific UID to return in the response.
362
+ #
363
+ # @return [Hash] An auth hash in the format provided by omniauth-apple.
364
+ #
365
+ # @faker.version 2.3.0
366
+ def apple(name: nil, email: nil, uid: nil)
367
+ uid ||= "#{Faker::Number.number(digits: 6)}.#{Faker::Number.hexadecimal(digits: 32)}.#{Faker::Number.number(digits: 4)}"
368
+ auth = new(name: name, email: email)
369
+ {
370
+ provider: 'apple',
371
+ uid: uid,
372
+ info: {
373
+ sub: uid,
374
+ email: auth.email,
375
+ first_name: auth.first_name,
376
+ last_name: auth.last_name
377
+ },
378
+ credentials: {
379
+ token: Faker::Crypto.md5,
380
+ refresh_token: Faker::Crypto.md5,
381
+ expires_at: Faker::Time.forward.to_i,
382
+ expires: true
383
+ },
384
+ extra: {
385
+ raw_info: {
386
+ iss: 'https://appleid.apple.com',
387
+ aud: 'CLIENT_ID',
388
+ exp: Faker::Time.forward.to_i,
389
+ iat: Faker::Time.forward.to_i,
390
+ sub: uid,
391
+ at_hash: Faker::Crypto.md5,
392
+ auth_time: Faker::Time.forward.to_i,
393
+ email: auth.email,
394
+ email_verified: true
395
+ }
396
+ }
397
+ }
398
+ end
399
+
400
+ ##
401
+ # Generate a mock Omniauth response from Auth0.
402
+ #
403
+ # @param name [String] A specific name to return in the response.
404
+ # @param email [String] A specific email to return in the response.
405
+ # @param uid [String] A specific UID to return in the response.
406
+ #
407
+ # @return [Hash] An auth hash in the format provided by omniauth-auth0.
408
+ #
409
+ # @faker.version next
410
+ def auth0(name: nil, email: nil, uid: nil)
411
+ uid ||= "auth0|#{Faker::Number.hexadecimal(digits: 24)}"
412
+ auth = new(name: name, email: email)
413
+ {
414
+ provider: 'auth0',
415
+ uid: uid,
416
+ info: {
417
+ name: uid,
418
+ nickname: auth.name,
419
+ email: auth.email,
420
+ image: image
421
+ },
422
+ credentials: {
423
+ expires_at: Time.forward.to_i,
424
+ expires: true,
425
+ token_type: 'Bearer',
426
+ id_token: Faker::Crypto.sha256,
427
+ token: Faker::Crypto.md5,
428
+ refresh_token: Faker::Crypto.md5
429
+ },
430
+ extra: {
431
+ raw_info: {
432
+ email: auth.email,
433
+ email_verified: true,
434
+ iss: 'https://auth0.com/',
435
+ sub: uid,
436
+ aud: 'Auth012345',
437
+ iat: Faker::Time.forward.to_i,
438
+ exp: Faker::Time.forward.to_i
298
439
  }
299
440
  }
300
441
  }
@@ -303,27 +444,27 @@ module Faker
303
444
  private
304
445
 
305
446
  def gender
306
- shuffle(%w[male female]).pop
447
+ sample(%w[male female])
307
448
  end
308
449
 
309
450
  def timezone
310
- shuffle((-12..12).to_a).pop
451
+ sample((-12..12).to_a)
311
452
  end
312
453
 
313
454
  def image
314
- Placeholdit.image
455
+ Faker::Placeholdit.image
315
456
  end
316
457
 
317
458
  def city_state
318
- "#{Address.city}, #{Address.state}"
459
+ "#{Faker::Address.city}, #{Faker::Address.state}"
319
460
  end
320
461
 
321
462
  def random_number_from_range(range)
322
- shuffle(range.to_a).pop
463
+ sample(range.to_a)
323
464
  end
324
465
 
325
466
  def random_boolean
326
- shuffle([true, false]).pop
467
+ sample([true, false])
327
468
  end
328
469
  end
329
470
  end
@@ -3,45 +3,147 @@
3
3
  module Faker
4
4
  class PhoneNumber < Base
5
5
  class << self
6
+ ##
7
+ # Produces a phone number in a random format without the country code and it can have different dividers.
8
+ #
9
+ # @return [String]
10
+ #
11
+ # @example
12
+ # Faker::PhoneNumber.phone_number #=> "(504) 113-1705"
13
+ # Faker::PhoneNumber.phone_number #=> "662.291.7201"
14
+ # Faker::PhoneNumber.phone_number #=> "9415283713"
15
+ #
16
+ # @faker.version 0.3.0
6
17
  def phone_number
7
18
  parse('phone_number.formats')
8
19
  end
9
20
 
21
+ ##
22
+ # Produces a random cell phone number in a random format without the country code and it can have different dividers.
23
+ #
24
+ # @return [String]
25
+ #
26
+ # @example
27
+ # Faker::PhoneNumber.cell_phone #=> "(836) 115-8995"
28
+ # Faker::PhoneNumber.cell_phone #=> "382-597-5739"
29
+ # Faker::PhoneNumber.cell_phone #=> "316.828.1822"
30
+ #
31
+ # @faker.version 1.0.0
10
32
  def cell_phone
11
33
  parse('cell_phone.formats')
12
34
  end
13
35
 
36
+ ##
37
+ # Produces a random country code.
38
+ #
39
+ # @return [String]
40
+ #
41
+ # @example
42
+ # Faker::PhoneNumber.country_code #=> "+20"
43
+ # Faker::PhoneNumber.country_code #=> "+39"
44
+ # Faker::PhoneNumber.country_code #=> "+852"
45
+ #
46
+ # @faker.version 1.9.2
14
47
  def country_code
15
- "+#{fetch('country_code')}"
48
+ "+#{fetch('phone_number.country_code')}"
16
49
  end
17
50
 
51
+ ##
52
+ # Produces a random phone number with country code.
53
+ #
54
+ # @return [String]
55
+ #
56
+ # @example
57
+ # Faker::PhoneNumber.phone_number_with_country_code #=> "+55 466-746-6882"
58
+ # Faker::PhoneNumber.phone_number_with_country_code #=> "+81 3718219558"
59
+ # Faker::PhoneNumber.phone_number_with_country_code #=> "+49 140 957 9846"
60
+ #
61
+ # @faker.version 1.9.2
18
62
  def phone_number_with_country_code
19
63
  "#{country_code} #{phone_number}"
20
64
  end
21
65
 
66
+ ##
67
+ # Produces a random cell phone number with country code.
68
+ #
69
+ # @return [String]
70
+ #
71
+ # @example
72
+ # Faker::PhoneNumber.cell_phone_with_country_code #=> "+852 (190) 987-9034"
73
+ # Faker::PhoneNumber.cell_phone_with_country_code #=> "+64 (820) 583-6474"
74
+ # Faker::PhoneNumber.cell_phone_with_country_code #=> "+1 591.871.7985"
75
+ #
76
+ # @faker.version 1.9.2
22
77
  def cell_phone_with_country_code
23
78
  "#{country_code} #{cell_phone}"
24
79
  end
25
80
 
26
- # US and Canada only
81
+ ##
82
+ # Produces a random phone number in e164 format, i.e., without any dividers.
83
+ #
84
+ # @return [String]
85
+ #
86
+ # @example
87
+ # Faker::PhoneNumber.cell_phone_in_e164 #=> "+542024834991"
88
+ # Faker::PhoneNumber.cell_phone_in_e164 #=> "+8522846847703"
89
+ # Faker::PhoneNumber.cell_phone_in_e164 #=> "+649477546575"
90
+ #
91
+ # @faker.version 1.9.2
92
+ def cell_phone_in_e164
93
+ cell_phone_with_country_code.delete('^+0-9')
94
+ end
95
+
96
+ ##
97
+ # Produces a random area code.
98
+ #
99
+ # @return [String]
100
+ #
101
+ # @example
102
+ # Faker::PhoneNumber.area_code #=> "201"
103
+ # Faker::PhoneNumber.area_code #=> "613"
104
+ # Faker::PhoneNumber.area_code #=> "321"
105
+ #
106
+ # @faker.version 1.3.0
27
107
  def area_code
28
108
  fetch('phone_number.area_code')
29
- rescue I18n::MissingTranslationData
30
- nil
31
109
  end
32
110
 
33
- # US and Canada only
111
+ ##
112
+ # Produces a random exchange code.
113
+ #
114
+ # @return [String]
115
+ #
116
+ # @example
117
+ # Faker::PhoneNumber.exchange_code #=> "208"
118
+ # Faker::PhoneNumber.exchange_code #=> "415"
119
+ # Faker::PhoneNumber.exchange_code #=> "652"
120
+ #
121
+ # @faker.version 1.3.0
34
122
  def exchange_code
35
123
  fetch('phone_number.exchange_code')
36
- rescue I18n::MissingTranslationData
37
- nil
38
124
  end
39
125
 
40
- # US and Canada only
41
- # Can be used for both extensions and last four digits of phone number.
42
- # Since extensions can be of variable length, this method taks a length parameter
126
+ ##
127
+ # Produces a random extension / subscriber number. Can be used for both extensions and last four digits of phone number.
128
+ #
129
+ # @param length [Integer] Specifies the length of the return value. Defaults to 4.
130
+ # @return [String]
131
+ #
132
+ # @example
133
+ # Faker::PhoneNumber.subscriber_number #=> "3873"
134
+ # Faker::PhoneNumber.subscriber_number(length: 2) #=> "39"
135
+ # Faker::PhoneNumber.extension #=> "3764"
136
+ # Faker::PhoneNumber.extension(length: 2) => "37"
137
+ #
138
+ # @faker.version 1.3.0
43
139
  def subscriber_number(length: 4)
44
- rand.to_s[2..(1 + length)]
140
+ if !length.is_a?(Integer) || length > 10
141
+ raise ArgumentError, 'length must be an Integer and be lesser than 10'
142
+ end
143
+
144
+ generate(:string) do |g|
145
+ g.int(length: length)
146
+ end
45
147
  end
46
148
 
47
149
  alias extension subscriber_number