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,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,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Boolean < Base
5
+ class << self
6
+ def boolean(true_ratio: 0.5)
7
+ (rand < true_ratio)
8
+ end
9
+ end
10
+ end
11
+ 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,44 @@
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(min_rut: 1, fixed: false)
10
+ @last_rut = fixed ? min_rut : rand_in_range(min_rut, 99_999_999)
11
+ end
12
+
13
+ def dv
14
+ split_reversed_rut = @last_rut.to_s.reverse.split('')
15
+ seq = [2, 3, 4, 5, 6, 7]
16
+ i = 0
17
+ digit_sum = split_reversed_rut.reduce(0) do |sum, n|
18
+ partial_result = sum.to_i + (n.to_i * seq[i])
19
+ i = i == 5 ? 0 : i + 1
20
+ partial_result
21
+ end
22
+ partial_check_digit = 11 - (digit_sum % 11)
23
+ if partial_check_digit == 11
24
+ '0'
25
+ elsif partial_check_digit == 10
26
+ 'k'
27
+ else
28
+ partial_check_digit.to_s
29
+ end
30
+ end
31
+
32
+ # Alias for english speaking devs.
33
+ def check_digit
34
+ dv
35
+ end
36
+
37
+ def full_rut(min_rut: 0, fixed: false)
38
+ "#{rut(min_rut: min_rut, fixed: fixed)}-#{dv}"
39
+ end
40
+
41
+ attr_reader :last_rut
42
+ end
43
+ end
44
+ 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,188 @@
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(base: 10)
16
+ base == 13 ? generate_base13_isbn : generate_base10_isbn
17
+ end
18
+
19
+ # By default generates 13 sign ean code in format 1234567890123
20
+ # You can pass 8 to generate ean8 code
21
+ def ean(base: 13)
22
+ base == 8 ? generate_base8_ean : generate_base13_ean
23
+ end
24
+
25
+ def rut
26
+ value = Number.number(digits: 8).to_s
27
+ vd = rut_verificator_digit(value)
28
+ value << "-#{vd}"
29
+ end
30
+
31
+ # By default generates a Singaporean NRIC ID for someone
32
+ # who is born between the age of 18 and 65.
33
+ def nric(min_age: 18, max_age: 65)
34
+ birthyear = Date.birthday(min_age: min_age, max_age: max_age).year
35
+ prefix = birthyear < 2000 ? 'S' : 'T'
36
+ values = birthyear.to_s[-2..-1]
37
+ values << regexify(/\d{5}/)
38
+ check_alpha = generate_nric_check_alphabet(values, prefix)
39
+ "#{prefix}#{values}#{check_alpha}"
40
+ end
41
+
42
+ # Generate GSM modem, device or mobile phone 15 digit IMEI number.
43
+ def imei
44
+ generate_imei
45
+ end
46
+
47
+ # Retrieves a real Amazon ASIN code list taken from
48
+ # https://archive.org/details/asin_listing
49
+ def asin
50
+ fetch('code.asin')
51
+ end
52
+
53
+ # Generates Social Insurance Number issued in Canada
54
+ # https://en.wikipedia.org/wiki/Social_Insurance_Number
55
+ def sin
56
+ # 1 - province or temporary resident
57
+ # 2-8 - random numbers
58
+ # 9 - checksum
59
+
60
+ # 1st digit. 8,0 are not used
61
+ registry = Faker::Base.sample([1, 2, 3, 4, 5, 6, 7, 9]).to_s
62
+
63
+ # generate 2nd to 8th
64
+ partial = Array.new(7) { Faker::Config.random.rand(0..9) }.join
65
+
66
+ # Generate 9th digit
67
+ check_digit = generate_sin_check_digit(registry + partial + '0').to_s
68
+
69
+ registry + partial + check_digit
70
+ end
71
+
72
+ private
73
+
74
+ # Reporting body identifier
75
+ RBI = %w[01 10 30 33 35 44 45 49 50 51 52 53 54 86 91 98 99].freeze
76
+
77
+ def generate_imei
78
+ str = Array.new(15, 0)
79
+ sum = 0
80
+ t = 0
81
+ len_offset = 0
82
+ len = 15
83
+
84
+ # Fill in the first two values of the string based with the specified prefix.
85
+ # Reporting Body Identifier list: http://en.wikipedia.org/wiki/Reporting_Body_Identifier
86
+ arr = sample(RBI)
87
+ str[0] = arr[0].to_i
88
+ str[1] = arr[1].to_i
89
+ pos = 2
90
+
91
+ # Fill all the remaining numbers except for the last one with random values.
92
+ while pos < (len - 1)
93
+ str[pos] = rand(0..9)
94
+ pos += 1
95
+ end
96
+
97
+ # Calculate the Luhn checksum of the values thus far
98
+ len_offset = (len + 1) % 2
99
+ (0..(len - 1)).each do |position|
100
+ if (position + len_offset).odd?
101
+ t = str[position] * 2
102
+
103
+ t -= 9 if t > 9
104
+
105
+ sum += t
106
+ else
107
+ sum += str[position]
108
+ end
109
+ end
110
+
111
+ # Choose the last digit so that it causes the entire string to pass the checksum.
112
+ str[len - 1] = (10 - (sum % 10)) % 10
113
+
114
+ # Output the IMEI value.
115
+ str.join('')
116
+ end
117
+
118
+ def generate_base10_isbn
119
+ values = regexify(/\d{9}/)
120
+ remainder = sum(values) { |value, index| (index + 1) * value.to_i } % 11
121
+ values << "-#{remainder == 10 ? 'X' : remainder}"
122
+ end
123
+
124
+ def generate_base13_isbn
125
+ values = regexify(/\d{12}/)
126
+ remainder = sum(values) { |value, index| index.even? ? value.to_i : value.to_i * 3 } % 10
127
+ values << "-#{((10 - remainder) % 10)}"
128
+ end
129
+
130
+ def sum(values)
131
+ values.split(//).each_with_index.inject(0) do |sum, (value, index)|
132
+ sum + yield(value, index)
133
+ end
134
+ end
135
+
136
+ def generate_base8_ean
137
+ values = regexify(/\d{7}/)
138
+ check_digit = 10 - values.split(//).each_with_index.inject(0) { |s, (v, i)| s + v.to_i * EAN_CHECK_DIGIT8[i] } % 10
139
+ values << (check_digit == 10 ? 0 : check_digit).to_s
140
+ end
141
+
142
+ def generate_base13_ean
143
+ values = regexify(/\d{12}/)
144
+ check_digit = 10 - values.split(//).each_with_index.inject(0) { |s, (v, i)| s + v.to_i * EAN_CHECK_DIGIT13[i] } % 10
145
+ values << (check_digit == 10 ? 0 : check_digit).to_s
146
+ end
147
+
148
+ EAN_CHECK_DIGIT8 = [3, 1, 3, 1, 3, 1, 3].freeze
149
+ EAN_CHECK_DIGIT13 = [1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3].freeze
150
+
151
+ def rut_verificator_digit(rut)
152
+ 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(:+)
153
+ (11 - total % 11).to_s.gsub(/10/, 'k').gsub(/11/, '0')
154
+ end
155
+
156
+ def generate_nric_check_alphabet(values, prefix)
157
+ weight = %w[2 7 6 5 4 3 2]
158
+ total = values.split(//).zip(weight).collect { |a, b| a.to_i * b.to_i }.inject(:+)
159
+ total += 4 if prefix == 'T'
160
+ %w[A B C D E F G H I Z J][10 - total % 11]
161
+ end
162
+
163
+ def generate_sin_check_digit(digits)
164
+ # Fast Luhn checksum code from luhn.js:
165
+ # https://gist.github.com/ShirtlessKirk/2134376
166
+
167
+ len = 9
168
+ mul = 0
169
+
170
+ luhn_arr = [
171
+ [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
172
+ [0, 2, 4, 6, 8, 1, 3, 5, 7, 9]
173
+ ]
174
+ sum = 0
175
+
176
+ while len.positive?
177
+ len -= 1
178
+ num = digits[len].to_i
179
+ sum += luhn_arr[mul][num]
180
+ mul ^= 1
181
+ end
182
+
183
+ checksum = sum % 10
184
+ checksum.zero? ? checksum : (10 - checksum)
185
+ end
186
+ end
187
+ end
188
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Coffee < Base
5
+ flexible :coffee
6
+
7
+ class << self
8
+ def blend_name
9
+ parse('coffee.blend_name')
10
+ end
11
+
12
+ def origin
13
+ country = fetch('coffee.country')
14
+ region = fetch("coffee.regions.#{search_format(country)}")
15
+ "#{region}, #{country}"
16
+ end
17
+
18
+ def variety
19
+ fetch('coffee.variety')
20
+ end
21
+
22
+ def notes
23
+ parse('coffee.notes')
24
+ end
25
+
26
+ def intensifier
27
+ fetch('coffee.intensifier')
28
+ end
29
+
30
+ private
31
+
32
+ def search_format(key)
33
+ key.split.length > 1 ? key.split.join('_').downcase : key.downcase
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Coin < Base
5
+ class << self
6
+ def name
7
+ fetch('currency.name')
8
+ end
9
+
10
+ def flip
11
+ fetch('coin.flip')
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Color < Base
5
+ class << self
6
+ def hex_color
7
+ format('#%06x', (rand * 0xffffff))
8
+ end
9
+
10
+ def color_name
11
+ fetch('color.name')
12
+ end
13
+
14
+ def single_rgb_color
15
+ sample((0..255).to_a)
16
+ end
17
+
18
+ def rgb_color
19
+ Array.new(3) { single_rgb_color }
20
+ end
21
+
22
+ # returns [hue, saturation, lightness]
23
+ def hsl_color
24
+ [sample((0..360).to_a), rand.round(2), rand.round(2)]
25
+ end
26
+
27
+ def hsla_color
28
+ hsl_color << rand.round(1)
29
+ end
30
+ end
31
+ end
32
+ end