faker 2.13.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 (485) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +1277 -24
  3. data/README.md +138 -320
  4. data/lib/faker/blockchain/aeternity.rb +5 -5
  5. data/lib/faker/blockchain/bitcoin.rb +1 -2
  6. data/lib/faker/blockchain/ethereum.rb +1 -1
  7. data/lib/faker/blockchain/tezos.rb +30 -3
  8. data/lib/faker/blockchain.rb +9 -0
  9. data/lib/faker/books/dune.rb +17 -12
  10. data/lib/faker/books/lovecraft.rb +16 -44
  11. data/lib/faker/books/the_kingkiller_chronicle.rb +61 -0
  12. data/lib/faker/books.rb +9 -0
  13. data/lib/faker/creature/bird.rb +203 -0
  14. data/lib/faker/creature.rb +9 -0
  15. data/lib/faker/default/address.rb +11 -31
  16. data/lib/faker/default/adjective.rb +35 -0
  17. data/lib/faker/default/alphanumeric.rb +3 -9
  18. data/lib/faker/default/app.rb +1 -10
  19. data/lib/faker/default/avatar.rb +2 -13
  20. data/lib/faker/default/bank.rb +28 -26
  21. data/lib/faker/default/barcode.rb +165 -0
  22. data/lib/faker/default/beer.rb +3 -3
  23. data/lib/faker/default/boolean.rb +2 -4
  24. data/lib/faker/default/camera.rb +46 -0
  25. data/lib/faker/default/cannabis.rb +10 -0
  26. data/lib/faker/default/chile_rut.rb +28 -27
  27. data/lib/faker/default/chuck_norris.rb +1 -0
  28. data/lib/faker/default/code.rb +166 -52
  29. data/lib/faker/default/color.rb +77 -6
  30. data/lib/faker/default/commerce.rb +32 -18
  31. data/lib/faker/default/company.rb +175 -30
  32. data/lib/faker/default/crypto.rb +25 -5
  33. data/lib/faker/default/crypto_coin.rb +3 -15
  34. data/lib/faker/default/date.rb +65 -42
  35. data/lib/faker/default/demographic.rb +1 -5
  36. data/lib/faker/default/driving_licence.rb +45 -20
  37. data/lib/faker/default/drone.rb +332 -0
  38. data/lib/faker/default/educator.rb +13 -0
  39. data/lib/faker/default/emotion.rb +33 -0
  40. data/lib/faker/default/file.rb +5 -22
  41. data/lib/faker/default/finance.rb +51 -7
  42. data/lib/faker/default/food.rb +28 -2
  43. data/lib/faker/default/hipster.rb +15 -52
  44. data/lib/faker/default/hobby.rb +22 -0
  45. data/lib/faker/default/html.rb +230 -0
  46. data/lib/faker/default/id_number.rb +176 -31
  47. data/lib/faker/default/invoice.rb +8 -21
  48. data/lib/faker/default/json.rb +15 -27
  49. data/lib/faker/default/lorem.rb +179 -77
  50. data/lib/faker/default/lorem_flickr.rb +5 -38
  51. data/lib/faker/default/markdown.rb +14 -17
  52. data/lib/faker/default/marketing.rb +1 -1
  53. data/lib/faker/default/measurement.rb +19 -50
  54. data/lib/faker/default/military.rb +26 -0
  55. data/lib/faker/default/mountain.rb +33 -0
  56. data/lib/faker/default/name.rb +1 -5
  57. data/lib/faker/default/nation.rb +0 -3
  58. data/lib/faker/default/{nhs.rb → national_health_service.rb} +10 -10
  59. data/lib/faker/default/number.rb +34 -62
  60. data/lib/faker/default/omniauth.rb +102 -97
  61. data/lib/faker/default/phone_number.rb +36 -21
  62. data/lib/faker/default/placeholdit.rb +12 -22
  63. data/lib/faker/{quotes → default}/quote.rb +39 -0
  64. data/lib/faker/default/relationship.rb +2 -6
  65. data/lib/faker/default/science.rb +108 -0
  66. data/lib/faker/default/source.rb +3 -16
  67. data/lib/faker/default/south_africa.rb +3 -3
  68. data/lib/faker/default/space.rb +1 -1
  69. data/lib/faker/default/sport.rb +116 -0
  70. data/lib/faker/default/string.rb +2 -8
  71. data/lib/faker/default/stripe.rb +7 -23
  72. data/lib/faker/default/tea.rb +41 -0
  73. data/lib/faker/{music/show.rb → default/theater.rb} +8 -8
  74. data/lib/faker/default/time.rb +4 -34
  75. data/lib/faker/default/types.rb +14 -36
  76. data/lib/faker/default/vehicle.rb +45 -55
  77. data/lib/faker/default/vulnerability_identifier.rb +23 -0
  78. data/lib/faker/default/world_cup.rb +2 -11
  79. data/lib/faker/default/x.rb +189 -0
  80. data/lib/faker/default.rb +9 -0
  81. data/lib/faker/fantasy/tolkien.rb +67 -0
  82. data/lib/faker/fantasy.rb +9 -0
  83. data/lib/faker/games/clash_of_clans.rb +48 -0
  84. data/lib/faker/games/control.rb +1 -1
  85. data/lib/faker/games/dnd.rb +131 -14
  86. data/lib/faker/games/dota.rb +14 -5
  87. data/lib/faker/games/elder_scrolls.rb +26 -0
  88. data/lib/faker/games/final_fantasy_xiv.rb +73 -0
  89. data/lib/faker/games/heroes.rb +13 -0
  90. data/lib/faker/games/heroes_of_the_storm.rb +0 -11
  91. data/lib/faker/games/minecraft.rb +66 -1
  92. data/lib/faker/games/myst.rb +1 -1
  93. data/lib/faker/games/street_fighter.rb +61 -0
  94. data/lib/faker/games/super_mario.rb +48 -0
  95. data/lib/faker/games/tarkov.rb +205 -0
  96. data/lib/faker/games/touhou.rb +75 -0
  97. data/lib/faker/games/witcher.rb +39 -0
  98. data/lib/faker/games/world_of_warcraft.rb +26 -1
  99. data/lib/faker/games.rb +9 -0
  100. data/lib/faker/internet.rb +582 -0
  101. data/lib/faker/japanese_media/conan.rb +48 -0
  102. data/lib/faker/japanese_media/cowboy_bebop.rb +61 -0
  103. data/lib/faker/japanese_media/doraemon.rb +48 -0
  104. data/lib/faker/japanese_media/dragon_ball.rb +26 -0
  105. data/lib/faker/japanese_media/fullmetal_alchemist_brotherhood.rb +48 -0
  106. data/lib/faker/japanese_media/kamen_rider.rb +102 -0
  107. data/lib/faker/japanese_media/naruto.rb +61 -0
  108. data/lib/faker/japanese_media/one_piece.rb +1 -1
  109. data/lib/faker/japanese_media/studio_ghibli.rb +48 -0
  110. data/lib/faker/japanese_media.rb +9 -0
  111. data/lib/faker/locations/australia.rb +49 -0
  112. data/lib/faker/locations.rb +9 -0
  113. data/lib/faker/movies/avatar.rb +49 -0
  114. data/lib/faker/movies/hackers.rb +48 -0
  115. data/lib/faker/movies/hobbit.rb +4 -4
  116. data/lib/faker/movies/how_to_train_your_dragon.rb +48 -0
  117. data/lib/faker/movies/lord_of_the_rings.rb +3 -3
  118. data/lib/faker/movies/star_wars.rb +75 -7
  119. data/lib/faker/movies/the_room.rb +63 -0
  120. data/lib/faker/movies/tron.rb +161 -0
  121. data/lib/faker/movies.rb +9 -0
  122. data/lib/faker/music/bossa_nova.rb +35 -0
  123. data/lib/faker/music/grateful_dead.rb +0 -2
  124. data/lib/faker/music/hiphop.rb +48 -0
  125. data/lib/faker/music/opera.rb +237 -1
  126. data/lib/faker/music/pearl_jam.rb +0 -2
  127. data/lib/faker/music/rock_band.rb +12 -0
  128. data/lib/faker/music/rush.rb +0 -2
  129. data/lib/faker/music/smashing_pumpkins.rb +62 -0
  130. data/lib/faker/{music/music.rb → music.rb} +16 -0
  131. data/lib/faker/quotes/rajnikanth.rb +1 -0
  132. data/lib/faker/quotes/shakespeare.rb +34 -0
  133. data/lib/faker/quotes.rb +9 -0
  134. data/lib/faker/religion/bible.rb +50 -0
  135. data/lib/faker/religion.rb +9 -0
  136. data/lib/faker/sports/chess.rb +90 -0
  137. data/lib/faker/sports/mountaineering.rb +22 -0
  138. data/lib/faker/sports/volleyball.rb +74 -0
  139. data/lib/faker/sports.rb +9 -0
  140. data/lib/faker/travel/airport.rb +43 -0
  141. data/lib/faker/travel/train_station.rb +54 -0
  142. data/lib/faker/travel.rb +9 -0
  143. data/lib/faker/tv_shows/archer.rb +51 -0
  144. data/lib/faker/tv_shows/big_bang_theory.rb +1 -1
  145. data/lib/faker/tv_shows/brooklyn_nine_nine.rb +38 -0
  146. data/lib/faker/tv_shows/buffy.rb +5 -5
  147. data/lib/faker/tv_shows/dr_who.rb +0 -13
  148. data/lib/faker/tv_shows/final_space.rb +51 -0
  149. data/lib/faker/tv_shows/michael_scott.rb +0 -3
  150. data/lib/faker/tv_shows/south_park.rb +15 -0
  151. data/lib/faker/tv_shows/spongebob.rb +50 -0
  152. data/lib/faker/tv_shows/suits.rb +1 -1
  153. data/lib/faker/tv_shows/supernatural.rb +48 -0
  154. data/lib/faker/tv_shows/the_fresh_prince_of_bel_air.rb +5 -5
  155. data/lib/faker/tv_shows/the_office.rb +37 -0
  156. data/lib/faker/tv_shows.rb +9 -0
  157. data/lib/faker/version.rb +2 -2
  158. data/lib/faker.rb +96 -79
  159. data/lib/helpers/base58.rb +1 -1
  160. data/lib/helpers/deprecator.rb +118 -0
  161. data/lib/helpers/positional_generator.rb +478 -0
  162. data/lib/helpers/unique_generator.rb +14 -14
  163. data/lib/locales/README.md +18 -2
  164. data/lib/locales/ar.yml +1608 -46
  165. data/lib/locales/bg.yml +935 -19
  166. data/lib/locales/ca-CAT.yml +347 -12
  167. data/lib/locales/ca.yml +580 -7
  168. data/lib/locales/da-DK.yml +529 -35
  169. data/lib/locales/de-AT.yml +3487 -25
  170. data/lib/locales/de-CH.yml +4359 -10
  171. data/lib/locales/de.yml +7185 -97
  172. data/lib/locales/ee.yml +1185 -27
  173. data/lib/locales/en/address.yml +1826 -562
  174. data/lib/locales/en/adjective.yml +179 -0
  175. data/lib/locales/en/airport.yml +381 -0
  176. data/lib/locales/en/ancient.yml +128 -4
  177. data/lib/locales/en/animal.yml +141 -2
  178. data/lib/locales/en/app.yml +89 -2
  179. data/lib/locales/en/appliance.yml +81 -2
  180. data/lib/locales/en/aqua_teen_hunger_force.yml +31 -31
  181. data/lib/locales/en/archer.yml +75 -0
  182. data/lib/locales/en/artist.yml +43 -1
  183. data/lib/locales/en/australia.yml +108 -0
  184. data/lib/locales/en/avatar.yml +57 -0
  185. data/lib/locales/en/back_to_the_future.yml +145 -117
  186. data/lib/locales/en/bank.yml +92 -3
  187. data/lib/locales/en/barcode.yml +24 -0
  188. data/lib/locales/en/beer.yml +232 -6
  189. data/lib/locales/en/bible.yml +87 -0
  190. data/lib/locales/en/big_bang_theory.yml +34 -35
  191. data/lib/locales/en/bird.yml +1280 -0
  192. data/lib/locales/en/bojack_horseman.yml +63 -3
  193. data/lib/locales/en/book.yml +486 -3
  194. data/lib/locales/en/bossa_nova.yml +110 -3
  195. data/lib/locales/en/breaking_bad.yml +110 -25
  196. data/lib/locales/en/brooklyn_nine_nine.yml +34 -0
  197. data/lib/locales/en/buffy.yml +239 -257
  198. data/lib/locales/en/business.yml +18 -2
  199. data/lib/locales/en/camera.yml +611 -0
  200. data/lib/locales/en/cannabis.yml +344 -10
  201. data/lib/locales/en/cat.yml +155 -3
  202. data/lib/locales/en/chess.yml +102 -0
  203. data/lib/locales/en/chiquito.yml +60 -61
  204. data/lib/locales/en/chuck_norris.yml +78 -79
  205. data/lib/locales/en/clash_of_clan.yml +99 -0
  206. data/lib/locales/en/code.yml +501 -1
  207. data/lib/locales/en/coffee.yml +450 -25
  208. data/lib/locales/en/color.yml +73 -1
  209. data/lib/locales/en/commerce.yml +117 -6
  210. data/lib/locales/en/community.yml +55 -30
  211. data/lib/locales/en/company.yml +1756 -13
  212. data/lib/locales/en/compass.yml +108 -12
  213. data/lib/locales/en/computer.yml +23 -4
  214. data/lib/locales/en/conan.yml +169 -0
  215. data/lib/locales/en/construction.yml +416 -422
  216. data/lib/locales/en/cosmere.yml +219 -54
  217. data/lib/locales/en/cowboy_bebop.yml +160 -0
  218. data/lib/locales/en/culture_series.yml +298 -298
  219. data/lib/locales/en/currency.yml +358 -3
  220. data/lib/locales/en/dc_comics.yml +178 -49
  221. data/lib/locales/en/demographic.yml +218 -5
  222. data/lib/locales/en/departed.yml +40 -44
  223. data/lib/locales/en/dessert.yml +78 -3
  224. data/lib/locales/en/device.yml +112 -4
  225. data/lib/locales/en/dnd.yml +615 -33
  226. data/lib/locales/en/dog.yml +262 -7
  227. data/lib/locales/en/doraemon.yml +284 -0
  228. data/lib/locales/en/dota.yml +704 -63
  229. data/lib/locales/en/dr_who.yml +468 -93
  230. data/lib/locales/en/dragon_ball.yml +243 -1
  231. data/lib/locales/en/driving_license.yml +181 -0
  232. data/lib/locales/en/drone.yml +95 -0
  233. data/lib/locales/en/dumb_and_dumber.yml +72 -56
  234. data/lib/locales/en/dune.yml +270 -131
  235. data/lib/locales/en/educator.yml +6 -0
  236. data/lib/locales/en/elder_scrolls.yml +582 -9
  237. data/lib/locales/en/electrical_components.yml +49 -3
  238. data/lib/locales/en/emotion.yml +480 -0
  239. data/lib/locales/en/esport.yml +58 -5
  240. data/lib/locales/en/fallout.yml +311 -133
  241. data/lib/locales/en/family_guy.yml +54 -4
  242. data/lib/locales/en/file.yml +109 -2
  243. data/lib/locales/en/final_fantasy_xiv.yml +754 -0
  244. data/lib/locales/en/final_space.yml +35 -0
  245. data/lib/locales/en/finance.yml +80 -4
  246. data/lib/locales/en/food.yml +1067 -10
  247. data/lib/locales/en/football.yml +121 -5
  248. data/lib/locales/en/fresh_prince_of_bel_air.yml +119 -70
  249. data/lib/locales/en/friends.yml +162 -3
  250. data/lib/locales/en/fullmetal_alchemist_brotherhood.yml +78 -0
  251. data/lib/locales/en/funny_name.yml +752 -1
  252. data/lib/locales/en/futurama.yml +7 -15
  253. data/lib/locales/en/game.yml +11 -0
  254. data/lib/locales/en/game_of_thrones.yml +2487 -5
  255. data/lib/locales/en/gender.yml +15 -3
  256. data/lib/locales/en/ghostbusters.yml +101 -88
  257. data/lib/locales/en/grateful_dead.yml +47 -45
  258. data/lib/locales/en/greek_philosophers.yml +44 -23
  259. data/lib/locales/en/hacker.yml +110 -5
  260. data/lib/locales/en/hackers.yml +53 -0
  261. data/lib/locales/en/half_life.yml +84 -3
  262. data/lib/locales/en/harry_potter.yml +323 -6
  263. data/lib/locales/en/heroes.yml +408 -3
  264. data/lib/locales/en/heroes_of_the_storm.yml +131 -4
  265. data/lib/locales/en/hey_arnold.yml +104 -21
  266. data/lib/locales/en/hipster.yml +203 -1
  267. data/lib/locales/en/hitchhikers_guide_to_the_galaxy.yml +243 -42
  268. data/lib/locales/en/hobby.yml +170 -0
  269. data/lib/locales/en/horse.yml +446 -2
  270. data/lib/locales/en/house.yml +34 -2
  271. data/lib/locales/en/how_i_met_your_mother.yml +97 -25
  272. data/lib/locales/en/how_to_train_your_dragon.yml +173 -0
  273. data/lib/locales/en/id_number.yml +7 -2
  274. data/lib/locales/en/industry_segments.yml +188 -4
  275. data/lib/locales/en/internet.yml +136 -3
  276. data/lib/locales/en/jack_handey.yml +54 -0
  277. data/lib/locales/en/job.yml +98 -7
  278. data/lib/locales/en/kamen_rider.yml +718 -0
  279. data/lib/locales/en/kpop.yml +954 -80
  280. data/lib/locales/en/league_of_legends.yml +285 -6
  281. data/lib/locales/en/lebowski.yml +58 -40
  282. data/lib/locales/en/lorem.yml +1095 -6
  283. data/lib/locales/en/lovecraft.yml +76 -6
  284. data/lib/locales/en/markdown.yml +12 -2
  285. data/lib/locales/en/marketing.yml +54 -1
  286. data/lib/locales/en/measurement.yml +42 -8
  287. data/lib/locales/en/michael_scott.yml +41 -42
  288. data/lib/locales/en/military.yml +179 -5
  289. data/lib/locales/en/minecraft.yml +273 -0
  290. data/lib/locales/en/mitch_hedberg.yml +46 -0
  291. data/lib/locales/en/mountain.yml +171 -0
  292. data/lib/locales/en/mountaineering.yml +14 -0
  293. data/lib/locales/en/movie.yml +188 -175
  294. data/lib/locales/en/music.yml +461 -29
  295. data/lib/locales/en/myst.yml +87 -31
  296. data/lib/locales/en/name.yml +6068 -6
  297. data/lib/locales/en/naruto.yml +230 -0
  298. data/lib/locales/en/nato_phonetic_alphabet.yml +27 -1
  299. data/lib/locales/en/new_girl.yml +35 -37
  300. data/lib/locales/en/one_piece.yml +359 -6
  301. data/lib/locales/en/opera.yml +169 -1
  302. data/lib/locales/en/overwatch.yml +2648 -2622
  303. data/lib/locales/en/parks_and_rec.yml +33 -4
  304. data/lib/locales/en/pearl_jam.yml +207 -207
  305. data/lib/locales/en/phish.yml +388 -389
  306. data/lib/locales/en/phone_number.yml +78 -3
  307. data/lib/locales/en/pokemon.yml +417 -4
  308. data/lib/locales/en/prince.yml +219 -219
  309. data/lib/locales/en/princess_bride.yml +48 -2
  310. data/lib/locales/en/programming_language.yml +753 -3
  311. data/lib/locales/en/quote.yml +606 -163
  312. data/lib/locales/en/rajnikanth.yml +74 -74
  313. data/lib/locales/en/relationship.yml +29 -6
  314. data/lib/locales/en/restaurant.yml +31 -31
  315. data/lib/locales/en/rick_and_morty.yml +116 -3
  316. data/lib/locales/en/rock_band.yml +228 -1
  317. data/lib/locales/en/rupaul.yml +120 -122
  318. data/lib/locales/en/science.yml +481 -3
  319. data/lib/locales/en/seinfeld.yml +110 -3
  320. data/lib/locales/en/shakespeare.yml +46 -53
  321. data/lib/locales/en/silicon_valley.yml +122 -50
  322. data/lib/locales/en/simpsons.yml +897 -691
  323. data/lib/locales/en/slack_emoji.yml +874 -8
  324. data/lib/locales/en/smashing_pumpkins.yml +382 -0
  325. data/lib/locales/en/source.yml +35 -0
  326. data/lib/locales/en/south_park.yml +360 -2
  327. data/lib/locales/en/space.yml +373 -14
  328. data/lib/locales/en/spongebob.yml +489 -0
  329. data/lib/locales/en/sport.yml +130 -0
  330. data/lib/locales/en/star_trek.yml +105 -4
  331. data/lib/locales/en/star_wars.yml +525 -528
  332. data/lib/locales/en/stargate.yml +65 -18
  333. data/lib/locales/en/stranger_thing.yml +31 -33
  334. data/lib/locales/en/street_fighter.yml +1524 -0
  335. data/lib/locales/en/studio_ghibli.yml +107 -0
  336. data/lib/locales/en/subscription.yml +47 -5
  337. data/lib/locales/en/super_mario.yml +58 -0
  338. data/lib/locales/en/super_smash_bros.yml +23 -6
  339. data/lib/locales/en/superhero.yml +574 -4
  340. data/lib/locales/en/supernatural.yml +141 -0
  341. data/lib/locales/en/sword_art_online.yml +327 -331
  342. data/lib/locales/en/tarkov.yml +593 -0
  343. data/lib/locales/en/tea.yml +172 -0
  344. data/lib/locales/en/team.yml +125 -3
  345. data/lib/locales/en/the_expanse.yml +92 -4
  346. data/lib/locales/en/the_it_crowd.yml +148 -152
  347. data/lib/locales/en/the_kingkiller_chronicle.yml +56 -0
  348. data/lib/locales/en/the_office.yml +82 -0
  349. data/lib/locales/en/the_room.yml +68 -0
  350. data/lib/locales/en/the_thick_of_it.yml +83 -3
  351. data/lib/locales/en/theater.yml +597 -0
  352. data/lib/locales/en/tolkien.yml +2453 -0
  353. data/lib/locales/en/touhou.yml +839 -0
  354. data/lib/locales/en/train_station.yml +280 -0
  355. data/lib/locales/en/tron.yml +227 -0
  356. data/lib/locales/en/twin_peaks.yml +130 -3
  357. data/lib/locales/en/umphreys_mcgee.yml +266 -1
  358. data/lib/locales/en/university.yml +15 -2
  359. data/lib/locales/en/v_for_vendetta.yml +157 -160
  360. data/lib/locales/en/vehicle.yml +2809 -75
  361. data/lib/locales/en/venture_bros.yml +225 -4
  362. data/lib/locales/en/verbs.yml +3785 -5
  363. data/lib/locales/en/volleyball.yml +501 -0
  364. data/lib/locales/en/warhammer_fantasy.yml +540 -573
  365. data/lib/locales/en/witcher.yml +426 -7
  366. data/lib/locales/en/world_cup.yml +1132 -235
  367. data/lib/locales/en/world_of_warcraft.yml +122 -4
  368. data/lib/locales/en/yoda.yml +38 -1
  369. data/lib/locales/en/zelda.yml +962 -4
  370. data/lib/locales/en-AU.yml +725 -48
  371. data/lib/locales/en-BORK.yml +104 -1
  372. data/lib/locales/en-CA.yml +373 -18
  373. data/lib/locales/en-GB.yml +118 -8
  374. data/lib/locales/en-IND.yml +1259 -16
  375. data/lib/locales/en-KE.yml +212 -0
  376. data/lib/locales/en-MS.yml +364 -16
  377. data/lib/locales/en-NEP.yml +212 -35
  378. data/lib/locales/en-NG.yml +737 -65
  379. data/lib/locales/en-NZ.yml +1153 -121
  380. data/lib/locales/en-PAK.yml +392 -9
  381. data/lib/locales/en-SG.yml +581 -15
  382. data/lib/locales/en-TH.yml +1 -1
  383. data/lib/locales/en-UG.yml +374 -75
  384. data/lib/locales/en-US.yml +6921 -81
  385. data/lib/locales/en-ZA.yml +1394 -13
  386. data/lib/locales/en-au-ocker.yml +266 -21
  387. data/lib/locales/en.yml +0 -3
  388. data/lib/locales/es-AR.yml +4570 -0
  389. data/lib/locales/es-MX.yml +1907 -41
  390. data/lib/locales/es.yml +2172 -52
  391. data/lib/locales/fa.yml +1624 -5
  392. data/lib/locales/fi-FI.yml +316 -16
  393. data/lib/locales/fr/address.yml +773 -0
  394. data/lib/locales/fr/adjective.yml +266 -0
  395. data/lib/locales/fr/ancient.yml +141 -0
  396. data/lib/locales/fr/animal.yml +122 -0
  397. data/lib/locales/fr/appliance.yml +69 -0
  398. data/lib/locales/fr/book.yml +31 -0
  399. data/lib/locales/fr/color.yml +34 -0
  400. data/lib/locales/fr/company.yml +497 -0
  401. data/lib/locales/fr/compass.yml +71 -0
  402. data/lib/locales/fr/demographic.yml +6 -0
  403. data/lib/locales/fr/gender.yml +21 -0
  404. data/lib/locales/fr/internet.yml +15 -0
  405. data/lib/locales/fr/lorem.yml +1094 -0
  406. data/lib/locales/fr/measurement.yml +34 -0
  407. data/lib/locales/fr/name.yml +1193 -0
  408. data/lib/locales/fr/phone_number.yml +38 -0
  409. data/lib/locales/fr/pokemon.yml +421 -0
  410. data/lib/locales/fr-CA.yml +2754 -45
  411. data/lib/locales/fr-CH.yml +2455 -42
  412. data/lib/locales/fr.yml +2 -112
  413. data/lib/locales/he.yml +255 -9
  414. data/lib/locales/hy.yml +3630 -119
  415. data/lib/locales/id.yml +839 -10
  416. data/lib/locales/it.yml +1310 -31
  417. data/lib/locales/ja/README.md +13 -0
  418. data/lib/locales/ja/address.yml +363 -0
  419. data/lib/locales/ja/adjective.yml +148 -0
  420. data/lib/locales/ja/ancient.yml +18 -0
  421. data/lib/locales/ja/animal.yml +87 -0
  422. data/lib/locales/ja/artist.yml +46 -0
  423. data/lib/locales/ja/bank.yml +139 -0
  424. data/lib/locales/ja/book.yml +496 -0
  425. data/lib/locales/ja/cat.yml +79 -0
  426. data/lib/locales/ja/coffee.yml +22 -0
  427. data/lib/locales/ja/color.yml +35 -0
  428. data/lib/locales/ja/commerce.yml +103 -0
  429. data/lib/locales/ja/company.yml +26 -0
  430. data/lib/locales/ja/dog.yml +339 -0
  431. data/lib/locales/ja/emotion.yml +49 -0
  432. data/lib/locales/ja/food.yml +41 -0
  433. data/lib/locales/ja/football.yml +115 -0
  434. data/lib/locales/ja/gender.yml +6 -0
  435. data/lib/locales/ja/lorem.yml +1020 -0
  436. data/lib/locales/ja/name.yml +213 -0
  437. data/lib/locales/ja/naruto.yml +230 -0
  438. data/lib/locales/ja/overwatch.yml +37 -0
  439. data/lib/locales/ja/phone_number.yml +13 -0
  440. data/lib/locales/ja/pokemon.yml +441 -0
  441. data/lib/locales/ja/relationship.yml +33 -0
  442. data/lib/locales/ja/restaurant.yml +82 -0
  443. data/lib/locales/ja/space.yml +23 -0
  444. data/lib/locales/ja/sport.yml +130 -0
  445. data/lib/locales/ja/studio_ghibli.yml +112 -0
  446. data/lib/locales/ja/subscription.yml +50 -0
  447. data/lib/locales/ja/super_mario.yml +73 -0
  448. data/lib/locales/ja/super_smash_bros.yml +8 -0
  449. data/lib/locales/ja/touhou.yml +466 -0
  450. data/lib/locales/ja/university.yml +22 -0
  451. data/lib/locales/ja/zelda.yml +19 -0
  452. data/lib/locales/ko.yml +1380 -29
  453. data/lib/locales/lt.yml +315 -0
  454. data/lib/locales/lv.yml +1221 -27
  455. data/lib/locales/mi-NZ.yml +283 -0
  456. data/lib/locales/nb-NO.yml +518 -27
  457. data/lib/locales/nl.yml +33514 -55
  458. data/lib/locales/pl.yml +4008 -38
  459. data/lib/locales/pt-BR.yml +8207 -660
  460. data/lib/locales/pt.yml +844 -43
  461. data/lib/locales/ru.yml +1355 -30
  462. data/lib/locales/sk.yml +4416 -41
  463. data/lib/locales/sv.yml +731 -41
  464. data/lib/locales/th.yml +375 -375
  465. data/lib/locales/tr.yml +77 -19
  466. data/lib/locales/uk.yml +1810 -44
  467. data/lib/locales/vi.yml +392 -48
  468. data/lib/locales/zh-CN/bank.yml +17 -0
  469. data/lib/locales/zh-CN.yml +540 -18
  470. data/lib/locales/zh-TW.yml +1030 -14
  471. metadata +188 -141
  472. data/History.md +0 -176
  473. data/lib/faker/default/bossa_nova.rb +0 -33
  474. data/lib/faker/default/fillmurray.rb +0 -45
  475. data/lib/faker/default/internet.rb +0 -358
  476. data/lib/faker/default/lorem_pixel.rb +0 -69
  477. data/lib/faker/default/twitter.rb +0 -223
  478. data/lib/locales/en/hobbit.yml +0 -19
  479. data/lib/locales/en/lord_of_the_rings.yml +0 -6
  480. data/lib/locales/en/show.yml +0 -597
  481. data/lib/locales/ja.yml +0 -101
  482. /data/lib/faker/{books → default}/book.rb +0 -0
  483. /data/lib/faker/{games → default}/game.rb +0 -0
  484. /data/lib/faker/{movies → default}/movie.rb +0 -0
  485. /data/lib/faker/{default/internet_http.rb → internet/http.rb} +0 -0
@@ -9,8 +9,10 @@ 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
 
@@ -25,16 +27,8 @@ module Faker
25
27
  # @return [Hash] An auth hash in the format provided by omniauth-google.
26
28
  #
27
29
  # @faker.version 1.8.0
28
- # rubocop:disable Metrics/ParameterLists
29
- def google(legacy_name = NOT_GIVEN, legacy_email = NOT_GIVEN, legacy_uid = NOT_GIVEN, name: nil, email: nil, uid: Number.number(digits: 9).to_s)
30
- # rubocop:enable Metrics/ParameterLists
31
- warn_for_deprecated_arguments do |keywords|
32
- keywords << :name if legacy_name != NOT_GIVEN
33
- keywords << :email if legacy_email != NOT_GIVEN
34
- keywords << :uid if legacy_uid != NOT_GIVEN
35
- end
36
-
37
- auth = Omniauth.new(name: name, email: email)
30
+ def google(name: nil, email: nil, uid: Faker::Number.number(digits: 9).to_s)
31
+ auth = new(name: name, email: email)
38
32
  {
39
33
  provider: 'google_oauth2',
40
34
  uid: uid,
@@ -46,9 +40,9 @@ module Faker
46
40
  image: image
47
41
  },
48
42
  credentials: {
49
- token: Crypto.md5,
50
- refresh_token: Crypto.md5,
51
- expires_at: Time.forward.to_i,
43
+ token: Faker::Crypto.md5,
44
+ refresh_token: Faker::Crypto.md5,
45
+ expires_at: Faker::Time.forward.to_i,
52
46
  expires: true
53
47
  },
54
48
  extra: {
@@ -62,20 +56,20 @@ module Faker
62
56
  profile: "https://plus.google.com/#{uid}",
63
57
  picture: image,
64
58
  gender: gender,
65
- birthday: Date.backward(days: 36_400).strftime('%Y-%m-%d'),
66
- local: 'en',
67
- 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"
68
62
  },
69
63
  id_info: {
70
64
  iss: 'accounts.google.com',
71
- at_hash: Crypto.md5,
65
+ at_hash: Faker::Crypto.md5,
72
66
  email_verified: true,
73
- sub: Number.number(digits: 28).to_s,
67
+ sub: Faker::Number.number(digits: 28).to_s,
74
68
  azp: 'APP_ID',
75
69
  email: auth.email,
76
70
  aud: 'APP_ID',
77
- iat: Time.forward.to_i,
78
- exp: Time.forward.to_i,
71
+ iat: Faker::Time.forward.to_i,
72
+ exp: Faker::Time.forward.to_i,
79
73
  openid_id: "https://www.google.com/accounts/o8/id?id=#{uid}"
80
74
  }
81
75
  }
@@ -93,17 +87,8 @@ module Faker
93
87
  # @return [Hash] An auth hash in the format provided by omniauth-facebook.
94
88
  #
95
89
  # @faker.version 1.8.0
96
- # rubocop:disable Metrics/ParameterLists
97
- def facebook(legacy_name = NOT_GIVEN, legacy_email = NOT_GIVEN, legacy_username = NOT_GIVEN, legacy_uid = NOT_GIVEN, name: nil, email: nil, username: nil, uid: Number.number(digits: 7).to_s)
98
- # rubocop:enable Metrics/ParameterLists
99
- warn_for_deprecated_arguments do |keywords|
100
- keywords << :name if legacy_name != NOT_GIVEN
101
- keywords << :email if legacy_email != NOT_GIVEN
102
- keywords << :username if legacy_username != NOT_GIVEN
103
- keywords << :uid if legacy_uid != NOT_GIVEN
104
- end
105
-
106
- auth = Omniauth.new(name: name, email: email)
90
+ def facebook(name: nil, email: nil, username: nil, uid: Faker::Number.number(digits: 7).to_s)
91
+ auth = new(name: name, email: email)
107
92
  username ||= "#{auth.first_name.downcase[0]}#{auth.last_name.downcase}"
108
93
  {
109
94
  provider: 'facebook',
@@ -117,7 +102,7 @@ module Faker
117
102
  verified: random_boolean
118
103
  },
119
104
  credentials: {
120
- token: Crypto.md5,
105
+ token: Faker::Crypto.md5,
121
106
  expires_at: Time.forward.to_i,
122
107
  expires: true
123
108
  },
@@ -130,7 +115,7 @@ module Faker
130
115
  link: "http://www.facebook.com/#{username}",
131
116
  username: username,
132
117
  location: {
133
- id: Number.number(digits: 9).to_s,
118
+ id: Faker::Number.number(digits: 9).to_s,
134
119
  name: city_state
135
120
  },
136
121
  gender: gender,
@@ -138,7 +123,7 @@ module Faker
138
123
  timezone: timezone,
139
124
  locale: 'en_US',
140
125
  verified: random_boolean,
141
- updated_time: Time.backward.iso8601
126
+ updated_time: Faker::Time.backward.iso8601
142
127
  }
143
128
  }
144
129
  }
@@ -154,19 +139,11 @@ module Faker
154
139
  # @return [Hash] An auth hash in the format provided by omniauth-twitter.
155
140
  #
156
141
  # @faker.version 1.8.0
157
- # rubocop:disable Metrics/ParameterLists
158
- def twitter(legacy_name = NOT_GIVEN, legacy_nickname = NOT_GIVEN, legacy_uid = NOT_GIVEN, name: nil, nickname: nil, uid: Number.number(digits: 6).to_s)
159
- # rubocop:enable Metrics/ParameterLists
160
- warn_for_deprecated_arguments do |keywords|
161
- keywords << :name if legacy_name != NOT_GIVEN
162
- keywords << :nickname if legacy_nickname != NOT_GIVEN
163
- keywords << :uid if legacy_uid != NOT_GIVEN
164
- end
165
-
166
- auth = Omniauth.new(name: name)
142
+ def twitter(name: nil, nickname: nil, uid: Faker::Number.number(digits: 6).to_s)
143
+ auth = new(name: name)
167
144
  nickname ||= auth.name.downcase.delete(' ')
168
145
  location = city_state
169
- description = Lorem.sentence
146
+ description = Faker::Lorem.sentence
170
147
  {
171
148
  provider: 'twitter',
172
149
  uid: uid,
@@ -182,26 +159,26 @@ module Faker
182
159
  }
183
160
  },
184
161
  credentials: {
185
- token: Crypto.md5,
186
- secret: Crypto.md5
162
+ token: Faker::Crypto.md5,
163
+ secret: Faker::Crypto.md5
187
164
  },
188
165
  extra: {
189
166
  access_token: '',
190
167
  raw_info: {
191
168
  name: auth.name,
192
169
  listed_count: random_number_from_range(1..10),
193
- profile_sidebar_border_color: Color.hex_color,
170
+ profile_sidebar_border_color: Faker::Color.hex_color,
194
171
  url: nil,
195
172
  lang: 'en',
196
173
  statuses_count: random_number_from_range(1..1000),
197
174
  profile_image_url: image,
198
175
  profile_background_image_url_https: image,
199
176
  location: location,
200
- time_zone: Address.city,
177
+ time_zone: Faker::Address.city,
201
178
  follow_request_sent: random_boolean,
202
179
  id: uid,
203
180
  profile_background_tile: random_boolean,
204
- profile_sidebar_fill_color: Color.hex_color,
181
+ profile_sidebar_fill_color: Faker::Color.hex_color,
205
182
  followers_count: random_number_from_range(1..10_000),
206
183
  default_profile_image: random_boolean,
207
184
  screen_name: '',
@@ -209,7 +186,7 @@ module Faker
209
186
  utc_offset: timezone,
210
187
  verified: random_boolean,
211
188
  favourites_count: random_number_from_range(1..10),
212
- profile_background_color: Color.hex_color,
189
+ profile_background_color: Faker::Color.hex_color,
213
190
  is_translator: random_boolean,
214
191
  friends_count: random_number_from_range(1..10_000),
215
192
  notifications: random_boolean,
@@ -217,8 +194,8 @@ module Faker
217
194
  profile_background_image_url: image,
218
195
  protected: random_boolean,
219
196
  description: description,
220
- profile_link_color: Color.hex_color,
221
- 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'),
222
199
  id_str: uid,
223
200
  profile_image_url_https: image,
224
201
  default_profile: random_boolean,
@@ -245,23 +222,15 @@ module Faker
245
222
  # @return [Hash] An auth hash in the format provided by omniauth-linkedin.
246
223
  #
247
224
  # @faker.version 1.8.0
248
- # rubocop:disable Metrics/ParameterLists
249
- def linkedin(legacy_name = NOT_GIVEN, legacy_email = NOT_GIVEN, legacy_uid = NOT_GIVEN, name: nil, email: nil, uid: Number.number(digits: 6).to_s)
250
- # rubocop:enable Metrics/ParameterLists
251
- warn_for_deprecated_arguments do |keywords|
252
- keywords << :name if legacy_name != NOT_GIVEN
253
- keywords << :email if legacy_email != NOT_GIVEN
254
- keywords << :uid if legacy_uid != NOT_GIVEN
255
- end
256
-
225
+ def linkedin(name: nil, email: nil, uid: Faker::Number.number(digits: 6).to_s)
257
226
  auth = Omniauth.new(name: name, email: email)
258
227
  first_name = auth.first_name.downcase
259
228
  last_name = auth.last_name.downcase
260
229
  location = city_state
261
- description = Lorem.sentence
262
- token = Crypto.md5
263
- secret = Crypto.md5
264
- industry = Commerce.department
230
+ description = Faker::Lorem.sentence
231
+ token = Faker::Crypto.md5
232
+ secret = Faker::Crypto.md5
233
+ industry = Faker::Commerce.department
265
234
  url = "http://www.linkedin.com/in/#{first_name}#{last_name}"
266
235
  {
267
236
  provider: 'linkedin',
@@ -275,7 +244,7 @@ module Faker
275
244
  location: location,
276
245
  description: description,
277
246
  image: image,
278
- phone: PhoneNumber.phone_number,
247
+ phone: Faker::PhoneNumber.phone_number,
279
248
  headline: description,
280
249
  industry: industry,
281
250
  urls: {
@@ -306,7 +275,7 @@ module Faker
306
275
  industry: industry,
307
276
  lastName: auth.last_name,
308
277
  location: {
309
- country: { code: Address.country_code.downcase },
278
+ country: { code: Faker::Address.country_code.downcase },
310
279
  name: city_state.split(', ').first
311
280
  },
312
281
  pictureUrl: image,
@@ -326,16 +295,8 @@ module Faker
326
295
  # @return [Hash] An auth hash in the format provided by omniauth-github.
327
296
  #
328
297
  # @faker.version 1.8.0
329
- # rubocop:disable Metrics/ParameterLists
330
- def github(legacy_name = NOT_GIVEN, legacy_email = NOT_GIVEN, legacy_uid = NOT_GIVEN, name: nil, email: nil, uid: Number.number(digits: 8).to_s)
331
- # rubocop:enable Metrics/ParameterLists
332
- warn_for_deprecated_arguments do |keywords|
333
- keywords << :name if legacy_name != NOT_GIVEN
334
- keywords << :email if legacy_email != NOT_GIVEN
335
- keywords << :uid if legacy_uid != NOT_GIVEN
336
- end
337
-
338
- auth = Omniauth.new(name: name, email: email)
298
+ def github(name: nil, email: nil, uid: Faker::Number.number(digits: 8).to_s)
299
+ auth = new(name: name, email: email)
339
300
  login = auth.name.downcase.tr(' ', '-')
340
301
  html_url = "https://github.com/#{login}"
341
302
  api_url = "https://api.github.com/users/#{login}"
@@ -385,8 +346,8 @@ module Faker
385
346
  public_gists: random_number_from_range(1..1000),
386
347
  followers: random_number_from_range(1..1000),
387
348
  following: random_number_from_range(1..1000),
388
- created_at: Time.backward(days: 36_400).iso8601,
389
- 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
390
351
  }
391
352
  }
392
353
  }
@@ -403,8 +364,8 @@ module Faker
403
364
  #
404
365
  # @faker.version 2.3.0
405
366
  def apple(name: nil, email: nil, uid: nil)
406
- uid ||= "#{Number.number(digits: 6)}.#{Number.hexadecimal(digits: 32)}.#{Number.number(digits: 4)}"
407
- auth = Omniauth.new(name: name, email: email)
367
+ uid ||= "#{Faker::Number.number(digits: 6)}.#{Faker::Number.hexadecimal(digits: 32)}.#{Faker::Number.number(digits: 4)}"
368
+ auth = new(name: name, email: email)
408
369
  {
409
370
  provider: 'apple',
410
371
  uid: uid,
@@ -415,20 +376,20 @@ module Faker
415
376
  last_name: auth.last_name
416
377
  },
417
378
  credentials: {
418
- token: Crypto.md5,
419
- refresh_token: Crypto.md5,
420
- expires_at: Time.forward.to_i,
379
+ token: Faker::Crypto.md5,
380
+ refresh_token: Faker::Crypto.md5,
381
+ expires_at: Faker::Time.forward.to_i,
421
382
  expires: true
422
383
  },
423
384
  extra: {
424
385
  raw_info: {
425
386
  iss: 'https://appleid.apple.com',
426
387
  aud: 'CLIENT_ID',
427
- exp: Time.forward.to_i,
428
- iat: Time.forward.to_i,
388
+ exp: Faker::Time.forward.to_i,
389
+ iat: Faker::Time.forward.to_i,
429
390
  sub: uid,
430
- at_hash: Crypto.md5,
431
- auth_time: Time.forward.to_i,
391
+ at_hash: Faker::Crypto.md5,
392
+ auth_time: Faker::Time.forward.to_i,
432
393
  email: auth.email,
433
394
  email_verified: true
434
395
  }
@@ -436,30 +397,74 @@ module Faker
436
397
  }
437
398
  end
438
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
439
+ }
440
+ }
441
+ }
442
+ end
443
+
439
444
  private
440
445
 
441
446
  def gender
442
- shuffle(%w[male female]).pop
447
+ sample(%w[male female])
443
448
  end
444
449
 
445
450
  def timezone
446
- shuffle((-12..12).to_a).pop
451
+ sample((-12..12).to_a)
447
452
  end
448
453
 
449
454
  def image
450
- Placeholdit.image
455
+ Faker::Placeholdit.image
451
456
  end
452
457
 
453
458
  def city_state
454
- "#{Address.city}, #{Address.state}"
459
+ "#{Faker::Address.city}, #{Faker::Address.state}"
455
460
  end
456
461
 
457
462
  def random_number_from_range(range)
458
- shuffle(range.to_a).pop
463
+ sample(range.to_a)
459
464
  end
460
465
 
461
466
  def random_boolean
462
- shuffle([true, false]).pop
467
+ sample([true, false])
463
468
  end
464
469
  end
465
470
  end
@@ -4,12 +4,14 @@ module Faker
4
4
  class PhoneNumber < Base
5
5
  class << self
6
6
  ##
7
- # Produces a random phone number in a random format (may or may not have a country code, extension and can have different dividers).
7
+ # Produces a phone number in a random format without the country code and it can have different dividers.
8
8
  #
9
9
  # @return [String]
10
10
  #
11
11
  # @example
12
- # Faker::PhoneNumber.phone_number #=> "397.693.1309 x4321"
12
+ # Faker::PhoneNumber.phone_number #=> "(504) 113-1705"
13
+ # Faker::PhoneNumber.phone_number #=> "662.291.7201"
14
+ # Faker::PhoneNumber.phone_number #=> "9415283713"
13
15
  #
14
16
  # @faker.version 0.3.0
15
17
  def phone_number
@@ -17,12 +19,14 @@ module Faker
17
19
  end
18
20
 
19
21
  ##
20
- # Produces a random cell phone number in a random format (may or may not have a country code and can have different dividers).
22
+ # Produces a random cell phone number in a random format without the country code and it can have different dividers.
21
23
  #
22
24
  # @return [String]
23
25
  #
24
26
  # @example
25
- # Faker::PhoneNumber.cell_phone #=> "(186)285-7925"
27
+ # Faker::PhoneNumber.cell_phone #=> "(836) 115-8995"
28
+ # Faker::PhoneNumber.cell_phone #=> "382-597-5739"
29
+ # Faker::PhoneNumber.cell_phone #=> "316.828.1822"
26
30
  #
27
31
  # @faker.version 1.0.0
28
32
  def cell_phone
@@ -36,10 +40,12 @@ module Faker
36
40
  #
37
41
  # @example
38
42
  # Faker::PhoneNumber.country_code #=> "+20"
43
+ # Faker::PhoneNumber.country_code #=> "+39"
44
+ # Faker::PhoneNumber.country_code #=> "+852"
39
45
  #
40
46
  # @faker.version 1.9.2
41
47
  def country_code
42
- "+#{fetch('country_code')}"
48
+ "+#{fetch('phone_number.country_code')}"
43
49
  end
44
50
 
45
51
  ##
@@ -48,7 +54,9 @@ module Faker
48
54
  # @return [String]
49
55
  #
50
56
  # @example
51
- # Faker::PhoneNumber.phone_number_with_country_code #=> "+95 1-672-173-8153"
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"
52
60
  #
53
61
  # @faker.version 1.9.2
54
62
  def phone_number_with_country_code
@@ -61,7 +69,9 @@ module Faker
61
69
  # @return [String]
62
70
  #
63
71
  # @example
64
- # Faker::PhoneNumber.cell_phone_with_country_code #=> "+974 (190) 987-9034"
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"
65
75
  #
66
76
  # @faker.version 1.9.2
67
77
  def cell_phone_with_country_code
@@ -69,12 +79,14 @@ module Faker
69
79
  end
70
80
 
71
81
  ##
72
- # Produces a random phone number in e164 format.
82
+ # Produces a random phone number in e164 format, i.e., without any dividers.
73
83
  #
74
84
  # @return [String]
75
85
  #
76
86
  # @example
77
- # Faker::PhoneNumber.cell_phone_in_e164 #=> "+944937040625"
87
+ # Faker::PhoneNumber.cell_phone_in_e164 #=> "+542024834991"
88
+ # Faker::PhoneNumber.cell_phone_in_e164 #=> "+8522846847703"
89
+ # Faker::PhoneNumber.cell_phone_in_e164 #=> "+649477546575"
78
90
  #
79
91
  # @faker.version 1.9.2
80
92
  def cell_phone_in_e164
@@ -82,53 +94,56 @@ module Faker
82
94
  end
83
95
 
84
96
  ##
85
- # Produces a random US or Canada-based area code.
97
+ # Produces a random area code.
86
98
  #
87
99
  # @return [String]
88
100
  #
89
101
  # @example
90
102
  # Faker::PhoneNumber.area_code #=> "201"
103
+ # Faker::PhoneNumber.area_code #=> "613"
104
+ # Faker::PhoneNumber.area_code #=> "321"
91
105
  #
92
106
  # @faker.version 1.3.0
93
107
  def area_code
94
108
  fetch('phone_number.area_code')
95
- rescue I18n::MissingTranslationData
96
- nil
97
109
  end
98
110
 
99
111
  ##
100
- # Produces a random US or Canada-based exchange code.
112
+ # Produces a random exchange code.
101
113
  #
102
114
  # @return [String]
103
115
  #
104
116
  # @example
105
117
  # Faker::PhoneNumber.exchange_code #=> "208"
118
+ # Faker::PhoneNumber.exchange_code #=> "415"
119
+ # Faker::PhoneNumber.exchange_code #=> "652"
106
120
  #
107
121
  # @faker.version 1.3.0
108
122
  def exchange_code
109
123
  fetch('phone_number.exchange_code')
110
- rescue I18n::MissingTranslationData
111
- nil
112
124
  end
113
125
 
114
126
  ##
115
- # Produces a random US or Canada-based extension / subscriber number. Can be used for both extensions and last four digits of phone number.
127
+ # Produces a random extension / subscriber number. Can be used for both extensions and last four digits of phone number.
116
128
  #
117
- # @param length [Integer] Speficies the length of the return value.
129
+ # @param length [Integer] Specifies the length of the return value. Defaults to 4.
118
130
  # @return [String]
119
131
  #
120
132
  # @example
121
133
  # Faker::PhoneNumber.subscriber_number #=> "3873"
122
134
  # Faker::PhoneNumber.subscriber_number(length: 2) #=> "39"
123
135
  # Faker::PhoneNumber.extension #=> "3764"
136
+ # Faker::PhoneNumber.extension(length: 2) => "37"
124
137
  #
125
138
  # @faker.version 1.3.0
126
- def subscriber_number(legacy_length = NOT_GIVEN, length: 4)
127
- warn_for_deprecated_arguments do |keywords|
128
- keywords << :length if legacy_length != NOT_GIVEN
139
+ def subscriber_number(length: 4)
140
+ if !length.is_a?(Integer) || length > 10
141
+ raise ArgumentError, 'length must be an Integer and be lesser than 10'
129
142
  end
130
143
 
131
- rand.to_s[2..(1 + length)]
144
+ generate(:string) do |g|
145
+ g.int(length: length)
146
+ end
132
147
  end
133
148
 
134
149
  alias extension subscriber_number
@@ -6,7 +6,7 @@ module Faker
6
6
  SUPPORTED_FORMATS = %w[png jpg gif jpeg].freeze
7
7
 
8
8
  ##
9
- # Produces a random placeholder image from https://placehold.it.
9
+ # Produces a random placeholder image from https://via.placeholder.com.
10
10
  #
11
11
  # @param size [String] Specifies the image's size, dimensions separated by 'x'.
12
12
  # @param format [String] Specifies the image's extension.
@@ -17,35 +17,25 @@ module Faker
17
17
  #
18
18
  # @example
19
19
  # # Keyword arguments: size, format, background_color, text_color, text
20
- # Faker::Placeholdit.image #=> "https://placehold.it/300x300.png"
21
- # Faker::Placeholdit.image(size: '50x50') #=> "https://placehold.it/50x50.png"
22
- # Faker::Placeholdit.image(size: '50x50', format: 'jpg') #=> "https://placehold.it/50x50.jpg"
23
- # Faker::Placeholdit.image(size: '50x50', format: 'gif', background_color: 'ffffff') #=> "https://placehold.it/50x50.gif/ffffff"
24
- # Faker::Placeholdit.image(size: '50x50', format: 'jpeg', background_color: :random) #=> "https://placehold.it/50x50.jpeg/39eba7"
25
- # Faker::Placeholdit.image(size: '50x50', format: 'jpeg', background_color: 'ffffff', text_color: '000') #=> "https://placehold.it/50x50.jpeg/ffffff/000"
26
- # Faker::Placeholdit.image(size: '50x50', format: 'jpg', background_color: 'ffffff', text_color: '000', text: 'Some Custom Text') #=> "https://placehold.it/50x50.jpg/ffffff/000?text=Some Custom Text"
20
+ # Faker::Placeholdit.image #=> "https://via.placeholder.com/300x300.png"
21
+ # Faker::Placeholdit.image(size: '50x50') #=> "https://via.placeholder.com/50x50.png"
22
+ # Faker::Placeholdit.image(size: '50x50', format: 'jpg') #=> "https://via.placeholder.com/50x50.jpg"
23
+ # Faker::Placeholdit.image(size: '50x50', format: 'gif', background_color: 'ffffff') #=> "https://via.placeholder.com/50x50.gif/ffffff"
24
+ # Faker::Placeholdit.image(size: '50x50', format: 'jpeg', background_color: :random) #=> "https://via.placeholder.com/50x50.jpeg/39eba7"
25
+ # Faker::Placeholdit.image(size: '50x50', format: 'jpeg', background_color: 'ffffff', text_color: '000') #=> "https://via.placeholder.com/50x50.jpeg/ffffff/000"
26
+ # Faker::Placeholdit.image(size: '50x50', format: 'jpg', background_color: 'ffffff', text_color: '000', text: 'Some Custom Text') #=> "https://via.placeholder.com/50x50.jpg/ffffff/000?text=Some Custom Text"
27
27
  #
28
28
  # @faker.version 1.6.0
29
- # rubocop:disable Metrics/ParameterLists
30
- def image(legacy_size = NOT_GIVEN, legacy_format = NOT_GIVEN, legacy_background_color = NOT_GIVEN, legacy_text_color = NOT_GIVEN, legacy_text = NOT_GIVEN, size: '300x300', format: 'png', background_color: nil, text_color: nil, text: nil)
31
- # rubocop:enable Metrics/ParameterLists
32
- warn_for_deprecated_arguments do |keywords|
33
- keywords << :size if legacy_size != NOT_GIVEN
34
- keywords << :format if legacy_format != NOT_GIVEN
35
- keywords << :background_color if legacy_background_color != NOT_GIVEN
36
- keywords << :text_color if legacy_text_color != NOT_GIVEN
37
- keywords << :text if legacy_text != NOT_GIVEN
38
- end
39
-
29
+ def image(size: '300x300', format: 'png', background_color: nil, text_color: nil, text: nil)
40
30
  background_color = generate_color if background_color == :random
41
31
  text_color = generate_color if text_color == :random
42
32
 
43
- raise ArgumentError, 'Size should be specified in format 300x300' unless size =~ /^[0-9]+x[0-9]+$/
33
+ raise ArgumentError, 'Size should be specified in format 300x300' unless size =~ /\A[0-9]+x[0-9]+\z$/
44
34
  raise ArgumentError, "Supported formats are #{SUPPORTED_FORMATS.join(', ')}" unless SUPPORTED_FORMATS.include?(format)
45
35
  raise ArgumentError, "background_color must be a hex value without '#'" unless background_color.nil? || background_color =~ /((?:^\h{3}$)|(?:^\h{6}$)){1}(?!.*\H)/
46
36
  raise ArgumentError, "text_color must be a hex value without '#'" unless text_color.nil? || text_color =~ /((?:^\h{3}$)|(?:^\h{6}$)){1}(?!.*\H)/
47
37
 
48
- image_url = "https://placehold.it/#{size}.#{format}"
38
+ image_url = "https://via.placeholder.com/#{size}.#{format}"
49
39
  image_url += "/#{background_color}" if background_color
50
40
  image_url += "/#{text_color}" if text_color
51
41
  image_url += "?text=#{text}" if text
@@ -55,7 +45,7 @@ module Faker
55
45
  private
56
46
 
57
47
  def generate_color
58
- format('%06x', (rand * 0xffffff))
48
+ format('%06x', rand * 0xffffff)
59
49
  end
60
50
  end
61
51
  end
@@ -16,6 +16,19 @@ module Faker
16
16
  fetch('quote.famous_last_words')
17
17
  end
18
18
 
19
+ ##
20
+ # Produces a quote from Deep Thoughts by Jack Handey.
21
+ #
22
+ # @return [String]
23
+ #
24
+ # @example
25
+ # Faker::Quote.jack_handey # => "I hope life isn't a big joke, because I don't get it."
26
+ #
27
+ # @faker.version next
28
+ def jack_handey
29
+ fetch('quote.jack_handey')
30
+ end
31
+
19
32
  ##
20
33
  # Produces a quote from Matz.
21
34
  #
@@ -80,6 +93,32 @@ module Faker
80
93
  def yoda
81
94
  fetch('quote.yoda')
82
95
  end
96
+
97
+ ##
98
+ # Produces a quote from a fortune cookie.
99
+ #
100
+ # @return [String]
101
+ #
102
+ # @example
103
+ # Faker::Quote.fortune_cookie #=> "This cookie senses that you are superstitious; it is an inclination that is bad for your mental health."
104
+ #
105
+ # @faker.version next
106
+ def fortune_cookie
107
+ fetch('quote.fortune_cookie')
108
+ end
109
+
110
+ ##
111
+ # Produces a quote from comedian Mitch Hedberg.
112
+ #
113
+ # @return [String]
114
+ #
115
+ # @example
116
+ # Faker::Quote.mitch_hedberg # => "I like Kit-Kats, unless I'm with four or more people."
117
+ #
118
+ # @faker.version next
119
+ def mitch_hedberg
120
+ fetch('quote.mitch_hedberg')
121
+ end
83
122
  end
84
123
  end
85
124
  end