faker 2.1.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 (383) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +1192 -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 +253 -0
  8. data/lib/faker/blockchain/bitcoin.rb +34 -0
  9. data/lib/faker/blockchain/ethereum.rb +16 -0
  10. data/lib/faker/blockchain/tezos.rb +51 -0
  11. data/lib/faker/books/book.rb +25 -0
  12. data/lib/faker/books/culture_series.rb +34 -0
  13. data/lib/faker/books/dune.rb +58 -0
  14. data/lib/faker/books/lovecraft.rb +73 -0
  15. data/lib/faker/creature/animal.rb +13 -0
  16. data/lib/faker/creature/cat.rb +23 -0
  17. data/lib/faker/creature/dog.rb +43 -0
  18. data/lib/faker/creature/horse.rb +19 -0
  19. data/lib/faker/default/address.rb +103 -0
  20. data/lib/faker/default/alphanumeric.rb +24 -0
  21. data/lib/faker/default/ancient.rb +23 -0
  22. data/lib/faker/default/app.rb +23 -0
  23. data/lib/faker/default/appliance.rb +15 -0
  24. data/lib/faker/default/artist.rb +11 -0
  25. data/lib/faker/default/avatar.rb +18 -0
  26. data/lib/faker/default/bank.rb +100 -0
  27. data/lib/faker/default/beer.rb +41 -0
  28. data/lib/faker/default/boolean.rb +11 -0
  29. data/lib/faker/default/bossa_nova.rb +15 -0
  30. data/lib/faker/default/business.rb +23 -0
  31. data/lib/faker/default/cannabis.rb +45 -0
  32. data/lib/faker/default/chile_rut.rb +44 -0
  33. data/lib/faker/default/chuck_norris.rb +14 -0
  34. data/lib/faker/default/code.rb +188 -0
  35. data/lib/faker/default/coffee.rb +37 -0
  36. data/lib/faker/default/coin.rb +15 -0
  37. data/lib/faker/default/color.rb +32 -0
  38. data/lib/faker/default/commerce.rb +66 -0
  39. data/lib/faker/default/company.rb +256 -0
  40. data/lib/faker/default/compass.rb +67 -0
  41. data/lib/faker/default/construction.rb +29 -0
  42. data/lib/faker/default/cosmere.rb +48 -0
  43. data/lib/faker/default/crypto.rb +21 -0
  44. data/lib/faker/default/crypto_coin.rb +37 -0
  45. data/lib/faker/default/currency.rb +19 -0
  46. data/lib/faker/default/date.rb +69 -0
  47. data/lib/faker/default/dc_comics.rb +25 -0
  48. data/lib/faker/default/demographic.rb +37 -0
  49. data/lib/faker/default/dessert.rb +21 -0
  50. data/lib/faker/default/device.rb +31 -0
  51. data/lib/faker/default/driving_licence.rb +59 -0
  52. data/lib/faker/default/educator.rb +35 -0
  53. data/lib/faker/default/electrical_components.rb +21 -0
  54. data/lib/faker/default/esport.rb +27 -0
  55. data/lib/faker/default/file.rb +32 -0
  56. data/lib/faker/default/fillmurray.rb +15 -0
  57. data/lib/faker/default/finance.rb +40 -0
  58. data/lib/faker/default/food.rb +49 -0
  59. data/lib/faker/default/funny_name.rb +45 -0
  60. data/lib/faker/default/gender.rb +15 -0
  61. data/lib/faker/default/greek_philosophers.rb +15 -0
  62. data/lib/faker/default/hacker.rb +45 -0
  63. data/lib/faker/default/hipster.rb +58 -0
  64. data/lib/faker/default/house.rb +15 -0
  65. data/lib/faker/default/id_number.rb +119 -0
  66. data/lib/faker/default/industry_segments.rb +25 -0
  67. data/lib/faker/default/internet.rb +207 -0
  68. data/lib/faker/default/invoice.rb +96 -0
  69. data/lib/faker/default/job.rb +25 -0
  70. data/lib/faker/default/json.rb +70 -0
  71. data/lib/faker/default/kpop.rb +31 -0
  72. data/lib/faker/default/lorem.rb +80 -0
  73. data/lib/faker/default/lorem_flickr.rb +45 -0
  74. data/lib/faker/default/lorem_pixel.rb +38 -0
  75. data/lib/faker/default/markdown.rb +79 -0
  76. data/lib/faker/default/marketing.rb +13 -0
  77. data/lib/faker/default/measurement.rb +84 -0
  78. data/lib/faker/default/military.rb +27 -0
  79. data/lib/faker/default/name.rb +54 -0
  80. data/lib/faker/default/nation.rb +33 -0
  81. data/lib/faker/default/nato_phonetic_alphabet.rb +11 -0
  82. data/lib/faker/default/nhs.rb +34 -0
  83. data/lib/faker/default/number.rb +105 -0
  84. data/lib/faker/default/omniauth.rb +330 -0
  85. data/lib/faker/default/phone_number.rb +50 -0
  86. data/lib/faker/default/placeholdit.rb +31 -0
  87. data/lib/faker/default/programming_language.rb +15 -0
  88. data/lib/faker/default/relationship.rb +42 -0
  89. data/lib/faker/default/restaurant.rb +11 -0
  90. data/lib/faker/default/science.rb +19 -0
  91. data/lib/faker/default/slack_emoji.rb +43 -0
  92. data/lib/faker/default/source.rb +20 -0
  93. data/lib/faker/default/south_africa.rb +51 -0
  94. data/lib/faker/default/space.rb +64 -0
  95. data/lib/faker/default/string.rb +45 -0
  96. data/lib/faker/default/stripe.rb +65 -0
  97. data/lib/faker/default/subscription.rb +25 -0
  98. data/lib/faker/default/superhero.rb +27 -0
  99. data/lib/faker/default/team.rb +29 -0
  100. data/lib/faker/default/time.rb +69 -0
  101. data/lib/faker/default/twitter.rb +174 -0
  102. data/lib/faker/default/types.rb +79 -0
  103. data/lib/faker/default/university.rb +30 -0
  104. data/lib/faker/default/vehicle.rb +149 -0
  105. data/lib/faker/default/verb.rb +27 -0
  106. data/lib/faker/default/world_cup.rb +27 -0
  107. data/lib/faker/games/dota.rb +29 -0
  108. data/lib/faker/games/elder_scrolls.rb +41 -0
  109. data/lib/faker/games/fallout.rb +25 -0
  110. data/lib/faker/games/game.rb +21 -0
  111. data/lib/faker/games/half_life.rb +21 -0
  112. data/lib/faker/games/heroes.rb +21 -0
  113. data/lib/faker/games/heroes_of_the_storm.rb +25 -0
  114. data/lib/faker/games/league_of_legends.rb +33 -0
  115. data/lib/faker/games/myst.rb +29 -0
  116. data/lib/faker/games/overwatch.rb +21 -0
  117. data/lib/faker/games/pokemon.rb +21 -0
  118. data/lib/faker/games/sonic_the_hedgehog.rb +21 -0
  119. data/lib/faker/games/super_smash_bros.rb +17 -0
  120. data/lib/faker/games/witcher.rb +33 -0
  121. data/lib/faker/games/world_of_warcraft.rb +17 -0
  122. data/lib/faker/games/zelda.rb +26 -0
  123. data/lib/faker/japanese_media/dragon_ball.rb +13 -0
  124. data/lib/faker/japanese_media/one_piece.rb +33 -0
  125. data/lib/faker/japanese_media/sword_art_online.rb +25 -0
  126. data/lib/faker/movies/back_to_the_future.rb +21 -0
  127. data/lib/faker/movies/ghostbusters.rb +21 -0
  128. data/lib/faker/movies/harry_potter.rb +33 -0
  129. data/lib/faker/movies/hitchhikers_guide_to_the_galaxy.rb +37 -0
  130. data/lib/faker/movies/hobbit.rb +25 -0
  131. data/lib/faker/movies/lebowski.rb +21 -0
  132. data/lib/faker/movies/lord_of_the_rings.rb +21 -0
  133. data/lib/faker/movies/movie.rb +11 -0
  134. data/lib/faker/movies/princess_bride.rb +17 -0
  135. data/lib/faker/movies/star_wars.rb +105 -0
  136. data/lib/faker/movies/v_for_vendetta.rb +21 -0
  137. data/lib/faker/music/grateful_dead.rb +19 -0
  138. data/lib/faker/music/music.rb +47 -0
  139. data/lib/faker/music/opera.rb +26 -0
  140. data/lib/faker/music/phish.rb +13 -0
  141. data/lib/faker/music/rock_band.rb +13 -0
  142. data/lib/faker/music/umphreys_mcgee.rb +13 -0
  143. data/lib/faker/quotes/quote.rb +32 -0
  144. data/lib/faker/quotes/shakespeare.rb +41 -0
  145. data/lib/faker/sports/basketball.rb +25 -0
  146. data/lib/faker/sports/football.rb +29 -0
  147. data/lib/faker/tv_shows/aqua_teen_hunger_force.rb +15 -0
  148. data/lib/faker/tv_shows/bojack_horseman.rb +23 -0
  149. data/lib/faker/tv_shows/breaking_bad.rb +19 -0
  150. data/lib/faker/tv_shows/buffy.rb +31 -0
  151. data/lib/faker/tv_shows/community.rb +19 -0
  152. data/lib/faker/tv_shows/dr_who.rb +39 -0
  153. data/lib/faker/tv_shows/dumb_and_dumber.rb +23 -0
  154. data/lib/faker/tv_shows/family_guy.rb +23 -0
  155. data/lib/faker/tv_shows/friends.rb +23 -0
  156. data/lib/faker/tv_shows/game_of_thrones.rb +31 -0
  157. data/lib/faker/tv_shows/hey_arnold.rb +23 -0
  158. data/lib/faker/tv_shows/how_i_met_your_mother.rb +27 -0
  159. data/lib/faker/tv_shows/michael_scott.rb +13 -0
  160. data/lib/faker/tv_shows/new_girl.rb +19 -0
  161. data/lib/faker/tv_shows/parks_and_rec.rb +19 -0
  162. data/lib/faker/tv_shows/rick_and_morty.rb +23 -0
  163. data/lib/faker/tv_shows/ru_paul.rb +19 -0
  164. data/lib/faker/tv_shows/seinfeld.rb +23 -0
  165. data/lib/faker/tv_shows/silicon_valley.rb +43 -0
  166. data/lib/faker/tv_shows/simpsons.rb +23 -0
  167. data/lib/faker/tv_shows/south_park.rb +19 -0
  168. data/lib/faker/tv_shows/star_trek.rb +27 -0
  169. data/lib/faker/tv_shows/stargate.rb +23 -0
  170. data/lib/faker/tv_shows/stranger_things.rb +19 -0
  171. data/lib/faker/tv_shows/the_expanse.rb +27 -0
  172. data/lib/faker/tv_shows/the_fresh_prince_of_bel_air.rb +23 -0
  173. data/lib/faker/tv_shows/the_it_crowd.rb +27 -0
  174. data/lib/faker/tv_shows/the_thick_of_it.rb +23 -0
  175. data/lib/faker/tv_shows/twin_peaks.rb +23 -0
  176. data/lib/faker/tv_shows/venture_bros.rb +27 -0
  177. data/lib/faker/version.rb +5 -0
  178. data/lib/helpers/base58.rb +22 -0
  179. data/lib/helpers/char.rb +66 -0
  180. data/lib/helpers/unique_generator.rb +56 -0
  181. data/lib/locales/README.md +40 -0
  182. data/lib/locales/ar.yml +102 -0
  183. data/lib/locales/bg.yml +44 -0
  184. data/lib/locales/ca-CAT.yml +24 -0
  185. data/lib/locales/ca.yml +31 -0
  186. data/lib/locales/da-DK.yml +73 -0
  187. data/lib/locales/de-AT.yml +56 -0
  188. data/lib/locales/de-CH.yml +19 -0
  189. data/lib/locales/de.yml +174 -0
  190. data/lib/locales/ee.yml +61 -0
  191. data/lib/locales/en-AU.yml +28 -0
  192. data/lib/locales/en-BORK.yml +4 -0
  193. data/lib/locales/en-CA.yml +36 -0
  194. data/lib/locales/en-GB.yml +14 -0
  195. data/lib/locales/en-IND.yml +25 -0
  196. data/lib/locales/en-MS.yml +47 -0
  197. data/lib/locales/en-NEP.yml +49 -0
  198. data/lib/locales/en-NG.yml +77 -0
  199. data/lib/locales/en-NZ.yml +39 -0
  200. data/lib/locales/en-PAK.yml +18 -0
  201. data/lib/locales/en-SG.yml +35 -0
  202. data/lib/locales/en-UG.yml +128 -0
  203. data/lib/locales/en-US.yml +103 -0
  204. data/lib/locales/en-ZA.yml +148 -0
  205. data/lib/locales/en-au-ocker.yml +33 -0
  206. data/lib/locales/en.yml +60 -0
  207. data/lib/locales/en/README.md +13 -0
  208. data/lib/locales/en/address.yml +581 -0
  209. data/lib/locales/en/ancient.yml +7 -0
  210. data/lib/locales/en/animal.yml +6 -0
  211. data/lib/locales/en/app.yml +8 -0
  212. data/lib/locales/en/appliance.yml +5 -0
  213. data/lib/locales/en/aqua_teen_hunger_force.yml +4 -0
  214. data/lib/locales/en/artist.yml +4 -0
  215. data/lib/locales/en/back_to_the_future.yml +120 -0
  216. data/lib/locales/en/bank.yml +302 -0
  217. data/lib/locales/en/basketball.yml +99 -0
  218. data/lib/locales/en/beer.yml +9 -0
  219. data/lib/locales/en/bojack_horseman.yml +6 -0
  220. data/lib/locales/en/book.yml +7 -0
  221. data/lib/locales/en/bossa_nova.yml +6 -0
  222. data/lib/locales/en/breaking_bad.yml +28 -0
  223. data/lib/locales/en/buffy.yml +260 -0
  224. data/lib/locales/en/business.yml +5 -0
  225. data/lib/locales/en/cannabis.yml +13 -0
  226. data/lib/locales/en/cat.yml +7 -0
  227. data/lib/locales/en/chuck_norris.yml +82 -0
  228. data/lib/locales/en/code.yml +4 -0
  229. data/lib/locales/en/coffee.yml +31 -0
  230. data/lib/locales/en/coin.yml +6 -0
  231. data/lib/locales/en/color.yml +4 -0
  232. data/lib/locales/en/commerce.yml +11 -0
  233. data/lib/locales/en/community.yml +33 -0
  234. data/lib/locales/en/company.yml +22 -0
  235. data/lib/locales/en/compass.yml +34 -0
  236. data/lib/locales/en/construction.yml +425 -0
  237. data/lib/locales/en/cosmere.yml +57 -0
  238. data/lib/locales/en/crypto_coin.yml +25 -0
  239. data/lib/locales/en/culture_series.yml +307 -0
  240. data/lib/locales/en/currency.yml +6 -0
  241. data/lib/locales/en/dc_comics.yml +52 -0
  242. data/lib/locales/en/demographic.yml +8 -0
  243. data/lib/locales/en/dessert.yml +6 -0
  244. data/lib/locales/en/device.yml +7 -0
  245. data/lib/locales/en/dog.yml +11 -0
  246. data/lib/locales/en/dota.yml +105 -0
  247. data/lib/locales/en/dr_who.yml +96 -0
  248. data/lib/locales/en/dragon_ball.yml +4 -0
  249. data/lib/locales/en/dumb_and_dumber.yml +59 -0
  250. data/lib/locales/en/dune.yml +159 -0
  251. data/lib/locales/en/educator.yml +11 -0
  252. data/lib/locales/en/elder_scrolls.yml +11 -0
  253. data/lib/locales/en/electrical_components.yml +6 -0
  254. data/lib/locales/en/esport.yml +8 -0
  255. data/lib/locales/en/fallout.yml +137 -0
  256. data/lib/locales/en/family_guy.yml +7 -0
  257. data/lib/locales/en/file.yml +5 -0
  258. data/lib/locales/en/finance.yml +113 -0
  259. data/lib/locales/en/food.yml +13 -0
  260. data/lib/locales/en/football.yml +8 -0
  261. data/lib/locales/en/fresh_prince_of_bel_air.yml +73 -0
  262. data/lib/locales/en/friends.yml +6 -0
  263. data/lib/locales/en/funny_name.yml +4 -0
  264. data/lib/locales/en/game.yml +283 -0
  265. data/lib/locales/en/game_of_thrones.yml +8 -0
  266. data/lib/locales/en/gender.yml +5 -0
  267. data/lib/locales/en/ghostbusters.yml +91 -0
  268. data/lib/locales/en/grateful_dead.yml +48 -0
  269. data/lib/locales/en/greek_philosophers.yml +26 -0
  270. data/lib/locales/en/hacker.yml +8 -0
  271. data/lib/locales/en/half_life.yml +7 -0
  272. data/lib/locales/en/harry_potter.yml +9 -0
  273. data/lib/locales/en/heroes.yml +6 -0
  274. data/lib/locales/en/heroes_of_the_storm.yml +7 -0
  275. data/lib/locales/en/hey_arnold.yml +24 -0
  276. data/lib/locales/en/hipster.yml +4 -0
  277. data/lib/locales/en/hitchhikers_guide_to_the_galaxy.yml +45 -0
  278. data/lib/locales/en/hobbit.yml +19 -0
  279. data/lib/locales/en/horse.yml +6 -0
  280. data/lib/locales/en/house.yml +5 -0
  281. data/lib/locales/en/how_i_met_your_mother.yml +28 -0
  282. data/lib/locales/en/id_number.yml +5 -0
  283. data/lib/locales/en/industry_segments.yml +7 -0
  284. data/lib/locales/en/internet.yml +21 -0
  285. data/lib/locales/en/invoice.yml +6 -0
  286. data/lib/locales/en/job.yml +15 -0
  287. data/lib/locales/en/kpop.yml +83 -0
  288. data/lib/locales/en/league_of_legends.yml +10 -0
  289. data/lib/locales/en/lebowski.yml +43 -0
  290. data/lib/locales/en/lord_of_the_rings.yml +6 -0
  291. data/lib/locales/en/lorem.yml +11 -0
  292. data/lib/locales/en/lovecraft.yml +9 -0
  293. data/lib/locales/en/markdown.yml +5 -0
  294. data/lib/locales/en/marketing.yml +4 -0
  295. data/lib/locales/en/measurement.yml +11 -0
  296. data/lib/locales/en/michael_scott.yml +45 -0
  297. data/lib/locales/en/military.yml +8 -0
  298. data/lib/locales/en/movie.yml +5 -0
  299. data/lib/locales/en/music.yml +32 -0
  300. data/lib/locales/en/myst.yml +48 -0
  301. data/lib/locales/en/name.yml +25 -0
  302. data/lib/locales/en/nation.yml +11 -0
  303. data/lib/locales/en/nato_phonetic_alphabet.yml +4 -0
  304. data/lib/locales/en/new_girl.yml +40 -0
  305. data/lib/locales/en/one_piece.yml +9 -0
  306. data/lib/locales/en/opera.yml +172 -0
  307. data/lib/locales/en/overwatch.yml +41 -0
  308. data/lib/locales/en/parks_and_rec.yml +7 -0
  309. data/lib/locales/en/phish.yml +4 -0
  310. data/lib/locales/en/phone_number.yml +7 -0
  311. data/lib/locales/en/pokemon.yml +8 -0
  312. data/lib/locales/en/princess_bride.yml +5 -0
  313. data/lib/locales/en/programming_language.yml +6 -0
  314. data/lib/locales/en/quote.yml +166 -0
  315. data/lib/locales/en/relationship.yml +10 -0
  316. data/lib/locales/en/restaurant.yml +129 -0
  317. data/lib/locales/en/rick_and_morty.yml +6 -0
  318. data/lib/locales/en/rock_band.yml +4 -0
  319. data/lib/locales/en/rupaul.yml +125 -0
  320. data/lib/locales/en/science.yml +6 -0
  321. data/lib/locales/en/seinfeld.yml +6 -0
  322. data/lib/locales/en/shakespeare.yml +56 -0
  323. data/lib/locales/en/silicon_valley.yml +53 -0
  324. data/lib/locales/en/simpsons.yml +26 -0
  325. data/lib/locales/en/slack_emoji.yml +20 -0
  326. data/lib/locales/en/sonic_the_hedgehog.yml +410 -0
  327. data/lib/locales/en/source.yml +16 -0
  328. data/lib/locales/en/south_park.yml +5 -0
  329. data/lib/locales/en/space.yml +17 -0
  330. data/lib/locales/en/star_trek.yml +7 -0
  331. data/lib/locales/en/star_wars.yml +258 -0
  332. data/lib/locales/en/stargate.yml +21 -0
  333. data/lib/locales/en/stranger_thing.yml +36 -0
  334. data/lib/locales/en/stripe.yml +42 -0
  335. data/lib/locales/en/subscription.yml +8 -0
  336. data/lib/locales/en/super_smash_bros.yml +205 -0
  337. data/lib/locales/en/superhero.yml +12 -0
  338. data/lib/locales/en/sword_art_online.yml +334 -0
  339. data/lib/locales/en/team.yml +8 -0
  340. data/lib/locales/en/the_expanse.yml +7 -0
  341. data/lib/locales/en/the_it_crowd.yml +155 -0
  342. data/lib/locales/en/the_thick_of_it.yml +6 -0
  343. data/lib/locales/en/twin_peaks.yml +6 -0
  344. data/lib/locales/en/umphreys_mcgee.yml +4 -0
  345. data/lib/locales/en/university.yml +10 -0
  346. data/lib/locales/en/v_for_vendetta.yml +163 -0
  347. data/lib/locales/en/vehicle.yml +80 -0
  348. data/lib/locales/en/venture_bros.yml +7 -0
  349. data/lib/locales/en/verbs.yml +8 -0
  350. data/lib/locales/en/witcher.yml +11 -0
  351. data/lib/locales/en/world_cup.yml +271 -0
  352. data/lib/locales/en/world_of_warcraft.yml +8 -0
  353. data/lib/locales/en/yoda.yml +4 -0
  354. data/lib/locales/en/zelda.yml +8 -0
  355. data/lib/locales/es-MX.yml +102 -0
  356. data/lib/locales/es.yml +94 -0
  357. data/lib/locales/fa.yml +10 -0
  358. data/lib/locales/fi-FI.yml +35 -0
  359. data/lib/locales/fr-CA.yml +90 -0
  360. data/lib/locales/fr-CH.yml +78 -0
  361. data/lib/locales/fr.yml +114 -0
  362. data/lib/locales/he.yml +27 -0
  363. data/lib/locales/hy.yml +416 -0
  364. data/lib/locales/id.yml +23 -0
  365. data/lib/locales/it.yml +70 -0
  366. data/lib/locales/ja.yml +98 -0
  367. data/lib/locales/ko.yml +40 -0
  368. data/lib/locales/lv.yml +55 -0
  369. data/lib/locales/nb-NO.yml +62 -0
  370. data/lib/locales/nl.yml +92 -0
  371. data/lib/locales/no.yml +7 -0
  372. data/lib/locales/pl.yml +77 -0
  373. data/lib/locales/pt-BR.yml +697 -0
  374. data/lib/locales/pt.yml +66 -0
  375. data/lib/locales/ru.yml +76 -0
  376. data/lib/locales/sk.yml +78 -0
  377. data/lib/locales/sv.yml +81 -0
  378. data/lib/locales/tr.yml +40 -0
  379. data/lib/locales/uk.yml +86 -0
  380. data/lib/locales/vi.yml +68 -0
  381. data/lib/locales/zh-CN.yml +56 -0
  382. data/lib/locales/zh-TW.yml +29 -0
  383. metadata +543 -0
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Fillmurray < Base
5
+ class << self
6
+ def image(grayscale: false, width: 200, height: 200)
7
+ raise ArgumentError, 'Width should be a number' unless width.to_s =~ /^\d+$/
8
+ raise ArgumentError, 'Height should be a number' unless height.to_s =~ /^\d+$/
9
+ raise ArgumentError, 'Grayscale should be a boolean' unless [true, false].include?(grayscale)
10
+
11
+ "https://www.fillmurray.com#{'/g' if grayscale == true}/#{width}/#{height}"
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Finance < Base
5
+ CREDIT_CARD_TYPES = %i[visa mastercard discover american_express
6
+ diners_club jcb switch solo dankort
7
+ maestro forbrugsforeningen laser].freeze
8
+
9
+ class << self
10
+ def credit_card(*types)
11
+ types = CREDIT_CARD_TYPES if types.empty?
12
+ type = sample(types)
13
+ template = numerify(fetch("finance.credit_card.#{type}"))
14
+
15
+ # calculate the luhn checksum digit
16
+ multiplier = 1
17
+ luhn_sum = template.gsub(/[^0-9]/, '').split('').reverse.map(&:to_i).inject(0) do |sum, digit|
18
+ multiplier = (multiplier == 2 ? 1 : 2)
19
+ sum + (digit * multiplier).to_s.split('').map(&:to_i).inject(0) { |digit_sum, cur| digit_sum + cur }
20
+ end
21
+
22
+ # the sum plus whatever the last digit is must be a multiple of 10. So, the
23
+ # last digit must be 10 - the last digit of the sum.
24
+ luhn_digit = (10 - (luhn_sum % 10)) % 10
25
+
26
+ template.gsub('L', luhn_digit.to_s)
27
+ end
28
+
29
+ def vat_number(country: 'BR')
30
+ numerify(fetch("finance.vat_number.#{country}"))
31
+ rescue I18n::MissingTranslationData
32
+ raise ArgumentError, "Could not find vat number for #{country}"
33
+ end
34
+
35
+ def vat_number_keys
36
+ translate('faker.finance.vat_number').keys
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Food < Base
5
+ flexible :food
6
+
7
+ class << self
8
+ # Retrieves a typical dish from each country
9
+ def dish
10
+ fetch('food.dish')
11
+ end
12
+
13
+ # Retrieves a description about some dish
14
+ def description
15
+ fetch('food.descriptions')
16
+ end
17
+
18
+ # Retrieves an ingredient
19
+ def ingredient
20
+ fetch('food.ingredients')
21
+ end
22
+
23
+ # Retrieves a fruit
24
+ def fruits
25
+ fetch('food.fruits')
26
+ end
27
+
28
+ # Retrieves a vegetable
29
+ def vegetables
30
+ fetch('food.vegetables')
31
+ end
32
+
33
+ # Retrieves some random spice
34
+ def spice
35
+ fetch('food.spices')
36
+ end
37
+
38
+ # Retrieves cooking measures
39
+ def measurement
40
+ fetch('food.measurement_sizes') + ' ' + fetch('food.measurements')
41
+ end
42
+
43
+ # Retrieves metric mesurements
44
+ def metric_measurement
45
+ fetch('food.metric_measurements')
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class FunnyName < Base
5
+ flexible :funny_name
6
+
7
+ class << self
8
+ def name
9
+ fetch('funny_name.name')
10
+ end
11
+
12
+ def two_word_name
13
+ two_word_names = fetch_all('funny_name.name').select do |name|
14
+ name.count(' ') == 1
15
+ end
16
+
17
+ sample(two_word_names)
18
+ end
19
+
20
+ def three_word_name
21
+ three_word_names = fetch_all('funny_name.name').select do |name|
22
+ name.count(' ') == 2
23
+ end
24
+
25
+ sample(three_word_names)
26
+ end
27
+
28
+ def four_word_name
29
+ four_word_names = fetch_all('funny_name.name').select do |name|
30
+ name.count(' ') == 3
31
+ end
32
+
33
+ sample(four_word_names)
34
+ end
35
+
36
+ def name_with_initial
37
+ names_with_initials = fetch_all('funny_name.name').select do |name|
38
+ name.count('.').positive?
39
+ end
40
+
41
+ sample(names_with_initials)
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Gender < Base
5
+ class << self
6
+ def type
7
+ fetch('gender.types')
8
+ end
9
+
10
+ def binary_type
11
+ fetch('gender.binary_types')
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class GreekPhilosophers < Base
5
+ class << self
6
+ def name
7
+ fetch('greek_philosophers.names')
8
+ end
9
+
10
+ def quote
11
+ fetch('greek_philosophers.quotes')
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Port of http://shinytoylabs.com/jargon/
4
+ module Faker
5
+ class Hacker < Base
6
+ flexible :hacker
7
+
8
+ class << self
9
+ def say_something_smart
10
+ sample(phrases)
11
+ end
12
+
13
+ def abbreviation
14
+ fetch('hacker.abbreviation')
15
+ end
16
+
17
+ def adjective
18
+ fetch('hacker.adjective')
19
+ end
20
+
21
+ def noun
22
+ fetch('hacker.noun')
23
+ end
24
+
25
+ def verb
26
+ fetch('hacker.verb')
27
+ end
28
+
29
+ def ingverb
30
+ fetch('hacker.ingverb')
31
+ end
32
+
33
+ def phrases
34
+ ["If we #{verb} the #{noun}, we can get to the #{abbreviation} #{noun} through the #{adjective} #{abbreviation} #{noun}!",
35
+ "We need to #{verb} the #{adjective} #{abbreviation} #{noun}!",
36
+ "Try to #{verb} the #{abbreviation} #{noun}, maybe it will #{verb} the #{adjective} #{noun}!",
37
+ "You can't #{verb} the #{noun} without #{ingverb} the #{adjective} #{abbreviation} #{noun}!",
38
+ "Use the #{adjective} #{abbreviation} #{noun}, then you can #{verb} the #{adjective} #{noun}!",
39
+ "The #{abbreviation} #{noun} is down, #{verb} the #{adjective} #{noun} so we can #{verb} the #{abbreviation} #{noun}!",
40
+ "#{ingverb} the #{noun} won't do anything, we need to #{verb} the #{adjective} #{abbreviation} #{noun}!".capitalize,
41
+ "I'll #{verb} the #{adjective} #{abbreviation} #{noun}, that should #{noun} the #{abbreviation} #{noun}!"]
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,58 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Hipster < Base
5
+ class << self
6
+ def word
7
+ random_word = sample(translate('faker.hipster.words'))
8
+ random_word =~ /\s/ ? word : random_word
9
+ end
10
+
11
+ def words(number: 3, supplemental: false, spaces_allowed: false)
12
+ resolved_num = resolve(number)
13
+ word_list = (
14
+ translate('faker.hipster.words') +
15
+ (supplemental ? translate('faker.lorem.words') : [])
16
+ )
17
+ word_list *= ((resolved_num / word_list.length) + 1)
18
+
19
+ return shuffle(word_list)[0, resolved_num] if spaces_allowed
20
+
21
+ words = shuffle(word_list)[0, resolved_num]
22
+ words.each_with_index { |w, i| words[i] = word if w =~ /\s/ }
23
+ end
24
+
25
+ def sentence(word_count: 4, supplemental: false, random_words_to_add: 6)
26
+ words(number: word_count + rand(random_words_to_add.to_i).to_i, supplemental: supplemental, spaces_allowed: true).join(' ').capitalize + '.'
27
+ end
28
+
29
+ def sentences(number: 3, supplemental: false)
30
+ [].tap do |sentences|
31
+ 1.upto(resolve(number)) do
32
+ sentences << sentence(word_count: 3, supplemental: supplemental)
33
+ end
34
+ end
35
+ end
36
+
37
+ def paragraph(sentence_count: 3, supplemental: false, random_sentences_to_add: 3)
38
+ sentences(number: resolve(sentence_count) + rand(random_sentences_to_add.to_i).to_i, supplemental: supplemental).join(' ')
39
+ end
40
+
41
+ def paragraphs(number: 3, supplemental: false)
42
+ [].tap do |paragraphs|
43
+ 1.upto(resolve(number)) do
44
+ paragraphs << paragraph(sentence_count: 3, supplemental: supplemental)
45
+ end
46
+ end
47
+ end
48
+
49
+ def paragraph_by_chars(characters: 256, supplemental: false)
50
+ paragraph = paragraph(sentence_count: 3, supplemental: supplemental)
51
+
52
+ paragraph += ' ' + paragraph(sentence_count: 3, supplemental: supplemental) while paragraph.length < characters
53
+
54
+ paragraph[0...characters - 1] + '.'
55
+ end
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class House < Base
5
+ class << self
6
+ def furniture
7
+ fetch('house.furniture')
8
+ end
9
+
10
+ def room
11
+ fetch('house.rooms')
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,119 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class IDNumber < Base
5
+ CHECKS = 'TRWAGMYFPDXBNJZSQVHLCKE'
6
+ INVALID_SSN = [
7
+ /0{3}-\d{2}-\d{4}/,
8
+ /\d{3}-0{2}-\d{4}/,
9
+ /\d{3}-\d{2}-0{4}/,
10
+ /666-\d{2}-\d{4}/,
11
+ /9\d{2}-\d{2}-\d{4}/
12
+ ].freeze
13
+ ZA_RACE_DIGIT = '8'
14
+ ZA_CITIZENSHIP_DIGITS = %w[0 1].freeze
15
+
16
+ class << self
17
+ def valid
18
+ _translate('valid')
19
+ end
20
+
21
+ def invalid
22
+ _translate('invalid')
23
+ end
24
+
25
+ def ssn_valid
26
+ ssn = regexify(/[0-8]\d{2}-\d{2}-\d{4}/)
27
+ # We could still have all 0s in one segment or another
28
+ INVALID_SSN.any? { |regex| regex =~ ssn } ? ssn_valid : ssn
29
+ end
30
+
31
+ def spanish_citizen_number
32
+ num = Faker::Number.number(digits: 8)
33
+ mod = num.to_i % 23
34
+ check = CHECKS[mod]
35
+ "#{num}-#{check}"
36
+ end
37
+
38
+ def spanish_foreign_citizen_number
39
+ code = 'XYZ'
40
+ digits = Faker::Number.number(digits: 7)
41
+ prefix = code[rand(code.length)]
42
+ prefix_val = 'XYZ'.index(prefix).to_s
43
+ mod = "#{prefix_val}#{digits}".to_i % 23
44
+ check = CHECKS[mod]
45
+ "#{prefix}-#{digits}-#{check}"
46
+ end
47
+
48
+ def valid_south_african_id_number
49
+ id_number = [
50
+ Faker::Date.birthday.strftime('%y%m%d'),
51
+ Faker::Number.number(digits: 4),
52
+ ZA_CITIZENSHIP_DIGITS.sample(random: Faker::Config.random),
53
+ ZA_RACE_DIGIT
54
+ ].join
55
+
56
+ [id_number, south_african_id_checksum_digit(id_number)].join
57
+ end
58
+
59
+ alias south_african_id_number valid_south_african_id_number
60
+
61
+ def invalid_south_african_id_number
62
+ invalid_date_of_birth = [
63
+ Faker::Number.number(digits: 2),
64
+ Faker::Number.between(from: 13, to: 99),
65
+ Faker::Number.between(from: 32, to: 99)
66
+ ].map(&:to_s).join
67
+
68
+ id_number = [
69
+ invalid_date_of_birth,
70
+ Faker::Number.number(digits: 4),
71
+ ZA_CITIZENSHIP_DIGITS.sample(random: Faker::Config.random),
72
+ ZA_RACE_DIGIT
73
+ ].join
74
+
75
+ [id_number, south_african_id_checksum_digit(id_number)].join
76
+ end
77
+
78
+ def brazilian_citizen_number(formatted: false)
79
+ digits = Faker::Number.leading_zero_number(digits: 9) until digits&.match(/(\d)((?!\1)\d)+/)
80
+ first_digit = brazilian_citizen_number_checksum_digit(digits)
81
+ second_digit = brazilian_citizen_number_checksum_digit(digits + first_digit)
82
+ number = [digits, first_digit, second_digit].join
83
+ formatted ? format('%s.%s.%s-%s', *number.scan(/\d{2,3}/).flatten) : number
84
+ end
85
+
86
+ private
87
+
88
+ def south_african_id_checksum_digit(id_number)
89
+ value_parts = id_number.chars
90
+ even_digits = value_parts
91
+ .select
92
+ .with_index { |_, i| (i + 1).even? }
93
+ odd_digits_without_last_character = value_parts[0...-1]
94
+ .select
95
+ .with_index { |_, i| (i + 1).odd? }
96
+
97
+ sum_of_odd_digits = odd_digits_without_last_character.map(&:to_i).reduce(:+)
98
+ even_digits_times_two = (even_digits.join('').to_i * 2).to_s
99
+ sum_of_even_digits = even_digits_times_two.chars.map(&:to_i).reduce(:+)
100
+
101
+ total_sum = sum_of_odd_digits + sum_of_even_digits
102
+
103
+ ((10 - (total_sum % 10)) % 10).to_s
104
+ end
105
+
106
+ def brazilian_citizen_number_checksum_digit(digits)
107
+ digit_sum = digits.chars.each_with_index.inject(0) do |acc, (digit, i)|
108
+ acc + digit.to_i * (digits.size + 1 - i)
109
+ end * 10
110
+ remainder = digit_sum % 11
111
+ remainder == 10 ? '0' : remainder.to_s
112
+ end
113
+
114
+ def _translate(key)
115
+ parse("id_number.#{key}")
116
+ end
117
+ end
118
+ end
119
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class IndustrySegments < Base
5
+ flexible :industry_segments
6
+
7
+ class << self
8
+ def industry
9
+ fetch('industry_segments.industry')
10
+ end
11
+
12
+ def super_sector
13
+ fetch('industry_segments.super_sector')
14
+ end
15
+
16
+ def sector
17
+ fetch('industry_segments.sector')
18
+ end
19
+
20
+ def sub_sector
21
+ fetch('industry_segments.sub_sector')
22
+ end
23
+ end
24
+ end
25
+ end