faker 1.1.2 → 3.1.1

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 (569) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +2383 -0
  3. data/History.md +176 -0
  4. data/License.txt +2 -2
  5. data/README.md +487 -47
  6. data/bin/faker +5 -0
  7. data/lib/faker/blockchain/aeternity.rb +70 -0
  8. data/lib/faker/blockchain/bitcoin.rb +60 -0
  9. data/lib/faker/blockchain/ethereum.rb +26 -0
  10. data/lib/faker/blockchain/tezos.rb +135 -0
  11. data/lib/faker/books/book.rb +61 -0
  12. data/lib/faker/books/culture_series.rb +83 -0
  13. data/lib/faker/books/dune.rb +124 -0
  14. data/lib/faker/books/lovecraft.rb +249 -0
  15. data/lib/faker/books/the_kingkiller_chronicle.rb +61 -0
  16. data/lib/faker/creature/animal.rb +22 -0
  17. data/lib/faker/creature/bird.rb +203 -0
  18. data/lib/faker/creature/cat.rb +50 -0
  19. data/lib/faker/creature/dog.rb +115 -0
  20. data/lib/faker/creature/horse.rb +37 -0
  21. data/lib/faker/default/address.rb +348 -0
  22. data/lib/faker/default/adjective.rb +35 -0
  23. data/lib/faker/default/alphanumeric.rb +67 -0
  24. data/lib/faker/default/ancient.rb +59 -0
  25. data/lib/faker/default/app.rb +68 -0
  26. data/lib/faker/default/appliance.rb +33 -0
  27. data/lib/faker/default/artist.rb +20 -0
  28. data/lib/faker/default/avatar.rb +49 -0
  29. data/lib/faker/default/bank.rb +199 -0
  30. data/lib/faker/default/barcode.rb +165 -0
  31. data/lib/faker/default/beer.rb +113 -0
  32. data/lib/faker/default/blood.rb +48 -0
  33. data/lib/faker/default/boolean.rb +23 -0
  34. data/lib/faker/default/bossa_nova.rb +33 -0
  35. data/lib/faker/default/business.rb +50 -0
  36. data/lib/faker/default/camera.rb +46 -0
  37. data/lib/faker/default/cannabis.rb +135 -0
  38. data/lib/faker/default/chile_rut.rb +92 -0
  39. data/lib/faker/default/chuck_norris.rb +25 -0
  40. data/lib/faker/default/code.rb +269 -0
  41. data/lib/faker/default/coffee.rb +82 -0
  42. data/lib/faker/default/coin.rb +33 -0
  43. data/lib/faker/default/color.rb +150 -0
  44. data/lib/faker/default/commerce.rb +157 -0
  45. data/lib/faker/default/company.rb +571 -0
  46. data/lib/faker/default/compass.rb +202 -0
  47. data/lib/faker/default/computer.rb +63 -0
  48. data/lib/faker/default/construction.rb +83 -0
  49. data/lib/faker/default/cosmere.rb +138 -0
  50. data/lib/faker/default/crypto.rb +61 -0
  51. data/lib/faker/default/crypto_coin.rb +82 -0
  52. data/lib/faker/default/currency.rb +46 -0
  53. data/lib/faker/default/date.rb +153 -0
  54. data/lib/faker/default/dc_comics.rb +70 -0
  55. data/lib/faker/default/demographic.rb +94 -0
  56. data/lib/faker/default/dessert.rb +48 -0
  57. data/lib/faker/default/device.rb +85 -0
  58. data/lib/faker/default/driving_licence.rb +121 -0
  59. data/lib/faker/default/drone.rb +332 -0
  60. data/lib/faker/default/educator.rb +102 -0
  61. data/lib/faker/default/electrical_components.rb +48 -0
  62. data/lib/faker/default/emotion.rb +33 -0
  63. data/lib/faker/default/esport.rb +72 -0
  64. data/lib/faker/default/file.rb +81 -0
  65. data/lib/faker/default/fillmurray.rb +38 -0
  66. data/lib/faker/default/finance.rb +112 -0
  67. data/lib/faker/default/food.rb +126 -0
  68. data/lib/faker/default/funny_name.rb +90 -0
  69. data/lib/faker/default/gender.rb +46 -0
  70. data/lib/faker/default/greek_philosophers.rb +33 -0
  71. data/lib/faker/default/hacker.rb +103 -0
  72. data/lib/faker/default/hipster.rb +155 -0
  73. data/lib/faker/default/hobby.rb +22 -0
  74. data/lib/faker/default/house.rb +33 -0
  75. data/lib/faker/default/id_number.rb +410 -0
  76. data/lib/faker/default/industry_segments.rb +61 -0
  77. data/lib/faker/default/internet.rb +582 -0
  78. data/lib/faker/default/internet_http.rb +48 -0
  79. data/lib/faker/default/invoice.rb +123 -0
  80. data/lib/faker/default/job.rb +61 -0
  81. data/lib/faker/default/json.rb +125 -0
  82. data/lib/faker/default/kpop.rb +85 -0
  83. data/lib/faker/default/lorem.rb +250 -0
  84. data/lib/faker/default/lorem_flickr.rb +110 -0
  85. data/lib/faker/default/markdown.rb +170 -0
  86. data/lib/faker/default/marketing.rb +22 -0
  87. data/lib/faker/default/measurement.rb +175 -0
  88. data/lib/faker/default/military.rb +98 -0
  89. data/lib/faker/default/mountain.rb +33 -0
  90. data/lib/faker/default/name.rb +152 -0
  91. data/lib/faker/default/nation.rb +73 -0
  92. data/lib/faker/default/nato_phonetic_alphabet.rb +20 -0
  93. data/lib/faker/default/nhs.rb +53 -0
  94. data/lib/faker/default/number.rb +244 -0
  95. data/lib/faker/default/omniauth.rb +471 -0
  96. data/lib/faker/default/phone_number.rb +133 -0
  97. data/lib/faker/default/placeholdit.rb +52 -0
  98. data/lib/faker/default/programming_language.rb +33 -0
  99. data/lib/faker/default/relationship.rb +87 -0
  100. data/lib/faker/default/religion.rb +6 -0
  101. data/lib/faker/default/restaurant.rb +63 -0
  102. data/lib/faker/default/science.rb +154 -0
  103. data/lib/faker/default/slack_emoji.rb +124 -0
  104. data/lib/faker/default/source.rb +63 -0
  105. data/lib/faker/default/south_africa.rb +141 -0
  106. data/lib/faker/default/space.rb +191 -0
  107. data/lib/faker/default/string.rb +59 -0
  108. data/lib/faker/default/stripe.rb +126 -0
  109. data/lib/faker/default/subscription.rb +70 -0
  110. data/lib/faker/default/superhero.rb +72 -0
  111. data/lib/faker/default/tea.rb +41 -0
  112. data/lib/faker/default/team.rb +74 -0
  113. data/lib/faker/default/time.rb +149 -0
  114. data/lib/faker/default/twitter.rb +207 -0
  115. data/lib/faker/default/types.rb +160 -0
  116. data/lib/faker/default/university.rb +75 -0
  117. data/lib/faker/default/vehicle.rb +320 -0
  118. data/lib/faker/default/verb.rb +72 -0
  119. data/lib/faker/default/vulnerability_identifier.rb +23 -0
  120. data/lib/faker/default/world_cup.rb +77 -0
  121. data/lib/faker/fantasy/tolkien.rb +67 -0
  122. data/lib/faker/games/clash_of_clans.rb +48 -0
  123. data/lib/faker/games/control.rb +113 -0
  124. data/lib/faker/games/dnd.rb +136 -0
  125. data/lib/faker/games/dota.rb +89 -0
  126. data/lib/faker/games/elder_scrolls.rb +139 -0
  127. data/lib/faker/games/fallout.rb +62 -0
  128. data/lib/faker/games/game.rb +48 -0
  129. data/lib/faker/games/half_life.rb +48 -0
  130. data/lib/faker/games/heroes.rb +61 -0
  131. data/lib/faker/games/heroes_of_the_storm.rb +72 -0
  132. data/lib/faker/games/league_of_legends.rb +87 -0
  133. data/lib/faker/games/minecraft.rb +113 -0
  134. data/lib/faker/games/myst.rb +74 -0
  135. data/lib/faker/games/overwatch.rb +48 -0
  136. data/lib/faker/games/pokemon.rb +48 -0
  137. data/lib/faker/games/sonic_the_hedgehog.rb +48 -0
  138. data/lib/faker/games/street_fighter.rb +61 -0
  139. data/lib/faker/games/super_mario.rb +48 -0
  140. data/lib/faker/games/super_smash_bros.rb +35 -0
  141. data/lib/faker/games/tarkov.rb +205 -0
  142. data/lib/faker/games/touhou.rb +75 -0
  143. data/lib/faker/games/warhammer_fantasy.rb +74 -0
  144. data/lib/faker/games/witcher.rb +126 -0
  145. data/lib/faker/games/world_of_warcraft.rb +60 -0
  146. data/lib/faker/games/zelda.rb +62 -0
  147. data/lib/faker/japanese_media/conan.rb +48 -0
  148. data/lib/faker/japanese_media/cowboy_bebop.rb +61 -0
  149. data/lib/faker/japanese_media/doraemon.rb +48 -0
  150. data/lib/faker/japanese_media/dragon_ball.rb +48 -0
  151. data/lib/faker/japanese_media/fullmetal_alchemist_brotherhood.rb +48 -0
  152. data/lib/faker/japanese_media/kamen_rider.rb +102 -0
  153. data/lib/faker/japanese_media/naruto.rb +61 -0
  154. data/lib/faker/japanese_media/one_piece.rb +87 -0
  155. data/lib/faker/japanese_media/studio_ghibli.rb +48 -0
  156. data/lib/faker/japanese_media/sword_art_online.rb +61 -0
  157. data/lib/faker/locations/australia.rb +47 -0
  158. data/lib/faker/movies/back_to_the_future.rb +49 -0
  159. data/lib/faker/movies/departed.rb +49 -0
  160. data/lib/faker/movies/ghostbusters.rb +49 -0
  161. data/lib/faker/movies/hackers.rb +48 -0
  162. data/lib/faker/movies/harry_potter.rb +87 -0
  163. data/lib/faker/movies/hitchhikers_guide_to_the_galaxy.rb +106 -0
  164. data/lib/faker/movies/hobbit.rb +62 -0
  165. data/lib/faker/movies/how_to_train_your_dragon.rb +48 -0
  166. data/lib/faker/movies/lebowski.rb +48 -0
  167. data/lib/faker/movies/lord_of_the_rings.rb +49 -0
  168. data/lib/faker/movies/movie.rb +33 -0
  169. data/lib/faker/movies/princess_bride.rb +36 -0
  170. data/lib/faker/movies/room.rb +63 -0
  171. data/lib/faker/movies/star_wars.rb +269 -0
  172. data/lib/faker/movies/tron.rb +161 -0
  173. data/lib/faker/movies/v_for_vendetta.rb +50 -0
  174. data/lib/faker/music/grateful_dead.rb +37 -0
  175. data/lib/faker/music/hiphop.rb +48 -0
  176. data/lib/faker/music/music.rb +145 -0
  177. data/lib/faker/music/opera.rb +298 -0
  178. data/lib/faker/music/pearl_jam.rb +50 -0
  179. data/lib/faker/music/phish.rb +48 -0
  180. data/lib/faker/music/prince.rb +64 -0
  181. data/lib/faker/music/rock_band.rb +34 -0
  182. data/lib/faker/music/rush.rb +37 -0
  183. data/lib/faker/music/show.rb +49 -0
  184. data/lib/faker/music/umphreys_mcgee.rb +22 -0
  185. data/lib/faker/quotes/chiquito.rb +80 -0
  186. data/lib/faker/quotes/quote.rb +111 -0
  187. data/lib/faker/quotes/rajnikanth.rb +27 -0
  188. data/lib/faker/quotes/shakespeare.rb +111 -0
  189. data/lib/faker/religion/bible.rb +50 -0
  190. data/lib/faker/sports/basketball.rb +61 -0
  191. data/lib/faker/sports/football.rb +74 -0
  192. data/lib/faker/sports/mountaineering.rb +22 -0
  193. data/lib/faker/sports/sport.rb +116 -0
  194. data/lib/faker/sports/volleyball.rb +74 -0
  195. data/lib/faker/travel/airport.rb +47 -0
  196. data/lib/faker/tv_shows/aqua_teen_hunger_force.rb +37 -0
  197. data/lib/faker/tv_shows/big_bang_theory.rb +37 -0
  198. data/lib/faker/tv_shows/bojack_horseman.rb +51 -0
  199. data/lib/faker/tv_shows/breaking_bad.rb +37 -0
  200. data/lib/faker/tv_shows/brooklyn_nine_nine.rb +38 -0
  201. data/lib/faker/tv_shows/buffy.rb +89 -0
  202. data/lib/faker/tv_shows/community.rb +38 -0
  203. data/lib/faker/tv_shows/dr_who.rb +115 -0
  204. data/lib/faker/tv_shows/dumb_and_dumber.rb +51 -0
  205. data/lib/faker/tv_shows/family_guy.rb +51 -0
  206. data/lib/faker/tv_shows/final_space.rb +51 -0
  207. data/lib/faker/tv_shows/friends.rb +50 -0
  208. data/lib/faker/tv_shows/futurama.rb +65 -0
  209. data/lib/faker/tv_shows/game_of_thrones.rb +77 -0
  210. data/lib/faker/tv_shows/hey_arnold.rb +50 -0
  211. data/lib/faker/tv_shows/how_i_met_your_mother.rb +64 -0
  212. data/lib/faker/tv_shows/michael_scott.rb +23 -0
  213. data/lib/faker/tv_shows/new_girl.rb +38 -0
  214. data/lib/faker/tv_shows/parks_and_rec.rb +37 -0
  215. data/lib/faker/tv_shows/rick_and_morty.rb +51 -0
  216. data/lib/faker/tv_shows/ru_paul.rb +37 -0
  217. data/lib/faker/tv_shows/seinfeld.rb +51 -0
  218. data/lib/faker/tv_shows/silicon_valley.rb +118 -0
  219. data/lib/faker/tv_shows/simpsons.rb +65 -0
  220. data/lib/faker/tv_shows/south_park.rb +38 -0
  221. data/lib/faker/tv_shows/spongebob.rb +50 -0
  222. data/lib/faker/tv_shows/star_trek.rb +63 -0
  223. data/lib/faker/tv_shows/stargate.rb +51 -0
  224. data/lib/faker/tv_shows/stranger_things.rb +38 -0
  225. data/lib/faker/tv_shows/suits.rb +37 -0
  226. data/lib/faker/tv_shows/supernatural.rb +48 -0
  227. data/lib/faker/tv_shows/the_expanse.rb +63 -0
  228. data/lib/faker/tv_shows/the_fresh_prince_of_bel_air.rb +64 -0
  229. data/lib/faker/tv_shows/the_it_crowd.rb +64 -0
  230. data/lib/faker/tv_shows/the_office.rb +37 -0
  231. data/lib/faker/tv_shows/the_thick_of_it.rb +51 -0
  232. data/lib/faker/tv_shows/twin_peaks.rb +51 -0
  233. data/lib/faker/tv_shows/venture_bros.rb +65 -0
  234. data/lib/faker/version.rb +4 -2
  235. data/lib/faker.rb +170 -58
  236. data/lib/helpers/base58.rb +22 -0
  237. data/lib/helpers/char.rb +61 -0
  238. data/lib/helpers/unique_generator.rb +60 -0
  239. data/lib/locales/README.md +40 -0
  240. data/lib/locales/ar.yml +106 -0
  241. data/lib/locales/bg.yml +44 -0
  242. data/lib/locales/ca-CAT.yml +24 -0
  243. data/lib/locales/ca.yml +23 -0
  244. data/lib/locales/da-DK.yml +72 -0
  245. data/lib/locales/de-AT.yml +57 -0
  246. data/lib/locales/de-CH.yml +1713 -0
  247. data/lib/locales/de.yml +131 -9
  248. data/lib/locales/ee.yml +61 -0
  249. data/lib/locales/en/README.md +13 -0
  250. data/lib/locales/en/address.yml +586 -0
  251. data/lib/locales/en/adjective.yml +179 -0
  252. data/lib/locales/en/airport.yml +381 -0
  253. data/lib/locales/en/ancient.yml +7 -0
  254. data/lib/locales/en/animal.yml +6 -0
  255. data/lib/locales/en/app.yml +8 -0
  256. data/lib/locales/en/appliance.yml +5 -0
  257. data/lib/locales/en/aqua_teen_hunger_force.yml +36 -0
  258. data/lib/locales/en/artist.yml +4 -0
  259. data/lib/locales/en/australia.yml +107 -0
  260. data/lib/locales/en/back_to_the_future.yml +120 -0
  261. data/lib/locales/en/bank.yml +302 -0
  262. data/lib/locales/en/barcode.yml +24 -0
  263. data/lib/locales/en/basketball.yml +99 -0
  264. data/lib/locales/en/beer.yml +9 -0
  265. data/lib/locales/en/bible.yml +90 -0
  266. data/lib/locales/en/big_bang_theory.yml +38 -0
  267. data/lib/locales/en/bird.yml +1281 -0
  268. data/lib/locales/en/blood.yml +13 -0
  269. data/lib/locales/en/bojack_horseman.yml +6 -0
  270. data/lib/locales/en/book.yml +491 -0
  271. data/lib/locales/en/bossa_nova.yml +6 -0
  272. data/lib/locales/en/breaking_bad.yml +28 -0
  273. data/lib/locales/en/brooklyn_nine_nine.yml +35 -0
  274. data/lib/locales/en/buffy.yml +260 -0
  275. data/lib/locales/en/business.yml +5 -0
  276. data/lib/locales/en/camera.yml +611 -0
  277. data/lib/locales/en/cannabis.yml +13 -0
  278. data/lib/locales/en/cat.yml +7 -0
  279. data/lib/locales/en/chiquito.yml +64 -0
  280. data/lib/locales/en/chuck_norris.yml +82 -0
  281. data/lib/locales/en/clash_of_clan.yml +101 -0
  282. data/lib/locales/en/code.yml +4 -0
  283. data/lib/locales/en/coffee.yml +31 -0
  284. data/lib/locales/en/coin.yml +6 -0
  285. data/lib/locales/en/color.yml +4 -0
  286. data/lib/locales/en/commerce.yml +28 -0
  287. data/lib/locales/en/community.yml +33 -0
  288. data/lib/locales/en/company.yml +22 -0
  289. data/lib/locales/en/compass.yml +34 -0
  290. data/lib/locales/en/computer.yml +55 -0
  291. data/lib/locales/en/conan.yml +171 -0
  292. data/lib/locales/en/construction.yml +425 -0
  293. data/lib/locales/en/control.yml +247 -0
  294. data/lib/locales/en/cosmere.yml +57 -0
  295. data/lib/locales/en/cowboy_bebop.yml +163 -0
  296. data/lib/locales/en/crypto_coin.yml +25 -0
  297. data/lib/locales/en/culture_series.yml +307 -0
  298. data/lib/locales/en/currency.yml +6 -0
  299. data/lib/locales/en/dc_comics.yml +52 -0
  300. data/lib/locales/en/demographic.yml +221 -0
  301. data/lib/locales/en/departed.yml +50 -0
  302. data/lib/locales/en/dessert.yml +6 -0
  303. data/lib/locales/en/device.yml +115 -0
  304. data/lib/locales/en/dnd.yml +451 -0
  305. data/lib/locales/en/dog.yml +11 -0
  306. data/lib/locales/en/doraemon.yml +286 -0
  307. data/lib/locales/en/dota.yml +693 -0
  308. data/lib/locales/en/dr_who.yml +96 -0
  309. data/lib/locales/en/dragon_ball.yml +246 -0
  310. data/lib/locales/en/driving_license.yml +181 -0
  311. data/lib/locales/en/drone.yml +95 -0
  312. data/lib/locales/en/dumb_and_dumber.yml +59 -0
  313. data/lib/locales/en/dune.yml +298 -0
  314. data/lib/locales/en/educator.yml +80 -0
  315. data/lib/locales/en/elder_scrolls.yml +585 -0
  316. data/lib/locales/en/electrical_components.yml +6 -0
  317. data/lib/locales/en/emotion.yml +480 -0
  318. data/lib/locales/en/esport.yml +8 -0
  319. data/lib/locales/en/fallout.yml +315 -0
  320. data/lib/locales/en/family_guy.yml +7 -0
  321. data/lib/locales/en/file.yml +13 -0
  322. data/lib/locales/en/final_space.yml +37 -0
  323. data/lib/locales/en/finance.yml +189 -0
  324. data/lib/locales/en/fma_brotherhood.yml +78 -0
  325. data/lib/locales/en/food.yml +1057 -0
  326. data/lib/locales/en/football.yml +8 -0
  327. data/lib/locales/en/fresh_prince_of_bel_air.yml +73 -0
  328. data/lib/locales/en/friends.yml +6 -0
  329. data/lib/locales/en/funny_name.yml +4 -0
  330. data/lib/locales/en/futurama.yml +344 -0
  331. data/lib/locales/en/game.yml +294 -0
  332. data/lib/locales/en/game_of_thrones.yml +8 -0
  333. data/lib/locales/en/gender.yml +6 -0
  334. data/lib/locales/en/ghostbusters.yml +91 -0
  335. data/lib/locales/en/grateful_dead.yml +48 -0
  336. data/lib/locales/en/greek_philosophers.yml +26 -0
  337. data/lib/locales/en/hacker.yml +8 -0
  338. data/lib/locales/en/hackers.yml +53 -0
  339. data/lib/locales/en/half_life.yml +88 -0
  340. data/lib/locales/en/harry_potter.yml +9 -0
  341. data/lib/locales/en/heroes.yml +411 -0
  342. data/lib/locales/en/heroes_of_the_storm.yml +134 -0
  343. data/lib/locales/en/hey_arnold.yml +24 -0
  344. data/lib/locales/en/hipster.yml +4 -0
  345. data/lib/locales/en/hitchhikers_guide_to_the_galaxy.yml +45 -0
  346. data/lib/locales/en/hobby.yml +171 -0
  347. data/lib/locales/en/horse.yml +6 -0
  348. data/lib/locales/en/house.yml +5 -0
  349. data/lib/locales/en/how_i_met_your_mother.yml +28 -0
  350. data/lib/locales/en/how_to_train_your_dragon.yml +174 -0
  351. data/lib/locales/en/id_number.yml +5 -0
  352. data/lib/locales/en/industry_segments.yml +7 -0
  353. data/lib/locales/en/internet.yml +155 -0
  354. data/lib/locales/en/invoice.yml +6 -0
  355. data/lib/locales/en/jack_handey.yml +54 -0
  356. data/lib/locales/en/job.yml +15 -0
  357. data/lib/locales/en/kamen_rider.yml +452 -0
  358. data/lib/locales/en/kpop.yml +83 -0
  359. data/lib/locales/en/league_of_legends.yml +289 -0
  360. data/lib/locales/en/lebowski.yml +43 -0
  361. data/lib/locales/en/lorem.yml +11 -0
  362. data/lib/locales/en/lovecraft.yml +79 -0
  363. data/lib/locales/en/markdown.yml +5 -0
  364. data/lib/locales/en/marketing.yml +4 -0
  365. data/lib/locales/en/measurement.yml +11 -0
  366. data/lib/locales/en/michael_scott.yml +45 -0
  367. data/lib/locales/en/military.yml +182 -0
  368. data/lib/locales/en/minecraft.yml +663 -0
  369. data/lib/locales/en/mountain.yml +171 -0
  370. data/lib/locales/en/mountaineering.yml +14 -0
  371. data/lib/locales/en/movie.yml +197 -0
  372. data/lib/locales/en/music.yml +464 -0
  373. data/lib/locales/en/myst.yml +104 -0
  374. data/lib/locales/en/name.yml +26 -0
  375. data/lib/locales/en/naruto.yml +230 -0
  376. data/lib/locales/en/nation.yml +11 -0
  377. data/lib/locales/en/nato_phonetic_alphabet.yml +4 -0
  378. data/lib/locales/en/new_girl.yml +40 -0
  379. data/lib/locales/en/one_piece.yml +9 -0
  380. data/lib/locales/en/opera.yml +340 -0
  381. data/lib/locales/en/overwatch.yml +2652 -0
  382. data/lib/locales/en/parks_and_rec.yml +7 -0
  383. data/lib/locales/en/pearl_jam.yml +213 -0
  384. data/lib/locales/en/phish.yml +395 -0
  385. data/lib/locales/en/phone_number.yml +7 -0
  386. data/lib/locales/en/pokemon.yml +421 -0
  387. data/lib/locales/en/prince.yml +227 -0
  388. data/lib/locales/en/princess_bride.yml +5 -0
  389. data/lib/locales/en/programming_language.yml +6 -0
  390. data/lib/locales/en/quote.yml +695 -0
  391. data/lib/locales/en/rajnikanth.yml +77 -0
  392. data/lib/locales/en/relationship.yml +10 -0
  393. data/lib/locales/en/restaurant.yml +129 -0
  394. data/lib/locales/en/rick_and_morty.yml +6 -0
  395. data/lib/locales/en/rock_band.yml +5 -0
  396. data/lib/locales/en/room.yml +68 -0
  397. data/lib/locales/en/rupaul.yml +125 -0
  398. data/lib/locales/en/rush.yml +32 -0
  399. data/lib/locales/en/science.yml +484 -0
  400. data/lib/locales/en/seinfeld.yml +6 -0
  401. data/lib/locales/en/shakespeare.yml +53 -0
  402. data/lib/locales/en/show.yml +597 -0
  403. data/lib/locales/en/silicon_valley.yml +53 -0
  404. data/lib/locales/en/simpsons.yml +694 -0
  405. data/lib/locales/en/slack_emoji.yml +20 -0
  406. data/lib/locales/en/sonic_the_hedgehog.yml +410 -0
  407. data/lib/locales/en/source.yml +51 -0
  408. data/lib/locales/en/south_park.yml +5 -0
  409. data/lib/locales/en/space.yml +17 -0
  410. data/lib/locales/en/spongebob.yml +489 -0
  411. data/lib/locales/en/sport.yml +130 -0
  412. data/lib/locales/en/star_trek.yml +7 -0
  413. data/lib/locales/en/star_wars.yml +606 -0
  414. data/lib/locales/en/stargate.yml +21 -0
  415. data/lib/locales/en/stranger_thing.yml +36 -0
  416. data/lib/locales/en/street_fighter.yml +1524 -0
  417. data/lib/locales/en/stripe.yml +42 -0
  418. data/lib/locales/en/studio_ghibli.yml +107 -0
  419. data/lib/locales/en/subscription.yml +8 -0
  420. data/lib/locales/en/suits.yml +45 -0
  421. data/lib/locales/en/super_mario.yml +58 -0
  422. data/lib/locales/en/super_smash_bros.yml +223 -0
  423. data/lib/locales/en/superhero.yml +12 -0
  424. data/lib/locales/en/supernatural.yml +141 -0
  425. data/lib/locales/en/sword_art_online.yml +334 -0
  426. data/lib/locales/en/tarkov.yml +593 -0
  427. data/lib/locales/en/tea.yml +172 -0
  428. data/lib/locales/en/team.yml +8 -0
  429. data/lib/locales/en/the_expanse.yml +7 -0
  430. data/lib/locales/en/the_it_crowd.yml +155 -0
  431. data/lib/locales/en/the_kingkiller_chronicle.yml +56 -0
  432. data/lib/locales/en/the_office.yml +86 -0
  433. data/lib/locales/en/the_thick_of_it.yml +6 -0
  434. data/lib/locales/en/tolkien.yml +2453 -0
  435. data/lib/locales/en/touhou.yml +839 -0
  436. data/lib/locales/en/tron.yml +227 -0
  437. data/lib/locales/en/twin_peaks.yml +6 -0
  438. data/lib/locales/en/umphreys_mcgee.yml +4 -0
  439. data/lib/locales/en/university.yml +10 -0
  440. data/lib/locales/en/v_for_vendetta.yml +163 -0
  441. data/lib/locales/en/vehicle.yml +2814 -0
  442. data/lib/locales/en/venture_bros.yml +7 -0
  443. data/lib/locales/en/verbs.yml +8 -0
  444. data/lib/locales/en/volleyball.yml +501 -0
  445. data/lib/locales/en/warhammer_fantasy.yml +582 -0
  446. data/lib/locales/en/witcher.yml +430 -0
  447. data/lib/locales/en/world_cup.yml +271 -0
  448. data/lib/locales/en/world_of_warcraft.yml +126 -0
  449. data/lib/locales/en/yoda.yml +4 -0
  450. data/lib/locales/en/zelda.yml +966 -0
  451. data/lib/locales/en-AU.yml +67 -0
  452. data/lib/locales/{en-bork.yml → en-BORK.yml} +1 -1
  453. data/lib/locales/en-CA.yml +39 -0
  454. data/lib/locales/{en-gb.yml → en-GB.yml} +3 -3
  455. data/lib/locales/{en-ind.yml → en-IND.yml} +10 -4
  456. data/lib/locales/en-MS.yml +48 -0
  457. data/lib/locales/en-NEP.yml +52 -0
  458. data/lib/locales/en-NG.yml +77 -0
  459. data/lib/locales/en-NZ.yml +165 -0
  460. data/lib/locales/en-PAK.yml +19 -0
  461. data/lib/locales/en-SG.yml +36 -0
  462. data/lib/locales/en-TH.yml +360 -0
  463. data/lib/locales/en-UG.yml +128 -0
  464. data/lib/locales/en-US.yml +128 -0
  465. data/lib/locales/en-ZA.yml +147 -0
  466. data/lib/locales/en-au-ocker.yml +34 -0
  467. data/lib/locales/en.yml +6 -67
  468. data/lib/locales/es-AR.yml +4600 -0
  469. data/lib/locales/es-MX.yml +104 -0
  470. data/lib/locales/es.yml +149 -0
  471. data/lib/locales/fa.yml +12 -0
  472. data/lib/locales/fi-FI.yml +36 -0
  473. data/lib/locales/fr/address.yml +20 -0
  474. data/lib/locales/fr/adjective.yml +266 -0
  475. data/lib/locales/fr/ancient.yml +141 -0
  476. data/lib/locales/fr/animal.yml +5 -0
  477. data/lib/locales/fr/appliance.yml +4 -0
  478. data/lib/locales/fr/book.yml +7 -0
  479. data/lib/locales/fr/color.yml +4 -0
  480. data/lib/locales/fr/company.yml +17 -0
  481. data/lib/locales/fr/compass.yml +23 -0
  482. data/lib/locales/fr/demographic.yml +4 -0
  483. data/lib/locales/fr/gender.yml +6 -0
  484. data/lib/locales/fr/internet.yml +5 -0
  485. data/lib/locales/fr/lorem.yml +5 -0
  486. data/lib/locales/fr/measurement.yml +7 -0
  487. data/lib/locales/fr/name.yml +21 -0
  488. data/lib/locales/fr/phone_number.yml +7 -0
  489. data/lib/locales/fr/pokemon.yml +7 -0
  490. data/lib/locales/fr-CA.yml +106 -0
  491. data/lib/locales/fr-CH.yml +77 -0
  492. data/lib/locales/fr.yml +1 -51
  493. data/lib/locales/he.yml +27 -0
  494. data/lib/locales/hy.yml +411 -0
  495. data/lib/locales/id.yml +26 -0
  496. data/lib/locales/it.yml +71 -0
  497. data/lib/locales/ja/README.md +13 -0
  498. data/lib/locales/ja/address.yml +120539 -0
  499. data/lib/locales/ja/adjective.yml +148 -0
  500. data/lib/locales/ja/ancient.yml +4 -0
  501. data/lib/locales/ja/animal.yml +5 -0
  502. data/lib/locales/ja/bank.yml +4 -0
  503. data/lib/locales/ja/book.yml +7 -0
  504. data/lib/locales/ja/cat.yml +5 -0
  505. data/lib/locales/ja/coffee.yml +4 -0
  506. data/lib/locales/ja/color.yml +4 -0
  507. data/lib/locales/ja/commerce.yml +11 -0
  508. data/lib/locales/ja/company.yml +8 -0
  509. data/lib/locales/ja/dog.yml +6 -0
  510. data/lib/locales/ja/emotion.yml +51 -0
  511. data/lib/locales/ja/food.yml +4 -0
  512. data/lib/locales/ja/gender.yml +4 -0
  513. data/lib/locales/ja/lorem.yml +9 -0
  514. data/lib/locales/ja/name.yml +13 -0
  515. data/lib/locales/ja/naruto.yml +230 -0
  516. data/lib/locales/ja/overwatch.yml +5 -0
  517. data/lib/locales/ja/phone_number.yml +7 -0
  518. data/lib/locales/ja/pokemon.yml +7 -0
  519. data/lib/locales/ja/relationship.yml +10 -0
  520. data/lib/locales/ja/restaurant.yml +11 -0
  521. data/lib/locales/ja/space.yml +5 -0
  522. data/lib/locales/ja/studio_ghibli.yml +112 -0
  523. data/lib/locales/ja/subscription.yml +8 -0
  524. data/lib/locales/ja/super_mario.yml +9 -0
  525. data/lib/locales/ja/super_smash_bros.yml +8 -0
  526. data/lib/locales/ja/university.yml +9 -0
  527. data/lib/locales/ja/zelda.yml +5 -0
  528. data/lib/locales/ko.yml +132 -0
  529. data/lib/locales/lt.yml +34 -0
  530. data/lib/locales/lv.yml +55 -0
  531. data/lib/locales/mi-NZ.yml +281 -0
  532. data/lib/locales/{no-nb.yml → nb-NO.yml} +20 -8
  533. data/lib/locales/nl.yml +45 -30
  534. data/lib/locales/no.yml +7 -0
  535. data/lib/locales/pl.yml +20 -10
  536. data/lib/locales/pt-BR.yml +725 -0
  537. data/lib/locales/{pt-br.yml → pt.yml} +25 -15
  538. data/lib/locales/ru.yml +117 -0
  539. data/lib/locales/sk.yml +80 -0
  540. data/lib/locales/sv.yml +81 -0
  541. data/lib/locales/th.yml +380 -0
  542. data/lib/locales/tr.yml +40 -0
  543. data/lib/locales/uk.yml +88 -0
  544. data/lib/locales/vi.yml +8 -3
  545. data/lib/locales/zh-CN.yml +56 -0
  546. data/lib/locales/zh-TW.yml +29 -0
  547. metadata +731 -97
  548. data/History.txt +0 -103
  549. data/lib/extensions/array.rb +0 -7
  550. data/lib/extensions/symbol.rb +0 -9
  551. data/lib/faker/address.rb +0 -49
  552. data/lib/faker/company.rb +0 -26
  553. data/lib/faker/internet.rb +0 -71
  554. data/lib/faker/lorem.rb +0 -59
  555. data/lib/faker/name.rb +0 -22
  556. data/lib/faker/phone_number.rb +0 -17
  557. data/lib/locales/de-ch.yml +0 -19
  558. data/lib/locales/en-au.yml +0 -22
  559. data/lib/locales/en-ca.yml +0 -14
  560. data/lib/locales/en-us.yml +0 -6
  561. data/test/test_faker.rb +0 -29
  562. data/test/test_faker_city.rb +0 -45
  563. data/test/test_faker_internet.rb +0 -56
  564. data/test/test_faker_lorem.rb +0 -69
  565. data/test/test_faker_name.rb +0 -20
  566. data/test/test_faker_street.rb +0 -44
  567. data/test/test_flexible.rb +0 -56
  568. data/test/test_helper.rb +0 -5
  569. data/test/test_locale.rb +0 -41
@@ -0,0 +1,135 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Cannabis < Base
5
+ ##
6
+ # Produces a random strain.
7
+ #
8
+ # @return [String]
9
+ #
10
+ # @example
11
+ # Faker::Cannabis.strain #=> "Super Glue"
12
+ #
13
+ # @faker.version 1.9.1
14
+ def self.strain
15
+ fetch('cannabis.strains')
16
+ end
17
+
18
+ ##
19
+ # Produces a random abbreviation.
20
+ #
21
+ # @return [String]
22
+ #
23
+ # @example
24
+ # Faker::Cannabis.cannabinoid_abbreviation #=> "CBGa"
25
+ #
26
+ # @faker.version 1.9.1
27
+ def self.cannabinoid_abbreviation
28
+ fetch('cannabis.cannabinoid_abbreviations')
29
+ end
30
+
31
+ ##
32
+ # Produces a random cannabinoid type.
33
+ #
34
+ # @return [String]
35
+ #
36
+ # @example
37
+ # Faker::Cannabis.cannabinoid #=> "Cannabinolic Acid"
38
+ #
39
+ # @faker.version 1.9.1
40
+ def self.cannabinoid
41
+ fetch('cannabis.cannabinoids')
42
+ end
43
+
44
+ ##
45
+ # Produces a random terpene type.
46
+ #
47
+ # @return [String]
48
+ #
49
+ # @example
50
+ # Faker::Cannabis.terpene #=> "Terpinene"
51
+ #
52
+ # @faker.version 1.9.1
53
+ def self.terpene
54
+ fetch('cannabis.terpenes')
55
+ end
56
+
57
+ ##
58
+ # Produces a random kind of medical use.
59
+ #
60
+ # @return [String]
61
+ #
62
+ # @example
63
+ # Faker::Cannabis.medical_use #=> "anti-cancer"
64
+ #
65
+ # @faker.version 1.9.1
66
+ def self.medical_use
67
+ fetch('cannabis.medical_uses')
68
+ end
69
+
70
+ ##
71
+ # Produces a random health benefit.
72
+ #
73
+ # @return [String]
74
+ #
75
+ # @example
76
+ # Faker::Cannabis.health_benefit #=> "prevents infection"
77
+ #
78
+ # @faker.version 1.9.1
79
+ def self.health_benefit
80
+ fetch('cannabis.health_benefits')
81
+ end
82
+
83
+ ##
84
+ # Produces a random category.
85
+ #
86
+ # @return [String]
87
+ #
88
+ # @example
89
+ # Faker::Cannabis.category #=> "crystalline"
90
+ #
91
+ # @faker.version 1.9.1
92
+ def self.category
93
+ fetch('cannabis.categories')
94
+ end
95
+
96
+ ##
97
+ # Produces a random type.
98
+ #
99
+ # @return [String]
100
+ #
101
+ # @example
102
+ # Faker::Cannabis.type #=> "indica"
103
+ #
104
+ # @faker.version 1.9.1
105
+ def self.type
106
+ fetch('cannabis.types')
107
+ end
108
+
109
+ ##
110
+ # Produces a random buzzword.
111
+ #
112
+ # @return [String]
113
+ #
114
+ # @example
115
+ # Faker::Cannabis.buzzword #=> "high"
116
+ #
117
+ # @faker.version 1.9.1
118
+ def self.buzzword
119
+ fetch('cannabis.buzzwords')
120
+ end
121
+
122
+ ##
123
+ # Produces a random brand.
124
+ #
125
+ # @return [String]
126
+ #
127
+ # @example
128
+ # Faker::Cannabis.brand #=> "Cannavore Confections"
129
+ #
130
+ # @faker.version 1.9.1
131
+ def self.brand
132
+ fetch('cannabis.brands')
133
+ end
134
+ end
135
+ end
@@ -0,0 +1,92 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class ChileRut < Base
5
+ class << self
6
+ @last_rut = nil
7
+
8
+ ##
9
+ # Produces a random Chilean RUT (Rol Unico Tributario, ID with 8 digits).
10
+ #
11
+ # @param min_rut [Integer] Specifies the minimum value of the rut.
12
+ # @param fixed [Boolean] Determines if the rut is fixed (returns the min_rut value).
13
+ # @return [Number]
14
+ #
15
+ # @example
16
+ # Faker::ChileRut.rut #=> 11235813
17
+ # Faker::ChileRut.rut(min_rut: 20890156) #=> 31853211
18
+ # Faker::ChileRut.rut(min_rut: 20890156, fixed: true) #=> 20890156
19
+ #
20
+ # @faker.version 1.9.2
21
+ def rut(min_rut: 1, fixed: false)
22
+ @last_rut = fixed ? min_rut : rand_in_range(min_rut, 99_999_999)
23
+ end
24
+
25
+ ##
26
+ # Produces a random Chilean digito verificador (check-digit).
27
+ #
28
+ # @return [String]
29
+ #
30
+ # @example
31
+ # Faker::ChileRut.dv #=> "k"
32
+ #
33
+ # @faker.version 1.9.2
34
+ def dv
35
+ split_reversed_rut = @last_rut.to_s.reverse.chars
36
+ seq = [2, 3, 4, 5, 6, 7]
37
+ i = 0
38
+ digit_sum = split_reversed_rut.reduce(0) do |sum, n|
39
+ partial_result = sum.to_i + (n.to_i * seq[i])
40
+ i = i == 5 ? 0 : i + 1
41
+ partial_result
42
+ end
43
+ partial_check_digit = 11 - (digit_sum % 11)
44
+ case partial_check_digit
45
+ when 11
46
+ '0'
47
+ when 10
48
+ 'k'
49
+ else
50
+ partial_check_digit.to_s
51
+ end
52
+ end
53
+
54
+ ##
55
+ # Produces a random Chilean digito verificador (check-digit).
56
+ # Alias for english speaking devs.
57
+ #
58
+ # @return [String]
59
+ #
60
+ # @example
61
+ # Faker::ChileRut.check_digit #=> "5"
62
+ #
63
+ # @faker.version 1.9.2
64
+ def check_digit
65
+ dv
66
+ end
67
+
68
+ ##
69
+ # Produces a random Chilean RUT (Rol Unico Tributario, ID with 8 digits) with a dv (digito verificador, check-digit).
70
+ #
71
+ # @param min_rut [Integer] Specifies the minimum value of the rut.
72
+ # @param fixed [Boolean] Determines if the rut is fixed (returns the min_rut value).
73
+ # @return [String]
74
+ #
75
+ # @example
76
+ # Faker::ChileRut.full_rut #=> "30686957-4"
77
+ # Faker::ChileRut.full_rut(min_rut: 20890156) #=> "30686957-4"
78
+ # Faker::ChileRut.full_rut(min_rut: 30686957, fixed: true) #=> "30686957-4"
79
+ #
80
+ # @faker.version next
81
+ def full_rut(min_rut: 0, fixed: false, formatted: false)
82
+ if formatted
83
+ "#{rut(min_rut: min_rut, fixed: fixed).to_s.reverse.gsub(/(\d{3})(?=\d)/, '\\1.').reverse}-#{dv}"
84
+ else
85
+ "#{rut(min_rut: min_rut, fixed: fixed)}-#{dv}"
86
+ end
87
+ end
88
+
89
+ attr_reader :last_rut
90
+ end
91
+ end
92
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class ChuckNorris < Base
5
+ flexible :chuck_norris
6
+
7
+ class << self
8
+ ##
9
+ # Produces a Chuck Norris Fact.
10
+ # Original list of facts:
11
+ # https://github.com/jenkinsci/chucknorris-plugin/blob/master/src/main/java/hudson/plugins/chucknorris/FactGenerator.java
12
+ #
13
+ # @return [String]
14
+ #
15
+ # @example
16
+ # Faker::ChuckNorris.fact
17
+ # #=> "Chuck Norris can solve the Towers of Hanoi in one move."
18
+ #
19
+ # @faker.version 1.6.4
20
+ def fact
21
+ fetch('chuck_norris.fact')
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,269 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Code < Base
5
+ flexible :code
6
+ class << self
7
+ ##
8
+ # Produces a random NPI (National Provider Identifier) code.
9
+ #
10
+ # @return [String]
11
+ #
12
+ # @example
13
+ # Faker::Code.npi #=> "9804062802"
14
+ #
15
+ # @faker.version 1.9.4
16
+ def npi
17
+ rand(10**10).to_s.rjust(10, '0')
18
+ end
19
+
20
+ ##
21
+ # Produces a random ISBN (International Standard Book Number) code.
22
+ #
23
+ # @param base [Integer] the length of the code to generate (either 10 or 13)
24
+ # @return [String]
25
+ #
26
+ # @example
27
+ # Faker::Code.isbn(base: 13) #=> "896579606969-8"
28
+ # @example
29
+ # Faker::Code.isbn #=> "170366802-2"
30
+ #
31
+ # @faker.version 2.2.0
32
+ def isbn(base: 10)
33
+ case base
34
+ when 10 then generate_base10_isbn
35
+ when 13 then generate_base13_isbn
36
+ else raise ArgumentError, 'base must be 10 or 13'
37
+ end
38
+ end
39
+
40
+ ##
41
+ # Produces a random EAN (European Article Number) code.
42
+ #
43
+ # @param base [Integer] the length of the code to generate (either 8 or 13)
44
+ # @return [String]
45
+ #
46
+ # @example
47
+ # Faker::Code.ean(base: 8) #=> "36941070"
48
+ # @example
49
+ # Faker::Code.ean #=> "9941880131907"
50
+ #
51
+ # @faker.version 2.2.0
52
+ def ean(base: 13)
53
+ case base
54
+ when 8 then generate_base8_ean
55
+ when 13 then generate_base13_ean
56
+ else raise ArgumentError, 'base must be 8 or 13'
57
+ end
58
+ end
59
+
60
+ ##
61
+ # Produces a random RUT (Rol Unico Nacional) code.
62
+ #
63
+ # @return [String]
64
+ #
65
+ # @example
66
+ # Faker::Code.rut #=> "91611842-2"
67
+ #
68
+ # @faker.version 1.9.4
69
+ def rut
70
+ value = Number.number(digits: 8).to_s
71
+ vd = rut_verificator_digit(value)
72
+ value << "-#{vd}"
73
+ end
74
+
75
+ ##
76
+ # Produces a random NRIC (National Registry Identity Card) code.
77
+ # By default generates a Singaporean NRIC ID for someone
78
+ # who is born between the age of 18 and 65.
79
+ #
80
+ # @param min_age [Integer] the min age of the person in years
81
+ # @param max_age [Integer] the max age of the person in years
82
+ # @return [String]
83
+ #
84
+ # @example
85
+ # Faker::Code.nric(min_age: 25, max_age: 50) #=> "S9347283G"
86
+ # @example
87
+ # Faker::Code.nric(max_age: 55) #=> "S7876903C"
88
+ # @example
89
+ # Faker::Code.nric(min_age: 25) #=> "S6281697Z"
90
+ # @example
91
+ # Faker::Code.nric #=> "S6372958B"
92
+ #
93
+ # @faker.version 2.2.0
94
+ def nric(min_age: 18, max_age: 65)
95
+ birthyear = Date.birthday(min_age: min_age, max_age: max_age).year
96
+ prefix = birthyear < 2000 ? 'S' : 'T'
97
+ values = birthyear.to_s[-2..]
98
+ values << regexify(/\d{5}/)
99
+ check_alpha = generate_nric_check_alphabet(values, prefix)
100
+ "#{prefix}#{values}#{check_alpha}"
101
+ end
102
+
103
+ ##
104
+ # Produces a random IMEI (International Mobile Equipment Number) code.
105
+ #
106
+ # @return [String]
107
+ #
108
+ # @example
109
+ # Faker::Code.imei #=> "492033129092256"
110
+ #
111
+ # @faker.version 1.9.4
112
+ def imei
113
+ generate_imei
114
+ end
115
+
116
+ ##
117
+ # Retrieves a real Amazon ASIN code from https://archive.org/details/asin_listing
118
+ #
119
+ # @return [String]
120
+ #
121
+ # @example
122
+ # Faker::Code.asin #=> "B000MZW1GE"
123
+ #
124
+ # @faker.version 1.9.4
125
+ def asin
126
+ fetch('code.asin')
127
+ end
128
+
129
+ ##
130
+ # Produces a random SIN (Social Insurance Number for Canada) code.
131
+ #
132
+ # @return [String]
133
+ #
134
+ # @example
135
+ # Faker::Code.sin #=> "996586962"
136
+ #
137
+ # @faker.version 1.9.4
138
+ def sin
139
+ # 1 - province or temporary resident
140
+ # 2-8 - random numbers
141
+ # 9 - checksum
142
+
143
+ # 1st digit. 8,0 are not used
144
+ registry = Faker::Base.sample([1, 2, 3, 4, 5, 6, 7, 9]).to_s
145
+
146
+ # generate 2nd to 8th
147
+ partial = Array.new(7) { Faker::Config.random.rand(0..9) }.join
148
+
149
+ # Generate 9th digit
150
+ check_digit = generate_sin_check_digit("#{registry}#{partial}0").to_s
151
+
152
+ registry + partial + check_digit
153
+ end
154
+
155
+ private
156
+
157
+ # Reporting body identifier
158
+ RBI = %w[01 10 30 33 35 44 45 49 50 51 52 53 54 86 91 98 99].freeze
159
+
160
+ def generate_imei
161
+ str = Array.new(15, 0)
162
+ sum = 0
163
+ len = 15
164
+
165
+ # Fill in the first two values of the string based with the specified prefix.
166
+ # Reporting Body Identifier list: http://en.wikipedia.org/wiki/Reporting_Body_Identifier
167
+ arr = sample(RBI)
168
+ str[0] = arr[0].to_i
169
+ str[1] = arr[1].to_i
170
+ pos = 2
171
+
172
+ # Fill all the remaining numbers except for the last one with random values.
173
+ while pos < (len - 1)
174
+ str[pos] = rand(0..9)
175
+ pos += 1
176
+ end
177
+
178
+ # Calculate the Luhn checksum of the values thus far
179
+ len_offset = (len + 1) % 2
180
+ (0..(len - 1)).each do |position|
181
+ if (position + len_offset).odd?
182
+ t = str[position] * 2
183
+
184
+ t -= 9 if t > 9
185
+
186
+ sum += t
187
+ else
188
+ sum += str[position]
189
+ end
190
+ end
191
+
192
+ # Choose the last digit so that it causes the entire string to pass the checksum.
193
+ str[len - 1] = (10 - (sum % 10)) % 10
194
+
195
+ # Output the IMEI value.
196
+ str.join
197
+ end
198
+
199
+ def generate_base10_isbn
200
+ values = regexify(/\d{9}/)
201
+ remainder = sum(values) { |value, index| (index + 1) * value.to_i } % 11
202
+ values << "-#{remainder == 10 ? 'X' : remainder}"
203
+ end
204
+
205
+ def generate_base13_isbn
206
+ values = regexify(/\d{12}/)
207
+ remainder = sum(values) { |value, index| index.even? ? value.to_i : value.to_i * 3 } % 10
208
+ values << "-#{(10 - remainder) % 10}"
209
+ end
210
+
211
+ def sum(values)
212
+ values.chars.each_with_index.inject(0) do |sum, (value, index)|
213
+ sum + yield(value, index)
214
+ end
215
+ end
216
+
217
+ def generate_base8_ean
218
+ values = regexify(/\d{7}/)
219
+ check_digit = 10 - values.chars.each_with_index.inject(0) { |s, (v, i)| s + v.to_i * EAN_CHECK_DIGIT8[i] } % 10
220
+ values << (check_digit == 10 ? 0 : check_digit).to_s
221
+ end
222
+
223
+ def generate_base13_ean
224
+ values = regexify(/\d{12}/)
225
+ check_digit = 10 - values.chars.each_with_index.inject(0) { |s, (v, i)| s + v.to_i * EAN_CHECK_DIGIT13[i] } % 10
226
+ values << (check_digit == 10 ? 0 : check_digit).to_s
227
+ end
228
+
229
+ EAN_CHECK_DIGIT8 = [3, 1, 3, 1, 3, 1, 3].freeze
230
+ EAN_CHECK_DIGIT13 = [1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3].freeze
231
+
232
+ def rut_verificator_digit(rut)
233
+ total = rut.to_s.rjust(8, '0').chars.zip(%w[3 2 7 6 5 4 3 2]).collect { |a, b| a.to_i * b.to_i }.inject(:+)
234
+ (11 - total % 11).to_s.gsub(/10/, 'k').gsub(/11/, '0')
235
+ end
236
+
237
+ def generate_nric_check_alphabet(values, prefix)
238
+ weight = %w[2 7 6 5 4 3 2]
239
+ total = values.chars.zip(weight).collect { |a, b| a.to_i * b.to_i }.inject(:+)
240
+ total += 4 if prefix == 'T'
241
+ %w[A B C D E F G H I Z J][10 - total % 11]
242
+ end
243
+
244
+ def generate_sin_check_digit(digits)
245
+ # Fast Luhn checksum code from luhn.js:
246
+ # https://gist.github.com/ShirtlessKirk/2134376
247
+
248
+ len = 9
249
+ mul = 0
250
+
251
+ luhn_arr = [
252
+ [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
253
+ [0, 2, 4, 6, 8, 1, 3, 5, 7, 9]
254
+ ]
255
+ sum = 0
256
+
257
+ while len.positive?
258
+ len -= 1
259
+ num = digits[len].to_i
260
+ sum += luhn_arr[mul][num]
261
+ mul ^= 1
262
+ end
263
+
264
+ checksum = sum % 10
265
+ checksum.zero? ? checksum : (10 - checksum)
266
+ end
267
+ end
268
+ end
269
+ end
@@ -0,0 +1,82 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Coffee < Base
5
+ flexible :coffee
6
+
7
+ class << self
8
+ ##
9
+ # Produces a random blend name.
10
+ #
11
+ # @return [String]
12
+ #
13
+ # @example
14
+ # Faker::Coffee.blend_name #=> "Major Java"
15
+ #
16
+ # @faker.version 1.9.0
17
+ def blend_name
18
+ parse('coffee.blend_name')
19
+ end
20
+
21
+ ##
22
+ # Produces a random coffee origin place.
23
+ #
24
+ # @return [String]
25
+ #
26
+ # @example
27
+ # Faker::Coffee.origin #=> "Oaxaca, Mexico"
28
+ #
29
+ # @faker.version 1.9.0
30
+ def origin
31
+ country = fetch('coffee.country')
32
+ region = fetch("coffee.regions.#{search_format(country)}")
33
+ "#{region}, #{country}"
34
+ end
35
+
36
+ ##
37
+ # Produces a random coffee variety.
38
+ #
39
+ # @return [String]
40
+ #
41
+ # @example
42
+ # Faker::Coffee.variety #=> "Red Bourbon"
43
+ #
44
+ # @faker.version 1.9.0
45
+ def variety
46
+ fetch('coffee.variety')
47
+ end
48
+
49
+ ##
50
+ # Produces a string containing a random description of a coffee's taste.
51
+ #
52
+ # @return [String]
53
+ #
54
+ # @example
55
+ # Faker::Coffee.notes #=> "dull, tea-like, cantaloupe, soy sauce, marshmallow"
56
+ #
57
+ # @faker.version 1.9.0
58
+ def notes
59
+ parse('coffee.notes')
60
+ end
61
+
62
+ ##
63
+ # Produces a random coffee taste intensity.
64
+ #
65
+ # @return [String]
66
+ #
67
+ # @example
68
+ # Faker::Coffee.intensifier #=> "mild"
69
+ #
70
+ # @faker.version 1.9.0
71
+ def intensifier
72
+ fetch('coffee.intensifier')
73
+ end
74
+
75
+ private
76
+
77
+ def search_format(key)
78
+ key.split.length > 1 ? key.split.join('_').downcase : key.downcase
79
+ end
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Coin < Base
5
+ class << self
6
+ ##
7
+ # Retrieves a random coin from any country.
8
+ #
9
+ # @return [String]
10
+ #
11
+ # @example
12
+ # Faker::Coin.name #=> "Brazilian Real"
13
+ #
14
+ # @faker.version 1.9.2
15
+ def name
16
+ fetch('currency.name')
17
+ end
18
+
19
+ ##
20
+ # Retrieves a face to a flipped coin
21
+ #
22
+ # @return [String]
23
+ #
24
+ # @example
25
+ # Faker::Coin.flip #=> "Heads"
26
+ #
27
+ # @faker.version 1.9.2
28
+ def flip
29
+ fetch('coin.flip')
30
+ end
31
+ end
32
+ end
33
+ end