faker 2.2.0 → 3.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (482) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +1298 -24
  3. data/History.md +5 -5
  4. data/README.md +239 -104
  5. data/lib/faker/blockchain/aeternity.rb +70 -0
  6. data/lib/faker/blockchain/bitcoin.rb +28 -2
  7. data/lib/faker/blockchain/ethereum.rb +11 -1
  8. data/lib/faker/blockchain/tezos.rb +93 -9
  9. data/lib/faker/books/book.rb +36 -0
  10. data/lib/faker/books/culture_series.rb +49 -0
  11. data/lib/faker/books/dune.rb +73 -17
  12. data/lib/faker/books/lovecraft.rb +186 -57
  13. data/lib/faker/books/the_kingkiller_chronicle.rb +61 -0
  14. data/lib/faker/creature/animal.rb +9 -0
  15. data/lib/faker/creature/bird.rb +203 -0
  16. data/lib/faker/creature/cat.rb +27 -0
  17. data/lib/faker/creature/dog.rb +72 -0
  18. data/lib/faker/creature/horse.rb +18 -0
  19. data/lib/faker/default/address.rb +253 -33
  20. data/lib/faker/default/adjective.rb +35 -0
  21. data/lib/faker/default/alphanumeric.rb +27 -22
  22. data/lib/faker/default/ancient.rb +36 -0
  23. data/lib/faker/default/app.rb +46 -16
  24. data/lib/faker/default/appliance.rb +18 -0
  25. data/lib/faker/default/artist.rb +9 -0
  26. data/lib/faker/default/avatar.rb +32 -24
  27. data/lib/faker/default/bank.rb +118 -29
  28. data/lib/faker/default/barcode.rb +165 -0
  29. data/lib/faker/default/beer.rb +75 -3
  30. data/lib/faker/default/blood.rb +48 -0
  31. data/lib/faker/default/boolean.rb +13 -6
  32. data/lib/faker/default/bossa_nova.rb +18 -0
  33. data/lib/faker/default/business.rb +27 -0
  34. data/lib/faker/default/camera.rb +46 -0
  35. data/lib/faker/default/cannabis.rb +90 -0
  36. data/lib/faker/default/chile_rut.rb +62 -26
  37. data/lib/faker/default/chuck_norris.rb +13 -2
  38. data/lib/faker/default/code.rb +162 -58
  39. data/lib/faker/default/coffee.rb +45 -0
  40. data/lib/faker/default/coin.rb +18 -0
  41. data/lib/faker/default/color.rb +123 -5
  42. data/lib/faker/default/commerce.rb +105 -37
  43. data/lib/faker/default/company.rb +446 -34
  44. data/lib/faker/default/compass.rb +135 -0
  45. data/lib/faker/default/computer.rb +63 -0
  46. data/lib/faker/default/construction.rb +54 -0
  47. data/lib/faker/default/cosmere.rb +90 -0
  48. data/lib/faker/default/crypto.rb +44 -4
  49. data/lib/faker/default/crypto_coin.rb +48 -18
  50. data/lib/faker/default/currency.rb +27 -0
  51. data/lib/faker/default/date.rb +149 -52
  52. data/lib/faker/default/dc_comics.rb +45 -0
  53. data/lib/faker/default/demographic.rb +58 -6
  54. data/lib/faker/default/dessert.rb +27 -0
  55. data/lib/faker/default/device.rb +54 -0
  56. data/lib/faker/default/driving_licence.rb +85 -28
  57. data/lib/faker/default/drone.rb +332 -0
  58. data/lib/faker/default/educator.rb +73 -6
  59. data/lib/faker/default/electrical_components.rb +27 -0
  60. data/lib/faker/default/emotion.rb +33 -0
  61. data/lib/faker/default/esport.rb +45 -0
  62. data/lib/faker/default/file.rb +53 -38
  63. data/lib/faker/default/finance.rb +75 -8
  64. data/lib/faker/default/food.rb +93 -3
  65. data/lib/faker/default/funny_name.rb +45 -0
  66. data/lib/faker/default/gender.rb +31 -0
  67. data/lib/faker/default/greek_philosophers.rb +18 -0
  68. data/lib/faker/default/hacker.rb +59 -1
  69. data/lib/faker/default/hipster.rb +106 -81
  70. data/lib/faker/default/hobby.rb +22 -0
  71. data/lib/faker/default/house.rb +18 -0
  72. data/lib/faker/default/html.rb +230 -0
  73. data/lib/faker/default/id_number.rb +276 -18
  74. data/lib/faker/default/industry_segments.rb +36 -0
  75. data/lib/faker/default/internet.rb +442 -147
  76. data/lib/faker/default/internet_http.rb +48 -0
  77. data/lib/faker/default/invoice.rb +37 -29
  78. data/lib/faker/default/job.rb +36 -0
  79. data/lib/faker/default/json.rb +61 -30
  80. data/lib/faker/default/kpop.rb +54 -0
  81. data/lib/faker/default/lorem.rb +184 -121
  82. data/lib/faker/default/lorem_flickr.rb +69 -68
  83. data/lib/faker/default/markdown.rb +97 -15
  84. data/lib/faker/default/marketing.rb +9 -0
  85. data/lib/faker/default/measurement.rb +101 -50
  86. data/lib/faker/default/military.rb +71 -0
  87. data/lib/faker/default/mountain.rb +33 -0
  88. data/lib/faker/default/name.rb +99 -6
  89. data/lib/faker/default/nation.rb +45 -5
  90. data/lib/faker/default/nato_phonetic_alphabet.rb +9 -0
  91. data/lib/faker/default/nhs.rb +21 -7
  92. data/lib/faker/default/number.rb +160 -91
  93. data/lib/faker/default/omniauth.rb +199 -137
  94. data/lib/faker/default/phone_number.rb +89 -11
  95. data/lib/faker/default/placeholdit.rb +23 -25
  96. data/lib/faker/default/programming_language.rb +18 -0
  97. data/lib/faker/default/relationship.rb +47 -7
  98. data/lib/faker/default/religion.rb +6 -0
  99. data/lib/faker/default/restaurant.rb +54 -2
  100. data/lib/faker/default/science.rb +135 -0
  101. data/lib/faker/default/slack_emoji.rb +81 -0
  102. data/lib/faker/default/source.rb +46 -22
  103. data/lib/faker/default/south_africa.rb +90 -0
  104. data/lib/faker/default/space.rb +128 -1
  105. data/lib/faker/default/string.rb +18 -9
  106. data/lib/faker/default/stripe.rb +68 -27
  107. data/lib/faker/default/subscription.rb +45 -0
  108. data/lib/faker/default/superhero.rb +45 -0
  109. data/lib/faker/default/tea.rb +41 -0
  110. data/lib/faker/default/team.rb +45 -0
  111. data/lib/faker/default/time.rb +84 -68
  112. data/lib/faker/default/twitter.rb +57 -47
  113. data/lib/faker/default/types.rb +90 -41
  114. data/lib/faker/default/university.rb +45 -0
  115. data/lib/faker/default/vehicle.rb +223 -60
  116. data/lib/faker/default/verb.rb +45 -0
  117. data/lib/faker/default/vulnerability_identifier.rb +23 -0
  118. data/lib/faker/default/world_cup.rb +52 -16
  119. data/lib/faker/fantasy/tolkien.rb +67 -0
  120. data/lib/faker/games/clash_of_clans.rb +48 -0
  121. data/lib/faker/games/control.rb +113 -0
  122. data/lib/faker/games/dnd.rb +178 -0
  123. data/lib/faker/games/dota.rb +61 -6
  124. data/lib/faker/games/elder_scrolls.rb +98 -0
  125. data/lib/faker/games/fallout.rb +37 -0
  126. data/lib/faker/games/final_fantasy_xiv.rb +73 -0
  127. data/lib/faker/games/game.rb +27 -0
  128. data/lib/faker/games/half_life.rb +27 -0
  129. data/lib/faker/games/heroes.rb +40 -0
  130. data/lib/faker/games/heroes_of_the_storm.rb +48 -1
  131. data/lib/faker/games/league_of_legends.rb +54 -0
  132. data/lib/faker/games/minecraft.rb +113 -0
  133. data/lib/faker/games/myst.rb +45 -0
  134. data/lib/faker/games/overwatch.rb +27 -0
  135. data/lib/faker/games/pokemon.rb +27 -0
  136. data/lib/faker/games/sonic_the_hedgehog.rb +27 -0
  137. data/lib/faker/games/street_fighter.rb +61 -0
  138. data/lib/faker/games/super_mario.rb +48 -0
  139. data/lib/faker/games/super_smash_bros.rb +18 -0
  140. data/lib/faker/games/tarkov.rb +205 -0
  141. data/lib/faker/games/touhou.rb +75 -0
  142. data/lib/faker/games/warhammer_fantasy.rb +74 -0
  143. data/lib/faker/games/witcher.rb +93 -0
  144. data/lib/faker/games/world_of_warcraft.rb +44 -1
  145. data/lib/faker/games/zelda.rb +37 -1
  146. data/lib/faker/japanese_media/conan.rb +48 -0
  147. data/lib/faker/japanese_media/cowboy_bebop.rb +61 -0
  148. data/lib/faker/japanese_media/doraemon.rb +48 -0
  149. data/lib/faker/japanese_media/dragon_ball.rb +35 -0
  150. data/lib/faker/japanese_media/fullmetal_alchemist_brotherhood.rb +48 -0
  151. data/lib/faker/japanese_media/kamen_rider.rb +102 -0
  152. data/lib/faker/japanese_media/naruto.rb +61 -0
  153. data/lib/faker/japanese_media/one_piece.rb +55 -1
  154. data/lib/faker/japanese_media/studio_ghibli.rb +48 -0
  155. data/lib/faker/japanese_media/sword_art_online.rb +36 -0
  156. data/lib/faker/locations/australia.rb +47 -0
  157. data/lib/faker/movies/avatar.rb +49 -0
  158. data/lib/faker/movies/back_to_the_future.rb +28 -0
  159. data/lib/faker/movies/departed.rb +49 -0
  160. data/lib/faker/movies/ghostbusters.rb +28 -0
  161. data/lib/faker/movies/hackers.rb +48 -0
  162. data/lib/faker/movies/harry_potter.rb +54 -0
  163. data/lib/faker/movies/hitchhikers_guide_to_the_galaxy.rb +69 -0
  164. data/lib/faker/movies/hobbit.rb +41 -4
  165. data/lib/faker/movies/how_to_train_your_dragon.rb +48 -0
  166. data/lib/faker/movies/lebowski.rb +27 -0
  167. data/lib/faker/movies/lord_of_the_rings.rb +31 -3
  168. data/lib/faker/movies/movie.rb +22 -0
  169. data/lib/faker/movies/princess_bride.rb +19 -0
  170. data/lib/faker/movies/room.rb +63 -0
  171. data/lib/faker/movies/star_wars.rb +170 -11
  172. data/lib/faker/movies/tron.rb +161 -0
  173. data/lib/faker/movies/v_for_vendetta.rb +29 -0
  174. data/lib/faker/music/grateful_dead.rb +18 -0
  175. data/lib/faker/music/hiphop.rb +48 -0
  176. data/lib/faker/music/music.rb +102 -4
  177. data/lib/faker/music/opera.rb +273 -1
  178. data/lib/faker/music/pearl_jam.rb +50 -0
  179. data/lib/faker/music/phish.rb +36 -1
  180. data/lib/faker/music/prince.rb +64 -0
  181. data/lib/faker/music/rock_band.rb +21 -0
  182. data/lib/faker/music/rush.rb +37 -0
  183. data/lib/faker/music/show.rb +49 -0
  184. data/lib/faker/music/smashing_pumpkins.rb +64 -0
  185. data/lib/faker/music/umphreys_mcgee.rb +9 -0
  186. data/lib/faker/quotes/chiquito.rb +80 -0
  187. data/lib/faker/quotes/quote.rb +93 -1
  188. data/lib/faker/quotes/rajnikanth.rb +27 -0
  189. data/lib/faker/quotes/shakespeare.rb +70 -0
  190. data/lib/faker/religion/bible.rb +50 -0
  191. data/lib/faker/sports/basketball.rb +36 -0
  192. data/lib/faker/sports/chess.rb +90 -0
  193. data/lib/faker/sports/football.rb +45 -0
  194. data/lib/faker/sports/mountaineering.rb +22 -0
  195. data/lib/faker/sports/sport.rb +116 -0
  196. data/lib/faker/sports/volleyball.rb +74 -0
  197. data/lib/faker/travel/airport.rb +43 -0
  198. data/lib/faker/travel/train_station.rb +54 -0
  199. data/lib/faker/tv_shows/aqua_teen_hunger_force.rb +22 -0
  200. data/lib/faker/tv_shows/archer.rb +51 -0
  201. data/lib/faker/tv_shows/big_bang_theory.rb +37 -0
  202. data/lib/faker/tv_shows/bojack_horseman.rb +28 -0
  203. data/lib/faker/tv_shows/breaking_bad.rb +18 -0
  204. data/lib/faker/tv_shows/brooklyn_nine_nine.rb +38 -0
  205. data/lib/faker/tv_shows/buffy.rb +60 -2
  206. data/lib/faker/tv_shows/community.rb +19 -0
  207. data/lib/faker/tv_shows/dr_who.rb +78 -2
  208. data/lib/faker/tv_shows/dumb_and_dumber.rb +28 -0
  209. data/lib/faker/tv_shows/family_guy.rb +28 -0
  210. data/lib/faker/tv_shows/final_space.rb +51 -0
  211. data/lib/faker/tv_shows/friends.rb +27 -0
  212. data/lib/faker/tv_shows/futurama.rb +65 -0
  213. data/lib/faker/tv_shows/game_of_thrones.rb +46 -0
  214. data/lib/faker/tv_shows/hey_arnold.rb +27 -0
  215. data/lib/faker/tv_shows/how_i_met_your_mother.rb +37 -0
  216. data/lib/faker/tv_shows/michael_scott.rb +10 -0
  217. data/lib/faker/tv_shows/new_girl.rb +19 -0
  218. data/lib/faker/tv_shows/parks_and_rec.rb +18 -0
  219. data/lib/faker/tv_shows/rick_and_morty.rb +28 -0
  220. data/lib/faker/tv_shows/ru_paul.rb +18 -0
  221. data/lib/faker/tv_shows/seinfeld.rb +28 -0
  222. data/lib/faker/tv_shows/silicon_valley.rb +75 -0
  223. data/lib/faker/tv_shows/simpsons.rb +42 -0
  224. data/lib/faker/tv_shows/south_park.rb +34 -0
  225. data/lib/faker/tv_shows/spongebob.rb +50 -0
  226. data/lib/faker/tv_shows/star_trek.rb +36 -0
  227. data/lib/faker/tv_shows/stargate.rb +28 -0
  228. data/lib/faker/tv_shows/stranger_things.rb +19 -0
  229. data/lib/faker/tv_shows/suits.rb +37 -0
  230. data/lib/faker/tv_shows/supernatural.rb +48 -0
  231. data/lib/faker/tv_shows/the_expanse.rb +36 -0
  232. data/lib/faker/tv_shows/the_fresh_prince_of_bel_air.rb +43 -2
  233. data/lib/faker/tv_shows/the_it_crowd.rb +37 -0
  234. data/lib/faker/tv_shows/the_office.rb +37 -0
  235. data/lib/faker/tv_shows/the_thick_of_it.rb +28 -0
  236. data/lib/faker/tv_shows/twin_peaks.rb +28 -0
  237. data/lib/faker/tv_shows/venture_bros.rb +38 -0
  238. data/lib/faker/version.rb +2 -2
  239. data/lib/faker.rb +58 -58
  240. data/lib/helpers/base58.rb +1 -1
  241. data/lib/helpers/char.rb +22 -27
  242. data/lib/helpers/positional_generator.rb +480 -0
  243. data/lib/helpers/unique_generator.rb +17 -13
  244. data/lib/locales/README.md +18 -2
  245. data/lib/locales/ar.yml +6 -1
  246. data/lib/locales/bg.yml +3 -3
  247. data/lib/locales/ca.yml +0 -8
  248. data/lib/locales/da-DK.yml +6 -4
  249. data/lib/locales/de-AT.yml +7 -6
  250. data/lib/locales/de-CH.yml +6028 -9
  251. data/lib/locales/de.yml +12 -6
  252. data/lib/locales/en/address.yml +8 -3
  253. data/lib/locales/en/adjective.yml +179 -0
  254. data/lib/locales/en/airport.yml +381 -0
  255. data/lib/locales/en/animal.yml +1 -1
  256. data/lib/locales/en/aqua_teen_hunger_force.yml +33 -1
  257. data/lib/locales/en/archer.yml +75 -0
  258. data/lib/locales/en/australia.yml +107 -0
  259. data/lib/locales/en/avatar.yml +31 -0
  260. data/lib/locales/en/bank.yml +1 -1
  261. data/lib/locales/en/barcode.yml +24 -0
  262. data/lib/locales/en/bible.yml +90 -0
  263. data/lib/locales/en/big_bang_theory.yml +38 -0
  264. data/lib/locales/en/bird.yml +1281 -0
  265. data/lib/locales/en/blood.yml +13 -0
  266. data/lib/locales/en/book.yml +487 -3
  267. data/lib/locales/en/brooklyn_nine_nine.yml +35 -0
  268. data/lib/locales/en/buffy.yml +1 -1
  269. data/lib/locales/en/camera.yml +611 -0
  270. data/lib/locales/en/cat.yml +1 -1
  271. data/lib/locales/en/chess.yml +103 -0
  272. data/lib/locales/en/chiquito.yml +64 -0
  273. data/lib/locales/en/clash_of_clan.yml +101 -0
  274. data/lib/locales/en/coffee.yml +1 -1
  275. data/lib/locales/en/color.yml +1 -1
  276. data/lib/locales/en/commerce.yml +17 -0
  277. data/lib/locales/en/community.yml +17 -17
  278. data/lib/locales/en/company.yml +3 -2
  279. data/lib/locales/en/computer.yml +55 -0
  280. data/lib/locales/en/conan.yml +171 -0
  281. data/lib/locales/en/control.yml +247 -0
  282. data/lib/locales/en/cowboy_bebop.yml +163 -0
  283. data/lib/locales/en/demographic.yml +218 -5
  284. data/lib/locales/en/departed.yml +50 -0
  285. data/lib/locales/en/device.yml +112 -4
  286. data/lib/locales/en/dnd.yml +636 -0
  287. data/lib/locales/en/doraemon.yml +286 -0
  288. data/lib/locales/en/dota.yml +651 -63
  289. data/lib/locales/en/dr_who.yml +1 -1
  290. data/lib/locales/en/dragon_ball.yml +243 -1
  291. data/lib/locales/en/driving_license.yml +181 -0
  292. data/lib/locales/en/drone.yml +95 -0
  293. data/lib/locales/en/dune.yml +270 -131
  294. data/lib/locales/en/educator.yml +75 -6
  295. data/lib/locales/en/elder_scrolls.yml +583 -9
  296. data/lib/locales/en/emotion.yml +480 -0
  297. data/lib/locales/en/fallout.yml +311 -133
  298. data/lib/locales/en/file.yml +9 -1
  299. data/lib/locales/en/final_fantasy_xiv.yml +754 -0
  300. data/lib/locales/en/final_space.yml +37 -0
  301. data/lib/locales/en/finance.yml +77 -1
  302. data/lib/locales/en/fma_brotherhood.yml +78 -0
  303. data/lib/locales/en/food.yml +1066 -10
  304. data/lib/locales/en/football.yml +3 -3
  305. data/lib/locales/en/fresh_prince_of_bel_air.yml +1 -1
  306. data/lib/locales/en/futurama.yml +344 -0
  307. data/lib/locales/en/game.yml +11 -0
  308. data/lib/locales/en/gender.yml +1 -0
  309. data/lib/locales/en/hackers.yml +53 -0
  310. data/lib/locales/en/half_life.yml +84 -3
  311. data/lib/locales/en/heroes.yml +408 -3
  312. data/lib/locales/en/heroes_of_the_storm.yml +131 -4
  313. data/lib/locales/en/hobby.yml +171 -0
  314. data/lib/locales/en/horse.yml +2 -2
  315. data/lib/locales/en/house.yml +1 -1
  316. data/lib/locales/en/how_to_train_your_dragon.yml +174 -0
  317. data/lib/locales/en/internet.yml +140 -3
  318. data/lib/locales/en/jack_handey.yml +54 -0
  319. data/lib/locales/en/kamen_rider.yml +452 -0
  320. data/lib/locales/en/kpop.yml +7 -7
  321. data/lib/locales/en/league_of_legends.yml +285 -6
  322. data/lib/locales/en/lebowski.yml +1 -1
  323. data/lib/locales/en/lovecraft.yml +76 -6
  324. data/lib/locales/en/military.yml +179 -5
  325. data/lib/locales/en/minecraft.yml +663 -0
  326. data/lib/locales/en/mitch_hedberg.yml +46 -0
  327. data/lib/locales/en/mountain.yml +171 -0
  328. data/lib/locales/en/mountaineering.yml +14 -0
  329. data/lib/locales/en/movie.yml +194 -2
  330. data/lib/locales/en/music.yml +461 -29
  331. data/lib/locales/en/myst.yml +87 -31
  332. data/lib/locales/en/name.yml +6 -5
  333. data/lib/locales/en/naruto.yml +230 -0
  334. data/lib/locales/en/one_piece.yml +2 -2
  335. data/lib/locales/en/opera.yml +169 -1
  336. data/lib/locales/en/overwatch.yml +2648 -37
  337. data/lib/locales/en/pearl_jam.yml +213 -0
  338. data/lib/locales/en/phish.yml +392 -1
  339. data/lib/locales/en/phone_number.yml +1 -1
  340. data/lib/locales/en/pokemon.yml +417 -4
  341. data/lib/locales/en/prince.yml +227 -0
  342. data/lib/locales/en/quote.yml +692 -163
  343. data/lib/locales/en/rajnikanth.yml +77 -0
  344. data/lib/locales/en/rock_band.yml +1 -0
  345. data/lib/locales/en/room.yml +68 -0
  346. data/lib/locales/en/rush.yml +32 -0
  347. data/lib/locales/en/science.yml +481 -3
  348. data/lib/locales/en/shakespeare.yml +23 -26
  349. data/lib/locales/en/show.yml +597 -0
  350. data/lib/locales/en/simpsons.yml +668 -0
  351. data/lib/locales/en/smashing_pumpkins.yml +382 -0
  352. data/lib/locales/en/source.yml +35 -0
  353. data/lib/locales/en/south_park.yml +360 -2
  354. data/lib/locales/en/space.yml +1 -1
  355. data/lib/locales/en/spongebob.yml +489 -0
  356. data/lib/locales/en/sport.yml +130 -0
  357. data/lib/locales/en/star_trek.yml +1 -1
  358. data/lib/locales/en/star_wars.yml +568 -220
  359. data/lib/locales/en/stranger_thing.yml +1 -1
  360. data/lib/locales/en/street_fighter.yml +1524 -0
  361. data/lib/locales/en/stripe.yml +3 -3
  362. data/lib/locales/en/studio_ghibli.yml +107 -0
  363. data/lib/locales/en/suits.yml +45 -0
  364. data/lib/locales/en/super_mario.yml +58 -0
  365. data/lib/locales/en/super_smash_bros.yml +23 -5
  366. data/lib/locales/en/supernatural.yml +141 -0
  367. data/lib/locales/en/tarkov.yml +593 -0
  368. data/lib/locales/en/tea.yml +172 -0
  369. data/lib/locales/en/the_kingkiller_chronicle.yml +56 -0
  370. data/lib/locales/en/the_office.yml +86 -0
  371. data/lib/locales/en/tolkien.yml +2453 -0
  372. data/lib/locales/en/touhou.yml +839 -0
  373. data/lib/locales/en/train_station.yml +280 -0
  374. data/lib/locales/en/tron.yml +227 -0
  375. data/lib/locales/en/vehicle.yml +2809 -75
  376. data/lib/locales/en/volleyball.yml +501 -0
  377. data/lib/locales/en/warhammer_fantasy.yml +582 -0
  378. data/lib/locales/en/witcher.yml +426 -7
  379. data/lib/locales/en/world_of_warcraft.yml +122 -4
  380. data/lib/locales/en/zelda.yml +962 -4
  381. data/lib/locales/en-AU.yml +50 -10
  382. data/lib/locales/en-CA.yml +5 -1
  383. data/lib/locales/en-GB.yml +3 -2
  384. data/lib/locales/en-IND.yml +2 -1
  385. data/lib/locales/en-MS.yml +3 -1
  386. data/lib/locales/en-NEP.yml +5 -2
  387. data/lib/locales/en-NG.yml +1 -0
  388. data/lib/locales/en-NZ.yml +135 -8
  389. data/lib/locales/en-PAK.yml +3 -1
  390. data/lib/locales/en-SG.yml +3 -1
  391. data/lib/locales/en-TH.yml +360 -0
  392. data/lib/locales/en-UG.yml +1 -0
  393. data/lib/locales/en-US.yml +38 -12
  394. data/lib/locales/en-ZA.yml +2 -2
  395. data/lib/locales/en-au-ocker.yml +4 -1
  396. data/lib/locales/en.yml +0 -3
  397. data/lib/locales/es-AR.yml +4601 -0
  398. data/lib/locales/es-MX.yml +4 -1
  399. data/lib/locales/es.yml +58 -2
  400. data/lib/locales/fa.yml +2 -0
  401. data/lib/locales/fi-FI.yml +4 -2
  402. data/lib/locales/fr/address.yml +20 -0
  403. data/lib/locales/fr/adjective.yml +266 -0
  404. data/lib/locales/fr/ancient.yml +141 -0
  405. data/lib/locales/fr/animal.yml +5 -0
  406. data/lib/locales/fr/appliance.yml +4 -0
  407. data/lib/locales/fr/book.yml +7 -0
  408. data/lib/locales/fr/color.yml +4 -0
  409. data/lib/locales/fr/company.yml +17 -0
  410. data/lib/locales/fr/compass.yml +23 -0
  411. data/lib/locales/fr/demographic.yml +4 -0
  412. data/lib/locales/fr/gender.yml +6 -0
  413. data/lib/locales/fr/internet.yml +5 -0
  414. data/lib/locales/fr/lorem.yml +5 -0
  415. data/lib/locales/fr/measurement.yml +7 -0
  416. data/lib/locales/fr/name.yml +22 -0
  417. data/lib/locales/fr/phone_number.yml +7 -0
  418. data/lib/locales/fr/pokemon.yml +7 -0
  419. data/lib/locales/fr-CA.yml +28 -11
  420. data/lib/locales/fr-CH.yml +3 -3
  421. data/lib/locales/fr.yml +1 -112
  422. data/lib/locales/hy.yml +3 -7
  423. data/lib/locales/id.yml +5 -2
  424. data/lib/locales/it.yml +3 -1
  425. data/lib/locales/ja/README.md +13 -0
  426. data/lib/locales/ja/address.yml +120539 -0
  427. data/lib/locales/ja/adjective.yml +148 -0
  428. data/lib/locales/ja/ancient.yml +4 -0
  429. data/lib/locales/ja/animal.yml +5 -0
  430. data/lib/locales/ja/bank.yml +4 -0
  431. data/lib/locales/ja/book.yml +7 -0
  432. data/lib/locales/ja/cat.yml +5 -0
  433. data/lib/locales/ja/coffee.yml +4 -0
  434. data/lib/locales/ja/color.yml +4 -0
  435. data/lib/locales/ja/commerce.yml +11 -0
  436. data/lib/locales/ja/company.yml +8 -0
  437. data/lib/locales/ja/dog.yml +6 -0
  438. data/lib/locales/ja/emotion.yml +51 -0
  439. data/lib/locales/ja/food.yml +4 -0
  440. data/lib/locales/ja/gender.yml +4 -0
  441. data/lib/locales/ja/lorem.yml +9 -0
  442. data/lib/locales/ja/name.yml +13 -0
  443. data/lib/locales/ja/naruto.yml +230 -0
  444. data/lib/locales/ja/overwatch.yml +5 -0
  445. data/lib/locales/ja/phone_number.yml +7 -0
  446. data/lib/locales/ja/pokemon.yml +7 -0
  447. data/lib/locales/ja/relationship.yml +10 -0
  448. data/lib/locales/ja/restaurant.yml +11 -0
  449. data/lib/locales/ja/space.yml +5 -0
  450. data/lib/locales/ja/sport.yml +130 -0
  451. data/lib/locales/ja/studio_ghibli.yml +112 -0
  452. data/lib/locales/ja/subscription.yml +8 -0
  453. data/lib/locales/ja/super_mario.yml +9 -0
  454. data/lib/locales/ja/super_smash_bros.yml +8 -0
  455. data/lib/locales/ja/touhou.yml +466 -0
  456. data/lib/locales/ja/university.yml +9 -0
  457. data/lib/locales/ja/zelda.yml +5 -0
  458. data/lib/locales/ko.yml +95 -2
  459. data/lib/locales/lt.yml +34 -0
  460. data/lib/locales/lv.yml +1 -1
  461. data/lib/locales/mi-NZ.yml +283 -0
  462. data/lib/locales/nb-NO.yml +5 -2
  463. data/lib/locales/nl.yml +1 -0
  464. data/lib/locales/pl.yml +2 -2
  465. data/lib/locales/pt-BR.yml +33 -4
  466. data/lib/locales/pt.yml +6 -4
  467. data/lib/locales/ru.yml +43 -1
  468. data/lib/locales/sk.yml +5 -2
  469. data/lib/locales/sv.yml +1 -0
  470. data/lib/locales/th.yml +380 -0
  471. data/lib/locales/tr.yml +1 -0
  472. data/lib/locales/uk.yml +10 -5
  473. data/lib/locales/vi.yml +1 -0
  474. data/lib/locales/zh-CN/bank.yml +17 -0
  475. data/lib/locales/zh-CN.yml +2 -1
  476. data/lib/locales/zh-TW.yml +2 -1
  477. metadata +201 -109
  478. data/lib/faker/default/fillmurray.rb +0 -30
  479. data/lib/faker/default/lorem_pixel.rb +0 -63
  480. data/lib/locales/en/hobbit.yml +0 -19
  481. data/lib/locales/en/lord_of_the_rings.yml +0 -6
  482. data/lib/locales/ja.yml +0 -98
@@ -9,28 +9,25 @@ module Faker
9
9
  :email
10
10
 
11
11
  def initialize(name: nil, email: nil)
12
+ super()
13
+
12
14
  @name = name || "#{Name.first_name} #{Name.last_name}"
13
- @email = email || Internet.safe_email(name: self.name)
15
+ @email = email || Internet.email(name: self.name)
14
16
  @first_name, @last_name = self.name.split
15
17
  end
16
18
 
17
19
  class << self
18
- # rubocop:disable Metrics/ParameterLists
19
- 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)
20
- # rubocop:enable Metrics/ParameterLists
21
- if legacy_name != NOT_GIVEN
22
- warn_with_uplevel 'Passing `name` with the 1st argument of `Omniauth.google` is deprecated. Use keyword argument like `Omniauth.google(name: ...)` instead.', uplevel: 1
23
- name = legacy_name
24
- end
25
- if legacy_email != NOT_GIVEN
26
- warn_with_uplevel 'Passing `email` with the 2nd argument of `Omniauth.google` is deprecated. Use keyword argument like `Omniauth.google(email: ...)` instead.', uplevel: 1
27
- email = legacy_email
28
- end
29
- if legacy_uid != NOT_GIVEN
30
- warn_with_uplevel 'Passing `uid` with the 3rd argument of `Omniauth.google` is deprecated. Use keyword argument like `Omniauth.google(uid: ...)` instead.', uplevel: 1
31
- uid = legacy_uid
32
- end
33
-
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: Number.number(digits: 9).to_s)
34
31
  auth = Omniauth.new(name: name, email: email)
35
32
  {
36
33
  provider: 'google_oauth2',
@@ -42,7 +39,7 @@ module Faker
42
39
  email: auth.email,
43
40
  image: image
44
41
  },
45
- credentials: {
42
+ credentials: {
46
43
  token: Crypto.md5,
47
44
  refresh_token: Crypto.md5,
48
45
  expires_at: Time.forward.to_i,
@@ -50,7 +47,7 @@ module Faker
50
47
  },
51
48
  extra: {
52
49
  raw_info: {
53
- sub: uid,
50
+ sub: uid,
54
51
  email: auth.email,
55
52
  email_verified: random_boolean.to_s,
56
53
  name: auth.name,
@@ -60,45 +57,37 @@ module Faker
60
57
  picture: image,
61
58
  gender: gender,
62
59
  birthday: Date.backward(days: 36_400).strftime('%Y-%m-%d'),
63
- local: 'en',
60
+ locale: 'en',
64
61
  hd: "#{Company.name.downcase}.com"
65
62
  },
66
63
  id_info: {
67
- 'iss' => 'accounts.google.com',
68
- 'at_hash' => Crypto.md5,
69
- 'email_verified' => true,
70
- 'sub' => Number.number(digits: 28).to_s,
71
- 'azp' => 'APP_ID',
72
- 'email' => auth.email,
73
- 'aud' => 'APP_ID',
74
- 'iat' => Time.forward.to_i,
75
- 'exp' => Time.forward.to_i,
76
- 'openid_id' => "https://www.google.com/accounts/o8/id?id=#{uid}"
64
+ iss: 'accounts.google.com',
65
+ at_hash: Crypto.md5,
66
+ email_verified: true,
67
+ sub: Number.number(digits: 28).to_s,
68
+ azp: 'APP_ID',
69
+ email: auth.email,
70
+ aud: 'APP_ID',
71
+ iat: Time.forward.to_i,
72
+ exp: Time.forward.to_i,
73
+ openid_id: "https://www.google.com/accounts/o8/id?id=#{uid}"
77
74
  }
78
75
  }
79
76
  }
80
77
  end
81
78
 
82
- # rubocop:disable Metrics/ParameterLists
83
- 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)
84
- # rubocop:enable Metrics/ParameterLists
85
- if legacy_name != NOT_GIVEN
86
- warn_with_uplevel 'Passing `name` with the 1st argument of `Omniauth.facebook` is deprecated. Use keyword argument like `Omniauth.facebook(name: ...)` instead.', uplevel: 1
87
- name = legacy_name
88
- end
89
- if legacy_email != NOT_GIVEN
90
- warn_with_uplevel 'Passing `email` with the 2nd argument of `Omniauth.facebook` is deprecated. Use keyword argument like `Omniauth.facebook(email: ...)` instead.', uplevel: 1
91
- email = legacy_email
92
- end
93
- if legacy_username != NOT_GIVEN
94
- warn_with_uplevel 'Passing `username` with the 3rd argument of `Omniauth.facebook` is deprecated. Use keyword argument like `Omniauth.facebook(username: ...)` instead.', uplevel: 1
95
- username = legacy_username
96
- end
97
- if legacy_uid != NOT_GIVEN
98
- warn_with_uplevel 'Passing `uid` with the 4th argument of `Omniauth.facebook` is deprecated. Use keyword argument like `Omniauth.facebook(uid: ...)` instead.', uplevel: 1
99
- uid = legacy_uid
100
- end
101
-
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: Number.number(digits: 7).to_s)
102
91
  auth = Omniauth.new(name: name, email: email)
103
92
  username ||= "#{auth.first_name.downcase[0]}#{auth.last_name.downcase}"
104
93
  {
@@ -140,22 +129,17 @@ module Faker
140
129
  }
141
130
  end
142
131
 
143
- # rubocop:disable Metrics/ParameterLists
144
- 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)
145
- # rubocop:enable Metrics/ParameterLists
146
- if legacy_name != NOT_GIVEN
147
- warn_with_uplevel 'Passing `name` with the 1st argument of `Omniauth.twitter` is deprecated. Use keyword argument like `Omniauth.twitter(name: ...)` instead.', uplevel: 1
148
- name = legacy_name
149
- end
150
- if legacy_nickname != NOT_GIVEN
151
- warn_with_uplevel 'Passing `nickname` with the 2nd argument of `Omniauth.twitter` is deprecated. Use keyword argument like `Omniauth.twitter(nickname: ...)` instead.', uplevel: 1
152
- nickname = legacy_nickname
153
- end
154
- if legacy_uid != NOT_GIVEN
155
- warn_with_uplevel 'Passing `uid` with the 3rd argument of `Omniauth.twitter` is deprecated. Use keyword argument like `Omniauth.twitter(uid: ...)` instead.', uplevel: 1
156
- uid = legacy_uid
157
- end
158
-
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: Number.number(digits: 6).to_s)
159
143
  auth = Omniauth.new(name: name)
160
144
  nickname ||= auth.name.downcase.delete(' ')
161
145
  location = city_state
@@ -228,22 +212,17 @@ module Faker
228
212
  }
229
213
  end
230
214
 
231
- # rubocop:disable Metrics/ParameterLists
232
- 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)
233
- # rubocop:enable Metrics/ParameterLists
234
- if legacy_name != NOT_GIVEN
235
- warn_with_uplevel 'Passing `name` with the 1st argument of `Omniauth.linkedin` is deprecated. Use keyword argument like `Omniauth.linkedin(name: ...)` instead.', uplevel: 1
236
- name = legacy_name
237
- end
238
- if legacy_email != NOT_GIVEN
239
- warn_with_uplevel 'Passing `email` with the 2nd argument of `Omniauth.linkedin` is deprecated. Use keyword argument like `Omniauth.linkedin(email: ...)` instead.', uplevel: 1
240
- email = legacy_email
241
- end
242
- if legacy_uid != NOT_GIVEN
243
- warn_with_uplevel 'Passing `uid` with the 3rd argument of `Omniauth.linkedin` is deprecated. Use keyword argument like `Omniauth.linkedin(uid: ...)` instead.', uplevel: 1
244
- uid = legacy_uid
245
- end
246
-
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: Number.number(digits: 6).to_s)
247
226
  auth = Omniauth.new(name: name, email: email)
248
227
  first_name = auth.first_name.downcase
249
228
  last_name = auth.last_name.downcase
@@ -254,74 +233,69 @@ module Faker
254
233
  industry = Commerce.department
255
234
  url = "http://www.linkedin.com/in/#{first_name}#{last_name}"
256
235
  {
257
- 'provider' => 'linkedin',
258
- 'uid' => uid,
259
- 'info' => {
260
- 'name' => auth.name,
261
- 'email' => auth.email,
262
- 'nickname' => auth.name,
263
- 'first_name' => auth.first_name,
264
- 'last_name' => auth.last_name,
265
- 'location' => location,
266
- 'description' => description,
267
- 'image' => image,
268
- 'phone' => PhoneNumber.phone_number,
269
- 'headline' => description,
270
- 'industry' => industry,
271
- 'urls' => {
272
- '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: PhoneNumber.phone_number,
248
+ headline: description,
249
+ industry: industry,
250
+ urls: {
251
+ public_profile: url
273
252
  }
274
253
  },
275
- 'credentials' => {
276
- 'token' => token,
277
- 'secret' => secret
254
+ credentials: {
255
+ token: token,
256
+ secret: secret
278
257
  },
279
- 'extra' => {
280
- 'access_token' => {
281
- 'token' => token,
282
- 'secret' => secret,
283
- 'consumer' => nil,
284
- 'params' => {
258
+ extra: {
259
+ access_token: {
260
+ token: token,
261
+ secret: secret,
262
+ consumer: nil,
263
+ params: {
285
264
  oauth_token: token,
286
265
  oauth_token_secret: secret,
287
266
  oauth_expires_in: Time.forward.to_i,
288
267
  oauth_authorization_expires_in: Time.forward.to_i
289
268
  },
290
- 'response' => nil
269
+ response: nil
291
270
  },
292
- 'raw_info' => {
293
- 'firstName' => auth.first_name,
294
- 'headline' => description,
295
- 'id' => uid,
296
- 'industry' => industry,
297
- 'lastName' => auth.last_name,
298
- 'location' => {
299
- 'country' => { 'code' => Address.country_code.downcase },
300
- '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: Address.country_code.downcase },
279
+ name: city_state.split(', ').first
301
280
  },
302
- 'pictureUrl' => image,
303
- 'publicProfileUrl' => url
281
+ pictureUrl: image,
282
+ publicProfileUrl: url
304
283
  }
305
284
  }
306
285
  }
307
286
  end
308
287
 
309
- # rubocop:disable Metrics/ParameterLists
310
- 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)
311
- # rubocop:enable Metrics/ParameterLists
312
- if legacy_name != NOT_GIVEN
313
- warn_with_uplevel 'Passing `name` with the 1st argument of `Omniauth.github` is deprecated. Use keyword argument like `Omniauth.github(name: ...)` instead.', uplevel: 1
314
- name = legacy_name
315
- end
316
- if legacy_email != NOT_GIVEN
317
- warn_with_uplevel 'Passing `email` with the 2nd argument of `Omniauth.github` is deprecated. Use keyword argument like `Omniauth.github(email: ...)` instead.', uplevel: 1
318
- email = legacy_email
319
- end
320
- if legacy_uid != NOT_GIVEN
321
- warn_with_uplevel 'Passing `uid` with the 3rd argument of `Omniauth.github` is deprecated. Use keyword argument like `Omniauth.github(uid: ...)` instead.', uplevel: 1
322
- uid = legacy_uid
323
- end
324
-
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: Number.number(digits: 8).to_s)
325
299
  auth = Omniauth.new(name: name, email: email)
326
300
  login = auth.name.downcase.tr(' ', '-')
327
301
  html_url = "https://github.com/#{login}"
@@ -340,7 +314,7 @@ module Faker
340
314
  },
341
315
  credentials: {
342
316
  token: Crypto.md5,
343
- expires: false
317
+ expires: false
344
318
  },
345
319
  extra: {
346
320
  raw_info: {
@@ -360,7 +334,7 @@ module Faker
360
334
  events_url: "#{api_url}/events{/privacy}",
361
335
  received_events_url: "#{api_url}/received_events",
362
336
  type: 'User',
363
- site_admin: random_boolean,
337
+ site_admin: random_boolean,
364
338
  name: auth.name,
365
339
  company: nil,
366
340
  blog: nil,
@@ -379,6 +353,94 @@ module Faker
379
353
  }
380
354
  end
381
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 ||= "#{Number.number(digits: 6)}.#{Number.hexadecimal(digits: 32)}.#{Number.number(digits: 4)}"
368
+ auth = Omniauth.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: Crypto.md5,
380
+ refresh_token: Crypto.md5,
381
+ expires_at: 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: Time.forward.to_i,
389
+ iat: Time.forward.to_i,
390
+ sub: uid,
391
+ at_hash: Crypto.md5,
392
+ auth_time: 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|#{Number.hexadecimal(digits: 24)}"
412
+ auth = Omniauth.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: Crypto.sha256,
427
+ token: Crypto.md5,
428
+ refresh_token: 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: Time.forward.to_i,
438
+ exp: Time.forward.to_i
439
+ }
440
+ }
441
+ }
442
+ end
443
+
382
444
  private
383
445
 
384
446
  def gender
@@ -3,49 +3,127 @@
3
3
  module Faker
4
4
  class PhoneNumber < Base
5
5
  class << self
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).
8
+ #
9
+ # @return [String]
10
+ #
11
+ # @example
12
+ # Faker::PhoneNumber.phone_number #=> "397.693.1309 x4321"
13
+ #
14
+ # @faker.version 0.3.0
6
15
  def phone_number
7
16
  parse('phone_number.formats')
8
17
  end
9
18
 
19
+ ##
20
+ # Produces a random cell phone number in a random format (may or may not have a country code and can have different dividers).
21
+ #
22
+ # @return [String]
23
+ #
24
+ # @example
25
+ # Faker::PhoneNumber.cell_phone #=> "(186)285-7925"
26
+ #
27
+ # @faker.version 1.0.0
10
28
  def cell_phone
11
29
  parse('cell_phone.formats')
12
30
  end
13
31
 
32
+ ##
33
+ # Produces a random country code.
34
+ #
35
+ # @return [String]
36
+ #
37
+ # @example
38
+ # Faker::PhoneNumber.country_code #=> "+20"
39
+ #
40
+ # @faker.version 1.9.2
14
41
  def country_code
15
42
  "+#{fetch('country_code')}"
16
43
  end
17
44
 
45
+ ##
46
+ # Produces a random phone number with country code.
47
+ #
48
+ # @return [String]
49
+ #
50
+ # @example
51
+ # Faker::PhoneNumber.phone_number_with_country_code #=> "+95 1-672-173-8153"
52
+ #
53
+ # @faker.version 1.9.2
18
54
  def phone_number_with_country_code
19
55
  "#{country_code} #{phone_number}"
20
56
  end
21
57
 
58
+ ##
59
+ # Produces a random cell phone number with country code.
60
+ #
61
+ # @return [String]
62
+ #
63
+ # @example
64
+ # Faker::PhoneNumber.cell_phone_with_country_code #=> "+974 (190) 987-9034"
65
+ #
66
+ # @faker.version 1.9.2
22
67
  def cell_phone_with_country_code
23
68
  "#{country_code} #{cell_phone}"
24
69
  end
25
70
 
26
- # US and Canada only
71
+ ##
72
+ # Produces a random phone number in e164 format.
73
+ #
74
+ # @return [String]
75
+ #
76
+ # @example
77
+ # Faker::PhoneNumber.cell_phone_in_e164 #=> "+944937040625"
78
+ #
79
+ # @faker.version 1.9.2
80
+ def cell_phone_in_e164
81
+ cell_phone_with_country_code.delete('^+0-9')
82
+ end
83
+
84
+ ##
85
+ # Produces a random US or Canada-based area code.
86
+ #
87
+ # @return [String]
88
+ #
89
+ # @example
90
+ # Faker::PhoneNumber.area_code #=> "201"
91
+ #
92
+ # @faker.version 1.3.0
27
93
  def area_code
28
94
  fetch('phone_number.area_code')
29
95
  rescue I18n::MissingTranslationData
30
96
  nil
31
97
  end
32
98
 
33
- # US and Canada only
99
+ ##
100
+ # Produces a random US or Canada-based exchange code.
101
+ #
102
+ # @return [String]
103
+ #
104
+ # @example
105
+ # Faker::PhoneNumber.exchange_code #=> "208"
106
+ #
107
+ # @faker.version 1.3.0
34
108
  def exchange_code
35
109
  fetch('phone_number.exchange_code')
36
110
  rescue I18n::MissingTranslationData
37
111
  nil
38
112
  end
39
113
 
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
43
- def subscriber_number(legacy_length = NOT_GIVEN, length: 4)
44
- if legacy_length != NOT_GIVEN
45
- warn_with_uplevel 'Passing `length` with the 1st argument of `PhoneNumber.subscriber_number` is deprecated. Use keyword argument like `PhoneNumber.subscriber_number(length: ...)` instead.', uplevel: 1
46
- length = legacy_length
47
- end
48
-
114
+ ##
115
+ # Produces a random US or Canada-based extension / subscriber number. Can be used for both extensions and last four digits of phone number.
116
+ #
117
+ # @param length [Integer] Specifies the length of the return value.
118
+ # @return [String]
119
+ #
120
+ # @example
121
+ # Faker::PhoneNumber.subscriber_number #=> "3873"
122
+ # Faker::PhoneNumber.subscriber_number(length: 2) #=> "39"
123
+ # Faker::PhoneNumber.extension #=> "3764"
124
+ #
125
+ # @faker.version 1.3.0
126
+ def subscriber_number(length: 4)
49
127
  rand.to_s[2..(1 + length)]
50
128
  end
51
129
 
@@ -5,30 +5,28 @@ module Faker
5
5
  class << self
6
6
  SUPPORTED_FORMATS = %w[png jpg gif jpeg].freeze
7
7
 
8
- # rubocop:disable Metrics/ParameterLists
9
- 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)
10
- # rubocop:enable Metrics/ParameterLists
11
- if legacy_size != NOT_GIVEN
12
- warn_with_uplevel 'Passing `size` with the 1st argument of `Placeholdit.image` is deprecated. Use keyword argument like `Placeholdit.image(size: ...)` instead.', uplevel: 1
13
- size = legacy_size
14
- end
15
- if legacy_format != NOT_GIVEN
16
- warn_with_uplevel 'Passing `format` with the 2nd argument of `Placeholdit.image` is deprecated. Use keyword argument like `Placeholdit.image(format: ...)` instead.', uplevel: 1
17
- format = legacy_format
18
- end
19
- if legacy_background_color != NOT_GIVEN
20
- warn_with_uplevel 'Passing `background_color` with the 3rd argument of `Placeholdit.image` is deprecated. Use keyword argument like `Placeholdit.image(background_color: ...)` instead.', uplevel: 1
21
- background_color = legacy_background_color
22
- end
23
- if legacy_text_color != NOT_GIVEN
24
- warn_with_uplevel 'Passing `text_color` with the 4th argument of `Placeholdit.image` is deprecated. Use keyword argument like `Placeholdit.image(text_color: ...)` instead.', uplevel: 1
25
- text_color = legacy_text_color
26
- end
27
- if legacy_text != NOT_GIVEN
28
- warn_with_uplevel 'Passing `text` with the 5th argument of `Placeholdit.image` is deprecated. Use keyword argument like `Placeholdit.image(text: ...)` instead.', uplevel: 1
29
- text = legacy_text
30
- end
31
-
8
+ ##
9
+ # Produces a random placeholder image from https://via.placeholder.com.
10
+ #
11
+ # @param size [String] Specifies the image's size, dimensions separated by 'x'.
12
+ # @param format [String] Specifies the image's extension.
13
+ # @param background_color [String, Symbol] Specifies the background color, either in hexadecimal format (without #) or as :random.
14
+ # @param text_color [String, Symbol] Specifies the text color, either in hexadecimal format (without #) or as :random.
15
+ # @param text [String] Specifies a custom text to be used.
16
+ # @return [String]
17
+ #
18
+ # @example
19
+ # # Keyword arguments: size, format, background_color, text_color, 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
+ #
28
+ # @faker.version 1.6.0
29
+ def image(size: '300x300', format: 'png', background_color: nil, text_color: nil, text: nil)
32
30
  background_color = generate_color if background_color == :random
33
31
  text_color = generate_color if text_color == :random
34
32
 
@@ -37,7 +35,7 @@ module Faker
37
35
  raise ArgumentError, "background_color must be a hex value without '#'" unless background_color.nil? || background_color =~ /((?:^\h{3}$)|(?:^\h{6}$)){1}(?!.*\H)/
38
36
  raise ArgumentError, "text_color must be a hex value without '#'" unless text_color.nil? || text_color =~ /((?:^\h{3}$)|(?:^\h{6}$)){1}(?!.*\H)/
39
37
 
40
- image_url = "https://placehold.it/#{size}.#{format}"
38
+ image_url = "https://via.placeholder.com/#{size}.#{format}"
41
39
  image_url += "/#{background_color}" if background_color
42
40
  image_url += "/#{text_color}" if text_color
43
41
  image_url += "?text=#{text}" if text