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,66 @@
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(digits: 6)
11
+ [
12
+ fetch('commerce.promotion_code.adjective'),
13
+ fetch('commerce.promotion_code.noun'),
14
+ Faker::Number.number(digits: digits)
15
+ ].join
16
+ end
17
+
18
+ def department(max: 3, fixed_amount: false)
19
+ num = max if fixed_amount
20
+ num ||= 1 + rand(max)
21
+
22
+ categories = categories(num)
23
+
24
+ return merge_categories(categories) if num > 1
25
+
26
+ categories[0]
27
+ end
28
+
29
+ def product_name
30
+ "#{fetch('commerce.product_name.adjective')} #{fetch('commerce.product_name.material')} #{fetch('commerce.product_name.product')}"
31
+ end
32
+
33
+ def material
34
+ fetch('commerce.product_name.material')
35
+ end
36
+
37
+ def price(range: 0..100.0, as_string: false)
38
+ price = (rand(range) * 100).floor / 100.0
39
+ if as_string
40
+ price_parts = price.to_s.split('.')
41
+ price = price_parts[0] + '.' + price_parts[-1].ljust(2, '0')
42
+ end
43
+ price
44
+ end
45
+
46
+ private
47
+
48
+ def categories(num)
49
+ categories = []
50
+ while categories.length < num
51
+ category = fetch('commerce.department')
52
+ categories << category unless categories.include?(category)
53
+ end
54
+
55
+ categories
56
+ end
57
+
58
+ def merge_categories(categories)
59
+ separator = fetch('separator')
60
+ comma_separated = categories.slice!(0...-1).join(', ')
61
+
62
+ [comma_separated, categories[0]].join(separator)
63
+ end
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,256 @@
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(length: 9)
130
+ raise ArgumentError, 'Length should be 9 or 14' unless [9, 14].include? length
131
+
132
+ random_digits = []
133
+ loop do
134
+ random_digits = Array.new(length) { rand(10) }
135
+ break if collect_regon_sum(random_digits) == random_digits.last
136
+ end
137
+ random_digits.join('')
138
+ end
139
+
140
+ def south_african_pty_ltd_registration_number
141
+ regexify(/\d{4}\/\d{4,10}\/07/)
142
+ end
143
+
144
+ def south_african_close_corporation_registration_number
145
+ regexify(/(CK\d{2}|\d{4})\/\d{4,10}\/23/)
146
+ end
147
+
148
+ def south_african_listed_company_registration_number
149
+ regexify(/\d{4}\/\d{4,10}\/06/)
150
+ end
151
+
152
+ def south_african_trust_registration_number
153
+ regexify(/IT\d{2,4}\/\d{2,10}/)
154
+ end
155
+
156
+ def brazilian_company_number(formatted: false)
157
+ digits = Array.new(8) { Faker::Number.digit.to_i } + [0, 0, 0, Faker::Number.non_zero_digit.to_i]
158
+
159
+ factors = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2, 6].cycle
160
+
161
+ 2.times do
162
+ checksum = digits.inject(0) { |acc, digit| acc + digit * factors.next } % 11
163
+ digits << (checksum < 2 ? 0 : 11 - checksum)
164
+ end
165
+
166
+ number = digits.join
167
+
168
+ formatted ? format('%s.%s.%s/%s-%s', *number.scan(/(\d{2})(\d{3})(\d{3})(\d{4})(\d{2})/).flatten) : number
169
+ end
170
+
171
+ def sic_code
172
+ fetch('company.sic_code')
173
+ end
174
+
175
+ private
176
+
177
+ # Mod11 functionality from https://github.com/badmanski/mod11/blob/master/lib/mod11.rb
178
+ def mod11(number)
179
+ weight = [2, 3, 4, 5, 6, 7,
180
+ 2, 3, 4, 5, 6, 7,
181
+ 2, 3, 4, 5, 6, 7]
182
+
183
+ sum = 0
184
+
185
+ number.to_s.reverse.chars.each_with_index do |char, i|
186
+ sum += char.to_i * weight[i]
187
+ end
188
+
189
+ remainder = sum % 11
190
+
191
+ case remainder
192
+ when 0 then remainder
193
+ when 1 then nil
194
+ else 11 - remainder
195
+ end
196
+ end
197
+
198
+ def luhn_algorithm(number)
199
+ multiplications = []
200
+
201
+ number.to_s.reverse.split(//).each_with_index do |digit, i|
202
+ multiplications << if i.even?
203
+ digit.to_i * 2
204
+ else
205
+ digit.to_i
206
+ end
207
+ end
208
+
209
+ sum = 0
210
+
211
+ multiplications.each do |num|
212
+ num.to_s.each_byte do |character|
213
+ sum += character.chr.to_i
214
+ end
215
+ end
216
+
217
+ control_digit = if (sum % 10).zero?
218
+ 0
219
+ else
220
+ (sum / 10 + 1) * 10 - sum
221
+ end
222
+
223
+ control_digit
224
+ end
225
+
226
+ def abn_checksum(abn)
227
+ abn_weights = [10, 1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
228
+ sum = 0
229
+
230
+ abn_weights.each_with_index do |weight, i|
231
+ sum += weight * abn[i].to_i
232
+ end
233
+
234
+ sum
235
+ end
236
+
237
+ def collect_regon_sum(array)
238
+ weights = if array.size == 9
239
+ [8, 9, 2, 3, 4, 5, 6, 7]
240
+ else
241
+ [2, 4, 8, 5, 0, 9, 7, 3, 6, 1, 2, 4, 8]
242
+ end
243
+ sum = weight_sum(array, weights) % 11
244
+ sum == 10 ? 0 : sum
245
+ end
246
+
247
+ def weight_sum(array, weights)
248
+ sum = 0
249
+ (0..weights.size - 1).each do |index|
250
+ sum += (array[index] * weights[index])
251
+ end
252
+ sum
253
+ end
254
+ end
255
+ end
256
+ 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
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Construction < Base
5
+ def self.material
6
+ fetch('construction.materials')
7
+ end
8
+
9
+ def self.heavy_equipment
10
+ fetch('construction.heavy_equipment')
11
+ end
12
+
13
+ def self.trade
14
+ fetch('construction.trades')
15
+ end
16
+
17
+ def self.subcontract_category
18
+ fetch('construction.subcontract_categories')
19
+ end
20
+
21
+ def self.standard_cost_code
22
+ fetch('construction.standard_cost_codes')
23
+ end
24
+
25
+ def self.role
26
+ fetch('construction.roles')
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Cosmere < Base
5
+ flexible :cosmere
6
+ class << self
7
+ def aon
8
+ sample(aons)
9
+ end
10
+
11
+ def shard_world
12
+ sample(shard_worlds)
13
+ end
14
+
15
+ def shard
16
+ sample(shards)
17
+ end
18
+
19
+ def surge
20
+ sample(surges)
21
+ end
22
+
23
+ def knight_radiant
24
+ sample(knights_radiant)
25
+ end
26
+
27
+ def metal
28
+ sample(metals)
29
+ end
30
+
31
+ def allomancer
32
+ sample(allomancers)
33
+ end
34
+
35
+ def feruchemist
36
+ sample(feruchemists)
37
+ end
38
+
39
+ def herald
40
+ sample(heralds)
41
+ end
42
+
43
+ def spren
44
+ sample(sprens)
45
+ end
46
+ end
47
+ end
48
+ end