faker 2.11.0 → 3.4.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 (404) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +1131 -19
  3. data/README.md +249 -105
  4. data/lib/faker/blockchain/aeternity.rb +5 -5
  5. data/lib/faker/blockchain/bitcoin.rb +2 -2
  6. data/lib/faker/blockchain/ethereum.rb +1 -1
  7. data/lib/faker/blockchain/tezos.rb +31 -3
  8. data/lib/faker/books/dune.rb +17 -12
  9. data/lib/faker/books/lovecraft.rb +16 -44
  10. data/lib/faker/books/the_kingkiller_chronicle.rb +61 -0
  11. data/lib/faker/creature/bird.rb +203 -0
  12. data/lib/faker/default/address.rb +42 -32
  13. data/lib/faker/default/adjective.rb +35 -0
  14. data/lib/faker/default/alphanumeric.rb +2 -8
  15. data/lib/faker/default/app.rb +1 -10
  16. data/lib/faker/default/avatar.rb +1 -12
  17. data/lib/faker/default/bank.rb +104 -19
  18. data/lib/faker/default/barcode.rb +165 -0
  19. data/lib/faker/default/beer.rb +3 -3
  20. data/lib/faker/default/blood.rb +48 -0
  21. data/lib/faker/default/boolean.rb +1 -4
  22. data/lib/faker/default/business.rb +1 -1
  23. data/lib/faker/default/camera.rb +46 -0
  24. data/lib/faker/default/cannabis.rb +10 -0
  25. data/lib/faker/default/chile_rut.rb +62 -18
  26. data/lib/faker/default/chuck_norris.rb +1 -0
  27. data/lib/faker/default/code.rb +162 -52
  28. data/lib/faker/default/color.rb +77 -6
  29. data/lib/faker/default/commerce.rb +105 -28
  30. data/lib/faker/default/company.rb +210 -28
  31. data/lib/faker/default/compass.rb +135 -0
  32. data/lib/faker/default/computer.rb +63 -0
  33. data/lib/faker/default/construction.rb +54 -0
  34. data/lib/faker/default/cosmere.rb +90 -0
  35. data/lib/faker/default/crypto.rb +26 -4
  36. data/lib/faker/default/crypto_coin.rb +48 -15
  37. data/lib/faker/default/date.rb +81 -54
  38. data/lib/faker/default/demographic.rb +1 -5
  39. data/lib/faker/default/driving_licence.rb +85 -18
  40. data/lib/faker/default/drone.rb +332 -0
  41. data/lib/faker/default/educator.rb +13 -0
  42. data/lib/faker/default/emotion.rb +33 -0
  43. data/lib/faker/default/file.rb +53 -21
  44. data/lib/faker/default/finance.rb +75 -7
  45. data/lib/faker/default/food.rb +28 -2
  46. data/lib/faker/default/gender.rb +1 -1
  47. data/lib/faker/default/hipster.rb +108 -51
  48. data/lib/faker/default/hobby.rb +22 -0
  49. data/lib/faker/default/html.rb +230 -0
  50. data/lib/faker/default/id_number.rb +251 -17
  51. data/lib/faker/default/internet.rb +361 -113
  52. data/lib/faker/default/internet_http.rb +48 -0
  53. data/lib/faker/default/invoice.rb +37 -23
  54. data/lib/faker/default/json.rb +63 -25
  55. data/lib/faker/default/lorem.rb +177 -75
  56. data/lib/faker/default/lorem_flickr.rb +69 -37
  57. data/lib/faker/default/markdown.rb +97 -11
  58. data/lib/faker/default/marketing.rb +1 -1
  59. data/lib/faker/default/measurement.rb +101 -42
  60. data/lib/faker/default/military.rb +26 -0
  61. data/lib/faker/default/mountain.rb +33 -0
  62. data/lib/faker/default/name.rb +99 -5
  63. data/lib/faker/default/nation.rb +0 -3
  64. data/lib/faker/default/{nhs.rb → national_health_service.rb} +26 -6
  65. data/lib/faker/default/number.rb +39 -69
  66. data/lib/faker/default/omniauth.rb +115 -57
  67. data/lib/faker/default/phone_number.rb +112 -14
  68. data/lib/faker/default/placeholdit.rb +23 -12
  69. data/lib/faker/default/relationship.rb +2 -6
  70. data/lib/faker/default/religion.rb +6 -0
  71. data/lib/faker/default/science.rb +108 -0
  72. data/lib/faker/default/slack_emoji.rb +81 -0
  73. data/lib/faker/default/source.rb +3 -16
  74. data/lib/faker/default/south_africa.rb +93 -3
  75. data/lib/faker/default/space.rb +1 -1
  76. data/lib/faker/default/string.rb +18 -8
  77. data/lib/faker/default/stripe.rb +68 -23
  78. data/lib/faker/default/tea.rb +41 -0
  79. data/lib/faker/default/theater.rb +52 -0
  80. data/lib/faker/default/time.rb +4 -34
  81. data/lib/faker/default/twitter.rb +42 -23
  82. data/lib/faker/default/types.rb +92 -34
  83. data/lib/faker/default/university.rb +45 -0
  84. data/lib/faker/default/vehicle.rb +227 -57
  85. data/lib/faker/default/verb.rb +45 -0
  86. data/lib/faker/default/vulnerability_identifier.rb +23 -0
  87. data/lib/faker/default/world_cup.rb +6 -15
  88. data/lib/faker/fantasy/tolkien.rb +67 -0
  89. data/lib/faker/games/clash_of_clans.rb +48 -0
  90. data/lib/faker/games/control.rb +113 -0
  91. data/lib/faker/games/dnd.rb +178 -0
  92. data/lib/faker/games/dota.rb +14 -5
  93. data/lib/faker/games/elder_scrolls.rb +26 -0
  94. data/lib/faker/games/final_fantasy_xiv.rb +73 -0
  95. data/lib/faker/games/heroes.rb +13 -0
  96. data/lib/faker/games/heroes_of_the_storm.rb +16 -5
  97. data/lib/faker/games/minecraft.rb +113 -0
  98. data/lib/faker/games/myst.rb +1 -1
  99. data/lib/faker/games/street_fighter.rb +61 -0
  100. data/lib/faker/games/super_mario.rb +48 -0
  101. data/lib/faker/games/tarkov.rb +205 -0
  102. data/lib/faker/games/touhou.rb +75 -0
  103. data/lib/faker/games/warhammer_fantasy.rb +74 -0
  104. data/lib/faker/games/witcher.rb +39 -0
  105. data/lib/faker/games/world_of_warcraft.rb +26 -1
  106. data/lib/faker/japanese_media/conan.rb +48 -0
  107. data/lib/faker/japanese_media/cowboy_bebop.rb +61 -0
  108. data/lib/faker/japanese_media/doraemon.rb +48 -0
  109. data/lib/faker/japanese_media/dragon_ball.rb +26 -0
  110. data/lib/faker/japanese_media/fullmetal_alchemist_brotherhood.rb +51 -0
  111. data/lib/faker/japanese_media/kamen_rider.rb +102 -0
  112. data/lib/faker/japanese_media/naruto.rb +61 -0
  113. data/lib/faker/japanese_media/one_piece.rb +1 -1
  114. data/lib/faker/japanese_media/studio_ghibli.rb +48 -0
  115. data/lib/faker/locations/australia.rb +52 -0
  116. data/lib/faker/movies/avatar.rb +49 -0
  117. data/lib/faker/movies/departed.rb +49 -0
  118. data/lib/faker/movies/hackers.rb +48 -0
  119. data/lib/faker/movies/hobbit.rb +4 -4
  120. data/lib/faker/movies/how_to_train_your_dragon.rb +48 -0
  121. data/lib/faker/movies/lord_of_the_rings.rb +3 -3
  122. data/lib/faker/movies/movie.rb +13 -0
  123. data/lib/faker/movies/star_wars.rb +75 -7
  124. data/lib/faker/movies/the_room.rb +63 -0
  125. data/lib/faker/movies/tron.rb +161 -0
  126. data/lib/faker/music/hiphop.rb +48 -0
  127. data/lib/faker/music/music.rb +12 -0
  128. data/lib/faker/music/opera.rb +237 -1
  129. data/lib/faker/music/pearl_jam.rb +50 -0
  130. data/lib/faker/music/phish.rb +27 -1
  131. data/lib/faker/music/prince.rb +64 -0
  132. data/lib/faker/music/rock_band.rb +12 -0
  133. data/lib/faker/music/rush.rb +37 -0
  134. data/lib/faker/music/smashing_pumpkins.rb +64 -0
  135. data/lib/faker/quotes/quote.rb +93 -1
  136. data/lib/faker/quotes/rajnikanth.rb +1 -0
  137. data/lib/faker/quotes/shakespeare.rb +70 -0
  138. data/lib/faker/religion/bible.rb +50 -0
  139. data/lib/faker/sports/chess.rb +90 -0
  140. data/lib/faker/sports/mountaineering.rb +22 -0
  141. data/lib/faker/sports/sport.rb +116 -0
  142. data/lib/faker/sports/volleyball.rb +74 -0
  143. data/lib/faker/travel/airport.rb +43 -0
  144. data/lib/faker/travel/train_station.rb +54 -0
  145. data/lib/faker/tv_shows/aqua_teen_hunger_force.rb +13 -0
  146. data/lib/faker/tv_shows/archer.rb +51 -0
  147. data/lib/faker/tv_shows/big_bang_theory.rb +37 -0
  148. data/lib/faker/tv_shows/brooklyn_nine_nine.rb +38 -0
  149. data/lib/faker/tv_shows/buffy.rb +17 -4
  150. data/lib/faker/tv_shows/dr_who.rb +1 -1
  151. data/lib/faker/tv_shows/final_space.rb +51 -0
  152. data/lib/faker/tv_shows/futurama.rb +65 -0
  153. data/lib/faker/tv_shows/michael_scott.rb +0 -3
  154. data/lib/faker/tv_shows/simpsons.rb +14 -0
  155. data/lib/faker/tv_shows/south_park.rb +15 -0
  156. data/lib/faker/tv_shows/spongebob.rb +50 -0
  157. data/lib/faker/tv_shows/suits.rb +37 -0
  158. data/lib/faker/tv_shows/supernatural.rb +48 -0
  159. data/lib/faker/tv_shows/the_fresh_prince_of_bel_air.rb +17 -4
  160. data/lib/faker/tv_shows/the_office.rb +37 -0
  161. data/lib/faker/version.rb +2 -2
  162. data/lib/faker.rb +51 -87
  163. data/lib/helpers/base58.rb +1 -1
  164. data/lib/helpers/char.rb +22 -27
  165. data/lib/helpers/deprecator.rb +53 -0
  166. data/lib/helpers/positional_generator.rb +480 -0
  167. data/lib/helpers/unique_generator.rb +13 -13
  168. data/lib/locales/README.md +18 -2
  169. data/lib/locales/ar.yml +6 -1
  170. data/lib/locales/bg.yml +1 -2
  171. data/lib/locales/da-DK.yml +529 -35
  172. data/lib/locales/de-AT.yml +3487 -25
  173. data/lib/locales/de-CH.yml +6020 -9
  174. data/lib/locales/de.yml +7185 -97
  175. data/lib/locales/ee.yml +0 -1
  176. data/lib/locales/en/address.yml +1828 -562
  177. data/lib/locales/en/adjective.yml +179 -0
  178. data/lib/locales/en/airport.yml +381 -0
  179. data/lib/locales/en/animal.yml +1 -1
  180. data/lib/locales/en/aqua_teen_hunger_force.yml +33 -1
  181. data/lib/locales/en/archer.yml +75 -0
  182. data/lib/locales/en/australia.yml +108 -0
  183. data/lib/locales/en/avatar.yml +31 -0
  184. data/lib/locales/en/bank.yml +2 -2
  185. data/lib/locales/en/barcode.yml +24 -0
  186. data/lib/locales/en/bible.yml +90 -0
  187. data/lib/locales/en/big_bang_theory.yml +38 -0
  188. data/lib/locales/en/bird.yml +1281 -0
  189. data/lib/locales/en/blood.yml +13 -0
  190. data/lib/locales/en/book.yml +487 -3
  191. data/lib/locales/en/brooklyn_nine_nine.yml +35 -0
  192. data/lib/locales/en/buffy.yml +1 -1
  193. data/lib/locales/en/camera.yml +611 -0
  194. data/lib/locales/en/cat.yml +1 -1
  195. data/lib/locales/en/chess.yml +103 -0
  196. data/lib/locales/en/clash_of_clan.yml +101 -0
  197. data/lib/locales/en/coffee.yml +1 -1
  198. data/lib/locales/en/commerce.yml +17 -0
  199. data/lib/locales/en/community.yml +17 -17
  200. data/lib/locales/en/company.yml +3 -2
  201. data/lib/locales/en/computer.yml +55 -0
  202. data/lib/locales/en/conan.yml +171 -0
  203. data/lib/locales/en/control.yml +247 -0
  204. data/lib/locales/en/cowboy_bebop.yml +163 -0
  205. data/lib/locales/en/demographic.yml +218 -5
  206. data/lib/locales/en/departed.yml +50 -0
  207. data/lib/locales/en/device.yml +112 -4
  208. data/lib/locales/en/dnd.yml +636 -0
  209. data/lib/locales/en/dog.yml +262 -7
  210. data/lib/locales/en/doraemon.yml +286 -0
  211. data/lib/locales/en/dota.yml +704 -63
  212. data/lib/locales/en/dragon_ball.yml +243 -1
  213. data/lib/locales/en/driving_license.yml +181 -0
  214. data/lib/locales/en/drone.yml +95 -0
  215. data/lib/locales/en/dune.yml +270 -131
  216. data/lib/locales/en/educator.yml +6 -0
  217. data/lib/locales/en/elder_scrolls.yml +583 -9
  218. data/lib/locales/en/emotion.yml +480 -0
  219. data/lib/locales/en/fallout.yml +311 -133
  220. data/lib/locales/en/file.yml +9 -1
  221. data/lib/locales/en/final_fantasy_xiv.yml +754 -0
  222. data/lib/locales/en/final_space.yml +37 -0
  223. data/lib/locales/en/finance.yml +80 -4
  224. data/lib/locales/en/food.yml +1067 -10
  225. data/lib/locales/en/football.yml +3 -3
  226. data/lib/locales/en/fresh_prince_of_bel_air.yml +1 -1
  227. data/lib/locales/en/fullmetal_alchemist_brotherhood.yml +78 -0
  228. data/lib/locales/en/futurama.yml +344 -0
  229. data/lib/locales/en/game.yml +11 -0
  230. data/lib/locales/en/hackers.yml +53 -0
  231. data/lib/locales/en/half_life.yml +84 -3
  232. data/lib/locales/en/harry_potter.yml +1 -1
  233. data/lib/locales/en/heroes.yml +408 -3
  234. data/lib/locales/en/heroes_of_the_storm.yml +131 -4
  235. data/lib/locales/en/hobby.yml +171 -0
  236. data/lib/locales/en/horse.yml +2 -2
  237. data/lib/locales/en/house.yml +1 -1
  238. data/lib/locales/en/how_to_train_your_dragon.yml +174 -0
  239. data/lib/locales/en/id_number.yml +1 -1
  240. data/lib/locales/en/internet.yml +136 -3
  241. data/lib/locales/en/jack_handey.yml +54 -0
  242. data/lib/locales/en/kamen_rider.yml +452 -0
  243. data/lib/locales/en/kpop.yml +7 -7
  244. data/lib/locales/en/league_of_legends.yml +285 -6
  245. data/lib/locales/en/lebowski.yml +1 -1
  246. data/lib/locales/en/lovecraft.yml +76 -6
  247. data/lib/locales/en/military.yml +179 -5
  248. data/lib/locales/en/minecraft.yml +663 -0
  249. data/lib/locales/en/mitch_hedberg.yml +46 -0
  250. data/lib/locales/en/mountain.yml +171 -0
  251. data/lib/locales/en/mountaineering.yml +14 -0
  252. data/lib/locales/en/movie.yml +194 -2
  253. data/lib/locales/en/music.yml +461 -29
  254. data/lib/locales/en/myst.yml +87 -31
  255. data/lib/locales/en/name.yml +5 -4
  256. data/lib/locales/en/naruto.yml +230 -0
  257. data/lib/locales/en/one_piece.yml +2 -2
  258. data/lib/locales/en/opera.yml +169 -1
  259. data/lib/locales/en/overwatch.yml +2648 -2622
  260. data/lib/locales/en/pearl_jam.yml +213 -0
  261. data/lib/locales/en/phish.yml +392 -1
  262. data/lib/locales/en/phone_number.yml +78 -3
  263. data/lib/locales/en/pokemon.yml +417 -4
  264. data/lib/locales/en/prince.yml +227 -0
  265. data/lib/locales/en/quote.yml +692 -163
  266. data/lib/locales/en/rock_band.yml +1 -0
  267. data/lib/locales/en/rush.yml +32 -0
  268. data/lib/locales/en/science.yml +481 -3
  269. data/lib/locales/en/shakespeare.yml +21 -24
  270. data/lib/locales/en/simpsons.yml +668 -0
  271. data/lib/locales/en/smashing_pumpkins.yml +382 -0
  272. data/lib/locales/en/source.yml +35 -0
  273. data/lib/locales/en/south_park.yml +360 -2
  274. data/lib/locales/en/space.yml +1 -1
  275. data/lib/locales/en/spongebob.yml +489 -0
  276. data/lib/locales/en/sport.yml +130 -0
  277. data/lib/locales/en/star_trek.yml +1 -1
  278. data/lib/locales/en/star_wars.yml +568 -220
  279. data/lib/locales/en/stranger_thing.yml +1 -1
  280. data/lib/locales/en/street_fighter.yml +1524 -0
  281. data/lib/locales/en/studio_ghibli.yml +107 -0
  282. data/lib/locales/en/suits.yml +45 -0
  283. data/lib/locales/en/super_mario.yml +58 -0
  284. data/lib/locales/en/super_smash_bros.yml +23 -6
  285. data/lib/locales/en/supernatural.yml +141 -0
  286. data/lib/locales/en/tarkov.yml +593 -0
  287. data/lib/locales/en/tea.yml +172 -0
  288. data/lib/locales/en/the_kingkiller_chronicle.yml +56 -0
  289. data/lib/locales/en/the_office.yml +86 -0
  290. data/lib/locales/en/the_room.yml +68 -0
  291. data/lib/locales/en/theater.yml +597 -0
  292. data/lib/locales/en/tolkien.yml +2453 -0
  293. data/lib/locales/en/touhou.yml +839 -0
  294. data/lib/locales/en/train_station.yml +280 -0
  295. data/lib/locales/en/tron.yml +227 -0
  296. data/lib/locales/en/vehicle.yml +2809 -75
  297. data/lib/locales/en/volleyball.yml +501 -0
  298. data/lib/locales/en/warhammer_fantasy.yml +582 -0
  299. data/lib/locales/en/witcher.yml +426 -7
  300. data/lib/locales/en/world_of_warcraft.yml +122 -4
  301. data/lib/locales/en/zelda.yml +962 -4
  302. data/lib/locales/en-AU.yml +728 -17
  303. data/lib/locales/en-CA.yml +373 -16
  304. data/lib/locales/en-GB.yml +116 -8
  305. data/lib/locales/en-IND.yml +1259 -16
  306. data/lib/locales/en-KE.yml +212 -0
  307. data/lib/locales/en-MS.yml +364 -16
  308. data/lib/locales/en-NEP.yml +212 -35
  309. data/lib/locales/en-NG.yml +1 -0
  310. data/lib/locales/en-NZ.yml +1153 -121
  311. data/lib/locales/en-PAK.yml +369 -9
  312. data/lib/locales/en-SG.yml +581 -15
  313. data/lib/locales/en-UG.yml +1 -0
  314. data/lib/locales/en-US.yml +6937 -71
  315. data/lib/locales/en-ZA.yml +1 -1
  316. data/lib/locales/en-au-ocker.yml +266 -21
  317. data/lib/locales/en.yml +0 -3
  318. data/lib/locales/es-AR.yml +4570 -0
  319. data/lib/locales/es-MX.yml +1 -2
  320. data/lib/locales/es.yml +58 -3
  321. data/lib/locales/fi-FI.yml +4 -2
  322. data/lib/locales/fr/address.yml +20 -0
  323. data/lib/locales/fr/adjective.yml +266 -0
  324. data/lib/locales/fr/ancient.yml +141 -0
  325. data/lib/locales/fr/animal.yml +5 -0
  326. data/lib/locales/fr/appliance.yml +4 -0
  327. data/lib/locales/fr/book.yml +7 -0
  328. data/lib/locales/fr/color.yml +4 -0
  329. data/lib/locales/fr/company.yml +17 -0
  330. data/lib/locales/fr/compass.yml +23 -0
  331. data/lib/locales/fr/demographic.yml +4 -0
  332. data/lib/locales/fr/gender.yml +6 -0
  333. data/lib/locales/fr/internet.yml +4 -0
  334. data/lib/locales/fr/lorem.yml +5 -0
  335. data/lib/locales/fr/measurement.yml +7 -0
  336. data/lib/locales/fr/name.yml +22 -0
  337. data/lib/locales/fr/phone_number.yml +7 -0
  338. data/lib/locales/fr/pokemon.yml +7 -0
  339. data/lib/locales/fr-CA.yml +2748 -43
  340. data/lib/locales/fr-CH.yml +3 -4
  341. data/lib/locales/fr.yml +2 -112
  342. data/lib/locales/hy.yml +3624 -119
  343. data/lib/locales/id.yml +839 -10
  344. data/lib/locales/it.yml +1304 -31
  345. data/lib/locales/ja/README.md +13 -0
  346. data/lib/locales/ja/address.yml +120539 -0
  347. data/lib/locales/ja/adjective.yml +148 -0
  348. data/lib/locales/ja/ancient.yml +4 -0
  349. data/lib/locales/ja/animal.yml +5 -0
  350. data/lib/locales/ja/bank.yml +4 -0
  351. data/lib/locales/ja/book.yml +7 -0
  352. data/lib/locales/ja/cat.yml +5 -0
  353. data/lib/locales/ja/coffee.yml +4 -0
  354. data/lib/locales/ja/color.yml +4 -0
  355. data/lib/locales/ja/commerce.yml +11 -0
  356. data/lib/locales/ja/company.yml +8 -0
  357. data/lib/locales/ja/dog.yml +6 -0
  358. data/lib/locales/ja/emotion.yml +51 -0
  359. data/lib/locales/ja/food.yml +4 -0
  360. data/lib/locales/ja/football.yml +115 -0
  361. data/lib/locales/ja/gender.yml +4 -0
  362. data/lib/locales/ja/lorem.yml +9 -0
  363. data/lib/locales/ja/name.yml +13 -0
  364. data/lib/locales/ja/naruto.yml +230 -0
  365. data/lib/locales/ja/overwatch.yml +5 -0
  366. data/lib/locales/ja/phone_number.yml +7 -0
  367. data/lib/locales/ja/pokemon.yml +7 -0
  368. data/lib/locales/ja/relationship.yml +10 -0
  369. data/lib/locales/ja/restaurant.yml +11 -0
  370. data/lib/locales/ja/space.yml +5 -0
  371. data/lib/locales/ja/sport.yml +130 -0
  372. data/lib/locales/ja/studio_ghibli.yml +112 -0
  373. data/lib/locales/ja/subscription.yml +8 -0
  374. data/lib/locales/ja/super_mario.yml +9 -0
  375. data/lib/locales/ja/super_smash_bros.yml +8 -0
  376. data/lib/locales/ja/touhou.yml +466 -0
  377. data/lib/locales/ja/university.yml +9 -0
  378. data/lib/locales/ja/zelda.yml +5 -0
  379. data/lib/locales/ko.yml +1450 -17
  380. data/lib/locales/lt.yml +315 -0
  381. data/lib/locales/lv.yml +1 -2
  382. data/lib/locales/mi-NZ.yml +283 -0
  383. data/lib/locales/nb-NO.yml +518 -27
  384. data/lib/locales/nl.yml +1 -1
  385. data/lib/locales/pl.yml +1 -2
  386. data/lib/locales/pt-BR.yml +8157 -659
  387. data/lib/locales/pt.yml +844 -43
  388. data/lib/locales/ru.yml +1355 -30
  389. data/lib/locales/sk.yml +4410 -41
  390. data/lib/locales/sv.yml +100 -0
  391. data/lib/locales/th.yml +76 -76
  392. data/lib/locales/tr.yml +1 -2
  393. data/lib/locales/uk.yml +1810 -44
  394. data/lib/locales/vi.yml +1 -0
  395. data/lib/locales/zh-CN/bank.yml +17 -0
  396. data/lib/locales/zh-CN.yml +1 -0
  397. data/lib/locales/zh-TW.yml +1 -0
  398. metadata +192 -127
  399. data/History.md +0 -176
  400. data/lib/faker/default/fillmurray.rb +0 -45
  401. data/lib/faker/default/lorem_pixel.rb +0 -47
  402. data/lib/locales/en/hobbit.yml +0 -19
  403. data/lib/locales/en/lord_of_the_rings.yml +0 -6
  404. data/lib/locales/ja.yml +0 -101
@@ -13,11 +13,7 @@ module Faker
13
13
  # Faker::Number.number(digits: 10) #=> 1968353479
14
14
  #
15
15
  # @faker.version 1.0.0
16
- def number(legacy_digits = NOT_GIVEN, digits: 10)
17
- warn_for_deprecated_arguments do |keywords|
18
- keywords << :digits if legacy_digits != NOT_GIVEN
19
- end
20
-
16
+ def number(digits: 10)
21
17
  return if digits < 1
22
18
  return rand(0..9).round if digits == 1
23
19
 
@@ -35,12 +31,8 @@ module Faker
35
31
  # Faker::Number.leading_zero_number(digits: 10) #=> "0669336915"
36
32
  #
37
33
  # @faker.version 1.0.0
38
- def leading_zero_number(legacy_digits = NOT_GIVEN, digits: 10)
39
- warn_for_deprecated_arguments do |keywords|
40
- keywords << :digits if legacy_digits != NOT_GIVEN
41
- end
42
-
43
- '0' + (2..digits).collect { digit }.join
34
+ def leading_zero_number(digits: 10)
35
+ "0#{(2..digits).collect { digit }.join}"
44
36
  end
45
37
 
46
38
  ##
@@ -53,11 +45,7 @@ module Faker
53
45
  # Faker::Number.decimal_part(digits: 2) #=> "09"
54
46
  #
55
47
  # @faker.version 1.0.0
56
- def decimal_part(legacy_digits = NOT_GIVEN, digits: 10)
57
- warn_for_deprecated_arguments do |keywords|
58
- keywords << :digits if legacy_digits != NOT_GIVEN
59
- end
60
-
48
+ def decimal_part(digits: 10)
61
49
  num = ''
62
50
  if digits > 1
63
51
  num = non_zero_digit
@@ -78,20 +66,13 @@ module Faker
78
66
  # Faker::Number.decimal(l_digits: 3, r_digits: 3) #=> 181.843
79
67
  #
80
68
  # @faker.version 1.0.0
81
- def decimal(legacy_l_digits = NOT_GIVEN, legacy_r_digits = NOT_GIVEN, l_digits: 5, r_digits: 2)
82
- warn_for_deprecated_arguments do |keywords|
83
- keywords << :l_digits if legacy_l_digits != NOT_GIVEN
84
- keywords << :r_digits if legacy_r_digits != NOT_GIVEN
85
- end
86
-
69
+ def decimal(l_digits: 5, r_digits: 2)
87
70
  l_d = number(digits: l_digits)
88
- r_d = if r_digits == 1
89
- generate(r_digits)
90
- else
91
- # Ensure the last digit is not zero
92
- # so it does not get truncated on converting to float
93
- generate(r_digits - 1).join + non_zero_digit.to_s
94
- end
71
+
72
+ # Ensure the last digit is not zero
73
+ # so it does not get truncated on converting to float
74
+ r_d = generate(r_digits - 1).join + non_zero_digit.to_s
75
+
95
76
  "#{l_d}.#{r_d}".to_f
96
77
  end
97
78
 
@@ -131,33 +112,39 @@ module Faker
131
112
  # Faker::Number.hexadecimal(digits: 3) #=> "e74"
132
113
  #
133
114
  # @faker.version 1.0.0
134
- def hexadecimal(legacy_digits = NOT_GIVEN, digits: 6)
135
- warn_for_deprecated_arguments do |keywords|
136
- keywords << :digits if legacy_digits != NOT_GIVEN
137
- end
138
-
115
+ def hexadecimal(digits: 6)
139
116
  hex = ''
140
- digits.times { hex += rand(15).to_s(16) }
117
+ digits.times { hex += rand(16).to_s(16) }
141
118
  hex
142
119
  end
143
120
 
121
+ # Produces a number in binary format.
122
+ #
123
+ # @param digits [Integer] Number of digits to generate the binary as string
124
+ # @return [String]
125
+ #
126
+ # @example
127
+ # Faker::Number.binary(digits: 4) #=> "1001"
128
+ #
129
+ # @faker.version next
130
+ def binary(digits: 4)
131
+ bin = ''
132
+ digits.times { bin += rand(2).to_s(2) }
133
+ bin
134
+ end
135
+
144
136
  ##
145
137
  # Produces a float given a mean and standard deviation.
146
138
  #
147
139
  # @param mean [Integer]
148
- # @param standard_deviation [Integer, Float]
140
+ # @param standard_deviation [Numeric]
149
141
  # @return [Float]
150
142
  #
151
143
  # @example
152
144
  # Faker::Number.normal(mean: 50, standard_deviation: 3.5) #=> 47.14669604069156
153
145
  #
154
146
  # @faker.version 1.0.0
155
- def normal(legacy_mean = NOT_GIVEN, legacy_standard_deviation = NOT_GIVEN, mean: 1, standard_deviation: 1)
156
- warn_for_deprecated_arguments do |keywords|
157
- keywords << :mean if legacy_mean != NOT_GIVEN
158
- keywords << :standard_deviation if legacy_standard_deviation != NOT_GIVEN
159
- end
160
-
147
+ def normal(mean: 1, standard_deviation: 1)
161
148
  theta = 2 * Math::PI * rand
162
149
  rho = Math.sqrt(-2 * Math.log(1 - rand))
163
150
  scale = standard_deviation * rho
@@ -167,20 +154,16 @@ module Faker
167
154
  ##
168
155
  # Produces a number between two provided values. Boundaries are inclusive.
169
156
  #
170
- # @param from [Integer] The lowest number to include.
171
- # @param to [Integer] The highest number to include.
172
- # @return [Integer]
157
+ # @param from [Numeric] The lowest number to include.
158
+ # @param to [Numeric] The highest number to include.
159
+ # @return [Numeric]
173
160
  #
174
161
  # @example
175
162
  # Faker::Number.between(from: 1, to: 10) #=> 7
163
+ # Faker::Number.between(from: 0.0, to: 1.0) #=> 0.7844640543957383
176
164
  #
177
165
  # @faker.version 1.0.0
178
- def between(legacy_from = NOT_GIVEN, legacy_to = NOT_GIVEN, from: 1.00, to: 5000.00)
179
- warn_for_deprecated_arguments do |keywords|
180
- keywords << :from if legacy_from != NOT_GIVEN
181
- keywords << :to if legacy_to != NOT_GIVEN
182
- end
183
-
166
+ def between(from: 1.00, to: 5000.00)
184
167
  Faker::Base.rand_in_range(from, to)
185
168
  end
186
169
 
@@ -188,17 +171,14 @@ module Faker
188
171
  # Produces a number within two provided values. Boundaries are inclusive or exclusive depending on the range passed.
189
172
  #
190
173
  # @param range [Range] The range from which to generate a number.
191
- # @return [Integer]
174
+ # @return [Numeric]
192
175
  #
193
176
  # @example
194
177
  # Faker::Number.within(range: 1..10) #=> 7
178
+ # Faker::Number.within(range: 0.0..1.0) #=> 0.7844640543957383
195
179
  #
196
180
  # @faker.version 1.0.0
197
- def within(legacy_range = NOT_GIVEN, range: 1.00..5000.00)
198
- warn_for_deprecated_arguments do |keywords|
199
- keywords << :range if legacy_range != NOT_GIVEN
200
- end
201
-
181
+ def within(range: 1.00..5000.00)
202
182
  between(from: range.min, to: range.max)
203
183
  end
204
184
 
@@ -213,12 +193,7 @@ module Faker
213
193
  # Faker::Number.positive #=> 235.59238499107653
214
194
  #
215
195
  # @faker.version 1.0.0
216
- def positive(legacy_from = NOT_GIVEN, legacy_to = NOT_GIVEN, from: 1.00, to: 5000.00)
217
- warn_for_deprecated_arguments do |keywords|
218
- keywords << :from if legacy_from != NOT_GIVEN
219
- keywords << :to if legacy_to != NOT_GIVEN
220
- end
221
-
196
+ def positive(from: 1.00, to: 5000.00)
222
197
  random_number = between(from: from, to: to)
223
198
 
224
199
  greater_than_zero(random_number)
@@ -235,12 +210,7 @@ module Faker
235
210
  # Faker::Number.negative #=> -4480.042585669558
236
211
  #
237
212
  # @faker.version 1.0.0
238
- def negative(legacy_from = NOT_GIVEN, legacy_to = NOT_GIVEN, from: -5000.00, to: -1.00)
239
- warn_for_deprecated_arguments do |keywords|
240
- keywords << :from if legacy_from != NOT_GIVEN
241
- keywords << :to if legacy_to != NOT_GIVEN
242
- end
243
-
213
+ def negative(from: -5000.00, to: -1.00)
244
214
  random_number = between(from: from, to: to)
245
215
 
246
216
  less_than_zero(random_number)
@@ -9,21 +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
- warn_for_deprecated_arguments do |keywords|
22
- keywords << :name if legacy_name != NOT_GIVEN
23
- keywords << :email if legacy_email != NOT_GIVEN
24
- keywords << :uid if legacy_uid != NOT_GIVEN
25
- end
26
-
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)
27
31
  auth = Omniauth.new(name: name, email: email)
28
32
  {
29
33
  provider: 'google_oauth2',
@@ -53,7 +57,7 @@ module Faker
53
57
  picture: image,
54
58
  gender: gender,
55
59
  birthday: Date.backward(days: 36_400).strftime('%Y-%m-%d'),
56
- local: 'en',
60
+ locale: 'en',
57
61
  hd: "#{Company.name.downcase}.com"
58
62
  },
59
63
  id_info: {
@@ -72,16 +76,18 @@ module Faker
72
76
  }
73
77
  end
74
78
 
75
- # rubocop:disable Metrics/ParameterLists
76
- 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)
77
- # rubocop:enable Metrics/ParameterLists
78
- warn_for_deprecated_arguments do |keywords|
79
- keywords << :name if legacy_name != NOT_GIVEN
80
- keywords << :email if legacy_email != NOT_GIVEN
81
- keywords << :username if legacy_username != NOT_GIVEN
82
- keywords << :uid if legacy_uid != NOT_GIVEN
83
- end
84
-
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)
85
91
  auth = Omniauth.new(name: name, email: email)
86
92
  username ||= "#{auth.first_name.downcase[0]}#{auth.last_name.downcase}"
87
93
  {
@@ -123,15 +129,17 @@ module Faker
123
129
  }
124
130
  end
125
131
 
126
- # rubocop:disable Metrics/ParameterLists
127
- 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)
128
- # rubocop:enable Metrics/ParameterLists
129
- warn_for_deprecated_arguments do |keywords|
130
- keywords << :name if legacy_name != NOT_GIVEN
131
- keywords << :nickname if legacy_nickname != NOT_GIVEN
132
- keywords << :uid if legacy_uid != NOT_GIVEN
133
- end
134
-
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)
135
143
  auth = Omniauth.new(name: name)
136
144
  nickname ||= auth.name.downcase.delete(' ')
137
145
  location = city_state
@@ -204,15 +212,17 @@ module Faker
204
212
  }
205
213
  end
206
214
 
207
- # rubocop:disable Metrics/ParameterLists
208
- 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)
209
- # rubocop:enable Metrics/ParameterLists
210
- warn_for_deprecated_arguments do |keywords|
211
- keywords << :name if legacy_name != NOT_GIVEN
212
- keywords << :email if legacy_email != NOT_GIVEN
213
- keywords << :uid if legacy_uid != NOT_GIVEN
214
- end
215
-
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)
216
226
  auth = Omniauth.new(name: name, email: email)
217
227
  first_name = auth.first_name.downcase
218
228
  last_name = auth.last_name.downcase
@@ -275,15 +285,17 @@ module Faker
275
285
  }
276
286
  end
277
287
 
278
- # rubocop:disable Metrics/ParameterLists
279
- 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)
280
- # rubocop:enable Metrics/ParameterLists
281
- warn_for_deprecated_arguments do |keywords|
282
- keywords << :name if legacy_name != NOT_GIVEN
283
- keywords << :email if legacy_email != NOT_GIVEN
284
- keywords << :uid if legacy_uid != NOT_GIVEN
285
- end
286
-
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)
287
299
  auth = Omniauth.new(name: name, email: email)
288
300
  login = auth.name.downcase.tr(' ', '-')
289
301
  html_url = "https://github.com/#{login}"
@@ -342,13 +354,15 @@ module Faker
342
354
  end
343
355
 
344
356
  ##
345
- # Generate a mock Omniauth response from Apple
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.
346
362
  #
347
- # @param name [String] A specific name to return in the response
348
- # @param email [String] A specific email to return in the response
349
- # @param uid [String] A specific UID to return in the response
363
+ # @return [Hash] An auth hash in the format provided by omniauth-apple.
350
364
  #
351
- # @return [Hash] An auth hash in the format provided by omniauth-apple
365
+ # @faker.version 2.3.0
352
366
  def apple(name: nil, email: nil, uid: nil)
353
367
  uid ||= "#{Number.number(digits: 6)}.#{Number.hexadecimal(digits: 32)}.#{Number.number(digits: 4)}"
354
368
  auth = Omniauth.new(name: name, email: email)
@@ -383,14 +397,58 @@ module Faker
383
397
  }
384
398
  end
385
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
+
386
444
  private
387
445
 
388
446
  def gender
389
- shuffle(%w[male female]).pop
447
+ sample(%w[male female])
390
448
  end
391
449
 
392
450
  def timezone
393
- shuffle((-12..12).to_a).pop
451
+ sample((-12..12).to_a)
394
452
  end
395
453
 
396
454
  def image
@@ -402,11 +460,11 @@ module Faker
402
460
  end
403
461
 
404
462
  def random_number_from_range(range)
405
- shuffle(range.to_a).pop
463
+ sample(range.to_a)
406
464
  end
407
465
 
408
466
  def random_boolean
409
- shuffle([true, false]).pop
467
+ sample([true, false])
410
468
  end
411
469
  end
412
470
  end
@@ -3,49 +3,147 @@
3
3
  module Faker
4
4
  class PhoneNumber < Base
5
5
  class << self
6
+ ##
7
+ # Produces a phone number in a random format without the country code and it can have different dividers.
8
+ #
9
+ # @return [String]
10
+ #
11
+ # @example
12
+ # Faker::PhoneNumber.phone_number #=> "(504) 113-1705"
13
+ # Faker::PhoneNumber.phone_number #=> "662.291.7201"
14
+ # Faker::PhoneNumber.phone_number #=> "9415283713"
15
+ #
16
+ # @faker.version 0.3.0
6
17
  def phone_number
7
18
  parse('phone_number.formats')
8
19
  end
9
20
 
21
+ ##
22
+ # Produces a random cell phone number in a random format without the country code and it can have different dividers.
23
+ #
24
+ # @return [String]
25
+ #
26
+ # @example
27
+ # Faker::PhoneNumber.cell_phone #=> "(836) 115-8995"
28
+ # Faker::PhoneNumber.cell_phone #=> "382-597-5739"
29
+ # Faker::PhoneNumber.cell_phone #=> "316.828.1822"
30
+ #
31
+ # @faker.version 1.0.0
10
32
  def cell_phone
11
33
  parse('cell_phone.formats')
12
34
  end
13
35
 
36
+ ##
37
+ # Produces a random country code.
38
+ #
39
+ # @return [String]
40
+ #
41
+ # @example
42
+ # Faker::PhoneNumber.country_code #=> "+20"
43
+ # Faker::PhoneNumber.country_code #=> "+39"
44
+ # Faker::PhoneNumber.country_code #=> "+852"
45
+ #
46
+ # @faker.version 1.9.2
14
47
  def country_code
15
- "+#{fetch('country_code')}"
48
+ "+#{fetch('phone_number.country_code')}"
16
49
  end
17
50
 
51
+ ##
52
+ # Produces a random phone number with country code.
53
+ #
54
+ # @return [String]
55
+ #
56
+ # @example
57
+ # Faker::PhoneNumber.phone_number_with_country_code #=> "+55 466-746-6882"
58
+ # Faker::PhoneNumber.phone_number_with_country_code #=> "+81 3718219558"
59
+ # Faker::PhoneNumber.phone_number_with_country_code #=> "+49 140 957 9846"
60
+ #
61
+ # @faker.version 1.9.2
18
62
  def phone_number_with_country_code
19
63
  "#{country_code} #{phone_number}"
20
64
  end
21
65
 
66
+ ##
67
+ # Produces a random cell phone number with country code.
68
+ #
69
+ # @return [String]
70
+ #
71
+ # @example
72
+ # Faker::PhoneNumber.cell_phone_with_country_code #=> "+852 (190) 987-9034"
73
+ # Faker::PhoneNumber.cell_phone_with_country_code #=> "+64 (820) 583-6474"
74
+ # Faker::PhoneNumber.cell_phone_with_country_code #=> "+1 591.871.7985"
75
+ #
76
+ # @faker.version 1.9.2
22
77
  def cell_phone_with_country_code
23
78
  "#{country_code} #{cell_phone}"
24
79
  end
25
80
 
26
- # US and Canada only
81
+ ##
82
+ # Produces a random phone number in e164 format, i.e., without any dividers.
83
+ #
84
+ # @return [String]
85
+ #
86
+ # @example
87
+ # Faker::PhoneNumber.cell_phone_in_e164 #=> "+542024834991"
88
+ # Faker::PhoneNumber.cell_phone_in_e164 #=> "+8522846847703"
89
+ # Faker::PhoneNumber.cell_phone_in_e164 #=> "+649477546575"
90
+ #
91
+ # @faker.version 1.9.2
92
+ def cell_phone_in_e164
93
+ cell_phone_with_country_code.delete('^+0-9')
94
+ end
95
+
96
+ ##
97
+ # Produces a random area code.
98
+ #
99
+ # @return [String]
100
+ #
101
+ # @example
102
+ # Faker::PhoneNumber.area_code #=> "201"
103
+ # Faker::PhoneNumber.area_code #=> "613"
104
+ # Faker::PhoneNumber.area_code #=> "321"
105
+ #
106
+ # @faker.version 1.3.0
27
107
  def area_code
28
108
  fetch('phone_number.area_code')
29
- rescue I18n::MissingTranslationData
30
- nil
31
109
  end
32
110
 
33
- # US and Canada only
111
+ ##
112
+ # Produces a random exchange code.
113
+ #
114
+ # @return [String]
115
+ #
116
+ # @example
117
+ # Faker::PhoneNumber.exchange_code #=> "208"
118
+ # Faker::PhoneNumber.exchange_code #=> "415"
119
+ # Faker::PhoneNumber.exchange_code #=> "652"
120
+ #
121
+ # @faker.version 1.3.0
34
122
  def exchange_code
35
123
  fetch('phone_number.exchange_code')
36
- rescue I18n::MissingTranslationData
37
- nil
38
124
  end
39
125
 
40
- # US and Canada only
41
- # Can be used for both extensions and last four digits of phone number.
42
- # Since extensions can be of variable length, this method taks a length parameter
43
- def subscriber_number(legacy_length = NOT_GIVEN, length: 4)
44
- warn_for_deprecated_arguments do |keywords|
45
- keywords << :length if legacy_length != NOT_GIVEN
126
+ ##
127
+ # Produces a random extension / subscriber number. Can be used for both extensions and last four digits of phone number.
128
+ #
129
+ # @param length [Integer] Specifies the length of the return value. Defaults to 4.
130
+ # @return [String]
131
+ #
132
+ # @example
133
+ # Faker::PhoneNumber.subscriber_number #=> "3873"
134
+ # Faker::PhoneNumber.subscriber_number(length: 2) #=> "39"
135
+ # Faker::PhoneNumber.extension #=> "3764"
136
+ # Faker::PhoneNumber.extension(length: 2) => "37"
137
+ #
138
+ # @faker.version 1.3.0
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'
46
142
  end
47
143
 
48
- rand.to_s[2..(1 + length)]
144
+ generate(:string) do |g|
145
+ g.int(length: length)
146
+ end
49
147
  end
50
148
 
51
149
  alias extension subscriber_number
@@ -5,17 +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
- warn_for_deprecated_arguments do |keywords|
12
- keywords << :size if legacy_size != NOT_GIVEN
13
- keywords << :format if legacy_format != NOT_GIVEN
14
- keywords << :background_color if legacy_background_color != NOT_GIVEN
15
- keywords << :text_color if legacy_text_color != NOT_GIVEN
16
- keywords << :text if legacy_text != NOT_GIVEN
17
- end
18
-
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)
19
30
  background_color = generate_color if background_color == :random
20
31
  text_color = generate_color if text_color == :random
21
32
 
@@ -24,7 +35,7 @@ module Faker
24
35
  raise ArgumentError, "background_color must be a hex value without '#'" unless background_color.nil? || background_color =~ /((?:^\h{3}$)|(?:^\h{6}$)){1}(?!.*\H)/
25
36
  raise ArgumentError, "text_color must be a hex value without '#'" unless text_color.nil? || text_color =~ /((?:^\h{3}$)|(?:^\h{6}$)){1}(?!.*\H)/
26
37
 
27
- image_url = "https://placehold.it/#{size}.#{format}"
38
+ image_url = "https://via.placeholder.com/#{size}.#{format}"
28
39
  image_url += "/#{background_color}" if background_color
29
40
  image_url += "/#{text_color}" if text_color
30
41
  image_url += "?text=#{text}" if text