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,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
@@ -0,0 +1,80 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Commerce < Base
5
+ class << self
6
+ def color
7
+ fetch('color.name')
8
+ end
9
+
10
+ def promotion_code(legacy_digits = NOT_GIVEN, digits: 6)
11
+ warn_for_deprecated_arguments do |keywords|
12
+ keywords << :digits if legacy_digits != NOT_GIVEN
13
+ end
14
+
15
+ [
16
+ fetch('commerce.promotion_code.adjective'),
17
+ fetch('commerce.promotion_code.noun'),
18
+ Faker::Number.number(digits: digits)
19
+ ].join
20
+ end
21
+
22
+ def department(legacy_max = NOT_GIVEN, legacy_fixed_amount = NOT_GIVEN, max: 3, fixed_amount: false)
23
+ warn_for_deprecated_arguments do |keywords|
24
+ keywords << :max if legacy_max != NOT_GIVEN
25
+ keywords << :fixed_amount if legacy_fixed_amount != NOT_GIVEN
26
+ end
27
+
28
+ num = max if fixed_amount
29
+ num ||= 1 + rand(max)
30
+
31
+ categories = categories(num)
32
+
33
+ return merge_categories(categories) if num > 1
34
+
35
+ categories[0]
36
+ end
37
+
38
+ def product_name
39
+ "#{fetch('commerce.product_name.adjective')} #{fetch('commerce.product_name.material')} #{fetch('commerce.product_name.product')}"
40
+ end
41
+
42
+ def material
43
+ fetch('commerce.product_name.material')
44
+ end
45
+
46
+ def price(legacy_range = NOT_GIVEN, legacy_as_string = NOT_GIVEN, range: 0..100.0, as_string: false)
47
+ warn_for_deprecated_arguments do |keywords|
48
+ keywords << :range if legacy_range != NOT_GIVEN
49
+ keywords << :as_string if legacy_as_string != NOT_GIVEN
50
+ end
51
+
52
+ price = (rand(range) * 100).floor / 100.0
53
+ if as_string
54
+ price_parts = price.to_s.split('.')
55
+ price = price_parts[0] + '.' + price_parts[-1].ljust(2, '0')
56
+ end
57
+ price
58
+ end
59
+
60
+ private
61
+
62
+ def categories(num)
63
+ categories = []
64
+ while categories.length < num
65
+ category = fetch('commerce.department')
66
+ categories << category unless categories.include?(category)
67
+ end
68
+
69
+ categories
70
+ end
71
+
72
+ def merge_categories(categories)
73
+ separator = fetch('separator')
74
+ comma_separated = categories.slice!(0...-1).join(', ')
75
+
76
+ [comma_separated, categories[0]].join(separator)
77
+ end
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,264 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Company < Base
5
+ flexible :company
6
+
7
+ class << self
8
+ def name
9
+ parse('company.name')
10
+ end
11
+
12
+ def suffix
13
+ fetch('company.suffix')
14
+ end
15
+
16
+ def industry
17
+ fetch('company.industry')
18
+ end
19
+
20
+ # Generate a buzzword-laden catch phrase.
21
+ def catch_phrase
22
+ translate('faker.company.buzzwords').collect { |list| sample(list) }.join(' ')
23
+ end
24
+
25
+ def buzzword
26
+ sample(translate('faker.company.buzzwords').flatten)
27
+ end
28
+
29
+ # When a straight answer won't do, BS to the rescue!
30
+ def bs
31
+ translate('faker.company.bs').collect { |list| sample(list) }.join(' ')
32
+ end
33
+
34
+ def ein
35
+ format('%09d', rand(10**9)).gsub(/(\d{2})(\d{7})/, '\\1-\\2')
36
+ end
37
+
38
+ def duns_number
39
+ format('%09d', rand(10**9)).gsub(/(\d{2})(\d{3})(\d{4})/, '\\1-\\2-\\3')
40
+ end
41
+
42
+ # Get a random company logo url in PNG format.
43
+ def logo
44
+ rand_num = rand(1..13)
45
+ "https://pigment.github.io/fake-logos/logos/medium/color/#{rand_num}.png"
46
+ end
47
+
48
+ def type
49
+ fetch('company.type')
50
+ end
51
+
52
+ def profession
53
+ fetch('company.profession')
54
+ end
55
+
56
+ # rubocop:disable Style/AsciiComments
57
+ # Get a random Spanish organization number. See more here https://es.wikipedia.org/wiki/Número_de_identificación_fiscal
58
+ # rubocop:enable Style/AsciiComments
59
+ def spanish_organisation_number
60
+ # Valid leading character: A, B, C, D, E, F, G, H, J, N, P, Q, R, S, U, V, W
61
+ # 7 digit numbers
62
+ letters = %w[A B C D E F G H J N P Q R S U V W]
63
+ base = [sample(letters), format('%07d', rand(10**7))].join
64
+ base
65
+ end
66
+
67
+ # Get a random Swedish organization number. See more here https://sv.wikipedia.org/wiki/Organisationsnummer
68
+ def swedish_organisation_number
69
+ # Valid leading digit: 1, 2, 3, 5, 6, 7, 8, 9
70
+ # Valid third digit: >= 2
71
+ # Last digit is a control digit
72
+ base = [sample([1, 2, 3, 5, 6, 7, 8, 9]), sample((0..9).to_a), sample((2..9).to_a), format('%06d', rand(10**6))].join
73
+ base + luhn_algorithm(base).to_s
74
+ end
75
+
76
+ def czech_organisation_number
77
+ sum = 0
78
+ base = []
79
+ [8, 7, 6, 5, 4, 3, 2].each do |weight|
80
+ base << sample((0..9).to_a)
81
+ sum += (weight * base.last)
82
+ end
83
+ base << (11 - (sum % 11)) % 10
84
+ base.join
85
+ end
86
+
87
+ # Get a random French SIREN number. See more here https://fr.wikipedia.org/wiki/Syst%C3%A8me_d%27identification_du_r%C3%A9pertoire_des_entreprises
88
+ def french_siren_number
89
+ base = (1..8).map { rand(10) }.join
90
+ base + luhn_algorithm(base).to_s
91
+ end
92
+
93
+ def french_siret_number
94
+ location = rand(100).to_s.rjust(4, '0')
95
+ org_no = french_siren_number + location
96
+ org_no + luhn_algorithm(org_no).to_s
97
+ end
98
+
99
+ # Get a random Norwegian organization number. Info: https://www.brreg.no/om-oss/samfunnsoppdraget-vart/registera-vare/einingsregisteret/organisasjonsnummeret/
100
+ def norwegian_organisation_number
101
+ # Valid leading digit: 8, 9
102
+ mod11_check = nil
103
+ while mod11_check.nil?
104
+ base = [sample([8, 9]), format('%07d', rand(10**7))].join
105
+ mod11_check = mod11(base)
106
+ end
107
+ base + mod11_check.to_s
108
+ end
109
+
110
+ def australian_business_number
111
+ base = format('%09d', rand(10**9))
112
+ abn = "00#{base}"
113
+
114
+ (99 - (abn_checksum(abn) % 89)).to_s + base
115
+ end
116
+
117
+ # Get a random Polish taxpayer identification number More info https://pl.wikipedia.org/wiki/NIP
118
+ def polish_taxpayer_identification_number
119
+ result = []
120
+ weights = [6, 5, 7, 2, 3, 4, 5, 6, 7]
121
+ loop do
122
+ result = Array.new(3) { rand(1..9) } + Array.new(7) { rand(10) }
123
+ break if (weight_sum(result, weights) % 11) == result[9]
124
+ end
125
+ result.join('')
126
+ end
127
+
128
+ # Get a random Polish register of national economy number. More info https://pl.wikipedia.org/wiki/REGON
129
+ def polish_register_of_national_economy(legacy_length = NOT_GIVEN, length: 9)
130
+ warn_for_deprecated_arguments do |keywords|
131
+ keywords << :length if legacy_length != NOT_GIVEN
132
+ end
133
+
134
+ raise ArgumentError, 'Length should be 9 or 14' unless [9, 14].include? length
135
+
136
+ random_digits = []
137
+ loop do
138
+ random_digits = Array.new(length) { rand(10) }
139
+ break if collect_regon_sum(random_digits) == random_digits.last
140
+ end
141
+ random_digits.join('')
142
+ end
143
+
144
+ def south_african_pty_ltd_registration_number
145
+ regexify(/\d{4}\/\d{4,10}\/07/)
146
+ end
147
+
148
+ def south_african_close_corporation_registration_number
149
+ regexify(/(CK\d{2}|\d{4})\/\d{4,10}\/23/)
150
+ end
151
+
152
+ def south_african_listed_company_registration_number
153
+ regexify(/\d{4}\/\d{4,10}\/06/)
154
+ end
155
+
156
+ def south_african_trust_registration_number
157
+ regexify(/IT\d{2,4}\/\d{2,10}/)
158
+ end
159
+
160
+ def brazilian_company_number(legacy_formatted = NOT_GIVEN, formatted: false)
161
+ warn_for_deprecated_arguments do |keywords|
162
+ keywords << :formatted if legacy_formatted != NOT_GIVEN
163
+ end
164
+
165
+ digits = Array.new(8) { Faker::Number.digit.to_i } + [0, 0, 0, Faker::Number.non_zero_digit.to_i]
166
+
167
+ factors = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2, 6].cycle
168
+
169
+ 2.times do
170
+ checksum = digits.inject(0) { |acc, digit| acc + digit * factors.next } % 11
171
+ digits << (checksum < 2 ? 0 : 11 - checksum)
172
+ end
173
+
174
+ number = digits.join
175
+
176
+ formatted ? format('%s.%s.%s/%s-%s', *number.scan(/(\d{2})(\d{3})(\d{3})(\d{4})(\d{2})/).flatten) : number
177
+ end
178
+
179
+ def sic_code
180
+ fetch('company.sic_code')
181
+ end
182
+
183
+ private
184
+
185
+ # Mod11 functionality from https://github.com/badmanski/mod11/blob/master/lib/mod11.rb
186
+ def mod11(number)
187
+ weight = [2, 3, 4, 5, 6, 7,
188
+ 2, 3, 4, 5, 6, 7,
189
+ 2, 3, 4, 5, 6, 7]
190
+
191
+ sum = 0
192
+
193
+ number.to_s.reverse.chars.each_with_index do |char, i|
194
+ sum += char.to_i * weight[i]
195
+ end
196
+
197
+ remainder = sum % 11
198
+
199
+ case remainder
200
+ when 0 then remainder
201
+ when 1 then nil
202
+ else 11 - remainder
203
+ end
204
+ end
205
+
206
+ def luhn_algorithm(number)
207
+ multiplications = []
208
+
209
+ number.to_s.reverse.split(//).each_with_index do |digit, i|
210
+ multiplications << if i.even?
211
+ digit.to_i * 2
212
+ else
213
+ digit.to_i
214
+ end
215
+ end
216
+
217
+ sum = 0
218
+
219
+ multiplications.each do |num|
220
+ num.to_s.each_byte do |character|
221
+ sum += character.chr.to_i
222
+ end
223
+ end
224
+
225
+ control_digit = if (sum % 10).zero?
226
+ 0
227
+ else
228
+ (sum / 10 + 1) * 10 - sum
229
+ end
230
+
231
+ control_digit
232
+ end
233
+
234
+ def abn_checksum(abn)
235
+ abn_weights = [10, 1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
236
+ sum = 0
237
+
238
+ abn_weights.each_with_index do |weight, i|
239
+ sum += weight * abn[i].to_i
240
+ end
241
+
242
+ sum
243
+ end
244
+
245
+ def collect_regon_sum(array)
246
+ weights = if array.size == 9
247
+ [8, 9, 2, 3, 4, 5, 6, 7]
248
+ else
249
+ [2, 4, 8, 5, 0, 9, 7, 3, 6, 1, 2, 4, 8]
250
+ end
251
+ sum = weight_sum(array, weights) % 11
252
+ sum == 10 ? 0 : sum
253
+ end
254
+
255
+ def weight_sum(array, weights)
256
+ sum = 0
257
+ (0..weights.size - 1).each do |index|
258
+ sum += (array[index] * weights[index])
259
+ end
260
+ sum
261
+ end
262
+ end
263
+ end
264
+ end
@@ -0,0 +1,67 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Compass < Base
5
+ class << self
6
+ def cardinal
7
+ fetch('compass.cardinal.word')
8
+ end
9
+
10
+ def ordinal
11
+ fetch('compass.ordinal.word')
12
+ end
13
+
14
+ def half_wind
15
+ fetch('compass.half-wind.word')
16
+ end
17
+
18
+ def quarter_wind
19
+ fetch('compass.quarter-wind.word')
20
+ end
21
+
22
+ def direction
23
+ parse('compass.direction')
24
+ end
25
+
26
+ def abbreviation
27
+ parse('compass.abbreviation')
28
+ end
29
+
30
+ def azimuth
31
+ parse('compass.azimuth')
32
+ end
33
+
34
+ def cardinal_abbreviation
35
+ fetch('compass.cardinal.abbreviation')
36
+ end
37
+
38
+ def ordinal_abbreviation
39
+ fetch('compass.ordinal.abbreviation')
40
+ end
41
+
42
+ def half_wind_abbreviation
43
+ fetch('compass.half-wind.abbreviation')
44
+ end
45
+
46
+ def quarter_wind_abbreviation
47
+ fetch('compass.quarter-wind.abbreviation')
48
+ end
49
+
50
+ def cardinal_azimuth
51
+ fetch('compass.cardinal.azimuth')
52
+ end
53
+
54
+ def ordinal_azimuth
55
+ fetch('compass.ordinal.azimuth')
56
+ end
57
+
58
+ def half_wind_azimuth
59
+ fetch('compass.half-wind.azimuth')
60
+ end
61
+
62
+ def quarter_wind_azimuth
63
+ fetch('compass.quarter-wind.azimuth')
64
+ end
65
+ end
66
+ end
67
+ end