faker 1.8.2 → 2.23.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 (615) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +1756 -10
  3. data/History.md +4 -4
  4. data/License.txt +2 -2
  5. data/README.md +328 -111
  6. data/bin/faker +5 -0
  7. data/lib/faker/blockchain/aeternity.rb +70 -0
  8. data/lib/faker/blockchain/bitcoin.rb +60 -0
  9. data/lib/faker/blockchain/ethereum.rb +26 -0
  10. data/lib/faker/blockchain/tezos.rb +135 -0
  11. data/lib/faker/books/book.rb +61 -0
  12. data/lib/faker/books/culture_series.rb +83 -0
  13. data/lib/faker/books/dune.rb +132 -0
  14. data/lib/faker/books/lovecraft.rb +280 -0
  15. data/lib/faker/books/the_kingkiller_chronicle.rb +61 -0
  16. data/lib/faker/creature/animal.rb +22 -0
  17. data/lib/faker/creature/bird.rb +203 -0
  18. data/lib/faker/creature/cat.rb +50 -0
  19. data/lib/faker/creature/dog.rb +115 -0
  20. data/lib/faker/creature/horse.rb +37 -0
  21. data/lib/faker/default/address.rb +368 -0
  22. data/lib/faker/default/adjective.rb +35 -0
  23. data/lib/faker/default/alphanumeric.rb +73 -0
  24. data/lib/faker/default/ancient.rb +59 -0
  25. data/lib/faker/default/app.rb +77 -0
  26. data/lib/faker/default/appliance.rb +33 -0
  27. data/lib/faker/default/artist.rb +20 -0
  28. data/lib/faker/default/avatar.rb +60 -0
  29. data/lib/faker/default/bank.rb +207 -0
  30. data/lib/faker/default/barcode.rb +165 -0
  31. data/lib/faker/default/beer.rb +113 -0
  32. data/lib/faker/default/blood.rb +48 -0
  33. data/lib/faker/default/boolean.rb +26 -0
  34. data/lib/faker/default/bossa_nova.rb +33 -0
  35. data/lib/faker/default/business.rb +50 -0
  36. data/lib/faker/default/camera.rb +46 -0
  37. data/lib/faker/default/cannabis.rb +135 -0
  38. data/lib/faker/default/chile_rut.rb +102 -0
  39. data/lib/faker/default/chuck_norris.rb +25 -0
  40. data/lib/faker/default/code.rb +282 -0
  41. data/lib/faker/default/coffee.rb +82 -0
  42. data/lib/faker/default/coin.rb +33 -0
  43. data/lib/faker/default/color.rb +79 -0
  44. data/lib/faker/default/commerce.rb +171 -0
  45. data/lib/faker/default/company.rb +579 -0
  46. data/lib/faker/default/compass.rb +202 -0
  47. data/lib/faker/default/computer.rb +63 -0
  48. data/lib/faker/default/construction.rb +83 -0
  49. data/lib/faker/default/cosmere.rb +138 -0
  50. data/lib/faker/default/crypto.rb +61 -0
  51. data/lib/faker/default/crypto_coin.rb +94 -0
  52. data/lib/faker/default/currency.rb +46 -0
  53. data/lib/faker/default/date.rb +186 -0
  54. data/lib/faker/default/dc_comics.rb +70 -0
  55. data/lib/faker/default/demographic.rb +98 -0
  56. data/lib/faker/default/dessert.rb +48 -0
  57. data/lib/faker/default/device.rb +85 -0
  58. data/lib/faker/default/driving_licence.rb +131 -0
  59. data/lib/faker/default/drone.rb +332 -0
  60. data/lib/faker/default/educator.rb +102 -0
  61. data/lib/faker/default/electrical_components.rb +48 -0
  62. data/lib/faker/default/emotion.rb +33 -0
  63. data/lib/faker/default/esport.rb +72 -0
  64. data/lib/faker/default/file.rb +100 -0
  65. data/lib/faker/default/fillmurray.rb +45 -0
  66. data/lib/faker/default/finance.rb +116 -0
  67. data/lib/faker/default/food.rb +126 -0
  68. data/lib/faker/default/funny_name.rb +90 -0
  69. data/lib/faker/default/gender.rb +46 -0
  70. data/lib/faker/default/greek_philosophers.rb +33 -0
  71. data/lib/faker/default/hacker.rb +103 -0
  72. data/lib/faker/default/hipster.rb +194 -0
  73. data/lib/faker/default/hobby.rb +22 -0
  74. data/lib/faker/default/house.rb +33 -0
  75. data/lib/faker/default/id_number.rb +418 -0
  76. data/lib/faker/default/industry_segments.rb +61 -0
  77. data/lib/faker/default/internet.rb +629 -0
  78. data/lib/faker/default/internet_http.rb +48 -0
  79. data/lib/faker/default/invoice.rb +136 -0
  80. data/lib/faker/default/job.rb +61 -0
  81. data/lib/faker/default/json.rb +143 -0
  82. data/lib/faker/default/kpop.rb +85 -0
  83. data/lib/faker/default/lorem.rb +302 -0
  84. data/lib/faker/default/lorem_flickr.rb +138 -0
  85. data/lib/faker/default/lorem_pixel.rb +70 -0
  86. data/lib/faker/default/markdown.rb +175 -0
  87. data/lib/faker/default/marketing.rb +22 -0
  88. data/lib/faker/default/measurement.rb +207 -0
  89. data/lib/faker/default/military.rb +98 -0
  90. data/lib/faker/default/mountain.rb +33 -0
  91. data/lib/faker/default/name.rb +156 -0
  92. data/lib/faker/default/nation.rb +73 -0
  93. data/lib/faker/default/nato_phonetic_alphabet.rb +20 -0
  94. data/lib/faker/default/nhs.rb +57 -0
  95. data/lib/faker/default/number.rb +289 -0
  96. data/lib/faker/default/omniauth.rb +505 -0
  97. data/lib/faker/default/phone_number.rb +137 -0
  98. data/lib/faker/default/placeholdit.rb +63 -0
  99. data/lib/faker/default/programming_language.rb +33 -0
  100. data/lib/faker/default/relationship.rb +91 -0
  101. data/lib/faker/default/religion.rb +6 -0
  102. data/lib/faker/default/restaurant.rb +63 -0
  103. data/lib/faker/default/science.rb +154 -0
  104. data/lib/faker/default/slack_emoji.rb +124 -0
  105. data/lib/faker/default/source.rb +76 -0
  106. data/lib/faker/default/south_africa.rb +141 -0
  107. data/lib/faker/default/space.rb +191 -0
  108. data/lib/faker/default/string.rb +63 -0
  109. data/lib/faker/default/stripe.rb +142 -0
  110. data/lib/faker/default/subscription.rb +70 -0
  111. data/lib/faker/default/superhero.rb +72 -0
  112. data/lib/faker/default/tea.rb +41 -0
  113. data/lib/faker/default/team.rb +74 -0
  114. data/lib/faker/default/time.rb +177 -0
  115. data/lib/faker/default/twitter.rb +223 -0
  116. data/lib/faker/default/types.rb +182 -0
  117. data/lib/faker/default/university.rb +75 -0
  118. data/lib/faker/default/vehicle.rb +355 -0
  119. data/lib/faker/default/verb.rb +72 -0
  120. data/lib/faker/default/vulnerability_identifier.rb +23 -0
  121. data/lib/faker/default/world_cup.rb +86 -0
  122. data/lib/faker/fantasy/tolkien.rb +67 -0
  123. data/lib/faker/games/clash_of_clans.rb +48 -0
  124. data/lib/faker/games/control.rb +113 -0
  125. data/lib/faker/games/dnd.rb +136 -0
  126. data/lib/faker/games/dota.rb +93 -0
  127. data/lib/faker/games/elder_scrolls.rb +139 -0
  128. data/lib/faker/games/fallout.rb +62 -0
  129. data/lib/faker/games/game.rb +48 -0
  130. data/lib/faker/games/half_life.rb +48 -0
  131. data/lib/faker/games/heroes.rb +61 -0
  132. data/lib/faker/games/heroes_of_the_storm.rb +72 -0
  133. data/lib/faker/games/league_of_legends.rb +87 -0
  134. data/lib/faker/games/minecraft.rb +113 -0
  135. data/lib/faker/games/myst.rb +74 -0
  136. data/lib/faker/games/overwatch.rb +48 -0
  137. data/lib/faker/games/pokemon.rb +48 -0
  138. data/lib/faker/games/sonic_the_hedgehog.rb +48 -0
  139. data/lib/faker/games/street_fighter.rb +61 -0
  140. data/lib/faker/games/super_mario.rb +48 -0
  141. data/lib/faker/games/super_smash_bros.rb +35 -0
  142. data/lib/faker/games/touhou.rb +75 -0
  143. data/lib/faker/games/warhammer_fantasy.rb +74 -0
  144. data/lib/faker/games/witcher.rb +126 -0
  145. data/lib/faker/games/world_of_warcraft.rb +60 -0
  146. data/lib/faker/games/zelda.rb +62 -0
  147. data/lib/faker/japanese_media/conan.rb +48 -0
  148. data/lib/faker/japanese_media/doraemon.rb +48 -0
  149. data/lib/faker/japanese_media/dragon_ball.rb +48 -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 +87 -0
  154. data/lib/faker/japanese_media/studio_ghibli.rb +48 -0
  155. data/lib/faker/japanese_media/sword_art_online.rb +61 -0
  156. data/lib/faker/locations/australia.rb +47 -0
  157. data/lib/faker/movies/back_to_the_future.rb +49 -0
  158. data/lib/faker/movies/departed.rb +49 -0
  159. data/lib/faker/movies/ghostbusters.rb +49 -0
  160. data/lib/faker/movies/harry_potter.rb +87 -0
  161. data/lib/faker/movies/hitchhikers_guide_to_the_galaxy.rb +106 -0
  162. data/lib/faker/movies/hobbit.rb +62 -0
  163. data/lib/faker/movies/how_to_train_your_dragon.rb +48 -0
  164. data/lib/faker/movies/lebowski.rb +48 -0
  165. data/lib/faker/movies/lord_of_the_rings.rb +49 -0
  166. data/lib/faker/movies/movie.rb +33 -0
  167. data/lib/faker/movies/princess_bride.rb +36 -0
  168. data/lib/faker/movies/room.rb +63 -0
  169. data/lib/faker/movies/star_wars.rb +273 -0
  170. data/lib/faker/movies/tron.rb +161 -0
  171. data/lib/faker/movies/v_for_vendetta.rb +50 -0
  172. data/lib/faker/music/grateful_dead.rb +37 -0
  173. data/lib/faker/music/hiphop.rb +48 -0
  174. data/lib/faker/music/music.rb +145 -0
  175. data/lib/faker/music/opera.rb +298 -0
  176. data/lib/faker/music/pearl_jam.rb +50 -0
  177. data/lib/faker/music/phish.rb +48 -0
  178. data/lib/faker/music/prince.rb +64 -0
  179. data/lib/faker/music/rock_band.rb +34 -0
  180. data/lib/faker/music/rush.rb +37 -0
  181. data/lib/faker/music/show.rb +49 -0
  182. data/lib/faker/music/umphreys_mcgee.rb +22 -0
  183. data/lib/faker/quotes/chiquito.rb +80 -0
  184. data/lib/faker/quotes/quote.rb +111 -0
  185. data/lib/faker/quotes/rajnikanth.rb +27 -0
  186. data/lib/faker/quotes/shakespeare.rb +111 -0
  187. data/lib/faker/religion/bible.rb +50 -0
  188. data/lib/faker/sports/basketball.rb +61 -0
  189. data/lib/faker/sports/football.rb +74 -0
  190. data/lib/faker/sports/mountaineering.rb +22 -0
  191. data/lib/faker/sports/sport.rb +110 -0
  192. data/lib/faker/sports/volleyball.rb +74 -0
  193. data/lib/faker/tv_shows/aqua_teen_hunger_force.rb +37 -0
  194. data/lib/faker/tv_shows/big_bang_theory.rb +37 -0
  195. data/lib/faker/tv_shows/bojack_horseman.rb +51 -0
  196. data/lib/faker/tv_shows/breaking_bad.rb +37 -0
  197. data/lib/faker/tv_shows/brooklyn_nine_nine.rb +38 -0
  198. data/lib/faker/tv_shows/buffy.rb +89 -0
  199. data/lib/faker/tv_shows/community.rb +38 -0
  200. data/lib/faker/tv_shows/dr_who.rb +115 -0
  201. data/lib/faker/tv_shows/dumb_and_dumber.rb +51 -0
  202. data/lib/faker/tv_shows/family_guy.rb +51 -0
  203. data/lib/faker/tv_shows/final_space.rb +51 -0
  204. data/lib/faker/tv_shows/friends.rb +50 -0
  205. data/lib/faker/tv_shows/futurama.rb +65 -0
  206. data/lib/faker/tv_shows/game_of_thrones.rb +77 -0
  207. data/lib/faker/tv_shows/hey_arnold.rb +50 -0
  208. data/lib/faker/tv_shows/how_i_met_your_mother.rb +64 -0
  209. data/lib/faker/tv_shows/michael_scott.rb +23 -0
  210. data/lib/faker/tv_shows/new_girl.rb +38 -0
  211. data/lib/faker/tv_shows/parks_and_rec.rb +37 -0
  212. data/lib/faker/tv_shows/rick_and_morty.rb +51 -0
  213. data/lib/faker/tv_shows/ru_paul.rb +37 -0
  214. data/lib/faker/tv_shows/seinfeld.rb +51 -0
  215. data/lib/faker/tv_shows/silicon_valley.rb +118 -0
  216. data/lib/faker/tv_shows/simpsons.rb +65 -0
  217. data/lib/faker/tv_shows/south_park.rb +38 -0
  218. data/lib/faker/tv_shows/star_trek.rb +63 -0
  219. data/lib/faker/tv_shows/stargate.rb +51 -0
  220. data/lib/faker/tv_shows/stranger_things.rb +38 -0
  221. data/lib/faker/tv_shows/suits.rb +37 -0
  222. data/lib/faker/tv_shows/supernatural.rb +48 -0
  223. data/lib/faker/tv_shows/the_expanse.rb +63 -0
  224. data/lib/faker/tv_shows/the_fresh_prince_of_bel_air.rb +64 -0
  225. data/lib/faker/tv_shows/the_it_crowd.rb +64 -0
  226. data/lib/faker/tv_shows/the_office.rb +37 -0
  227. data/lib/faker/tv_shows/the_thick_of_it.rb +51 -0
  228. data/lib/faker/tv_shows/twin_peaks.rb +51 -0
  229. data/lib/faker/tv_shows/venture_bros.rb +65 -0
  230. data/lib/faker/version.rb +4 -2
  231. data/lib/faker.rb +166 -66
  232. data/lib/helpers/base58.rb +22 -0
  233. data/lib/helpers/char.rb +37 -20
  234. data/lib/helpers/unique_generator.rb +34 -6
  235. data/lib/locales/README.md +40 -0
  236. data/lib/locales/ar.yml +106 -0
  237. data/lib/locales/bg.yml +5 -2
  238. data/lib/locales/ca-CAT.yml +1 -1
  239. data/lib/locales/ca.yml +2 -4
  240. data/lib/locales/da-DK.yml +10 -6
  241. data/lib/locales/de-AT.yml +14 -5
  242. data/lib/locales/de-CH.yml +1696 -1
  243. data/lib/locales/de.yml +27 -13
  244. data/lib/locales/ee.yml +61 -0
  245. data/lib/locales/en/address.yml +553 -4
  246. data/lib/locales/en/adjective.yml +179 -0
  247. data/lib/locales/en/ancient.yml +7 -0
  248. data/lib/locales/en/animal.yml +6 -0
  249. data/lib/locales/en/app.yml +8 -0
  250. data/lib/locales/en/appliance.yml +5 -0
  251. data/lib/locales/en/aqua_teen_hunger_force.yml +36 -0
  252. data/lib/locales/en/artist.yml +4 -0
  253. data/lib/locales/en/australia.yml +107 -0
  254. data/lib/locales/en/back_to_the_future.yml +120 -0
  255. data/lib/locales/en/bank.yml +302 -0
  256. data/lib/locales/en/barcode.yml +24 -0
  257. data/lib/locales/en/basketball.yml +99 -0
  258. data/lib/locales/en/beer.yml +9 -0
  259. data/lib/locales/en/bible.yml +90 -0
  260. data/lib/locales/en/big_bang_theory.yml +38 -0
  261. data/lib/locales/en/bird.yml +1281 -0
  262. data/lib/locales/en/blood.yml +13 -0
  263. data/lib/locales/en/bojack_horseman.yml +6 -0
  264. data/lib/locales/en/book.yml +491 -0
  265. data/lib/locales/en/bossa_nova.yml +6 -0
  266. data/lib/locales/en/breaking_bad.yml +28 -0
  267. data/lib/locales/en/brooklyn_nine_nine.yml +35 -0
  268. data/lib/locales/en/buffy.yml +260 -0
  269. data/lib/locales/en/business.yml +5 -0
  270. data/lib/locales/en/camera.yml +611 -0
  271. data/lib/locales/en/cannabis.yml +13 -0
  272. data/lib/locales/en/cat.yml +7 -0
  273. data/lib/locales/en/chiquito.yml +64 -0
  274. data/lib/locales/en/chuck_norris.yml +82 -0
  275. data/lib/locales/en/clash_of_clan.yml +101 -0
  276. data/lib/locales/en/code.yml +4 -0
  277. data/lib/locales/en/coffee.yml +31 -0
  278. data/lib/locales/en/coin.yml +6 -0
  279. data/lib/locales/en/color.yml +4 -0
  280. data/lib/locales/en/commerce.yml +28 -0
  281. data/lib/locales/en/community.yml +33 -0
  282. data/lib/locales/en/company.yml +22 -0
  283. data/lib/locales/en/compass.yml +34 -0
  284. data/lib/locales/en/computer.yml +55 -0
  285. data/lib/locales/en/conan.yml +171 -0
  286. data/lib/locales/en/construction.yml +425 -0
  287. data/lib/locales/en/control.yml +247 -0
  288. data/lib/locales/en/cosmere.yml +57 -0
  289. data/lib/locales/en/crypto_coin.yml +25 -0
  290. data/lib/locales/en/culture_series.yml +307 -0
  291. data/lib/locales/en/currency.yml +6 -0
  292. data/lib/locales/en/dc_comics.yml +52 -0
  293. data/lib/locales/en/demographic.yml +221 -0
  294. data/lib/locales/en/departed.yml +50 -0
  295. data/lib/locales/en/dessert.yml +6 -0
  296. data/lib/locales/en/device.yml +115 -0
  297. data/lib/locales/en/dnd.yml +451 -0
  298. data/lib/locales/en/dog.yml +11 -0
  299. data/lib/locales/en/doraemon.yml +286 -0
  300. data/lib/locales/en/dota.yml +693 -0
  301. data/lib/locales/en/dr_who.yml +31 -9
  302. data/lib/locales/en/dragon_ball.yml +246 -0
  303. data/lib/locales/en/driving_license.yml +181 -0
  304. data/lib/locales/en/drone.yml +95 -0
  305. data/lib/locales/en/dumb_and_dumber.yml +59 -0
  306. data/lib/locales/en/dune.yml +298 -0
  307. data/lib/locales/en/educator.yml +80 -0
  308. data/lib/locales/en/elder_scrolls.yml +585 -0
  309. data/lib/locales/en/electrical_components.yml +6 -0
  310. data/lib/locales/en/emotion.yml +480 -0
  311. data/lib/locales/en/esport.yml +8 -0
  312. data/lib/locales/en/fallout.yml +315 -0
  313. data/lib/locales/en/file.yml +13 -0
  314. data/lib/locales/en/final_space.yml +37 -0
  315. data/lib/locales/en/finance.yml +189 -0
  316. data/lib/locales/en/fma_brotherhood.yml +78 -0
  317. data/lib/locales/en/food.yml +1057 -0
  318. data/lib/locales/en/football.yml +8 -0
  319. data/lib/locales/en/fresh_prince_of_bel_air.yml +73 -0
  320. data/lib/locales/en/friends.yml +6 -0
  321. data/lib/locales/en/funny_name.yml +4 -0
  322. data/lib/locales/en/futurama.yml +344 -0
  323. data/lib/locales/en/game.yml +294 -0
  324. data/lib/locales/en/game_of_thrones.yml +8 -0
  325. data/lib/locales/en/gender.yml +6 -0
  326. data/lib/locales/en/ghostbusters.yml +91 -0
  327. data/lib/locales/en/grateful_dead.yml +48 -0
  328. data/lib/locales/en/greek_philosophers.yml +26 -0
  329. data/lib/locales/en/hacker.yml +8 -0
  330. data/lib/locales/en/half_life.yml +88 -0
  331. data/lib/locales/en/harry_potter.yml +9 -0
  332. data/lib/locales/en/heroes.yml +411 -0
  333. data/lib/locales/en/heroes_of_the_storm.yml +134 -0
  334. data/lib/locales/en/hey_arnold.yml +24 -0
  335. data/lib/locales/en/hipster.yml +4 -0
  336. data/lib/locales/en/hitchhikers_guide_to_the_galaxy.yml +45 -0
  337. data/lib/locales/en/hobby.yml +171 -0
  338. data/lib/locales/en/horse.yml +6 -0
  339. data/lib/locales/en/house.yml +5 -0
  340. data/lib/locales/en/how_i_met_your_mother.yml +28 -0
  341. data/lib/locales/en/how_to_train_your_dragon.yml +174 -0
  342. data/lib/locales/en/id_number.yml +5 -0
  343. data/lib/locales/en/industry_segments.yml +7 -0
  344. data/lib/locales/en/internet.yml +137 -3
  345. data/lib/locales/en/invoice.yml +6 -0
  346. data/lib/locales/en/jack_handey.yml +54 -0
  347. data/lib/locales/en/job.yml +15 -0
  348. data/lib/locales/en/kamen_rider.yml +452 -0
  349. data/lib/locales/en/kpop.yml +83 -0
  350. data/lib/locales/en/league_of_legends.yml +289 -0
  351. data/lib/locales/en/lebowski.yml +43 -0
  352. data/lib/locales/en/lorem.yml +11 -0
  353. data/lib/locales/en/lovecraft.yml +76 -6
  354. data/lib/locales/en/markdown.yml +5 -0
  355. data/lib/locales/en/marketing.yml +4 -0
  356. data/lib/locales/en/measurement.yml +11 -0
  357. data/lib/locales/en/michael_scott.yml +45 -0
  358. data/lib/locales/en/military.yml +182 -0
  359. data/lib/locales/en/minecraft.yml +663 -0
  360. data/lib/locales/en/mountain.yml +171 -0
  361. data/lib/locales/en/mountaineering.yml +14 -0
  362. data/lib/locales/en/movie.yml +194 -2
  363. data/lib/locales/en/music.yml +464 -0
  364. data/lib/locales/en/myst.yml +104 -0
  365. data/lib/locales/en/name.yml +26 -0
  366. data/lib/locales/en/naruto.yml +230 -0
  367. data/lib/locales/en/nation.yml +11 -0
  368. data/lib/locales/en/nato_phonetic_alphabet.yml +4 -0
  369. data/lib/locales/en/new_girl.yml +40 -0
  370. data/lib/locales/en/one_piece.yml +9 -0
  371. data/lib/locales/en/opera.yml +340 -0
  372. data/lib/locales/en/overwatch.yml +2654 -0
  373. data/lib/locales/en/parks_and_rec.yml +7 -0
  374. data/lib/locales/en/pearl_jam.yml +213 -0
  375. data/lib/locales/en/phish.yml +395 -0
  376. data/lib/locales/en/phone_number.yml +7 -0
  377. data/lib/locales/en/pokemon.yml +421 -0
  378. data/lib/locales/en/prince.yml +227 -0
  379. data/lib/locales/en/princess_bride.yml +5 -0
  380. data/lib/locales/en/programming_language.yml +6 -0
  381. data/lib/locales/en/quote.yml +695 -0
  382. data/lib/locales/en/rajnikanth.yml +77 -0
  383. data/lib/locales/en/relationship.yml +10 -0
  384. data/lib/locales/en/restaurant.yml +129 -0
  385. data/lib/locales/en/rock_band.yml +5 -0
  386. data/lib/locales/en/room.yml +68 -0
  387. data/lib/locales/en/rupaul.yml +125 -0
  388. data/lib/locales/en/rush.yml +32 -0
  389. data/lib/locales/en/science.yml +484 -0
  390. data/lib/locales/en/seinfeld.yml +6 -0
  391. data/lib/locales/en/shakespeare.yml +53 -0
  392. data/lib/locales/en/show.yml +597 -0
  393. data/lib/locales/en/silicon_valley.yml +53 -0
  394. data/lib/locales/en/simpsons.yml +694 -0
  395. data/lib/locales/en/slack_emoji.yml +20 -0
  396. data/lib/locales/en/sonic_the_hedgehog.yml +410 -0
  397. data/lib/locales/en/source.yml +46 -0
  398. data/lib/locales/en/south_park.yml +5 -0
  399. data/lib/locales/en/space.yml +17 -0
  400. data/lib/locales/en/sport.yml +121 -0
  401. data/lib/locales/en/star_trek.yml +7 -0
  402. data/lib/locales/en/star_wars.yml +606 -0
  403. data/lib/locales/en/stargate.yml +21 -0
  404. data/lib/locales/en/stranger_thing.yml +36 -0
  405. data/lib/locales/en/street_fighter.yml +1524 -0
  406. data/lib/locales/en/stripe.yml +42 -0
  407. data/lib/locales/en/studio_ghibli.yml +107 -0
  408. data/lib/locales/en/subscription.yml +8 -0
  409. data/lib/locales/en/suits.yml +45 -0
  410. data/lib/locales/en/super_mario.yml +58 -0
  411. data/lib/locales/en/super_smash_bros.yml +223 -0
  412. data/lib/locales/en/superhero.yml +12 -0
  413. data/lib/locales/en/supernatural.yml +141 -0
  414. data/lib/locales/en/sword_art_online.yml +334 -0
  415. data/lib/locales/en/tea.yml +172 -0
  416. data/lib/locales/en/team.yml +8 -0
  417. data/lib/locales/en/the_expanse.yml +7 -0
  418. data/lib/locales/en/the_it_crowd.yml +155 -0
  419. data/lib/locales/en/the_kingkiller_chronicle.yml +56 -0
  420. data/lib/locales/en/the_office.yml +86 -0
  421. data/lib/locales/en/the_thick_of_it.yml +6 -0
  422. data/lib/locales/en/tolkien.yml +2453 -0
  423. data/lib/locales/en/touhou.yml +839 -0
  424. data/lib/locales/en/tron.yml +227 -0
  425. data/lib/locales/en/twin_peaks.yml +6 -0
  426. data/lib/locales/en/umphreys_mcgee.yml +4 -0
  427. data/lib/locales/en/university.yml +10 -0
  428. data/lib/locales/en/v_for_vendetta.yml +163 -0
  429. data/lib/locales/en/vehicle.yml +2814 -0
  430. data/lib/locales/en/venture_bros.yml +7 -0
  431. data/lib/locales/en/verbs.yml +8 -0
  432. data/lib/locales/en/volleyball.yml +501 -0
  433. data/lib/locales/en/warhammer_fantasy.yml +582 -0
  434. data/lib/locales/en/witcher.yml +430 -0
  435. data/lib/locales/en/world_cup.yml +271 -0
  436. data/lib/locales/en/world_of_warcraft.yml +126 -0
  437. data/lib/locales/en/yoda.yml +4 -0
  438. data/lib/locales/en/zelda.yml +966 -0
  439. data/lib/locales/en-AU.yml +50 -8
  440. data/lib/locales/en-CA.yml +27 -2
  441. data/lib/locales/en-GB.yml +2 -1
  442. data/lib/locales/en-IND.yml +5 -2
  443. data/lib/locales/en-MS.yml +10 -1
  444. data/lib/locales/en-NEP.yml +6 -3
  445. data/lib/locales/en-NG.yml +2 -0
  446. data/lib/locales/en-NZ.yml +140 -17
  447. data/lib/locales/en-PAK.yml +4 -2
  448. data/lib/locales/en-SG.yml +6 -1
  449. data/lib/locales/en-TH.yml +360 -0
  450. data/lib/locales/en-US.yml +38 -10
  451. data/lib/locales/en-ZA.yml +114 -17
  452. data/lib/locales/en-au-ocker.yml +2 -1
  453. data/lib/locales/en.yml +0 -746
  454. data/lib/locales/es-AR.yml +4600 -0
  455. data/lib/locales/es-MX.yml +17 -1
  456. data/lib/locales/es.yml +75 -1
  457. data/lib/locales/fa.yml +6 -0
  458. data/lib/locales/fi-FI.yml +12 -6
  459. data/lib/locales/fr/address.yml +21 -0
  460. data/lib/locales/fr/adjective.yml +266 -0
  461. data/lib/locales/fr/animal.yml +5 -0
  462. data/lib/locales/fr/appliance.yml +4 -0
  463. data/lib/locales/fr/book.yml +7 -0
  464. data/lib/locales/fr/color.yml +4 -0
  465. data/lib/locales/fr/company.yml +17 -0
  466. data/lib/locales/fr/compass.yml +23 -0
  467. data/lib/locales/fr/demographic.yml +4 -0
  468. data/lib/locales/fr/gender.yml +6 -0
  469. data/lib/locales/fr/internet.yml +5 -0
  470. data/lib/locales/fr/lorem.yml +5 -0
  471. data/lib/locales/fr/measurement.yml +7 -0
  472. data/lib/locales/fr/name.yml +21 -0
  473. data/lib/locales/fr/phone_number.yml +7 -0
  474. data/lib/locales/fr/pokemon.yml +7 -0
  475. data/lib/locales/fr-CA.yml +107 -0
  476. data/lib/locales/fr-CH.yml +78 -0
  477. data/lib/locales/fr.yml +1 -65
  478. data/lib/locales/he.yml +2 -0
  479. data/lib/locales/hy.yml +411 -0
  480. data/lib/locales/id.yml +7 -2
  481. data/lib/locales/it.yml +15 -3
  482. data/lib/locales/ja/README.md +13 -0
  483. data/lib/locales/ja/address.yml +120539 -0
  484. data/lib/locales/ja/adjective.yml +148 -0
  485. data/lib/locales/ja/ancient.yml +4 -0
  486. data/lib/locales/ja/animal.yml +5 -0
  487. data/lib/locales/ja/bank.yml +4 -0
  488. data/lib/locales/ja/book.yml +7 -0
  489. data/lib/locales/ja/cat.yml +5 -0
  490. data/lib/locales/ja/coffee.yml +4 -0
  491. data/lib/locales/ja/color.yml +4 -0
  492. data/lib/locales/ja/commerce.yml +11 -0
  493. data/lib/locales/ja/company.yml +8 -0
  494. data/lib/locales/ja/dog.yml +6 -0
  495. data/lib/locales/ja/emotion.yml +51 -0
  496. data/lib/locales/ja/food.yml +4 -0
  497. data/lib/locales/ja/gender.yml +4 -0
  498. data/lib/locales/ja/lorem.yml +9 -0
  499. data/lib/locales/ja/name.yml +13 -0
  500. data/lib/locales/ja/naruto.yml +230 -0
  501. data/lib/locales/ja/overwatch.yml +5 -0
  502. data/lib/locales/ja/phone_number.yml +7 -0
  503. data/lib/locales/ja/pokemon.yml +7 -0
  504. data/lib/locales/ja/relationship.yml +10 -0
  505. data/lib/locales/ja/restaurant.yml +11 -0
  506. data/lib/locales/ja/space.yml +5 -0
  507. data/lib/locales/ja/studio_ghibli.yml +112 -0
  508. data/lib/locales/ja/subscription.yml +8 -0
  509. data/lib/locales/ja/super_mario.yml +9 -0
  510. data/lib/locales/ja/super_smash_bros.yml +8 -0
  511. data/lib/locales/ja/university.yml +9 -0
  512. data/lib/locales/ja/zelda.yml +5 -0
  513. data/lib/locales/ko.yml +98 -3
  514. data/lib/locales/lt.yml +35 -0
  515. data/lib/locales/lv.yml +55 -0
  516. data/lib/locales/mi-NZ.yml +281 -0
  517. data/lib/locales/nb-NO.yml +15 -6
  518. data/lib/locales/nl.yml +13 -4
  519. data/lib/locales/no.yml +7 -0
  520. data/lib/locales/pl.yml +13 -2
  521. data/lib/locales/pt-BR.yml +657 -17
  522. data/lib/locales/pt.yml +16 -6
  523. data/lib/locales/ru.yml +54 -5
  524. data/lib/locales/sk.yml +21 -13
  525. data/lib/locales/sv.yml +15 -7
  526. data/lib/locales/th.yml +380 -0
  527. data/lib/locales/tr.yml +14 -0
  528. data/lib/locales/uk.yml +17 -4
  529. data/lib/locales/vi.yml +7 -2
  530. data/lib/locales/zh-CN.yml +10 -4
  531. data/lib/locales/zh-TW.yml +3 -1
  532. metadata +620 -98
  533. data/lib/extensions/array.rb +0 -22
  534. data/lib/extensions/symbol.rb +0 -9
  535. data/lib/faker/address.rb +0 -67
  536. data/lib/faker/ancient.rb +0 -21
  537. data/lib/faker/app.rb +0 -18
  538. data/lib/faker/artist.rb +0 -9
  539. data/lib/faker/avatar.rb +0 -15
  540. data/lib/faker/bank.rb +0 -31
  541. data/lib/faker/beer.rb +0 -40
  542. data/lib/faker/bitcoin.rb +0 -48
  543. data/lib/faker/book.rb +0 -23
  544. data/lib/faker/boolean.rb +0 -9
  545. data/lib/faker/business.rb +0 -22
  546. data/lib/faker/cat.rb +0 -19
  547. data/lib/faker/chuck_norris.rb +0 -11
  548. data/lib/faker/code.rb +0 -147
  549. data/lib/faker/coffee.rb +0 -29
  550. data/lib/faker/color.rb +0 -30
  551. data/lib/faker/commerce.rb +0 -64
  552. data/lib/faker/company.rb +0 -141
  553. data/lib/faker/compass.rb +0 -65
  554. data/lib/faker/crypto.rb +0 -19
  555. data/lib/faker/date.rb +0 -78
  556. data/lib/faker/demographic.rb +0 -35
  557. data/lib/faker/dessert.rb +0 -19
  558. data/lib/faker/dr_who.rb +0 -34
  559. data/lib/faker/dragon_ball.rb +0 -9
  560. data/lib/faker/educator.rb +0 -23
  561. data/lib/faker/esport.rb +0 -25
  562. data/lib/faker/family_guy.rb +0 -17
  563. data/lib/faker/file.rb +0 -24
  564. data/lib/faker/fillmurray.rb +0 -14
  565. data/lib/faker/finance.rb +0 -28
  566. data/lib/faker/food.rb +0 -21
  567. data/lib/faker/friends.rb +0 -17
  568. data/lib/faker/funny_name.rb +0 -43
  569. data/lib/faker/game_of_thrones.rb +0 -25
  570. data/lib/faker/hacker.rb +0 -45
  571. data/lib/faker/harry_potter.rb +0 -21
  572. data/lib/faker/hey_arnold.rb +0 -17
  573. data/lib/faker/hipster.rb +0 -59
  574. data/lib/faker/hitchhikers_guide_to_the_galaxy.rb +0 -33
  575. data/lib/faker/hobbit.rb +0 -21
  576. data/lib/faker/how_i_met_your_mother.rb +0 -21
  577. data/lib/faker/id_number.rb +0 -36
  578. data/lib/faker/internet.rb +0 -178
  579. data/lib/faker/job.rb +0 -16
  580. data/lib/faker/league_of_legends.rb +0 -29
  581. data/lib/faker/lord_of_the_rings.rb +0 -13
  582. data/lib/faker/lorem.rb +0 -68
  583. data/lib/faker/lorem_pixel.rb +0 -21
  584. data/lib/faker/lovecraft.rb +0 -73
  585. data/lib/faker/markdown.rb +0 -66
  586. data/lib/faker/matz.rb +0 -9
  587. data/lib/faker/movie.rb +0 -9
  588. data/lib/faker/music.rb +0 -33
  589. data/lib/faker/name.rb +0 -42
  590. data/lib/faker/number.rb +0 -86
  591. data/lib/faker/omniauth.rb +0 -340
  592. data/lib/faker/overwatch.rb +0 -17
  593. data/lib/faker/phone_number.rb +0 -44
  594. data/lib/faker/placeholdit.rb +0 -20
  595. data/lib/faker/pokemon.rb +0 -17
  596. data/lib/faker/rick_and_morty.rb +0 -17
  597. data/lib/faker/robin.rb +0 -9
  598. data/lib/faker/rock_band.rb +0 -9
  599. data/lib/faker/rupaul.rb +0 -11
  600. data/lib/faker/shakespeare.rb +0 -83
  601. data/lib/faker/simpsons.rb +0 -22
  602. data/lib/faker/slack_emoji.rb +0 -43
  603. data/lib/faker/space.rb +0 -58
  604. data/lib/faker/star_trek.rb +0 -21
  605. data/lib/faker/star_wars.rb +0 -80
  606. data/lib/faker/superhero.rb +0 -25
  607. data/lib/faker/team.rb +0 -24
  608. data/lib/faker/time.rb +0 -51
  609. data/lib/faker/twin_peaks.rb +0 -17
  610. data/lib/faker/twitter.rb +0 -172
  611. data/lib/faker/university.rb +0 -20
  612. data/lib/faker/vehicle.rb +0 -37
  613. data/lib/faker/yoda.rb +0 -10
  614. data/lib/faker/zelda.rb +0 -18
  615. data/lib/locales/ja.yml +0 -46
@@ -0,0 +1,177 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Time < Base
5
+ TIME_RANGES = {
6
+ all: (0..23),
7
+ day: (9..17),
8
+ night: (18..23),
9
+ morning: (6..11),
10
+ afternoon: (12..17),
11
+ evening: (17..21),
12
+ midnight: (0..4)
13
+ }.freeze
14
+
15
+ class << self
16
+ # rubocop:disable Metrics/ParameterLists
17
+
18
+ ##
19
+ # Produce a random time between two times.
20
+ #
21
+ # @param from [Time, Date, DateTime] The start of the usable time range.
22
+ # @param to [Time, Date, DateTime] The end of the usable time range.
23
+ # @param format [Symbol] The name of a DateTime format to use.
24
+ # @return [Time]
25
+ #
26
+ # @example
27
+ # # Random Stringified time between two times, formatted to the specified I18n format
28
+ # # (Examples are from a Rails console with rails-i18n 5.1.1 defaults loaded)
29
+ # I18n.locale = 'en-US'
30
+ # Faker::Time.between(from: DateTime.now - 1, to: DateTime.now, format: :default) #=> "Tue, 16 Oct 2018 10:48:27 AM -05:00"
31
+ # Faker::Time.between(from: DateTime.now - 1, to: DateTime.now, format: :short) #=> "15 Oct 10:48 AM"
32
+ # Faker::Time.between(from: DateTime.now - 1, to: DateTime.now, format: :long) #=> "October 15, 2018 10:48 AM"
33
+ #
34
+ # I18n.locale = 'ja'
35
+ # Faker::Time.between(from: DateTime.now - 1, to: DateTime.now, format: :default) #=> "2018/10/15 10:48:27"
36
+ # Faker::Time.between(from: DateTime.now - 1, to: DateTime.now, format: :short) #=> "18/10/15 10:48"
37
+ # Faker::Time.between(from: DateTime.now - 1, to: DateTime.now, format: :long) #=> "2018年10月16日(火) 10時48分27秒 -0500"
38
+ #
39
+ # @faker.version 1.5.0
40
+ def between(legacy_from = NOT_GIVEN, legacy_to = NOT_GIVEN, legacy_format = NOT_GIVEN, from:, to:, format: nil)
41
+ warn_for_deprecated_arguments do |keywords|
42
+ keywords << :from if legacy_from != NOT_GIVEN
43
+ keywords << :to if legacy_to != NOT_GIVEN
44
+ keywords << :format if legacy_format != NOT_GIVEN
45
+ end
46
+
47
+ from = get_time_object(from)
48
+ to = get_time_object(to)
49
+
50
+ time = Faker::Base.rand_in_range(from, to)
51
+ time_with_format(time, format)
52
+ end
53
+
54
+ ##
55
+ # Produce a random time between two dates.
56
+ #
57
+ # @param from [Date] The start of the usable time range.
58
+ # @param to [Date] The end of the usable time range.
59
+ # @param period [Symbol] The time of day, if any. See {TIME_RANGES}.
60
+ # @param format [Symbol] The name of a DateTime format to use.
61
+ # @return [Time]
62
+ #
63
+ # @example
64
+ # Faker::Time.between_dates(from: Date.today - 1, to: Date.today, period: :all)
65
+ # #=> "2014-09-19 07:03:30 -0700"
66
+ # Faker::Time.between_dates(from: Date.today - 1, to: Date.today, period: :day)
67
+ # #=> "2014-09-18 16:28:13 -0700"
68
+ # Faker::Time.between_dates(from: Date.today - 1, to: Date.today, period: :night)
69
+ # #=> "2014-09-20 19:39:38 -0700"
70
+ # Faker::Time.between_dates(from: Date.today - 1, to: Date.today, period: :morning)
71
+ # #=> "2014-09-19 08:07:52 -0700"
72
+ # Faker::Time.between_dates(from: Date.today - 1, to: Date.today, period: :afternoon)
73
+ # #=> "2014-09-18 12:10:34 -0700"
74
+ # Faker::Time.between_dates(from: Date.today - 1, to: Date.today, period: :evening)
75
+ # #=> "2014-09-19 20:21:03 -0700"
76
+ # Faker::Time.between_dates(from: Date.today - 1, to: Date.today, period: :midnight)
77
+ # #=> "2014-09-20 00:40:14 -0700"
78
+ # Faker::Time.between_dates(from: Date.today - 5, to: Date.today + 5, period: :afternoon, format: :default)
79
+ # #=> "Fri, 19 Oct 2018 15:17:46 -0500"
80
+ #
81
+ # @faker.version 1.0.0
82
+ def between_dates(legacy_from = NOT_GIVEN, legacy_to = NOT_GIVEN, legacy_period = NOT_GIVEN, legacy_format = NOT_GIVEN, from:, to:, period: :all, format: nil)
83
+ warn_for_deprecated_arguments do |keywords|
84
+ keywords << :from if legacy_from != NOT_GIVEN
85
+ keywords << :to if legacy_to != NOT_GIVEN
86
+ keywords << :period if legacy_period != NOT_GIVEN
87
+ keywords << :format if legacy_format != NOT_GIVEN
88
+ end
89
+
90
+ date = Faker::Date.between(from: from, to: to)
91
+ time = date_with_random_time(date, period)
92
+ time_with_format(time, format)
93
+ end
94
+
95
+ ##
96
+ # Produce a random time in the future (up to N days).
97
+ #
98
+ # @param days [Integer] The maximum number of days to go into the future.
99
+ # @param period [Symbol] The time of day, if any. See {TIME_RANGES}.
100
+ # @param format [Symbol] The name of a DateTime format to use.
101
+ # @return [Time]
102
+ #
103
+ # @example
104
+ # Faker::Time.forward(days: 23, period: :morning)
105
+ # # => "2014-09-26 06:54:47 -0700"
106
+ # Faker::Time.forward(days: 5, period: :evening, format: :long)
107
+ # #=> "October 21, 2018 20:47"
108
+ #
109
+ # @faker.version 1.5.0
110
+ def forward(legacy_days = NOT_GIVEN, legacy_period = NOT_GIVEN, legacy_format = NOT_GIVEN, days: 365, period: :all, format: nil)
111
+ warn_for_deprecated_arguments do |keywords|
112
+ keywords << :days if legacy_days != NOT_GIVEN
113
+ keywords << :period if legacy_period != NOT_GIVEN
114
+ keywords << :format if legacy_format != NOT_GIVEN
115
+ end
116
+
117
+ time_with_format(date_with_random_time(Faker::Date.forward(days: days), period), format)
118
+ end
119
+
120
+ ##
121
+ # Produce a random time in the past (up to N days).
122
+ #
123
+ # @param days [Integer] The maximum number of days to go into the past.
124
+ # @param period [Symbol] The time of day, if any. See {TIME_RANGES}.
125
+ # @param format [Symbol] The name of a DateTime format to use.
126
+ # @return [Time]
127
+ #
128
+ # @example
129
+ # Faker::Time.backward(days: 14, period: :evening)
130
+ # #=> "2014-09-17 19:56:33 -0700"
131
+ # Faker::Time.backward(days: 5, period: :morning, format: :short)
132
+ # #=> "14 Oct 07:44"
133
+ #
134
+ # @faker.version 1.5.0
135
+ def backward(legacy_days = NOT_GIVEN, legacy_period = NOT_GIVEN, legacy_format = NOT_GIVEN, days: 365, period: :all, format: nil)
136
+ warn_for_deprecated_arguments do |keywords|
137
+ keywords << :days if legacy_days != NOT_GIVEN
138
+ keywords << :period if legacy_period != NOT_GIVEN
139
+ keywords << :format if legacy_format != NOT_GIVEN
140
+ end
141
+
142
+ time_with_format(date_with_random_time(Faker::Date.backward(days: days), period), format)
143
+ end
144
+ # rubocop:enable Metrics/ParameterLists
145
+
146
+ private
147
+
148
+ def date_with_random_time(date, period)
149
+ ::Time.local(date.year, date.month, date.day, hours(period), minutes, seconds)
150
+ end
151
+
152
+ def time_with_format(time, format)
153
+ format.nil? ? time : I18n.localize(time, format: format)
154
+ end
155
+
156
+ def hours(period)
157
+ raise ArgumentError, 'invalid period' unless TIME_RANGES.key? period
158
+
159
+ sample(TIME_RANGES[period].to_a)
160
+ end
161
+
162
+ def minutes
163
+ seconds
164
+ end
165
+
166
+ def seconds
167
+ sample((0..59).to_a)
168
+ end
169
+
170
+ def get_time_object(time)
171
+ time = ::Time.parse(time) if time.is_a? String
172
+ time = time.to_time if time.respond_to?(:to_time)
173
+ time
174
+ end
175
+ end
176
+ end
177
+ end
@@ -0,0 +1,223 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Twitter < Base
5
+ class << self
6
+ ##
7
+ # Produces a random Twitter user.
8
+ #
9
+ # @param include_status [Boolean] Include or exclude user status details
10
+ # @param include_email [Boolean] Include or exclude user email details
11
+ # @return [Hash]
12
+ #
13
+ # @example
14
+ # Faker::Twitter.user #=> {:id=>8821452687517076614, :name=>"Lincoln Paucek", :screen_name=>"cody"...
15
+ # Faker::Twitter.user(include_status: false) # Just get a user object with no embed status
16
+ # Faker::Twitter.user(include_email: true) # Simulate an authenticated user with the email permission
17
+ #
18
+ # @faker.version 1.7.3
19
+ def user(legacy_include_status = NOT_GIVEN, legacy_include_email = NOT_GIVEN, include_status: true, include_email: false)
20
+ warn_for_deprecated_arguments do |keywords|
21
+ keywords << :include_status if legacy_include_status != NOT_GIVEN
22
+ keywords << :include_email if legacy_include_email != NOT_GIVEN
23
+ end
24
+
25
+ user_id = id
26
+ background_image_url = Faker::LoremPixel.image(size: '600x400') # TODO: Make the dimensions change
27
+ profile_image_url = Faker::Avatar.image(slug: user_id, size: '48x48')
28
+ user = {
29
+ id: user_id,
30
+ id_str: user_id.to_s,
31
+ contributors_enabled: Faker::Boolean.boolean(true_ratio: 0.1),
32
+ created_at: created_at,
33
+ default_profile_image: Faker::Boolean.boolean(true_ratio: 0.1),
34
+ default_profile: Faker::Boolean.boolean(true_ratio: 0.1),
35
+ description: Faker::Lorem.sentence,
36
+ entities: user_entities,
37
+ favourites_count: Faker::Number.between(to: 1, from: 100_000),
38
+ follow_request_sent: false,
39
+ followers_count: Faker::Number.between(to: 1, from: 10_000_000),
40
+ following: false,
41
+ friends_count: Faker::Number.between(to: 1, from: 100_000),
42
+ geo_enabled: Faker::Boolean.boolean(true_ratio: 0.1),
43
+ is_translation_enabled: Faker::Boolean.boolean(true_ratio: 0.1),
44
+ is_translator: Faker::Boolean.boolean(true_ratio: 0.1),
45
+ lang: Faker::Address.country_code,
46
+ listed_count: Faker::Number.between(to: 1, from: 1000),
47
+ location: "#{Faker::Address.city}, #{Faker::Address.state_abbr}, #{Faker::Address.country_code}",
48
+ name: Faker::Name.name,
49
+ notifications: false,
50
+ profile_background_color: Faker::Color.hex_color,
51
+ profile_background_image_url_https: background_image_url,
52
+ profile_background_image_url: background_image_url.sub('https://', 'http://'),
53
+ profile_background_tile: Faker::Boolean.boolean(true_ratio: 0.1),
54
+ profile_banner_url: Faker::LoremPixel.image(size: '1500x500'),
55
+ profile_image_url_https: profile_image_url,
56
+ profile_image_url: profile_image_url.sub('https://', 'http://'),
57
+ profile_link_color: Faker::Color.hex_color,
58
+ profile_sidebar_border_color: Faker::Color.hex_color,
59
+ profile_sidebar_fill_color: Faker::Color.hex_color,
60
+ profile_text_color: Faker::Color.hex_color,
61
+ profile_use_background_image: Faker::Boolean.boolean(true_ratio: 0.4),
62
+ protected: Faker::Boolean.boolean(true_ratio: 0.1),
63
+ screen_name: screen_name,
64
+ statuses_count: Faker::Number.between(to: 1, from: 100_000),
65
+ time_zone: Faker::Address.time_zone,
66
+ url: Faker::Internet.url(host: 'example.com'),
67
+ utc_offset: utc_offset,
68
+ verified: Faker::Boolean.boolean(true_ratio: 0.1)
69
+ }
70
+ user[:status] = Faker::Twitter.status(include_user: false) if include_status
71
+ user[:email] = Faker::Internet.safe_email if include_email
72
+ user
73
+ end
74
+
75
+ ##
76
+ # Produces a random Twitter user.
77
+ #
78
+ # @param include_user [Boolean] Include or exclude user details
79
+ # @param include_photo [Boolean] Include or exclude user photo
80
+ # @return [Hash]
81
+ #
82
+ # @example
83
+ # Faker::Twitter.status #=> {:id=>8821452687517076614, :text=>"Ea et laboriosam vel non."...
84
+ # Faker::Twitter.status(include_user: false) # Just get a status object with no embed user
85
+ # Faker::Twitter.status(include_photo: true) # Includes entities for an attached image
86
+ #
87
+ # @faker.version 1.7.3
88
+ def status(legacy_include_user = NOT_GIVEN, legacy_include_photo = NOT_GIVEN, include_user: true, include_photo: false)
89
+ warn_for_deprecated_arguments do |keywords|
90
+ keywords << :include_user if legacy_include_user != NOT_GIVEN
91
+ keywords << :include_photo if legacy_include_photo != NOT_GIVEN
92
+ end
93
+
94
+ status_id = id
95
+ status = {
96
+ id: status_id,
97
+ id_str: status_id.to_s,
98
+ contributors: nil,
99
+ coordinates: nil,
100
+ created_at: created_at,
101
+ entities: status_entities(include_photo: include_photo),
102
+ favorite_count: Faker::Number.between(to: 1, from: 10_000),
103
+ favorited: false,
104
+ geo: nil,
105
+ in_reply_to_screen_name: nil,
106
+ in_reply_to_status_id: nil,
107
+ in_reply_to_user_id_str: nil,
108
+ in_reply_to_user_id: nil,
109
+ is_quote_status: false,
110
+ lang: Faker::Address.country_code,
111
+ nil: nil,
112
+ place: nil,
113
+ possibly_sensitive: Faker::Boolean.boolean(true_ratio: 0.1),
114
+ retweet_count: Faker::Number.between(to: 1, from: 10_000),
115
+ retweeted_status: nil,
116
+ retweeted: false,
117
+ source: "<a href=\"#{Faker::Internet.url(host: 'example.com')}\" rel=\"nofollow\">#{Faker::Company.name}</a>",
118
+ text: Faker::Lorem.sentence,
119
+ truncated: false
120
+ }
121
+ status[:user] = Faker::Twitter.user(include_status: false) if include_user
122
+ status[:text] = "#{status[:text]} #{status[:entities][:media].first[:url]}" if include_photo
123
+ status
124
+ end
125
+
126
+ ##
127
+ # Produces a random screen name.
128
+ #
129
+ # @return [String]
130
+ #
131
+ # @example
132
+ # Faker::Twitter.screen_name #=> "audreanne_hackett"
133
+ #
134
+ # @faker.version 1.7.3
135
+ def screen_name
136
+ Faker::Internet.username(specifier: nil, separators: ['_'])[0...20]
137
+ end
138
+
139
+ private
140
+
141
+ def id
142
+ Faker::Number.between(from: 1, to: 9_223_372_036_854_775_807)
143
+ end
144
+
145
+ def created_at
146
+ Faker::Date.between(from: '2006-03-21', to: ::Date.today).strftime('%a %b %d %H:%M:%S %z %Y')
147
+ end
148
+
149
+ def utc_offset
150
+ Faker::Number.between(to: -43_200, from: 50_400)
151
+ end
152
+
153
+ def user_entities
154
+ {
155
+ url: {
156
+ urls: []
157
+ },
158
+ description: {
159
+ urls: []
160
+ }
161
+ }
162
+ end
163
+
164
+ def status_entities(legacy_include_photo = NOT_GIVEN, include_photo: false)
165
+ warn_for_deprecated_arguments do |keywords|
166
+ keywords << :include_photo if legacy_include_photo != NOT_GIVEN
167
+ end
168
+
169
+ entities = {
170
+ hashtags: [],
171
+ symbols: [],
172
+ user_mentions: [],
173
+ urls: []
174
+ }
175
+ entities[:media] = [photo_entity] if include_photo
176
+ entities
177
+ end
178
+
179
+ def photo_entity
180
+ # TODO: Dynamic image sizes
181
+ # TODO: Return accurate indices
182
+ media_url = Faker::LoremPixel.image(size: '1064x600')
183
+ media_id = id
184
+ {
185
+ id: media_id,
186
+ id_str: media_id.to_s,
187
+ indices: [
188
+ 103,
189
+ 126
190
+ ],
191
+ media_url: media_url.sub('https://', 'http://'),
192
+ media_url_https: media_url,
193
+ url: Faker::Internet.url(host: 'example.com'),
194
+ display_url: 'example.com',
195
+ expanded_url: Faker::Internet.url(host: 'example.com'),
196
+ type: 'photo',
197
+ sizes: {
198
+ medium: {
199
+ w: 1064,
200
+ h: 600,
201
+ resize: 'fit'
202
+ },
203
+ large: {
204
+ w: 1064,
205
+ h: 600,
206
+ resize: 'fit'
207
+ },
208
+ small: {
209
+ w: 680,
210
+ h: 383,
211
+ resize: 'fit'
212
+ },
213
+ thumb: {
214
+ w: 150,
215
+ h: 150,
216
+ resize: 'crop'
217
+ }
218
+ }
219
+ }
220
+ end
221
+ end
222
+ end
223
+ end
@@ -0,0 +1,182 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Types < Base
5
+ CHARACTERS = ('0'..'9').to_a + ('a'..'z').to_a
6
+ SIMPLE_TYPES = %i[string fixnum].freeze
7
+ COMPLEX_TYPES = %i[hash array].freeze
8
+
9
+ class << self
10
+ ##
11
+ # Produces a random String created from word (Faker::Lorem.word)
12
+ #
13
+ # @return [String]
14
+ #
15
+ # @example
16
+ # Faker::Types.rb_string #=> "foobar"
17
+ #
18
+ # @faker.version 1.8.6
19
+ def rb_string(legacy_words = NOT_GIVEN, words: 1)
20
+ warn_for_deprecated_arguments do |keywords|
21
+ keywords << :words if legacy_words != NOT_GIVEN
22
+ end
23
+
24
+ resolved_num = resolve(words)
25
+ word_list =
26
+ translate('faker.lorem.words')
27
+
28
+ word_list *= ((resolved_num / word_list.length) + 1)
29
+ shuffle(word_list)[0, resolved_num].join(' ')
30
+ end
31
+
32
+ ##
33
+ # Produces a random character from the a-z, 0-9 ranges.
34
+ #
35
+ # @return [String]
36
+ #
37
+ # @example
38
+ # Faker::Types.character #=> "n"
39
+ #
40
+ # @faker.version 1.8.6
41
+ def character
42
+ sample(CHARACTERS)
43
+ end
44
+
45
+ ##
46
+ # Produces a random integer.
47
+ #
48
+ # @return [Integer]
49
+ #
50
+ # @example
51
+ # Faker::Types.rb_integer #=> 1
52
+ #
53
+ # @faker.version 1.8.6
54
+ def rb_integer(legacy_from = NOT_GIVEN, legacy_to = NOT_GIVEN, from: 0, to: 100)
55
+ warn_for_deprecated_arguments do |keywords|
56
+ keywords << :from if legacy_from != NOT_GIVEN
57
+ keywords << :to if legacy_to != NOT_GIVEN
58
+ end
59
+
60
+ rand(from..to).to_i
61
+ end
62
+
63
+ ##
64
+ # Produces a random hash with random keys and values.
65
+ #
66
+ # @param number [Integer] Specifies the number of key-value pairs.
67
+ # @return [Hash]
68
+ #
69
+ # @example
70
+ # Faker::Types.rb_hash #=> {name: "bob"}
71
+ # Faker::Types.rb_hash(number: 1) #=> {name: "bob"}
72
+ # Faker::Types.rb_hash(number: 2) #=> {name: "bob", last: "marley"}
73
+ #
74
+ # @faker.version 1.8.6
75
+ def rb_hash(legacy_number = NOT_GIVEN, legacy_type = NOT_GIVEN, number: 1, type: -> { random_type })
76
+ warn_for_deprecated_arguments do |keywords|
77
+ keywords << :number if legacy_number != NOT_GIVEN
78
+ keywords << :type if legacy_type != NOT_GIVEN
79
+ end
80
+
81
+ {}.tap do |hsh|
82
+ Lorem.words(number: number * 2).uniq.first(number).each do |s|
83
+ value = type.is_a?(Proc) ? type.call : type
84
+ hsh.merge!(s.to_sym => value)
85
+ end
86
+ end
87
+ end
88
+
89
+ ##
90
+ # Produces a random complex hash with random keys and values where the values may include other hashes and arrays.
91
+ #
92
+ # @param number [Integer] Specifies the number of key-value pairs.
93
+ # @return [Hash]
94
+ #
95
+ # @example
96
+ # Faker::Types.complex_rb_hash #=> {user: {first: "bob", last: "marley"}}
97
+ # Faker::Types.complex_rb_hash(number: 1) #=> {user: {first: "bob", last: "marley"}}
98
+ # Faker::Types.complex_rb_hash(number: 2) #=> {user: {first: "bob", last: "marley"}, son: ["damien", "marley"]}
99
+ #
100
+ # @faker.version 1.8.6
101
+ def complex_rb_hash(legacy_number = NOT_GIVEN, number: 1)
102
+ warn_for_deprecated_arguments do |keywords|
103
+ keywords << :number if legacy_number != NOT_GIVEN
104
+ end
105
+
106
+ rb_hash(number: number, type: -> { random_complex_type })
107
+ end
108
+
109
+ ##
110
+ # Produces a random array.
111
+ #
112
+ # @param len [Integer] Specifies the number of elements in the array.
113
+ # @return [Array]
114
+ #
115
+ # @example
116
+ # Faker::Types.rb_array #=> ["a"]
117
+ # Faker::Types.rb_array(len: 4) #=> ["a", 1, 2, "bob"]
118
+ #
119
+ # @faker.version 1.8.6
120
+ def rb_array(legacy_len = NOT_GIVEN, len: 1)
121
+ warn_for_deprecated_arguments do |keywords|
122
+ keywords << :len if legacy_len != NOT_GIVEN
123
+ end
124
+
125
+ [].tap do |ar|
126
+ len.times do
127
+ ar.push random_type
128
+ end
129
+ end
130
+ end
131
+
132
+ ##
133
+ # Produces a random type that's either a String or an Integer.
134
+ #
135
+ # @return [String, Integer]
136
+ #
137
+ # @example
138
+ # Faker::Types.random_type #=> 1 or "a" or "bob"
139
+ #
140
+ # @faker.version 1.8.6
141
+ def random_type
142
+ type_to_use = SIMPLE_TYPES[rand(0..SIMPLE_TYPES.length - 1)]
143
+ case type_to_use
144
+ when :string
145
+ rb_string
146
+ when :fixnum
147
+ rb_integer
148
+ end
149
+ end
150
+
151
+ ##
152
+ # Produces a random complex type that's either a String, an Integer, an array or a hash.
153
+ #
154
+ # @return [String, Integer]
155
+ #
156
+ # @example
157
+ # Faker::Types.random_complex_type #=> 1 or "a" or "bob" or {foo: "bar"}
158
+ #
159
+ # @faker.version 1.8.6
160
+ def random_complex_type
161
+ types = SIMPLE_TYPES + COMPLEX_TYPES
162
+ type_to_use = types[rand(0..types.length - 1)]
163
+ case type_to_use
164
+ when :string
165
+ rb_string
166
+ when :fixnum
167
+ rb_integer
168
+ when :hash
169
+ rb_hash
170
+ when :array
171
+ rb_array
172
+ end
173
+ end
174
+
175
+ private
176
+
177
+ def titleize(word)
178
+ word.split(/(\W)/).map(&:capitalize).join
179
+ end
180
+ end
181
+ end
182
+ end
@@ -0,0 +1,75 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class University < Base
5
+ flexible :university
6
+
7
+ class << self
8
+ ##
9
+ # Produces a random university name.
10
+ #
11
+ # @return [String]
12
+ #
13
+ # @example
14
+ # Faker::University.name #=> "Eastern Mississippi Academy"
15
+ #
16
+ # @faker.version 1.5.0
17
+ def name
18
+ parse('university.name')
19
+ end
20
+
21
+ ##
22
+ # Produces a random university prefix.
23
+ #
24
+ # @return [String]
25
+ #
26
+ # @example
27
+ # Faker::University.prefix #=> "Western"
28
+ #
29
+ # @faker.version 1.5.0
30
+ def prefix
31
+ fetch('university.prefix')
32
+ end
33
+
34
+ ##
35
+ # Produces a random university suffix.
36
+ #
37
+ # @return [String]
38
+ #
39
+ # @example
40
+ # Faker::University.suffix #=> "Academy"
41
+ #
42
+ # @faker.version 1.5.0
43
+ def suffix
44
+ fetch('university.suffix')
45
+ end
46
+
47
+ ##
48
+ # Produces a random greek organization.
49
+ #
50
+ # @return [String]
51
+ #
52
+ # @example
53
+ # Faker::University.greek_organization #=> "BEX"
54
+ #
55
+ # @faker.version 1.5.0
56
+ def greek_organization
57
+ Array.new(3) { |_| sample(greek_alphabet) }.join
58
+ end
59
+
60
+ ##
61
+ # Produces a greek alphabet.
62
+ #
63
+ # @return [Array]
64
+ #
65
+ # @example
66
+ # Faker::University.greek_alphabet #=> ["Α", "B", "Γ", "Δ", ...]
67
+ #
68
+ # @faker.version 1.5.0
69
+ def greek_alphabet
70
+ %w[Α B Γ Δ E Z H Θ I K Λ M N Ξ
71
+ O Π P Σ T Y Φ X Ψ Ω]
72
+ end
73
+ end
74
+ end
75
+ end