faker 2.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (383) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +1282 -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/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 +66 -0
  14. data/lib/faker/books/lovecraft.rb +104 -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 +123 -0
  20. data/lib/faker/default/alphanumeric.rb +56 -0
  21. data/lib/faker/default/ancient.rb +23 -0
  22. data/lib/faker/default/app.rb +31 -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 +28 -0
  26. data/lib/faker/default/bank.rb +108 -0
  27. data/lib/faker/default/beer.rb +41 -0
  28. data/lib/faker/default/boolean.rb +15 -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 +54 -0
  33. data/lib/faker/default/chuck_norris.rb +14 -0
  34. data/lib/faker/default/code.rb +201 -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 +80 -0
  39. data/lib/faker/default/company.rb +264 -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 +49 -0
  45. data/lib/faker/default/currency.rb +19 -0
  46. data/lib/faker/default/date.rb +101 -0
  47. data/lib/faker/default/dc_comics.rb +25 -0
  48. data/lib/faker/default/demographic.rb +41 -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 +65 -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 +49 -0
  56. data/lib/faker/default/fillmurray.rb +23 -0
  57. data/lib/faker/default/finance.rb +44 -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 +97 -0
  64. data/lib/faker/default/house.rb +15 -0
  65. data/lib/faker/default/id_number.rb +164 -0
  66. data/lib/faker/default/industry_segments.rb +25 -0
  67. data/lib/faker/default/internet.rb +283 -0
  68. data/lib/faker/default/invoice.rb +109 -0
  69. data/lib/faker/default/job.rb +25 -0
  70. data/lib/faker/default/json.rb +87 -0
  71. data/lib/faker/default/kpop.rb +31 -0
  72. data/lib/faker/default/lorem.rb +150 -0
  73. data/lib/faker/default/lorem_flickr.rb +78 -0
  74. data/lib/faker/default/lorem_pixel.rb +47 -0
  75. data/lib/faker/default/markdown.rb +84 -0
  76. data/lib/faker/default/marketing.rb +13 -0
  77. data/lib/faker/default/measurement.rb +116 -0
  78. data/lib/faker/default/military.rb +27 -0
  79. data/lib/faker/default/name.rb +58 -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 +38 -0
  83. data/lib/faker/default/number.rb +150 -0
  84. data/lib/faker/default/omniauth.rb +371 -0
  85. data/lib/faker/default/phone_number.rb +54 -0
  86. data/lib/faker/default/placeholdit.rb +41 -0
  87. data/lib/faker/default/programming_language.rb +15 -0
  88. data/lib/faker/default/relationship.rb +46 -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 +35 -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 +49 -0
  96. data/lib/faker/default/stripe.rb +81 -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 +102 -0
  101. data/lib/faker/default/twitter.rb +188 -0
  102. data/lib/faker/default/types.rb +101 -0
  103. data/lib/faker/default/university.rb +30 -0
  104. data/lib/faker/default/vehicle.rb +162 -0
  105. data/lib/faker/default/verb.rb +27 -0
  106. data/lib/faker/default/world_cup.rb +36 -0
  107. data/lib/faker/games/dota.rb +33 -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 +107 -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 +11 -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,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Ancient < Base
5
+ class << self
6
+ def god
7
+ fetch('ancient.god')
8
+ end
9
+
10
+ def primordial
11
+ fetch('ancient.primordial')
12
+ end
13
+
14
+ def titan
15
+ fetch('ancient.titan')
16
+ end
17
+
18
+ def hero
19
+ fetch('ancient.hero')
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class App < Base
5
+ class << self
6
+ def name
7
+ fetch('app.name')
8
+ end
9
+
10
+ def version
11
+ parse('app.version')
12
+ end
13
+
14
+ def author
15
+ parse('app.author')
16
+ end
17
+
18
+ # rubocop:disable Metrics/ParameterLists
19
+ def semantic_version(legacy_major = NOT_GIVEN, legacy_minor = NOT_GIVEN, legacy_patch = NOT_GIVEN, major: 0..9, minor: 0..9, patch: 1..9)
20
+ # rubocop:enable Metrics/ParameterLists
21
+ warn_for_deprecated_arguments do |keywords|
22
+ keywords << :major if legacy_major != NOT_GIVEN
23
+ keywords << :minor if legacy_minor != NOT_GIVEN
24
+ keywords << :patch if legacy_patch != NOT_GIVEN
25
+ end
26
+
27
+ [major, minor, patch].map { |chunk| sample(Array(chunk)) }.join('.')
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Appliance < Base
5
+ class << self
6
+ def brand
7
+ fetch('appliance.brand')
8
+ end
9
+
10
+ def equipment
11
+ fetch('appliance.equipment')
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Artist < Base
5
+ class << self
6
+ def name
7
+ fetch('artist.names')
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Avatar < Base
5
+ class << self
6
+ SUPPORTED_FORMATS = %w[png jpg bmp].freeze
7
+
8
+ # rubocop:disable Metrics/ParameterLists
9
+ def image(legacy_slug = NOT_GIVEN, legacy_size = NOT_GIVEN, legacy_format = NOT_GIVEN, legacy_set = NOT_GIVEN, legacy_bgset = NOT_GIVEN, slug: nil, size: '300x300', format: 'png', set: 'set1', bgset: nil)
10
+ # rubocop:enable Metrics/ParameterLists
11
+ warn_for_deprecated_arguments do |keywords|
12
+ keywords << :slug if legacy_slug != NOT_GIVEN
13
+ keywords << :size if legacy_size != NOT_GIVEN
14
+ keywords << :format if legacy_format != NOT_GIVEN
15
+ keywords << :set if legacy_set != NOT_GIVEN
16
+ keywords << :bgset if legacy_bgset != NOT_GIVEN
17
+ end
18
+
19
+ raise ArgumentError, 'Size should be specified in format 300x300' unless size =~ /^[0-9]+x[0-9]+$/
20
+ raise ArgumentError, "Supported formats are #{SUPPORTED_FORMATS.join(', ')}" unless SUPPORTED_FORMATS.include?(format)
21
+
22
+ slug ||= Faker::Lorem.words.join
23
+ bgset_query = "&bgset=#{bgset}" if bgset
24
+ "https://robohash.org/#{slug}.#{format}?size=#{size}&set=#{set}#{bgset_query}"
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,108 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Bank < Base
5
+ flexible :bank
6
+
7
+ class << self
8
+ def account_number(legacy_digits = NOT_GIVEN, digits: 10)
9
+ warn_for_deprecated_arguments do |keywords|
10
+ keywords << :digits if legacy_digits != NOT_GIVEN
11
+ end
12
+
13
+ output = ''
14
+
15
+ output += rand.to_s[2..-1] while output.length < digits
16
+
17
+ output[0...digits]
18
+ end
19
+
20
+ def iban(legacy_country_code = NOT_GIVEN, country_code: 'GB')
21
+ # Each country has it's own format for bank accounts
22
+ # Many of them use letters in certain parts of the account
23
+ # Using regex patterns we can create virtually any type of bank account
24
+ warn_for_deprecated_arguments do |keywords|
25
+ keywords << :country_code if legacy_country_code != NOT_GIVEN
26
+ end
27
+
28
+ begin
29
+ pattern = fetch("bank.iban_details.#{country_code.downcase}.bban_pattern")
30
+ rescue I18n::MissingTranslationData
31
+ raise ArgumentError, "Could not find iban details for #{country_code}"
32
+ end
33
+
34
+ # Use Faker::Base.regexify for creating a sample from bank account format regex
35
+ account = Base.regexify(/#{pattern}/)
36
+
37
+ # Add country code and checksum to the generated account to form valid IBAN
38
+ country_code.upcase + iban_checksum(country_code, account) + account
39
+ end
40
+
41
+ def name
42
+ fetch('bank.name')
43
+ end
44
+
45
+ def routing_number
46
+ valid_routing_number
47
+ end
48
+
49
+ def routing_number_with_format
50
+ compile_fraction(valid_routing_number)
51
+ end
52
+
53
+ def swift_bic
54
+ fetch('bank.swift_bic')
55
+ end
56
+
57
+ private
58
+
59
+ def checksum(num_string)
60
+ num_array = num_string.split('').map(&:to_i)
61
+ digit = (7 * (num_array[0] + num_array[3] + num_array[6]) + 3 * (num_array[1] + num_array[4] + num_array[7]) + 9 * (num_array[2] + num_array[5])) % 10
62
+ digit == num_array[8]
63
+ end
64
+
65
+ def compile_routing_number
66
+ digit_one_two = %w[00 01 02 03 04 05 06 07 08 09 10 11 12]
67
+ ((21..32).to_a + (61..72).to_a + [80]).each { |x| digit_one_two << x.to_s }
68
+ routing_num = digit_one_two.sample + rand_numstring + rand_numstring + rand_numstring + rand_numstring + rand_numstring + rand_numstring + rand_numstring
69
+ routing_num
70
+ end
71
+
72
+ # Calculates the mandatory checksum in 3rd and 4th characters in IBAN format
73
+ # source: https://en.wikipedia.org/wiki/International_Bank_Account_Number#Validating_the_IBAN
74
+ def iban_checksum(country_code, account)
75
+ # Converts letters to numbers according the iban rules, A=10..Z=35
76
+ account_to_number = "#{account}#{country_code}00".upcase.chars.map do |d|
77
+ d =~ /[A-Z]/ ? (d.ord - 55).to_s : d
78
+ end.join.to_i
79
+
80
+ # This is answer to (iban_to_num + checksum) % 97 == 1
81
+ checksum = (1 - account_to_number) % 97
82
+
83
+ # Use leftpad to make the size always to 2
84
+ checksum.to_s.rjust(2, '0')
85
+ end
86
+
87
+ def valid_routing_number
88
+ for _ in 0..50
89
+ micr = compile_routing_number
90
+
91
+ break if checksum(micr)
92
+ end
93
+ micr
94
+ end
95
+
96
+ def compile_fraction(routing_num)
97
+ prefix = (1..50).to_a.map(&:to_s).sample
98
+ numerator = routing_num.split('')[5..8].join.to_i.to_s
99
+ denominator = routing_num.split('')[0..4].join.to_i.to_s
100
+ prefix + '-' + numerator + '/' + denominator
101
+ end
102
+
103
+ def rand_numstring
104
+ (0..9).to_a.map(&:to_s).sample
105
+ end
106
+ end
107
+ end
108
+ end
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Beer < Base
5
+ flexible :beer
6
+
7
+ class << self
8
+ def name
9
+ fetch('beer.name')
10
+ end
11
+
12
+ def style
13
+ fetch('beer.style')
14
+ end
15
+
16
+ def hop
17
+ fetch('beer.hop')
18
+ end
19
+
20
+ def yeast
21
+ fetch('beer.yeast')
22
+ end
23
+
24
+ def malts
25
+ fetch('beer.malt')
26
+ end
27
+
28
+ def ibu
29
+ rand(10..100).to_s + ' IBU'
30
+ end
31
+
32
+ def alcohol
33
+ rand(2.0..10.0).round(1).to_s + '%'
34
+ end
35
+
36
+ def blg
37
+ rand(5.0..20.0).round(1).to_s + '°Blg'
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Boolean < Base
5
+ class << self
6
+ def boolean(legacy_true_ratio = NOT_GIVEN, true_ratio: 0.5)
7
+ warn_for_deprecated_arguments do |keywords|
8
+ keywords << :true_ratio if legacy_true_ratio != NOT_GIVEN
9
+ end
10
+
11
+ (rand < true_ratio)
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class BossaNova < Base
5
+ class << self
6
+ def artist
7
+ fetch('bossa_nova.artists')
8
+ end
9
+
10
+ def song
11
+ fetch('bossa_nova.songs')
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'date'
4
+
5
+ module Faker
6
+ class Business < Base
7
+ flexible :business
8
+
9
+ class << self
10
+ def credit_card_number
11
+ fetch('business.credit_card_numbers')
12
+ end
13
+
14
+ def credit_card_expiry_date
15
+ ::Date.today + (365 * rand(1..4))
16
+ end
17
+
18
+ def credit_card_type
19
+ fetch('business.credit_card_types')
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Cannabis < Base
5
+ def self.strain
6
+ fetch('cannabis.strains')
7
+ end
8
+
9
+ def self.cannabinoid_abbreviation
10
+ fetch('cannabis.cannabinoid_abbreviations')
11
+ end
12
+
13
+ def self.cannabinoid
14
+ fetch('cannabis.cannabinoids')
15
+ end
16
+
17
+ def self.terpene
18
+ fetch('cannabis.terpenes')
19
+ end
20
+
21
+ def self.medical_use
22
+ fetch('cannabis.medical_uses')
23
+ end
24
+
25
+ def self.health_benefit
26
+ fetch('cannabis.health_benefits')
27
+ end
28
+
29
+ def self.category
30
+ fetch('cannabis.categories')
31
+ end
32
+
33
+ def self.type
34
+ fetch('cannabis.types')
35
+ end
36
+
37
+ def self.buzzword
38
+ fetch('cannabis.buzzwords')
39
+ end
40
+
41
+ def self.brand
42
+ fetch('cannabis.brands')
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,54 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class ChileRut < Base
5
+ class << self
6
+ @last_rut = nil
7
+
8
+ # Fixed param added for testing a specific RUT and check digit combination.
9
+ def rut(legacy_min_rut = NOT_GIVEN, legacy_fixed = NOT_GIVEN, min_rut: 1, fixed: false)
10
+ warn_for_deprecated_arguments do |keywords|
11
+ keywords << :min_rut if legacy_min_rut != NOT_GIVEN
12
+ keywords << :fixed if legacy_fixed != NOT_GIVEN
13
+ end
14
+
15
+ @last_rut = fixed ? min_rut : rand_in_range(min_rut, 99_999_999)
16
+ end
17
+
18
+ def dv
19
+ split_reversed_rut = @last_rut.to_s.reverse.split('')
20
+ seq = [2, 3, 4, 5, 6, 7]
21
+ i = 0
22
+ digit_sum = split_reversed_rut.reduce(0) do |sum, n|
23
+ partial_result = sum.to_i + (n.to_i * seq[i])
24
+ i = i == 5 ? 0 : i + 1
25
+ partial_result
26
+ end
27
+ partial_check_digit = 11 - (digit_sum % 11)
28
+ if partial_check_digit == 11
29
+ '0'
30
+ elsif partial_check_digit == 10
31
+ 'k'
32
+ else
33
+ partial_check_digit.to_s
34
+ end
35
+ end
36
+
37
+ # Alias for english speaking devs.
38
+ def check_digit
39
+ dv
40
+ end
41
+
42
+ def full_rut(legacy_min_rut = NOT_GIVEN, legacy_fixed = NOT_GIVEN, min_rut: 0, fixed: false)
43
+ warn_for_deprecated_arguments do |keywords|
44
+ keywords << :min_rut if legacy_min_rut != NOT_GIVEN
45
+ keywords << :fixed if legacy_fixed != NOT_GIVEN
46
+ end
47
+
48
+ "#{rut(min_rut: min_rut, fixed: fixed)}-#{dv}"
49
+ end
50
+
51
+ attr_reader :last_rut
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class ChuckNorris < Base
5
+ flexible :name
6
+
7
+ class << self
8
+ # from: https://github.com/jenkinsci/chucknorris-plugin/blob/master/src/main/java/hudson/plugins/chucknorris/FactGenerator.java
9
+ def fact
10
+ fetch('chuck_norris.fact')
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,201 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Code < Base
5
+ flexible :code
6
+ class << self
7
+ # Generates a 10 digit NPI (National Provider Identifier
8
+ # issued to health care providers in the United States)
9
+ def npi
10
+ rand(10**10).to_s.rjust(10, '0')
11
+ end
12
+
13
+ # By default generates 10 sign isbn code in format 123456789-X
14
+ # You can pass 13 to generate new 13 sign code
15
+ def isbn(legacy_base = NOT_GIVEN, base: 10)
16
+ warn_for_deprecated_arguments do |keywords|
17
+ keywords << :base if legacy_base != NOT_GIVEN
18
+ end
19
+
20
+ base == 13 ? generate_base13_isbn : generate_base10_isbn
21
+ end
22
+
23
+ # By default generates 13 sign ean code in format 1234567890123
24
+ # You can pass 8 to generate ean8 code
25
+ def ean(legacy_base = NOT_GIVEN, base: 13)
26
+ warn_for_deprecated_arguments do |keywords|
27
+ keywords << :base if legacy_base != NOT_GIVEN
28
+ end
29
+
30
+ base == 8 ? generate_base8_ean : generate_base13_ean
31
+ end
32
+
33
+ def rut
34
+ value = Number.number(digits: 8).to_s
35
+ vd = rut_verificator_digit(value)
36
+ value << "-#{vd}"
37
+ end
38
+
39
+ # By default generates a Singaporean NRIC ID for someone
40
+ # who is born between the age of 18 and 65.
41
+ def nric(legacy_min_age = NOT_GIVEN, legacy_max_age = NOT_GIVEN, min_age: 18, max_age: 65)
42
+ warn_for_deprecated_arguments do |keywords|
43
+ keywords << :min_age if legacy_min_age != NOT_GIVEN
44
+ keywords << :max_age if legacy_max_age != NOT_GIVEN
45
+ end
46
+
47
+ birthyear = Date.birthday(min_age: min_age, max_age: max_age).year
48
+ prefix = birthyear < 2000 ? 'S' : 'T'
49
+ values = birthyear.to_s[-2..-1]
50
+ values << regexify(/\d{5}/)
51
+ check_alpha = generate_nric_check_alphabet(values, prefix)
52
+ "#{prefix}#{values}#{check_alpha}"
53
+ end
54
+
55
+ # Generate GSM modem, device or mobile phone 15 digit IMEI number.
56
+ def imei
57
+ generate_imei
58
+ end
59
+
60
+ # Retrieves a real Amazon ASIN code list taken from
61
+ # https://archive.org/details/asin_listing
62
+ def asin
63
+ fetch('code.asin')
64
+ end
65
+
66
+ # Generates Social Insurance Number issued in Canada
67
+ # https://en.wikipedia.org/wiki/Social_Insurance_Number
68
+ def sin
69
+ # 1 - province or temporary resident
70
+ # 2-8 - random numbers
71
+ # 9 - checksum
72
+
73
+ # 1st digit. 8,0 are not used
74
+ registry = Faker::Base.sample([1, 2, 3, 4, 5, 6, 7, 9]).to_s
75
+
76
+ # generate 2nd to 8th
77
+ partial = Array.new(7) { Faker::Config.random.rand(0..9) }.join
78
+
79
+ # Generate 9th digit
80
+ check_digit = generate_sin_check_digit(registry + partial + '0').to_s
81
+
82
+ registry + partial + check_digit
83
+ end
84
+
85
+ private
86
+
87
+ # Reporting body identifier
88
+ RBI = %w[01 10 30 33 35 44 45 49 50 51 52 53 54 86 91 98 99].freeze
89
+
90
+ def generate_imei
91
+ str = Array.new(15, 0)
92
+ sum = 0
93
+ t = 0
94
+ len_offset = 0
95
+ len = 15
96
+
97
+ # Fill in the first two values of the string based with the specified prefix.
98
+ # Reporting Body Identifier list: http://en.wikipedia.org/wiki/Reporting_Body_Identifier
99
+ arr = sample(RBI)
100
+ str[0] = arr[0].to_i
101
+ str[1] = arr[1].to_i
102
+ pos = 2
103
+
104
+ # Fill all the remaining numbers except for the last one with random values.
105
+ while pos < (len - 1)
106
+ str[pos] = rand(0..9)
107
+ pos += 1
108
+ end
109
+
110
+ # Calculate the Luhn checksum of the values thus far
111
+ len_offset = (len + 1) % 2
112
+ (0..(len - 1)).each do |position|
113
+ if (position + len_offset).odd?
114
+ t = str[position] * 2
115
+
116
+ t -= 9 if t > 9
117
+
118
+ sum += t
119
+ else
120
+ sum += str[position]
121
+ end
122
+ end
123
+
124
+ # Choose the last digit so that it causes the entire string to pass the checksum.
125
+ str[len - 1] = (10 - (sum % 10)) % 10
126
+
127
+ # Output the IMEI value.
128
+ str.join('')
129
+ end
130
+
131
+ def generate_base10_isbn
132
+ values = regexify(/\d{9}/)
133
+ remainder = sum(values) { |value, index| (index + 1) * value.to_i } % 11
134
+ values << "-#{remainder == 10 ? 'X' : remainder}"
135
+ end
136
+
137
+ def generate_base13_isbn
138
+ values = regexify(/\d{12}/)
139
+ remainder = sum(values) { |value, index| index.even? ? value.to_i : value.to_i * 3 } % 10
140
+ values << "-#{((10 - remainder) % 10)}"
141
+ end
142
+
143
+ def sum(values)
144
+ values.split(//).each_with_index.inject(0) do |sum, (value, index)|
145
+ sum + yield(value, index)
146
+ end
147
+ end
148
+
149
+ def generate_base8_ean
150
+ values = regexify(/\d{7}/)
151
+ check_digit = 10 - values.split(//).each_with_index.inject(0) { |s, (v, i)| s + v.to_i * EAN_CHECK_DIGIT8[i] } % 10
152
+ values << (check_digit == 10 ? 0 : check_digit).to_s
153
+ end
154
+
155
+ def generate_base13_ean
156
+ values = regexify(/\d{12}/)
157
+ check_digit = 10 - values.split(//).each_with_index.inject(0) { |s, (v, i)| s + v.to_i * EAN_CHECK_DIGIT13[i] } % 10
158
+ values << (check_digit == 10 ? 0 : check_digit).to_s
159
+ end
160
+
161
+ EAN_CHECK_DIGIT8 = [3, 1, 3, 1, 3, 1, 3].freeze
162
+ EAN_CHECK_DIGIT13 = [1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3].freeze
163
+
164
+ def rut_verificator_digit(rut)
165
+ total = rut.to_s.rjust(8, '0').split(//).zip(%w[3 2 7 6 5 4 3 2]).collect { |a, b| a.to_i * b.to_i }.inject(:+)
166
+ (11 - total % 11).to_s.gsub(/10/, 'k').gsub(/11/, '0')
167
+ end
168
+
169
+ def generate_nric_check_alphabet(values, prefix)
170
+ weight = %w[2 7 6 5 4 3 2]
171
+ total = values.split(//).zip(weight).collect { |a, b| a.to_i * b.to_i }.inject(:+)
172
+ total += 4 if prefix == 'T'
173
+ %w[A B C D E F G H I Z J][10 - total % 11]
174
+ end
175
+
176
+ def generate_sin_check_digit(digits)
177
+ # Fast Luhn checksum code from luhn.js:
178
+ # https://gist.github.com/ShirtlessKirk/2134376
179
+
180
+ len = 9
181
+ mul = 0
182
+
183
+ luhn_arr = [
184
+ [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
185
+ [0, 2, 4, 6, 8, 1, 3, 5, 7, 9]
186
+ ]
187
+ sum = 0
188
+
189
+ while len.positive?
190
+ len -= 1
191
+ num = digits[len].to_i
192
+ sum += luhn_arr[mul][num]
193
+ mul ^= 1
194
+ end
195
+
196
+ checksum = sum % 10
197
+ checksum.zero? ? checksum : (10 - checksum)
198
+ end
199
+ end
200
+ end
201
+ end