faker 2.6.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 (386) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +1384 -0
  3. data/History.md +176 -0
  4. data/License.txt +20 -0
  5. data/README.md +364 -0
  6. data/bin/faker +5 -0
  7. data/lib/faker.rb +308 -0
  8. data/lib/faker/blockchain/aeternity.rb +70 -0
  9. data/lib/faker/blockchain/bitcoin.rb +60 -0
  10. data/lib/faker/blockchain/ethereum.rb +26 -0
  11. data/lib/faker/blockchain/tezos.rb +107 -0
  12. data/lib/faker/books/book.rb +61 -0
  13. data/lib/faker/books/culture_series.rb +83 -0
  14. data/lib/faker/books/dune.rb +119 -0
  15. data/lib/faker/books/lovecraft.rb +276 -0
  16. data/lib/faker/creature/animal.rb +22 -0
  17. data/lib/faker/creature/cat.rb +50 -0
  18. data/lib/faker/creature/dog.rb +115 -0
  19. data/lib/faker/creature/horse.rb +37 -0
  20. data/lib/faker/default/address.rb +123 -0
  21. data/lib/faker/default/alphanumeric.rb +73 -0
  22. data/lib/faker/default/ancient.rb +23 -0
  23. data/lib/faker/default/app.rb +77 -0
  24. data/lib/faker/default/appliance.rb +33 -0
  25. data/lib/faker/default/artist.rb +20 -0
  26. data/lib/faker/default/avatar.rb +60 -0
  27. data/lib/faker/default/bank.rb +108 -0
  28. data/lib/faker/default/beer.rb +41 -0
  29. data/lib/faker/default/boolean.rb +26 -0
  30. data/lib/faker/default/bossa_nova.rb +15 -0
  31. data/lib/faker/default/business.rb +23 -0
  32. data/lib/faker/default/cannabis.rb +45 -0
  33. data/lib/faker/default/chile_rut.rb +54 -0
  34. data/lib/faker/default/chuck_norris.rb +14 -0
  35. data/lib/faker/default/code.rb +201 -0
  36. data/lib/faker/default/coffee.rb +37 -0
  37. data/lib/faker/default/coin.rb +15 -0
  38. data/lib/faker/default/color.rb +32 -0
  39. data/lib/faker/default/commerce.rb +80 -0
  40. data/lib/faker/default/company.rb +264 -0
  41. data/lib/faker/default/compass.rb +67 -0
  42. data/lib/faker/default/construction.rb +29 -0
  43. data/lib/faker/default/cosmere.rb +48 -0
  44. data/lib/faker/default/crypto.rb +21 -0
  45. data/lib/faker/default/crypto_coin.rb +49 -0
  46. data/lib/faker/default/currency.rb +19 -0
  47. data/lib/faker/default/date.rb +182 -0
  48. data/lib/faker/default/dc_comics.rb +25 -0
  49. data/lib/faker/default/demographic.rb +41 -0
  50. data/lib/faker/default/dessert.rb +48 -0
  51. data/lib/faker/default/device.rb +85 -0
  52. data/lib/faker/default/driving_licence.rb +65 -0
  53. data/lib/faker/default/educator.rb +35 -0
  54. data/lib/faker/default/electrical_components.rb +48 -0
  55. data/lib/faker/default/esport.rb +27 -0
  56. data/lib/faker/default/file.rb +49 -0
  57. data/lib/faker/default/fillmurray.rb +23 -0
  58. data/lib/faker/default/finance.rb +44 -0
  59. data/lib/faker/default/food.rb +49 -0
  60. data/lib/faker/default/funny_name.rb +45 -0
  61. data/lib/faker/default/gender.rb +33 -0
  62. data/lib/faker/default/greek_philosophers.rb +33 -0
  63. data/lib/faker/default/hacker.rb +103 -0
  64. data/lib/faker/default/hipster.rb +97 -0
  65. data/lib/faker/default/house.rb +33 -0
  66. data/lib/faker/default/id_number.rb +164 -0
  67. data/lib/faker/default/industry_segments.rb +61 -0
  68. data/lib/faker/default/internet.rb +291 -0
  69. data/lib/faker/default/invoice.rb +109 -0
  70. data/lib/faker/default/job.rb +25 -0
  71. data/lib/faker/default/json.rb +87 -0
  72. data/lib/faker/default/kpop.rb +31 -0
  73. data/lib/faker/default/lorem.rb +151 -0
  74. data/lib/faker/default/lorem_flickr.rb +78 -0
  75. data/lib/faker/default/lorem_pixel.rb +47 -0
  76. data/lib/faker/default/markdown.rb +84 -0
  77. data/lib/faker/default/marketing.rb +22 -0
  78. data/lib/faker/default/measurement.rb +116 -0
  79. data/lib/faker/default/military.rb +72 -0
  80. data/lib/faker/default/name.rb +58 -0
  81. data/lib/faker/default/nation.rb +76 -0
  82. data/lib/faker/default/nato_phonetic_alphabet.rb +20 -0
  83. data/lib/faker/default/nhs.rb +38 -0
  84. data/lib/faker/default/number.rb +274 -0
  85. data/lib/faker/default/omniauth.rb +413 -0
  86. data/lib/faker/default/phone_number.rb +54 -0
  87. data/lib/faker/default/placeholdit.rb +41 -0
  88. data/lib/faker/default/programming_language.rb +33 -0
  89. data/lib/faker/default/relationship.rb +46 -0
  90. data/lib/faker/default/restaurant.rb +63 -0
  91. data/lib/faker/default/science.rb +46 -0
  92. data/lib/faker/default/slack_emoji.rb +43 -0
  93. data/lib/faker/default/source.rb +76 -0
  94. data/lib/faker/default/south_africa.rb +51 -0
  95. data/lib/faker/default/space.rb +64 -0
  96. data/lib/faker/default/string.rb +49 -0
  97. data/lib/faker/default/stripe.rb +81 -0
  98. data/lib/faker/default/subscription.rb +70 -0
  99. data/lib/faker/default/superhero.rb +72 -0
  100. data/lib/faker/default/team.rb +29 -0
  101. data/lib/faker/default/time.rb +179 -0
  102. data/lib/faker/default/twitter.rb +188 -0
  103. data/lib/faker/default/types.rb +101 -0
  104. data/lib/faker/default/university.rb +30 -0
  105. data/lib/faker/default/vehicle.rb +162 -0
  106. data/lib/faker/default/verb.rb +27 -0
  107. data/lib/faker/default/world_cup.rb +86 -0
  108. data/lib/faker/games/dota.rb +80 -0
  109. data/lib/faker/games/elder_scrolls.rb +113 -0
  110. data/lib/faker/games/fallout.rb +62 -0
  111. data/lib/faker/games/game.rb +48 -0
  112. data/lib/faker/games/half_life.rb +48 -0
  113. data/lib/faker/games/heroes.rb +48 -0
  114. data/lib/faker/games/heroes_of_the_storm.rb +61 -0
  115. data/lib/faker/games/league_of_legends.rb +87 -0
  116. data/lib/faker/games/myst.rb +74 -0
  117. data/lib/faker/games/overwatch.rb +48 -0
  118. data/lib/faker/games/pokemon.rb +48 -0
  119. data/lib/faker/games/sonic_the_hedgehog.rb +48 -0
  120. data/lib/faker/games/super_smash_bros.rb +35 -0
  121. data/lib/faker/games/witcher.rb +87 -0
  122. data/lib/faker/games/world_of_warcraft.rb +35 -0
  123. data/lib/faker/games/zelda.rb +62 -0
  124. data/lib/faker/japanese_media/dragon_ball.rb +22 -0
  125. data/lib/faker/japanese_media/one_piece.rb +87 -0
  126. data/lib/faker/japanese_media/sword_art_online.rb +61 -0
  127. data/lib/faker/movies/back_to_the_future.rb +49 -0
  128. data/lib/faker/movies/ghostbusters.rb +49 -0
  129. data/lib/faker/movies/harry_potter.rb +87 -0
  130. data/lib/faker/movies/hitchhikers_guide_to_the_galaxy.rb +106 -0
  131. data/lib/faker/movies/hobbit.rb +62 -0
  132. data/lib/faker/movies/lebowski.rb +48 -0
  133. data/lib/faker/movies/lord_of_the_rings.rb +49 -0
  134. data/lib/faker/movies/movie.rb +20 -0
  135. data/lib/faker/movies/princess_bride.rb +36 -0
  136. data/lib/faker/movies/star_wars.rb +201 -0
  137. data/lib/faker/movies/v_for_vendetta.rb +50 -0
  138. data/lib/faker/music/grateful_dead.rb +37 -0
  139. data/lib/faker/music/music.rb +47 -0
  140. data/lib/faker/music/opera.rb +26 -0
  141. data/lib/faker/music/phish.rb +22 -0
  142. data/lib/faker/music/rock_band.rb +22 -0
  143. data/lib/faker/music/umphreys_mcgee.rb +22 -0
  144. data/lib/faker/quotes/quote.rb +32 -0
  145. data/lib/faker/quotes/shakespeare.rb +41 -0
  146. data/lib/faker/sports/basketball.rb +61 -0
  147. data/lib/faker/sports/football.rb +74 -0
  148. data/lib/faker/tv_shows/aqua_teen_hunger_force.rb +24 -0
  149. data/lib/faker/tv_shows/bojack_horseman.rb +51 -0
  150. data/lib/faker/tv_shows/breaking_bad.rb +37 -0
  151. data/lib/faker/tv_shows/buffy.rb +76 -0
  152. data/lib/faker/tv_shows/community.rb +38 -0
  153. data/lib/faker/tv_shows/dr_who.rb +115 -0
  154. data/lib/faker/tv_shows/dumb_and_dumber.rb +51 -0
  155. data/lib/faker/tv_shows/family_guy.rb +51 -0
  156. data/lib/faker/tv_shows/friends.rb +50 -0
  157. data/lib/faker/tv_shows/game_of_thrones.rb +77 -0
  158. data/lib/faker/tv_shows/hey_arnold.rb +50 -0
  159. data/lib/faker/tv_shows/how_i_met_your_mother.rb +64 -0
  160. data/lib/faker/tv_shows/michael_scott.rb +26 -0
  161. data/lib/faker/tv_shows/new_girl.rb +38 -0
  162. data/lib/faker/tv_shows/parks_and_rec.rb +37 -0
  163. data/lib/faker/tv_shows/rick_and_morty.rb +51 -0
  164. data/lib/faker/tv_shows/ru_paul.rb +37 -0
  165. data/lib/faker/tv_shows/seinfeld.rb +51 -0
  166. data/lib/faker/tv_shows/silicon_valley.rb +118 -0
  167. data/lib/faker/tv_shows/simpsons.rb +51 -0
  168. data/lib/faker/tv_shows/south_park.rb +38 -0
  169. data/lib/faker/tv_shows/star_trek.rb +63 -0
  170. data/lib/faker/tv_shows/stargate.rb +51 -0
  171. data/lib/faker/tv_shows/stranger_things.rb +38 -0
  172. data/lib/faker/tv_shows/the_expanse.rb +63 -0
  173. data/lib/faker/tv_shows/the_fresh_prince_of_bel_air.rb +51 -0
  174. data/lib/faker/tv_shows/the_it_crowd.rb +64 -0
  175. data/lib/faker/tv_shows/the_thick_of_it.rb +51 -0
  176. data/lib/faker/tv_shows/twin_peaks.rb +51 -0
  177. data/lib/faker/tv_shows/venture_bros.rb +65 -0
  178. data/lib/faker/version.rb +5 -0
  179. data/lib/helpers/base58.rb +22 -0
  180. data/lib/helpers/char.rb +66 -0
  181. data/lib/helpers/unique_generator.rb +56 -0
  182. data/lib/locales/README.md +40 -0
  183. data/lib/locales/ar.yml +102 -0
  184. data/lib/locales/bg.yml +44 -0
  185. data/lib/locales/ca-CAT.yml +24 -0
  186. data/lib/locales/ca.yml +31 -0
  187. data/lib/locales/da-DK.yml +73 -0
  188. data/lib/locales/de-AT.yml +56 -0
  189. data/lib/locales/de-CH.yml +19 -0
  190. data/lib/locales/de.yml +174 -0
  191. data/lib/locales/ee.yml +61 -0
  192. data/lib/locales/en-AU.yml +28 -0
  193. data/lib/locales/en-BORK.yml +4 -0
  194. data/lib/locales/en-CA.yml +36 -0
  195. data/lib/locales/en-GB.yml +14 -0
  196. data/lib/locales/en-IND.yml +25 -0
  197. data/lib/locales/en-MS.yml +47 -0
  198. data/lib/locales/en-NEP.yml +49 -0
  199. data/lib/locales/en-NG.yml +77 -0
  200. data/lib/locales/en-NZ.yml +39 -0
  201. data/lib/locales/en-PAK.yml +18 -0
  202. data/lib/locales/en-SG.yml +35 -0
  203. data/lib/locales/en-TH.yml +360 -0
  204. data/lib/locales/en-UG.yml +128 -0
  205. data/lib/locales/en-US.yml +103 -0
  206. data/lib/locales/en-ZA.yml +148 -0
  207. data/lib/locales/en-au-ocker.yml +33 -0
  208. data/lib/locales/en.yml +11 -0
  209. data/lib/locales/en/README.md +13 -0
  210. data/lib/locales/en/address.yml +581 -0
  211. data/lib/locales/en/ancient.yml +7 -0
  212. data/lib/locales/en/animal.yml +6 -0
  213. data/lib/locales/en/app.yml +8 -0
  214. data/lib/locales/en/appliance.yml +5 -0
  215. data/lib/locales/en/aqua_teen_hunger_force.yml +4 -0
  216. data/lib/locales/en/artist.yml +4 -0
  217. data/lib/locales/en/back_to_the_future.yml +120 -0
  218. data/lib/locales/en/bank.yml +302 -0
  219. data/lib/locales/en/basketball.yml +99 -0
  220. data/lib/locales/en/beer.yml +9 -0
  221. data/lib/locales/en/bojack_horseman.yml +6 -0
  222. data/lib/locales/en/book.yml +7 -0
  223. data/lib/locales/en/bossa_nova.yml +6 -0
  224. data/lib/locales/en/breaking_bad.yml +28 -0
  225. data/lib/locales/en/buffy.yml +260 -0
  226. data/lib/locales/en/business.yml +5 -0
  227. data/lib/locales/en/cannabis.yml +13 -0
  228. data/lib/locales/en/cat.yml +7 -0
  229. data/lib/locales/en/chuck_norris.yml +82 -0
  230. data/lib/locales/en/code.yml +4 -0
  231. data/lib/locales/en/coffee.yml +31 -0
  232. data/lib/locales/en/coin.yml +6 -0
  233. data/lib/locales/en/color.yml +4 -0
  234. data/lib/locales/en/commerce.yml +11 -0
  235. data/lib/locales/en/community.yml +33 -0
  236. data/lib/locales/en/company.yml +22 -0
  237. data/lib/locales/en/compass.yml +34 -0
  238. data/lib/locales/en/construction.yml +425 -0
  239. data/lib/locales/en/cosmere.yml +57 -0
  240. data/lib/locales/en/crypto_coin.yml +25 -0
  241. data/lib/locales/en/culture_series.yml +307 -0
  242. data/lib/locales/en/currency.yml +6 -0
  243. data/lib/locales/en/dc_comics.yml +52 -0
  244. data/lib/locales/en/demographic.yml +8 -0
  245. data/lib/locales/en/dessert.yml +6 -0
  246. data/lib/locales/en/device.yml +7 -0
  247. data/lib/locales/en/dog.yml +11 -0
  248. data/lib/locales/en/dota.yml +105 -0
  249. data/lib/locales/en/dr_who.yml +96 -0
  250. data/lib/locales/en/dragon_ball.yml +4 -0
  251. data/lib/locales/en/dumb_and_dumber.yml +59 -0
  252. data/lib/locales/en/dune.yml +159 -0
  253. data/lib/locales/en/educator.yml +11 -0
  254. data/lib/locales/en/elder_scrolls.yml +11 -0
  255. data/lib/locales/en/electrical_components.yml +6 -0
  256. data/lib/locales/en/esport.yml +8 -0
  257. data/lib/locales/en/fallout.yml +137 -0
  258. data/lib/locales/en/family_guy.yml +7 -0
  259. data/lib/locales/en/file.yml +5 -0
  260. data/lib/locales/en/finance.yml +113 -0
  261. data/lib/locales/en/food.yml +13 -0
  262. data/lib/locales/en/football.yml +8 -0
  263. data/lib/locales/en/fresh_prince_of_bel_air.yml +73 -0
  264. data/lib/locales/en/friends.yml +6 -0
  265. data/lib/locales/en/funny_name.yml +4 -0
  266. data/lib/locales/en/game.yml +283 -0
  267. data/lib/locales/en/game_of_thrones.yml +8 -0
  268. data/lib/locales/en/gender.yml +5 -0
  269. data/lib/locales/en/ghostbusters.yml +91 -0
  270. data/lib/locales/en/grateful_dead.yml +48 -0
  271. data/lib/locales/en/greek_philosophers.yml +26 -0
  272. data/lib/locales/en/hacker.yml +8 -0
  273. data/lib/locales/en/half_life.yml +7 -0
  274. data/lib/locales/en/harry_potter.yml +9 -0
  275. data/lib/locales/en/heroes.yml +6 -0
  276. data/lib/locales/en/heroes_of_the_storm.yml +7 -0
  277. data/lib/locales/en/hey_arnold.yml +24 -0
  278. data/lib/locales/en/hipster.yml +4 -0
  279. data/lib/locales/en/hitchhikers_guide_to_the_galaxy.yml +45 -0
  280. data/lib/locales/en/hobbit.yml +19 -0
  281. data/lib/locales/en/horse.yml +6 -0
  282. data/lib/locales/en/house.yml +5 -0
  283. data/lib/locales/en/how_i_met_your_mother.yml +28 -0
  284. data/lib/locales/en/id_number.yml +5 -0
  285. data/lib/locales/en/industry_segments.yml +7 -0
  286. data/lib/locales/en/internet.yml +21 -0
  287. data/lib/locales/en/invoice.yml +6 -0
  288. data/lib/locales/en/job.yml +15 -0
  289. data/lib/locales/en/kpop.yml +83 -0
  290. data/lib/locales/en/league_of_legends.yml +10 -0
  291. data/lib/locales/en/lebowski.yml +43 -0
  292. data/lib/locales/en/lord_of_the_rings.yml +6 -0
  293. data/lib/locales/en/lorem.yml +11 -0
  294. data/lib/locales/en/lovecraft.yml +9 -0
  295. data/lib/locales/en/markdown.yml +5 -0
  296. data/lib/locales/en/marketing.yml +4 -0
  297. data/lib/locales/en/measurement.yml +11 -0
  298. data/lib/locales/en/michael_scott.yml +45 -0
  299. data/lib/locales/en/military.yml +8 -0
  300. data/lib/locales/en/movie.yml +5 -0
  301. data/lib/locales/en/music.yml +32 -0
  302. data/lib/locales/en/myst.yml +48 -0
  303. data/lib/locales/en/name.yml +25 -0
  304. data/lib/locales/en/nation.yml +11 -0
  305. data/lib/locales/en/nato_phonetic_alphabet.yml +4 -0
  306. data/lib/locales/en/new_girl.yml +40 -0
  307. data/lib/locales/en/one_piece.yml +9 -0
  308. data/lib/locales/en/opera.yml +172 -0
  309. data/lib/locales/en/overwatch.yml +41 -0
  310. data/lib/locales/en/parks_and_rec.yml +7 -0
  311. data/lib/locales/en/phish.yml +4 -0
  312. data/lib/locales/en/phone_number.yml +7 -0
  313. data/lib/locales/en/pokemon.yml +8 -0
  314. data/lib/locales/en/princess_bride.yml +5 -0
  315. data/lib/locales/en/programming_language.yml +6 -0
  316. data/lib/locales/en/quote.yml +166 -0
  317. data/lib/locales/en/relationship.yml +10 -0
  318. data/lib/locales/en/restaurant.yml +129 -0
  319. data/lib/locales/en/rick_and_morty.yml +6 -0
  320. data/lib/locales/en/rock_band.yml +4 -0
  321. data/lib/locales/en/rupaul.yml +125 -0
  322. data/lib/locales/en/science.yml +6 -0
  323. data/lib/locales/en/seinfeld.yml +6 -0
  324. data/lib/locales/en/shakespeare.yml +56 -0
  325. data/lib/locales/en/silicon_valley.yml +53 -0
  326. data/lib/locales/en/simpsons.yml +26 -0
  327. data/lib/locales/en/slack_emoji.yml +20 -0
  328. data/lib/locales/en/sonic_the_hedgehog.yml +410 -0
  329. data/lib/locales/en/source.yml +16 -0
  330. data/lib/locales/en/south_park.yml +5 -0
  331. data/lib/locales/en/space.yml +17 -0
  332. data/lib/locales/en/star_trek.yml +7 -0
  333. data/lib/locales/en/star_wars.yml +258 -0
  334. data/lib/locales/en/stargate.yml +21 -0
  335. data/lib/locales/en/stranger_thing.yml +36 -0
  336. data/lib/locales/en/stripe.yml +42 -0
  337. data/lib/locales/en/subscription.yml +8 -0
  338. data/lib/locales/en/super_smash_bros.yml +205 -0
  339. data/lib/locales/en/superhero.yml +12 -0
  340. data/lib/locales/en/sword_art_online.yml +334 -0
  341. data/lib/locales/en/team.yml +8 -0
  342. data/lib/locales/en/the_expanse.yml +7 -0
  343. data/lib/locales/en/the_it_crowd.yml +155 -0
  344. data/lib/locales/en/the_thick_of_it.yml +6 -0
  345. data/lib/locales/en/twin_peaks.yml +6 -0
  346. data/lib/locales/en/umphreys_mcgee.yml +4 -0
  347. data/lib/locales/en/university.yml +10 -0
  348. data/lib/locales/en/v_for_vendetta.yml +163 -0
  349. data/lib/locales/en/vehicle.yml +80 -0
  350. data/lib/locales/en/venture_bros.yml +7 -0
  351. data/lib/locales/en/verbs.yml +8 -0
  352. data/lib/locales/en/witcher.yml +11 -0
  353. data/lib/locales/en/world_cup.yml +271 -0
  354. data/lib/locales/en/world_of_warcraft.yml +8 -0
  355. data/lib/locales/en/yoda.yml +4 -0
  356. data/lib/locales/en/zelda.yml +8 -0
  357. data/lib/locales/es-MX.yml +102 -0
  358. data/lib/locales/es.yml +94 -0
  359. data/lib/locales/fa.yml +10 -0
  360. data/lib/locales/fi-FI.yml +35 -0
  361. data/lib/locales/fr-CA.yml +90 -0
  362. data/lib/locales/fr-CH.yml +78 -0
  363. data/lib/locales/fr.yml +114 -0
  364. data/lib/locales/he.yml +27 -0
  365. data/lib/locales/hy.yml +416 -0
  366. data/lib/locales/id.yml +23 -0
  367. data/lib/locales/it.yml +70 -0
  368. data/lib/locales/ja.yml +97 -0
  369. data/lib/locales/ko.yml +40 -0
  370. data/lib/locales/lv.yml +55 -0
  371. data/lib/locales/nb-NO.yml +62 -0
  372. data/lib/locales/nl.yml +92 -0
  373. data/lib/locales/no.yml +7 -0
  374. data/lib/locales/pl.yml +77 -0
  375. data/lib/locales/pt-BR.yml +697 -0
  376. data/lib/locales/pt.yml +66 -0
  377. data/lib/locales/ru.yml +76 -0
  378. data/lib/locales/sk.yml +78 -0
  379. data/lib/locales/sv.yml +81 -0
  380. data/lib/locales/th.yml +380 -0
  381. data/lib/locales/tr.yml +40 -0
  382. data/lib/locales/uk.yml +86 -0
  383. data/lib/locales/vi.yml +68 -0
  384. data/lib/locales/zh-CN.yml +56 -0
  385. data/lib/locales/zh-TW.yml +29 -0
  386. metadata +568 -0
@@ -0,0 +1,188 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Twitter < Base
5
+ class << self
6
+ def user(legacy_include_status = NOT_GIVEN, legacy_include_email = NOT_GIVEN, include_status: true, include_email: false)
7
+ warn_for_deprecated_arguments do |keywords|
8
+ keywords << :include_status if legacy_include_status != NOT_GIVEN
9
+ keywords << :include_email if legacy_include_email != NOT_GIVEN
10
+ end
11
+
12
+ user_id = id
13
+ background_image_url = Faker::LoremPixel.image(size: '600x400') # TODO: Make the dimensions change
14
+ profile_image_url = Faker::Avatar.image(slug: user_id, size: '48x48')
15
+ user = {
16
+ id: user_id,
17
+ id_str: user_id.to_s,
18
+ contributors_enabled: Faker::Boolean.boolean(true_ratio: 0.1),
19
+ created_at: created_at,
20
+ default_profile_image: Faker::Boolean.boolean(true_ratio: 0.1),
21
+ default_profile: Faker::Boolean.boolean(true_ratio: 0.1),
22
+ description: Faker::Lorem.sentence,
23
+ entities: user_entities,
24
+ favourites_count: Faker::Number.between(to: 1, from: 100_000),
25
+ follow_request_sent: false,
26
+ followers_count: Faker::Number.between(to: 1, from: 10_000_000),
27
+ following: false,
28
+ friends_count: Faker::Number.between(to: 1, from: 100_000),
29
+ geo_enabled: Faker::Boolean.boolean(true_ratio: 0.1),
30
+ is_translation_enabled: Faker::Boolean.boolean(true_ratio: 0.1),
31
+ is_translator: Faker::Boolean.boolean(true_ratio: 0.1),
32
+ lang: Faker::Address.country_code,
33
+ listed_count: Faker::Number.between(to: 1, from: 1000),
34
+ location: "#{Faker::Address.city}, #{Faker::Address.state_abbr}, #{Faker::Address.country_code}",
35
+ name: Faker::Name.name,
36
+ notifications: false,
37
+ profile_background_color: Faker::Color.hex_color,
38
+ profile_background_image_url_https: background_image_url,
39
+ profile_background_image_url: background_image_url.sub('https://', 'http://'),
40
+ profile_background_tile: Faker::Boolean.boolean(true_ratio: 0.1),
41
+ profile_banner_url: Faker::LoremPixel.image(size: '1500x500'),
42
+ profile_image_url_https: profile_image_url,
43
+ profile_image_url: profile_image_url.sub('https://', 'http://'),
44
+ profile_link_color: Faker::Color.hex_color,
45
+ profile_sidebar_border_color: Faker::Color.hex_color,
46
+ profile_sidebar_fill_color: Faker::Color.hex_color,
47
+ profile_text_color: Faker::Color.hex_color,
48
+ profile_use_background_image: Faker::Boolean.boolean(true_ratio: 0.4),
49
+ protected: Faker::Boolean.boolean(true_ratio: 0.1),
50
+ screen_name: screen_name,
51
+ statuses_count: Faker::Number.between(to: 1, from: 100_000),
52
+ time_zone: Faker::Address.time_zone,
53
+ url: Faker::Internet.url(host: 'example.com'),
54
+ utc_offset: utc_offset,
55
+ verified: Faker::Boolean.boolean(true_ratio: 0.1)
56
+ }
57
+ user[:status] = Faker::Twitter.status(include_user: false) if include_status
58
+ user[:email] = Faker::Internet.safe_email if include_email
59
+ user
60
+ end
61
+
62
+ def status(legacy_include_user = NOT_GIVEN, legacy_include_photo = NOT_GIVEN, include_user: true, include_photo: false)
63
+ warn_for_deprecated_arguments do |keywords|
64
+ keywords << :include_user if legacy_include_user != NOT_GIVEN
65
+ keywords << :include_photo if legacy_include_photo != NOT_GIVEN
66
+ end
67
+
68
+ status_id = id
69
+ status = {
70
+ id: status_id,
71
+ id_str: status_id.to_s,
72
+ contributors: nil,
73
+ coordinates: nil,
74
+ created_at: created_at,
75
+ entities: status_entities(include_photo: include_photo),
76
+ favorite_count: Faker::Number.between(to: 1, from: 10_000),
77
+ favorited: false,
78
+ geo: nil,
79
+ in_reply_to_screen_name: nil,
80
+ in_reply_to_status_id: nil,
81
+ in_reply_to_user_id_str: nil,
82
+ in_reply_to_user_id: nil,
83
+ is_quote_status: false,
84
+ lang: Faker::Address.country_code,
85
+ nil: nil,
86
+ place: nil,
87
+ possibly_sensitive: Faker::Boolean.boolean(true_ratio: 0.1),
88
+ retweet_count: Faker::Number.between(to: 1, from: 10_000),
89
+ retweeted_status: nil,
90
+ retweeted: false,
91
+ source: "<a href=\"#{Faker::Internet.url(host: 'example.com')}\" rel=\"nofollow\">#{Faker::Company.name}</a>",
92
+ text: Faker::Lorem.sentence,
93
+ truncated: false
94
+ }
95
+ status[:user] = Faker::Twitter.user(include_status: false) if include_user
96
+ status[:text] = "#{status[:text]} #{status[:entities][:media].first[:url]}" if include_photo
97
+ status
98
+ end
99
+
100
+ def screen_name
101
+ Faker::Internet.username(specifier: nil, separators: ['_'])[0...20]
102
+ end
103
+
104
+ private
105
+
106
+ def id
107
+ Faker::Number.between(from: 1, to: 9_223_372_036_854_775_807)
108
+ end
109
+
110
+ def created_at
111
+ Faker::Date.between(from: '2006-03-21', to: ::Date.today).strftime('%a %b %d %H:%M:%S %z %Y')
112
+ end
113
+
114
+ def utc_offset
115
+ Faker::Number.between(to: -43_200, from: 50_400)
116
+ end
117
+
118
+ def user_entities
119
+ {
120
+ url: {
121
+ urls: []
122
+ },
123
+ description: {
124
+ urls: []
125
+ }
126
+ }
127
+ end
128
+
129
+ def status_entities(legacy_include_photo = NOT_GIVEN, include_photo: false)
130
+ warn_for_deprecated_arguments do |keywords|
131
+ keywords << :include_photo if legacy_include_photo != NOT_GIVEN
132
+ end
133
+
134
+ entities = {
135
+ hashtags: [],
136
+ symbols: [],
137
+ user_mentions: [],
138
+ urls: []
139
+ }
140
+ entities[:media] = [photo_entity] if include_photo
141
+ entities
142
+ end
143
+
144
+ def photo_entity
145
+ # TODO: Dynamic image sizes
146
+ # TODO: Return accurate indices
147
+ media_url = Faker::LoremPixel.image(size: '1064x600')
148
+ media_id = id
149
+ {
150
+ id: media_id,
151
+ id_str: media_id.to_s,
152
+ indices: [
153
+ 103,
154
+ 126
155
+ ],
156
+ media_url: media_url.sub('https://', 'http://'),
157
+ media_url_https: media_url,
158
+ url: Faker::Internet.url(host: 'example.com'),
159
+ display_url: 'example.com',
160
+ expanded_url: Faker::Internet.url(host: 'example.com'),
161
+ type: 'photo',
162
+ sizes: {
163
+ medium: {
164
+ w: 1064,
165
+ h: 600,
166
+ resize: 'fit'
167
+ },
168
+ large: {
169
+ w: 1064,
170
+ h: 600,
171
+ resize: 'fit'
172
+ },
173
+ small: {
174
+ w: 680,
175
+ h: 383,
176
+ resize: 'fit'
177
+ },
178
+ thumb: {
179
+ w: 150,
180
+ h: 150,
181
+ resize: 'crop'
182
+ }
183
+ }
184
+ }
185
+ end
186
+ end
187
+ end
188
+ end
@@ -0,0 +1,101 @@
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
+ def rb_string(legacy_words = NOT_GIVEN, words: 1)
11
+ warn_for_deprecated_arguments do |keywords|
12
+ keywords << :words if legacy_words != NOT_GIVEN
13
+ end
14
+
15
+ resolved_num = resolve(words)
16
+ word_list =
17
+ translate('faker.lorem.words')
18
+
19
+ word_list *= ((resolved_num / word_list.length) + 1)
20
+ shuffle(word_list)[0, resolved_num].join(' ')
21
+ end
22
+
23
+ def character
24
+ sample(CHARACTERS)
25
+ end
26
+
27
+ def rb_integer(legacy_from = NOT_GIVEN, legacy_to = NOT_GIVEN, from: 0, to: 100)
28
+ warn_for_deprecated_arguments do |keywords|
29
+ keywords << :from if legacy_from != NOT_GIVEN
30
+ keywords << :to if legacy_to != NOT_GIVEN
31
+ end
32
+
33
+ rand(from..to).to_i
34
+ end
35
+
36
+ def rb_hash(legacy_number = NOT_GIVEN, legacy_type = NOT_GIVEN, number: 1, type: random_type)
37
+ warn_for_deprecated_arguments do |keywords|
38
+ keywords << :number if legacy_number != NOT_GIVEN
39
+ keywords << :type if legacy_type != NOT_GIVEN
40
+ end
41
+
42
+ {}.tap do |hsh|
43
+ Lorem.words(number: number * 2).uniq.first(number).each do |s|
44
+ hsh.merge!(s.to_sym => type)
45
+ end
46
+ end
47
+ end
48
+
49
+ def complex_rb_hash(legacy_number = NOT_GIVEN, number: 1)
50
+ warn_for_deprecated_arguments do |keywords|
51
+ keywords << :number if legacy_number != NOT_GIVEN
52
+ end
53
+
54
+ rb_hash(number: number, type: random_complex_type)
55
+ end
56
+
57
+ def rb_array(legacy_len = NOT_GIVEN, len: 1)
58
+ warn_for_deprecated_arguments do |keywords|
59
+ keywords << :len if legacy_len != NOT_GIVEN
60
+ end
61
+
62
+ [].tap do |ar|
63
+ len.times do
64
+ ar.push random_type
65
+ end
66
+ end
67
+ end
68
+
69
+ def random_type
70
+ type_to_use = SIMPLE_TYPES[rand(0..SIMPLE_TYPES.length - 1)]
71
+ case type_to_use
72
+ when :string
73
+ rb_string
74
+ when :fixnum
75
+ rb_integer
76
+ end
77
+ end
78
+
79
+ def random_complex_type
80
+ types = SIMPLE_TYPES + COMPLEX_TYPES
81
+ type_to_use = types[rand(0..types.length - 1)]
82
+ case type_to_use
83
+ when :string
84
+ rb_string
85
+ when :fixnum
86
+ rb_integer
87
+ when :hash
88
+ rb_hash
89
+ when :array
90
+ rb_array
91
+ end
92
+ end
93
+
94
+ private
95
+
96
+ def titleize(word)
97
+ word.split(/(\W)/).map(&:capitalize).join
98
+ end
99
+ end
100
+ end
101
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class University < Base
5
+ flexible :university
6
+
7
+ class << self
8
+ def name
9
+ parse('university.name')
10
+ end
11
+
12
+ def prefix
13
+ fetch('university.prefix')
14
+ end
15
+
16
+ def suffix
17
+ fetch('university.suffix')
18
+ end
19
+
20
+ def greek_organization
21
+ Array.new(3) { |_| sample(greek_alphabet) }.join
22
+ end
23
+
24
+ def greek_alphabet
25
+ %w[Α B Γ Δ E Z H Θ I K Λ M N Ξ
26
+ O Π P Σ T Y Φ X Ψ Ω]
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,162 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Vehicle < Base
5
+ flexible :vehicle
6
+
7
+ MILEAGE_MIN = 10_000
8
+ MILEAGE_MAX = 90_000
9
+ VIN_LETTERS = 'ABCDEFGHJKLMNPRSTUVWXYZ'
10
+ VIN_MAP = '0123456789X'
11
+ VIN_WEIGHTS = '8765432X098765432'
12
+ VIN_REGEX = /^[A-Z0-9]{3}[A-Z0-9]{5}[A-Z0-9]{1}[A-Z0-9]{1}[A-Z0-0]{1}[A-Z0-9]{1}\d{5}$/.freeze
13
+ SG_CHECKSUM_WEIGHTS = [3, 14, 2, 12, 2, 11, 1].freeze
14
+ SG_CHECKSUM_CHARS = 'AYUSPLJGDBZXTRMKHEC'
15
+
16
+ class << self
17
+ def vin
18
+ regexify(VIN_REGEX)
19
+ end
20
+
21
+ def manufacture
22
+ fetch('vehicle.manufacture')
23
+ end
24
+
25
+ def make
26
+ fetch('vehicle.makes')
27
+ end
28
+
29
+ def model(legacy_make_of_model = NOT_GIVEN, make_of_model: '')
30
+ warn_for_deprecated_arguments do |keywords|
31
+ keywords << :make_of_model if legacy_make_of_model != NOT_GIVEN
32
+ end
33
+
34
+ return fetch("vehicle.models_by_make.#{make}") if make_of_model.empty?
35
+
36
+ fetch("vehicle.models_by_make.#{make_of_model}")
37
+ end
38
+
39
+ def make_and_model
40
+ m = make
41
+
42
+ "#{m} #{model(make_of_model: m)}"
43
+ end
44
+
45
+ def style
46
+ fetch('vehicle.styles')
47
+ end
48
+
49
+ def color
50
+ fetch('vehicle.colors')
51
+ end
52
+
53
+ def transmission
54
+ fetch('vehicle.transmissions')
55
+ end
56
+
57
+ def drive_type
58
+ fetch('vehicle.drive_types')
59
+ end
60
+
61
+ def fuel_type
62
+ fetch('vehicle.fuel_types')
63
+ end
64
+
65
+ def car_type
66
+ fetch('vehicle.car_types')
67
+ end
68
+
69
+ def engine
70
+ "#{sample(fetch_all('vehicle.doors'))} #{fetch('vehicle.cylinder_engine')}"
71
+ end
72
+
73
+ alias engine_size engine
74
+
75
+ def car_options
76
+ Array.new(rand(5...10)) { fetch('vehicle.car_options') }
77
+ end
78
+
79
+ def standard_specs
80
+ Array.new(rand(5...10)) { fetch('vehicle.standard_specs') }
81
+ end
82
+
83
+ def doors
84
+ sample(fetch_all('vehicle.doors'))
85
+ end
86
+ alias door_count doors
87
+
88
+ def year
89
+ Faker::Time.backward(days: rand_in_range(365, 5475), period: :all, format: '%Y').to_i
90
+ end
91
+
92
+ def mileage(legacy_min = NOT_GIVEN, legacy_max = NOT_GIVEN, min: MILEAGE_MIN, max: MILEAGE_MAX)
93
+ warn_for_deprecated_arguments do |keywords|
94
+ keywords << :min if legacy_min != NOT_GIVEN
95
+ keywords << :max if legacy_max != NOT_GIVEN
96
+ end
97
+
98
+ rand_in_range(min, max)
99
+ end
100
+
101
+ alias kilometrage mileage
102
+
103
+ def license_plate(legacy_state_abreviation = NOT_GIVEN, state_abreviation: '')
104
+ warn_for_deprecated_arguments do |keywords|
105
+ keywords << :state_abreviation if legacy_state_abreviation != NOT_GIVEN
106
+ end
107
+
108
+ return regexify(bothify(fetch('vehicle.license_plate'))) if state_abreviation.empty?
109
+
110
+ key = 'vehicle.license_plate_by_state.' + state_abreviation
111
+ regexify(bothify(fetch(key)))
112
+ end
113
+
114
+ def singapore_license_plate
115
+ key = 'vehicle.license_plate'
116
+ plate_number = regexify(bothify(fetch(key)))
117
+ "#{plate_number}#{singapore_checksum(plate_number)}"
118
+ end
119
+
120
+ private
121
+
122
+ def first_eight(number)
123
+ return number[0...8] unless number.nil?
124
+
125
+ regexify(VIN_REGEX)
126
+ end
127
+ alias last_eight first_eight
128
+
129
+ def calculate_vin_check_digit(vin)
130
+ sum = 0
131
+
132
+ vin.each_char.with_index do |c, i|
133
+ n = vin_char_to_number(c).to_i
134
+ weight = VIN_WEIGHTS[i].to_i
135
+ sum += weight * n
136
+ end
137
+
138
+ mod = sum % 11
139
+ mod == 10 ? 'X' : mod
140
+ end
141
+
142
+ def vin_char_to_number(char)
143
+ index = VIN_LETTERS.split('').index(char)
144
+
145
+ return char.to_i if index.nil?
146
+
147
+ VIN_MAP[index]
148
+ end
149
+
150
+ def singapore_checksum(plate_number)
151
+ padded_alphabets = format('%3s', plate_number[/^[A-Z]+/]).tr(' ', '-').split('')
152
+ padded_digits = format('%04d', plate_number[/\d+/]).split('').map(&:to_i)
153
+ sum = [*padded_alphabets, *padded_digits].each_with_index.reduce(0) do |memo, (char, i)|
154
+ value = char.is_a?(Integer) ? char : char.ord - 64
155
+ memo + (SG_CHECKSUM_WEIGHTS[i] * value)
156
+ end
157
+
158
+ SG_CHECKSUM_CHARS.split('')[sum % 19]
159
+ end
160
+ end
161
+ end
162
+ end