faker 1.1.2 → 3.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (573) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +2446 -0
  3. data/History.md +176 -0
  4. data/License.txt +2 -2
  5. data/README.md +495 -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 +584 -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/finance.rb +112 -0
  66. data/lib/faker/default/food.rb +139 -0
  67. data/lib/faker/default/funny_name.rb +90 -0
  68. data/lib/faker/default/gender.rb +46 -0
  69. data/lib/faker/default/greek_philosophers.rb +33 -0
  70. data/lib/faker/default/hacker.rb +103 -0
  71. data/lib/faker/default/hipster.rb +155 -0
  72. data/lib/faker/default/hobby.rb +22 -0
  73. data/lib/faker/default/house.rb +33 -0
  74. data/lib/faker/default/id_number.rb +410 -0
  75. data/lib/faker/default/industry_segments.rb +61 -0
  76. data/lib/faker/default/internet.rb +612 -0
  77. data/lib/faker/default/internet_http.rb +48 -0
  78. data/lib/faker/default/invoice.rb +123 -0
  79. data/lib/faker/default/job.rb +61 -0
  80. data/lib/faker/default/json.rb +125 -0
  81. data/lib/faker/default/kpop.rb +85 -0
  82. data/lib/faker/default/lorem.rb +250 -0
  83. data/lib/faker/default/lorem_flickr.rb +110 -0
  84. data/lib/faker/default/markdown.rb +170 -0
  85. data/lib/faker/default/marketing.rb +22 -0
  86. data/lib/faker/default/measurement.rb +175 -0
  87. data/lib/faker/default/military.rb +98 -0
  88. data/lib/faker/default/mountain.rb +33 -0
  89. data/lib/faker/default/name.rb +152 -0
  90. data/lib/faker/default/nation.rb +73 -0
  91. data/lib/faker/default/nato_phonetic_alphabet.rb +20 -0
  92. data/lib/faker/default/nhs.rb +53 -0
  93. data/lib/faker/default/number.rb +244 -0
  94. data/lib/faker/default/omniauth.rb +471 -0
  95. data/lib/faker/default/phone_number.rb +133 -0
  96. data/lib/faker/default/placeholdit.rb +52 -0
  97. data/lib/faker/default/programming_language.rb +33 -0
  98. data/lib/faker/default/relationship.rb +87 -0
  99. data/lib/faker/default/religion.rb +6 -0
  100. data/lib/faker/default/restaurant.rb +63 -0
  101. data/lib/faker/default/science.rb +154 -0
  102. data/lib/faker/default/slack_emoji.rb +124 -0
  103. data/lib/faker/default/source.rb +63 -0
  104. data/lib/faker/default/south_africa.rb +141 -0
  105. data/lib/faker/default/space.rb +191 -0
  106. data/lib/faker/default/string.rb +59 -0
  107. data/lib/faker/default/stripe.rb +126 -0
  108. data/lib/faker/default/subscription.rb +70 -0
  109. data/lib/faker/default/superhero.rb +72 -0
  110. data/lib/faker/default/tea.rb +41 -0
  111. data/lib/faker/default/team.rb +74 -0
  112. data/lib/faker/default/time.rb +149 -0
  113. data/lib/faker/default/twitter.rb +207 -0
  114. data/lib/faker/default/types.rb +160 -0
  115. data/lib/faker/default/university.rb +75 -0
  116. data/lib/faker/default/vehicle.rb +320 -0
  117. data/lib/faker/default/verb.rb +72 -0
  118. data/lib/faker/default/vulnerability_identifier.rb +23 -0
  119. data/lib/faker/default/world_cup.rb +77 -0
  120. data/lib/faker/fantasy/tolkien.rb +67 -0
  121. data/lib/faker/games/clash_of_clans.rb +48 -0
  122. data/lib/faker/games/control.rb +113 -0
  123. data/lib/faker/games/dnd.rb +178 -0
  124. data/lib/faker/games/dota.rb +89 -0
  125. data/lib/faker/games/elder_scrolls.rb +139 -0
  126. data/lib/faker/games/fallout.rb +62 -0
  127. data/lib/faker/games/game.rb +48 -0
  128. data/lib/faker/games/half_life.rb +48 -0
  129. data/lib/faker/games/heroes.rb +61 -0
  130. data/lib/faker/games/heroes_of_the_storm.rb +72 -0
  131. data/lib/faker/games/league_of_legends.rb +87 -0
  132. data/lib/faker/games/minecraft.rb +113 -0
  133. data/lib/faker/games/myst.rb +74 -0
  134. data/lib/faker/games/overwatch.rb +48 -0
  135. data/lib/faker/games/pokemon.rb +48 -0
  136. data/lib/faker/games/sonic_the_hedgehog.rb +48 -0
  137. data/lib/faker/games/street_fighter.rb +61 -0
  138. data/lib/faker/games/super_mario.rb +48 -0
  139. data/lib/faker/games/super_smash_bros.rb +35 -0
  140. data/lib/faker/games/tarkov.rb +205 -0
  141. data/lib/faker/games/touhou.rb +75 -0
  142. data/lib/faker/games/warhammer_fantasy.rb +74 -0
  143. data/lib/faker/games/witcher.rb +126 -0
  144. data/lib/faker/games/world_of_warcraft.rb +60 -0
  145. data/lib/faker/games/zelda.rb +62 -0
  146. data/lib/faker/japanese_media/conan.rb +48 -0
  147. data/lib/faker/japanese_media/cowboy_bebop.rb +61 -0
  148. data/lib/faker/japanese_media/doraemon.rb +48 -0
  149. data/lib/faker/japanese_media/dragon_ball.rb +48 -0
  150. data/lib/faker/japanese_media/fullmetal_alchemist_brotherhood.rb +48 -0
  151. data/lib/faker/japanese_media/kamen_rider.rb +102 -0
  152. data/lib/faker/japanese_media/naruto.rb +61 -0
  153. data/lib/faker/japanese_media/one_piece.rb +87 -0
  154. data/lib/faker/japanese_media/studio_ghibli.rb +48 -0
  155. data/lib/faker/japanese_media/sword_art_online.rb +61 -0
  156. data/lib/faker/locations/australia.rb +47 -0
  157. data/lib/faker/movies/avatar.rb +49 -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 +124 -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/chess.rb +90 -0
  192. data/lib/faker/sports/football.rb +74 -0
  193. data/lib/faker/sports/mountaineering.rb +22 -0
  194. data/lib/faker/sports/sport.rb +116 -0
  195. data/lib/faker/sports/volleyball.rb +74 -0
  196. data/lib/faker/travel/airport.rb +43 -0
  197. data/lib/faker/tv_shows/aqua_teen_hunger_force.rb +37 -0
  198. data/lib/faker/tv_shows/big_bang_theory.rb +37 -0
  199. data/lib/faker/tv_shows/bojack_horseman.rb +51 -0
  200. data/lib/faker/tv_shows/breaking_bad.rb +37 -0
  201. data/lib/faker/tv_shows/brooklyn_nine_nine.rb +38 -0
  202. data/lib/faker/tv_shows/buffy.rb +89 -0
  203. data/lib/faker/tv_shows/community.rb +38 -0
  204. data/lib/faker/tv_shows/dr_who.rb +115 -0
  205. data/lib/faker/tv_shows/dumb_and_dumber.rb +51 -0
  206. data/lib/faker/tv_shows/family_guy.rb +51 -0
  207. data/lib/faker/tv_shows/final_space.rb +51 -0
  208. data/lib/faker/tv_shows/friends.rb +50 -0
  209. data/lib/faker/tv_shows/futurama.rb +65 -0
  210. data/lib/faker/tv_shows/game_of_thrones.rb +77 -0
  211. data/lib/faker/tv_shows/hey_arnold.rb +50 -0
  212. data/lib/faker/tv_shows/how_i_met_your_mother.rb +64 -0
  213. data/lib/faker/tv_shows/michael_scott.rb +23 -0
  214. data/lib/faker/tv_shows/new_girl.rb +38 -0
  215. data/lib/faker/tv_shows/parks_and_rec.rb +37 -0
  216. data/lib/faker/tv_shows/rick_and_morty.rb +51 -0
  217. data/lib/faker/tv_shows/ru_paul.rb +37 -0
  218. data/lib/faker/tv_shows/seinfeld.rb +51 -0
  219. data/lib/faker/tv_shows/silicon_valley.rb +118 -0
  220. data/lib/faker/tv_shows/simpsons.rb +65 -0
  221. data/lib/faker/tv_shows/south_park.rb +38 -0
  222. data/lib/faker/tv_shows/spongebob.rb +50 -0
  223. data/lib/faker/tv_shows/star_trek.rb +63 -0
  224. data/lib/faker/tv_shows/stargate.rb +51 -0
  225. data/lib/faker/tv_shows/stranger_things.rb +38 -0
  226. data/lib/faker/tv_shows/suits.rb +37 -0
  227. data/lib/faker/tv_shows/supernatural.rb +48 -0
  228. data/lib/faker/tv_shows/the_expanse.rb +63 -0
  229. data/lib/faker/tv_shows/the_fresh_prince_of_bel_air.rb +64 -0
  230. data/lib/faker/tv_shows/the_it_crowd.rb +64 -0
  231. data/lib/faker/tv_shows/the_office.rb +37 -0
  232. data/lib/faker/tv_shows/the_thick_of_it.rb +51 -0
  233. data/lib/faker/tv_shows/twin_peaks.rb +51 -0
  234. data/lib/faker/tv_shows/venture_bros.rb +65 -0
  235. data/lib/faker/version.rb +4 -2
  236. data/lib/faker.rb +169 -58
  237. data/lib/helpers/base58.rb +22 -0
  238. data/lib/helpers/char.rb +61 -0
  239. data/lib/helpers/unique_generator.rb +60 -0
  240. data/lib/locales/README.md +40 -0
  241. data/lib/locales/ar.yml +107 -0
  242. data/lib/locales/bg.yml +44 -0
  243. data/lib/locales/ca-CAT.yml +24 -0
  244. data/lib/locales/ca.yml +23 -0
  245. data/lib/locales/da-DK.yml +73 -0
  246. data/lib/locales/de-AT.yml +57 -0
  247. data/lib/locales/de-CH.yml +1714 -0
  248. data/lib/locales/de.yml +132 -9
  249. data/lib/locales/ee.yml +61 -0
  250. data/lib/locales/en/README.md +13 -0
  251. data/lib/locales/en/address.yml +586 -0
  252. data/lib/locales/en/adjective.yml +179 -0
  253. data/lib/locales/en/airport.yml +381 -0
  254. data/lib/locales/en/ancient.yml +7 -0
  255. data/lib/locales/en/animal.yml +6 -0
  256. data/lib/locales/en/app.yml +8 -0
  257. data/lib/locales/en/appliance.yml +5 -0
  258. data/lib/locales/en/aqua_teen_hunger_force.yml +36 -0
  259. data/lib/locales/en/artist.yml +4 -0
  260. data/lib/locales/en/australia.yml +107 -0
  261. data/lib/locales/en/avatar.yml +31 -0
  262. data/lib/locales/en/back_to_the_future.yml +120 -0
  263. data/lib/locales/en/bank.yml +302 -0
  264. data/lib/locales/en/barcode.yml +24 -0
  265. data/lib/locales/en/basketball.yml +99 -0
  266. data/lib/locales/en/beer.yml +9 -0
  267. data/lib/locales/en/bible.yml +90 -0
  268. data/lib/locales/en/big_bang_theory.yml +38 -0
  269. data/lib/locales/en/bird.yml +1281 -0
  270. data/lib/locales/en/blood.yml +13 -0
  271. data/lib/locales/en/bojack_horseman.yml +6 -0
  272. data/lib/locales/en/book.yml +491 -0
  273. data/lib/locales/en/bossa_nova.yml +6 -0
  274. data/lib/locales/en/breaking_bad.yml +28 -0
  275. data/lib/locales/en/brooklyn_nine_nine.yml +35 -0
  276. data/lib/locales/en/buffy.yml +260 -0
  277. data/lib/locales/en/business.yml +5 -0
  278. data/lib/locales/en/camera.yml +611 -0
  279. data/lib/locales/en/cannabis.yml +13 -0
  280. data/lib/locales/en/cat.yml +7 -0
  281. data/lib/locales/en/chess.yml +103 -0
  282. data/lib/locales/en/chiquito.yml +64 -0
  283. data/lib/locales/en/chuck_norris.yml +82 -0
  284. data/lib/locales/en/clash_of_clan.yml +101 -0
  285. data/lib/locales/en/code.yml +4 -0
  286. data/lib/locales/en/coffee.yml +31 -0
  287. data/lib/locales/en/coin.yml +6 -0
  288. data/lib/locales/en/color.yml +4 -0
  289. data/lib/locales/en/commerce.yml +28 -0
  290. data/lib/locales/en/community.yml +33 -0
  291. data/lib/locales/en/company.yml +23 -0
  292. data/lib/locales/en/compass.yml +34 -0
  293. data/lib/locales/en/computer.yml +55 -0
  294. data/lib/locales/en/conan.yml +171 -0
  295. data/lib/locales/en/construction.yml +425 -0
  296. data/lib/locales/en/control.yml +247 -0
  297. data/lib/locales/en/cosmere.yml +57 -0
  298. data/lib/locales/en/cowboy_bebop.yml +163 -0
  299. data/lib/locales/en/crypto_coin.yml +25 -0
  300. data/lib/locales/en/culture_series.yml +307 -0
  301. data/lib/locales/en/currency.yml +6 -0
  302. data/lib/locales/en/dc_comics.yml +52 -0
  303. data/lib/locales/en/demographic.yml +221 -0
  304. data/lib/locales/en/departed.yml +50 -0
  305. data/lib/locales/en/dessert.yml +6 -0
  306. data/lib/locales/en/device.yml +115 -0
  307. data/lib/locales/en/dnd.yml +636 -0
  308. data/lib/locales/en/dog.yml +11 -0
  309. data/lib/locales/en/doraemon.yml +286 -0
  310. data/lib/locales/en/dota.yml +693 -0
  311. data/lib/locales/en/dr_who.yml +96 -0
  312. data/lib/locales/en/dragon_ball.yml +246 -0
  313. data/lib/locales/en/driving_license.yml +181 -0
  314. data/lib/locales/en/drone.yml +95 -0
  315. data/lib/locales/en/dumb_and_dumber.yml +59 -0
  316. data/lib/locales/en/dune.yml +298 -0
  317. data/lib/locales/en/educator.yml +80 -0
  318. data/lib/locales/en/elder_scrolls.yml +585 -0
  319. data/lib/locales/en/electrical_components.yml +6 -0
  320. data/lib/locales/en/emotion.yml +480 -0
  321. data/lib/locales/en/esport.yml +8 -0
  322. data/lib/locales/en/fallout.yml +315 -0
  323. data/lib/locales/en/family_guy.yml +7 -0
  324. data/lib/locales/en/file.yml +13 -0
  325. data/lib/locales/en/final_space.yml +37 -0
  326. data/lib/locales/en/finance.yml +189 -0
  327. data/lib/locales/en/fma_brotherhood.yml +78 -0
  328. data/lib/locales/en/food.yml +1069 -0
  329. data/lib/locales/en/football.yml +8 -0
  330. data/lib/locales/en/fresh_prince_of_bel_air.yml +73 -0
  331. data/lib/locales/en/friends.yml +6 -0
  332. data/lib/locales/en/funny_name.yml +4 -0
  333. data/lib/locales/en/futurama.yml +344 -0
  334. data/lib/locales/en/game.yml +294 -0
  335. data/lib/locales/en/game_of_thrones.yml +8 -0
  336. data/lib/locales/en/gender.yml +6 -0
  337. data/lib/locales/en/ghostbusters.yml +91 -0
  338. data/lib/locales/en/grateful_dead.yml +48 -0
  339. data/lib/locales/en/greek_philosophers.yml +26 -0
  340. data/lib/locales/en/hacker.yml +8 -0
  341. data/lib/locales/en/hackers.yml +53 -0
  342. data/lib/locales/en/half_life.yml +88 -0
  343. data/lib/locales/en/harry_potter.yml +9 -0
  344. data/lib/locales/en/heroes.yml +411 -0
  345. data/lib/locales/en/heroes_of_the_storm.yml +134 -0
  346. data/lib/locales/en/hey_arnold.yml +24 -0
  347. data/lib/locales/en/hipster.yml +4 -0
  348. data/lib/locales/en/hitchhikers_guide_to_the_galaxy.yml +45 -0
  349. data/lib/locales/en/hobby.yml +171 -0
  350. data/lib/locales/en/horse.yml +6 -0
  351. data/lib/locales/en/house.yml +5 -0
  352. data/lib/locales/en/how_i_met_your_mother.yml +28 -0
  353. data/lib/locales/en/how_to_train_your_dragon.yml +174 -0
  354. data/lib/locales/en/id_number.yml +5 -0
  355. data/lib/locales/en/industry_segments.yml +7 -0
  356. data/lib/locales/en/internet.yml +158 -0
  357. data/lib/locales/en/invoice.yml +6 -0
  358. data/lib/locales/en/jack_handey.yml +54 -0
  359. data/lib/locales/en/job.yml +15 -0
  360. data/lib/locales/en/kamen_rider.yml +452 -0
  361. data/lib/locales/en/kpop.yml +83 -0
  362. data/lib/locales/en/league_of_legends.yml +289 -0
  363. data/lib/locales/en/lebowski.yml +43 -0
  364. data/lib/locales/en/lorem.yml +11 -0
  365. data/lib/locales/en/lovecraft.yml +79 -0
  366. data/lib/locales/en/markdown.yml +5 -0
  367. data/lib/locales/en/marketing.yml +4 -0
  368. data/lib/locales/en/measurement.yml +11 -0
  369. data/lib/locales/en/michael_scott.yml +45 -0
  370. data/lib/locales/en/military.yml +182 -0
  371. data/lib/locales/en/minecraft.yml +663 -0
  372. data/lib/locales/en/mitch_hedberg.yml +46 -0
  373. data/lib/locales/en/mountain.yml +171 -0
  374. data/lib/locales/en/mountaineering.yml +14 -0
  375. data/lib/locales/en/movie.yml +197 -0
  376. data/lib/locales/en/music.yml +464 -0
  377. data/lib/locales/en/myst.yml +104 -0
  378. data/lib/locales/en/name.yml +26 -0
  379. data/lib/locales/en/naruto.yml +230 -0
  380. data/lib/locales/en/nation.yml +11 -0
  381. data/lib/locales/en/nato_phonetic_alphabet.yml +4 -0
  382. data/lib/locales/en/new_girl.yml +40 -0
  383. data/lib/locales/en/one_piece.yml +9 -0
  384. data/lib/locales/en/opera.yml +340 -0
  385. data/lib/locales/en/overwatch.yml +2652 -0
  386. data/lib/locales/en/parks_and_rec.yml +7 -0
  387. data/lib/locales/en/pearl_jam.yml +213 -0
  388. data/lib/locales/en/phish.yml +395 -0
  389. data/lib/locales/en/phone_number.yml +7 -0
  390. data/lib/locales/en/pokemon.yml +421 -0
  391. data/lib/locales/en/prince.yml +227 -0
  392. data/lib/locales/en/princess_bride.yml +5 -0
  393. data/lib/locales/en/programming_language.yml +6 -0
  394. data/lib/locales/en/quote.yml +695 -0
  395. data/lib/locales/en/rajnikanth.yml +77 -0
  396. data/lib/locales/en/relationship.yml +10 -0
  397. data/lib/locales/en/restaurant.yml +129 -0
  398. data/lib/locales/en/rick_and_morty.yml +6 -0
  399. data/lib/locales/en/rock_band.yml +5 -0
  400. data/lib/locales/en/room.yml +68 -0
  401. data/lib/locales/en/rupaul.yml +125 -0
  402. data/lib/locales/en/rush.yml +32 -0
  403. data/lib/locales/en/science.yml +484 -0
  404. data/lib/locales/en/seinfeld.yml +6 -0
  405. data/lib/locales/en/shakespeare.yml +53 -0
  406. data/lib/locales/en/show.yml +597 -0
  407. data/lib/locales/en/silicon_valley.yml +53 -0
  408. data/lib/locales/en/simpsons.yml +694 -0
  409. data/lib/locales/en/slack_emoji.yml +20 -0
  410. data/lib/locales/en/sonic_the_hedgehog.yml +410 -0
  411. data/lib/locales/en/source.yml +51 -0
  412. data/lib/locales/en/south_park.yml +5 -0
  413. data/lib/locales/en/space.yml +17 -0
  414. data/lib/locales/en/spongebob.yml +489 -0
  415. data/lib/locales/en/sport.yml +130 -0
  416. data/lib/locales/en/star_trek.yml +7 -0
  417. data/lib/locales/en/star_wars.yml +606 -0
  418. data/lib/locales/en/stargate.yml +21 -0
  419. data/lib/locales/en/stranger_thing.yml +36 -0
  420. data/lib/locales/en/street_fighter.yml +1524 -0
  421. data/lib/locales/en/stripe.yml +42 -0
  422. data/lib/locales/en/studio_ghibli.yml +107 -0
  423. data/lib/locales/en/subscription.yml +8 -0
  424. data/lib/locales/en/suits.yml +45 -0
  425. data/lib/locales/en/super_mario.yml +58 -0
  426. data/lib/locales/en/super_smash_bros.yml +223 -0
  427. data/lib/locales/en/superhero.yml +12 -0
  428. data/lib/locales/en/supernatural.yml +141 -0
  429. data/lib/locales/en/sword_art_online.yml +334 -0
  430. data/lib/locales/en/tarkov.yml +593 -0
  431. data/lib/locales/en/tea.yml +172 -0
  432. data/lib/locales/en/team.yml +8 -0
  433. data/lib/locales/en/the_expanse.yml +7 -0
  434. data/lib/locales/en/the_it_crowd.yml +155 -0
  435. data/lib/locales/en/the_kingkiller_chronicle.yml +56 -0
  436. data/lib/locales/en/the_office.yml +86 -0
  437. data/lib/locales/en/the_thick_of_it.yml +6 -0
  438. data/lib/locales/en/tolkien.yml +2453 -0
  439. data/lib/locales/en/touhou.yml +839 -0
  440. data/lib/locales/en/tron.yml +227 -0
  441. data/lib/locales/en/twin_peaks.yml +6 -0
  442. data/lib/locales/en/umphreys_mcgee.yml +4 -0
  443. data/lib/locales/en/university.yml +10 -0
  444. data/lib/locales/en/v_for_vendetta.yml +163 -0
  445. data/lib/locales/en/vehicle.yml +2814 -0
  446. data/lib/locales/en/venture_bros.yml +7 -0
  447. data/lib/locales/en/verbs.yml +8 -0
  448. data/lib/locales/en/volleyball.yml +501 -0
  449. data/lib/locales/en/warhammer_fantasy.yml +582 -0
  450. data/lib/locales/en/witcher.yml +430 -0
  451. data/lib/locales/en/world_cup.yml +271 -0
  452. data/lib/locales/en/world_of_warcraft.yml +126 -0
  453. data/lib/locales/en/yoda.yml +4 -0
  454. data/lib/locales/en/zelda.yml +966 -0
  455. data/lib/locales/en-AU.yml +68 -0
  456. data/lib/locales/{en-bork.yml → en-BORK.yml} +1 -1
  457. data/lib/locales/en-CA.yml +40 -0
  458. data/lib/locales/{en-gb.yml → en-GB.yml} +5 -3
  459. data/lib/locales/{en-ind.yml → en-IND.yml} +10 -4
  460. data/lib/locales/en-MS.yml +49 -0
  461. data/lib/locales/en-NEP.yml +52 -0
  462. data/lib/locales/en-NG.yml +78 -0
  463. data/lib/locales/en-NZ.yml +166 -0
  464. data/lib/locales/en-PAK.yml +20 -0
  465. data/lib/locales/en-SG.yml +37 -0
  466. data/lib/locales/en-TH.yml +360 -0
  467. data/lib/locales/en-UG.yml +129 -0
  468. data/lib/locales/en-US.yml +129 -0
  469. data/lib/locales/en-ZA.yml +148 -0
  470. data/lib/locales/en-au-ocker.yml +36 -0
  471. data/lib/locales/en.yml +6 -67
  472. data/lib/locales/es-AR.yml +4601 -0
  473. data/lib/locales/es-MX.yml +105 -0
  474. data/lib/locales/es.yml +150 -0
  475. data/lib/locales/fa.yml +12 -0
  476. data/lib/locales/fi-FI.yml +37 -0
  477. data/lib/locales/fr/address.yml +20 -0
  478. data/lib/locales/fr/adjective.yml +266 -0
  479. data/lib/locales/fr/ancient.yml +141 -0
  480. data/lib/locales/fr/animal.yml +5 -0
  481. data/lib/locales/fr/appliance.yml +4 -0
  482. data/lib/locales/fr/book.yml +7 -0
  483. data/lib/locales/fr/color.yml +4 -0
  484. data/lib/locales/fr/company.yml +17 -0
  485. data/lib/locales/fr/compass.yml +23 -0
  486. data/lib/locales/fr/demographic.yml +4 -0
  487. data/lib/locales/fr/gender.yml +6 -0
  488. data/lib/locales/fr/internet.yml +5 -0
  489. data/lib/locales/fr/lorem.yml +5 -0
  490. data/lib/locales/fr/measurement.yml +7 -0
  491. data/lib/locales/fr/name.yml +21 -0
  492. data/lib/locales/fr/phone_number.yml +7 -0
  493. data/lib/locales/fr/pokemon.yml +7 -0
  494. data/lib/locales/fr-CA.yml +107 -0
  495. data/lib/locales/fr-CH.yml +78 -0
  496. data/lib/locales/fr.yml +1 -51
  497. data/lib/locales/he.yml +27 -0
  498. data/lib/locales/hy.yml +412 -0
  499. data/lib/locales/id.yml +26 -0
  500. data/lib/locales/it.yml +72 -0
  501. data/lib/locales/ja/README.md +13 -0
  502. data/lib/locales/ja/address.yml +120539 -0
  503. data/lib/locales/ja/adjective.yml +148 -0
  504. data/lib/locales/ja/ancient.yml +4 -0
  505. data/lib/locales/ja/animal.yml +5 -0
  506. data/lib/locales/ja/bank.yml +4 -0
  507. data/lib/locales/ja/book.yml +7 -0
  508. data/lib/locales/ja/cat.yml +5 -0
  509. data/lib/locales/ja/coffee.yml +4 -0
  510. data/lib/locales/ja/color.yml +4 -0
  511. data/lib/locales/ja/commerce.yml +11 -0
  512. data/lib/locales/ja/company.yml +8 -0
  513. data/lib/locales/ja/dog.yml +6 -0
  514. data/lib/locales/ja/emotion.yml +51 -0
  515. data/lib/locales/ja/food.yml +4 -0
  516. data/lib/locales/ja/gender.yml +4 -0
  517. data/lib/locales/ja/lorem.yml +9 -0
  518. data/lib/locales/ja/name.yml +13 -0
  519. data/lib/locales/ja/naruto.yml +230 -0
  520. data/lib/locales/ja/overwatch.yml +5 -0
  521. data/lib/locales/ja/phone_number.yml +7 -0
  522. data/lib/locales/ja/pokemon.yml +7 -0
  523. data/lib/locales/ja/relationship.yml +10 -0
  524. data/lib/locales/ja/restaurant.yml +11 -0
  525. data/lib/locales/ja/space.yml +5 -0
  526. data/lib/locales/ja/studio_ghibli.yml +112 -0
  527. data/lib/locales/ja/subscription.yml +8 -0
  528. data/lib/locales/ja/super_mario.yml +9 -0
  529. data/lib/locales/ja/super_smash_bros.yml +8 -0
  530. data/lib/locales/ja/university.yml +9 -0
  531. data/lib/locales/ja/zelda.yml +5 -0
  532. data/lib/locales/ko.yml +133 -0
  533. data/lib/locales/lt.yml +34 -0
  534. data/lib/locales/lv.yml +55 -0
  535. data/lib/locales/mi-NZ.yml +283 -0
  536. data/lib/locales/{no-nb.yml → nb-NO.yml} +21 -8
  537. data/lib/locales/nl.yml +46 -30
  538. data/lib/locales/no.yml +7 -0
  539. data/lib/locales/pl.yml +21 -10
  540. data/lib/locales/pt-BR.yml +726 -0
  541. data/lib/locales/{pt-br.yml → pt.yml} +26 -15
  542. data/lib/locales/ru.yml +118 -0
  543. data/lib/locales/sk.yml +81 -0
  544. data/lib/locales/sv.yml +82 -0
  545. data/lib/locales/th.yml +380 -0
  546. data/lib/locales/tr.yml +41 -0
  547. data/lib/locales/uk.yml +89 -0
  548. data/lib/locales/vi.yml +9 -3
  549. data/lib/locales/zh-CN.yml +57 -0
  550. data/lib/locales/zh-TW.yml +30 -0
  551. metadata +735 -97
  552. data/History.txt +0 -103
  553. data/lib/extensions/array.rb +0 -7
  554. data/lib/extensions/symbol.rb +0 -9
  555. data/lib/faker/address.rb +0 -49
  556. data/lib/faker/company.rb +0 -26
  557. data/lib/faker/internet.rb +0 -71
  558. data/lib/faker/lorem.rb +0 -59
  559. data/lib/faker/name.rb +0 -22
  560. data/lib/faker/phone_number.rb +0 -17
  561. data/lib/locales/de-ch.yml +0 -19
  562. data/lib/locales/en-au.yml +0 -22
  563. data/lib/locales/en-ca.yml +0 -14
  564. data/lib/locales/en-us.yml +0 -6
  565. data/test/test_faker.rb +0 -29
  566. data/test/test_faker_city.rb +0 -45
  567. data/test/test_faker_internet.rb +0 -56
  568. data/test/test_faker_lorem.rb +0 -69
  569. data/test/test_faker_name.rb +0 -20
  570. data/test/test_faker_street.rb +0 -44
  571. data/test/test_flexible.rb +0 -56
  572. data/test/test_helper.rb +0 -5
  573. data/test/test_locale.rb +0 -41
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Blockchain
5
+ class Ethereum < Base
6
+ class << self
7
+ ##
8
+ # Produces a random Ethereum wallet address
9
+ #
10
+ # @return [String]
11
+ #
12
+ # @example
13
+ # Faker::Blockchain::Ethereum.address
14
+ # #=> "0xd392b0c0500700d02d27ab30805ec80ddd3320ff"
15
+ #
16
+ # @faker.version 1.9.1
17
+ def address
18
+ hex_alphabet = '0123456789abcdef'
19
+ var = +'0x'
20
+ 40.times { var << sample(shuffle(hex_alphabet.chars)) }
21
+ var
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,135 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'openssl'
4
+ require 'securerandom'
5
+
6
+ module Faker
7
+ class Blockchain
8
+ class Tezos < Base
9
+ class << self
10
+ # @private
11
+ PREFIXES = {
12
+ tz1: [6, 161, 159],
13
+ KT1: [2, 90, 121],
14
+ edpk: [13, 15, 37, 217],
15
+ edsk: [13, 15, 58, 7],
16
+ edsig: [9, 245, 205, 134, 18],
17
+ B: [1, 52],
18
+ o: [5, 116]
19
+ }.freeze
20
+
21
+ ##
22
+ # Produces a random Tezos account address
23
+ #
24
+ # @return [String]
25
+ #
26
+ # @example
27
+ # Faker::Blockchain::Tezos.account
28
+ # #=> "tz1eUsgK6aj752Fbxwk5sAoEFvSDnPjZ4qvk"
29
+ #
30
+ # @faker.version 1.9.2
31
+ def account
32
+ encode_tz(:tz1, 20)
33
+ end
34
+
35
+ ##
36
+ # Produces a random Tezos contract
37
+ #
38
+ # @return [String]
39
+ #
40
+ # @example
41
+ # Faker::Blockchain::Tezos.contract
42
+ # #=> "KT1MroqeP15nnitB4CnNfkqHYa2NErhPPLWF"
43
+ #
44
+ # @faker.version 1.9.2
45
+ def contract
46
+ encode_tz(:KT1, 20)
47
+ end
48
+
49
+ ##
50
+ # Produces a random Tezos operation
51
+ #
52
+ # @return [String]
53
+ #
54
+ # @example
55
+ # Faker::Blockchain::Tezos.operation
56
+ # #=> "onygWYXJX3xNstFLv9PcCrhQdCkENC795xwSinmTEc1jsDN4VDa"
57
+ #
58
+ # @faker.version 1.9.2
59
+ def operation
60
+ encode_tz(:o, 32)
61
+ end
62
+
63
+ ##
64
+ # Produces a random Tezos block
65
+ #
66
+ # @return [String]
67
+ #
68
+ # @example
69
+ # Faker::Blockchain::Tezos.block
70
+ # #=> "BMbhs2rkY1dvAkAyRytvPsjFQ2RiPrBhYkxvWpY65dzkdSuw58a"
71
+ #
72
+ # @faker.version 1.9.4
73
+ def block
74
+ encode_tz(:B, 32)
75
+ end
76
+
77
+ ##
78
+ # Produces a random Tezos signature
79
+ #
80
+ # @return [String]
81
+ #
82
+ # @example
83
+ # Faker::Blockchain::Tezos.signature
84
+ # #=> "edsigu165B7VFf3Dpw2QABVzEtCxJY2gsNBNcE3Ti7rRxtDUjqTFRpg67EdAQmY6YWPE5tKJDMnSTJDFu65gic8uLjbW2YwGvAZ"
85
+ #
86
+ # @faker.version 1.9.2
87
+ def signature
88
+ encode_tz(:edsig, 64)
89
+ end
90
+
91
+ ##
92
+ # Produces a random Tezos public key
93
+ #
94
+ # @return [String]
95
+ #
96
+ # @example
97
+ # Faker::Blockchain::Tezos.public_key
98
+ # #=> "edpkuib9x8QXRc5nWwHUg7U1dXsVmaUrUNU5sX9pVEEvwbMVdfMCeq"
99
+ #
100
+ # @faker.version 2.15.2
101
+ def public_key
102
+ encode_tz(:edpk, 32)
103
+ end
104
+
105
+ ##
106
+ # Produces a random Tezos public key
107
+ #
108
+ # @return [String]
109
+ #
110
+ # @example
111
+ # Faker::Blockchain::Tezos.secret_key
112
+ # #=> "edsk3HZCAGEGpzQPnQUwQeFY4ESanFhQCgLpKriQw8GHyhKCrjHawv"
113
+ #
114
+ # @faker.version 2.15.2
115
+ def secret_key
116
+ encode_tz(:edsk, 32)
117
+ end
118
+
119
+ protected
120
+
121
+ ##
122
+ # @param prefix [Symbol]
123
+ # @param payload_size [Integer] The size of the payload
124
+ #
125
+ # @return [String]
126
+ def encode_tz(prefix, payload_size)
127
+ prefix = PREFIXES.fetch(prefix)
128
+ packed = prefix.map(&:chr).join + Faker::Config.random.bytes(payload_size)
129
+ checksum = OpenSSL::Digest::SHA256.digest(OpenSSL::Digest::SHA256.digest(packed))[0..3]
130
+ Faker::Base58.encode(packed + checksum)
131
+ end
132
+ end
133
+ end
134
+ end
135
+ end
@@ -0,0 +1,61 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Book < Base
5
+ flexible :book
6
+
7
+ class << self
8
+ ##
9
+ # Produces a random book title
10
+ #
11
+ # @return [String]
12
+ #
13
+ # @example
14
+ # Faker::Book.title #=> "The Odd Sister"
15
+ #
16
+ # @faker.version 1.9.3
17
+ def title
18
+ fetch('book.title')
19
+ end
20
+
21
+ ##
22
+ # Produces a random book author
23
+ #
24
+ # @return [String]
25
+ #
26
+ # @example
27
+ # Faker::Book.author #=> "Alysha Olsen"
28
+ #
29
+ # @faker.version 1.9.3
30
+ def author
31
+ parse('book.author')
32
+ end
33
+
34
+ ##
35
+ # Produces a random book publisher
36
+ #
37
+ # @return [String]
38
+ #
39
+ # @example
40
+ # Faker::Book.publisher #=> "Opus Reader"
41
+ #
42
+ # @faker.version 1.9.3
43
+ def publisher
44
+ fetch('book.publisher')
45
+ end
46
+
47
+ ##
48
+ # Produces a random genre
49
+ #
50
+ # @return [String]
51
+ #
52
+ # @example
53
+ # Faker::Book.genre #=> "Mystery"
54
+ #
55
+ # @faker.version 1.9.3
56
+ def genre
57
+ fetch('book.genre')
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,83 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Books
5
+ class CultureSeries < Base
6
+ flexible :culture_series
7
+
8
+ class << self
9
+ ##
10
+ # @return [String]
11
+ #
12
+ # @example
13
+ # Faker::Books::CultureSeries.book
14
+ # #=> "The Player of Games"
15
+ #
16
+ # @faker.version 1.9.3
17
+ def book
18
+ fetch('culture_series.books')
19
+ end
20
+
21
+ ##
22
+ # @return [String]
23
+ #
24
+ # @example
25
+ # Faker::Books::CultureSeries.culture_ship
26
+ # #=> "Fate Amenable To Change"
27
+ #
28
+ # @faker.version 1.9.3
29
+ def culture_ship
30
+ fetch('culture_series.culture_ships')
31
+ end
32
+
33
+ ##
34
+ # @return [String]
35
+ #
36
+ # @example
37
+ # Faker::Books::CultureSeries.culture_ship_class
38
+ # #=> "General Systems Vehicle"
39
+ #
40
+ # @faker.version 1.9.3
41
+ def culture_ship_class
42
+ fetch('culture_series.culture_ship_classes')
43
+ end
44
+
45
+ ##
46
+ # @return [String]
47
+ #
48
+ # @example
49
+ # Faker::Books::CultureSeries.culture_ship_class_abv
50
+ # #=> "The Odd Sister"
51
+ #
52
+ # @faker.version 1.9.3
53
+ def culture_ship_class_abv
54
+ fetch('culture_series.culture_ship_class_abvs')
55
+ end
56
+
57
+ ##
58
+ # @return [String]
59
+ #
60
+ # @example
61
+ # Faker::Books::CultureSeries.civ
62
+ # #=> "Culture"
63
+ #
64
+ # @faker.version 1.9.3
65
+ def civ
66
+ fetch('culture_series.civs')
67
+ end
68
+
69
+ ##
70
+ # @return [String]
71
+ #
72
+ # @example
73
+ # Faker::Books::CultureSeries.planet
74
+ # #=> "Xinth"
75
+ #
76
+ # @faker.version 1.9.3
77
+ def planet
78
+ fetch('culture_series.planets')
79
+ end
80
+ end
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,124 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Books
5
+ ##
6
+ # A Faker module beyond your dreams, test data beyond your imagination.
7
+ class Dune < Base
8
+ class << self
9
+ ##
10
+ # Produces the name of a character from Dune
11
+ #
12
+ # @return [String]
13
+ #
14
+ # @example
15
+ # Faker::Books::Dune.character #=> "Leto Atreides"
16
+ #
17
+ # @faker.version 1.9.3
18
+ def character
19
+ fetch('dune.characters')
20
+ end
21
+
22
+ ##
23
+ # @return [String]
24
+ #
25
+ # @example
26
+ # Faker::Books::Dune.title #=> "Duke"
27
+ #
28
+ # @faker.version 1.9.3
29
+ def title
30
+ fetch('dune.titles')
31
+ end
32
+
33
+ ##
34
+ # Produces the name of a city from Dune
35
+ #
36
+ # @return [String]
37
+ #
38
+ # @example
39
+ # Faker::Books::Dune.city #=> "Arrakeen"
40
+ #
41
+ # @faker.version next
42
+ def city
43
+ fetch('dune.cities')
44
+ end
45
+
46
+ ##
47
+ # Produces the name of a planet from Dune
48
+ #
49
+ # @return [String]
50
+ #
51
+ # @example
52
+ # Faker::Books::Dune.planet #=> "Caladan"
53
+ #
54
+ # @faker.version 1.9.3
55
+ def planet
56
+ fetch('dune.planets')
57
+ end
58
+
59
+ ##
60
+ # Produces a quote from Dune
61
+ #
62
+ # @param character [String] The name of the character that the quote should be from
63
+ #
64
+ # @return [String]
65
+ #
66
+ # @example
67
+ # Faker::Books::Dune.quote
68
+ # #=> "A dead man, surely, no longer requires that water."
69
+ # @example
70
+ # Faker::Books::Dune.quote(character: "baron_harkonnen")
71
+ # #=> "He who controls the spice, controls the universe!"
72
+ #
73
+ # @faker.version 1.9.3
74
+ def quote(character: nil)
75
+ quoted_characters = translate('faker.dune.quotes').keys
76
+
77
+ if character.nil?
78
+ character = sample(quoted_characters).to_s
79
+ else
80
+ character = character.to_s.downcase
81
+
82
+ unless quoted_characters.include?(character.to_sym)
83
+ raise ArgumentError,
84
+ "Characters quoted can be left blank or #{quoted_characters.join(', ')}"
85
+ end
86
+ end
87
+
88
+ fetch("dune.quotes.#{character}")
89
+ end
90
+
91
+ ##
92
+ # Produces a saying from Dune
93
+ #
94
+ # @param source [String]
95
+ #
96
+ # @return [String]
97
+ #
98
+ # @example
99
+ # Faker::Books::Dune.saying #=> "You do not beg the sun for mercy."
100
+ # @example
101
+ # Faker::Books::Dune.saying(source: "fremen")
102
+ # #=> "May thy knife chip and shatter."
103
+ #
104
+ # @faker.version 1.9.3
105
+ def saying(source: nil)
106
+ sourced_sayings = translate('faker.dune.sayings').keys
107
+
108
+ if source.nil?
109
+ source = sample(sourced_sayings).to_s
110
+ else
111
+ source = source.to_s.downcase
112
+
113
+ unless sourced_sayings.include?(source.to_sym)
114
+ raise ArgumentError,
115
+ "Sources quoted in sayings can be left blank or #{sourced_sayings.join(', ')}"
116
+ end
117
+ end
118
+
119
+ fetch("dune.sayings.#{source}")
120
+ end
121
+ end
122
+ end
123
+ end
124
+ end
@@ -0,0 +1,249 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Books
5
+ class Lovecraft < Base
6
+ class << self
7
+ ##
8
+ # Produces the name of a location
9
+ #
10
+ # @return [String]
11
+ #
12
+ # @example
13
+ # Faker::Books::Lovecraft.location #=> "Kingsport"
14
+ #
15
+ # @faker.version 1.9.3
16
+ def location
17
+ fetch('lovecraft.location')
18
+ end
19
+
20
+ ##
21
+ # @param number [Integer] The number of times to repeat the chant
22
+ # @return [String]
23
+ #
24
+ # @example
25
+ # Faker::Books::Lovecraft.fhtagn
26
+ # #=> "Ph'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fhtagn"
27
+ # @example
28
+ # Faker::Books::Lovecraft.fhtagn(number: 3)
29
+ # #=> "Ph'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fht...
30
+ #
31
+ # @faker.version 1.9.3
32
+ def fhtagn(number: 1)
33
+ Array.new(number) { fetch('lovecraft.fhtagn') }.join('. ')
34
+ end
35
+
36
+ ##
37
+ # Produces the name of a deity
38
+ #
39
+ # @return [String]
40
+ #
41
+ # @example
42
+ # Faker::Books::Lovecraft.deity #=> "Shub-Niggurath"
43
+ #
44
+ # @faker.version 1.9.3
45
+ def deity
46
+ fetch('lovecraft.deity')
47
+ end
48
+
49
+ ##
50
+ # Produces the name of a tome
51
+ #
52
+ # @return [String]
53
+ #
54
+ # @example
55
+ # Faker::Books::Lovecraft.tome #=> "Book of Eibon"
56
+ #
57
+ # @faker.version 1.9.3
58
+ def tome
59
+ fetch('lovecraft.tome')
60
+ end
61
+
62
+ ##
63
+ # Produces a random sentence
64
+ #
65
+ # @param word_count [Integer] The number of words to have in the sentence
66
+ # @param random_words_to_add [Integer]
67
+ # @param open_compounds_allowed [Boolean] If true, generated sentence can contain words having additional spaces
68
+ #
69
+ # @return [String]
70
+ #
71
+ # @example
72
+ # Faker::Books::Lovecraft.sentence
73
+ # #=> "Furtive antiquarian squamous dank cat loathsome amorphous lurk."
74
+ # @example
75
+ # Faker::Books::Lovecraft.sentence(word_count: 3)
76
+ # #=> "Daemoniac antediluvian fainted squamous comprehension gambrel nameless singular."
77
+ # @example
78
+ # Faker::Books::Lovecraft.sentence(word_count: 3, random_words_to_add: 1)
79
+ # #=> "Amorphous indescribable tenebrous."
80
+ # @example
81
+ # Faker::Books::Lovecraft.sentence(word_count: 3, random_words_to_add: 0, open_compounds_allowed: true)
82
+ # #=> "Effulgence unmentionable gambrel."
83
+ #
84
+ # @faker.version 1.9.3
85
+ def sentence(word_count: 4, random_words_to_add: 6, open_compounds_allowed: true)
86
+ "#{words(number: word_count + rand(random_words_to_add.to_i).to_i, spaces_allowed: open_compounds_allowed).join(' ').capitalize}."
87
+ end
88
+
89
+ ##
90
+ # Produces a random word
91
+ #
92
+ # @return [String]
93
+ #
94
+ # @example
95
+ # Faker::Books::Lovecraft.word #=> "furtive"
96
+ #
97
+ # @faker.version 1.9.3
98
+ def word
99
+ random_word = sample(translate('faker.lovecraft.words'))
100
+ random_word =~ /\s/ ? word : random_word
101
+ end
102
+
103
+ ##
104
+ # Produces a array of random words
105
+ #
106
+ # @param number [Integer] Number of words to generate
107
+ # @param spaces_allowed [Boolean] If true, generated words can contain spaces
108
+ #
109
+ # @return [Array<String>]
110
+ #
111
+ # @example
112
+ # Faker::Books::Lovecraft.words
113
+ # #=> [
114
+ # # "manuscript",
115
+ # # "abnormal",
116
+ # # "singular",
117
+ # # ]
118
+ # @example
119
+ # Faker::Books::Lovecraft.words(number: 2)
120
+ # #=> [
121
+ # # "daemoniac",
122
+ # # "cat",
123
+ # # ]
124
+ # @example
125
+ # Faker::Books::Lovecraft.words(number: 2, spaces_allowed: 1)
126
+ # #=> [
127
+ # # "lurk",
128
+ # # "charnel",
129
+ # # ]
130
+ #
131
+ # @faker.version 1.9.3
132
+ def words(number: 3, spaces_allowed: false)
133
+ resolved_num = resolve(number)
134
+ word_list = translate('faker.lovecraft.words')
135
+ word_list *= ((resolved_num / word_list.length) + 1)
136
+
137
+ return shuffle(word_list)[0, resolved_num] if spaces_allowed
138
+
139
+ words = shuffle(word_list)[0, resolved_num]
140
+ words.each_with_index { |w, i| words[i] = word if w =~ /\s/ }
141
+ end
142
+
143
+ ##
144
+ # Produces a array of random sentences
145
+ #
146
+ # @param number [Integer] Number of sentences to generate
147
+ #
148
+ # @return [Array<String>]
149
+ #
150
+ # @example
151
+ # Faker::Books::Lovecraft.sentences
152
+ # #=> [
153
+ # # "Nameless loathsome decadent gambrel.",
154
+ # # "Ululate swarthy immemorial cat madness gibbous unmentionable unnamable.",
155
+ # # "Decadent antediluvian non-euclidean tentacles amorphous tenebrous.",
156
+ # # ]
157
+ # @example
158
+ # Faker::Books::Lovecraft.sentences(number: 2)
159
+ # #=> [
160
+ # # "Antediluvian amorphous unmentionable singular accursed squamous immemorial.",
161
+ # # "Gambrel daemoniac gibbous stygian shunned ululate iridescence abnormal.",
162
+ # # ]
163
+ #
164
+ # @faker.version 1.9.3
165
+ def sentences(number: 3)
166
+ [].tap do |sentences|
167
+ 1.upto(resolve(number)) do
168
+ sentences << sentence(word_count: 3)
169
+ end
170
+ end
171
+ end
172
+
173
+ ##
174
+ # Produces a random paragraph
175
+ #
176
+ # @param sentence_count [Integer] Number of sentences to generate
177
+ # @param random_sentences_to_add [Integer]
178
+ #
179
+ # @return [String]
180
+ #
181
+ # @example
182
+ # Faker::Books::Lovecraft.paragraph
183
+ # #=> "Squamous nameless daemoniac fungus ululate. Cyclopean stygian decadent loathsome manuscript tenebrous. Foetid abnormal stench. Dank non-euclidean comprehension eldritch. Charnel singular shunned lurk effulgence fungus."
184
+ # @example
185
+ # Faker::Books::Lovecraft.paragraph(sentence_count: 2)
186
+ # #=> "Decadent lurk tenebrous loathsome furtive spectral amorphous gibbous. Gambrel eldritch daemoniac cat madness comprehension stygian effulgence."
187
+ # @example
188
+ # Faker::Books::Lovecraft.paragraph(sentence_count: 1, random_sentences_to_add: 1)
189
+ # #=> "Stench cyclopean fainted antiquarian nameless. Antiquarian ululate tenebrous non-euclidean effulgence."
190
+ #
191
+ # @faker.version 1.9.3
192
+ def paragraph(sentence_count: 3, random_sentences_to_add: 3)
193
+ sentences(number: resolve(sentence_count) + rand(random_sentences_to_add.to_i).to_i).join(' ')
194
+ end
195
+
196
+ ##
197
+ # Produces a array of random paragraphs
198
+ #
199
+ # @param number [Integer] Number of paragraphs to generate
200
+ #
201
+ # @return [Array<String>]
202
+ #
203
+ # @example
204
+ # Faker::Books::Lovecraft.paragraphs
205
+ # #=> [
206
+ # # "Noisome daemoniac gibbous abnormal antediluvian. Unutterable fung...
207
+ # # "Non-euclidean immemorial indescribable accursed furtive. Dank unn...
208
+ # # "Charnel antediluvian unnamable cat blasphemous comprehension tene...
209
+ # # ]
210
+ # @example
211
+ # Faker::Books::Lovecraft.paragraphs(number: 2)
212
+ # #=> [
213
+ # # "Hideous amorphous manuscript antediluvian non-euclidean cat eldri...
214
+ # # "Tenebrous unnamable comprehension antediluvian lurk. Lurk spectra...
215
+ # # ]
216
+ #
217
+ # @faker.version 1.9.3
218
+ def paragraphs(number: 3)
219
+ [].tap do |paragraphs|
220
+ 1.upto(resolve(number)) do
221
+ paragraphs << paragraph(sentence_count: 3)
222
+ end
223
+ end
224
+ end
225
+
226
+ ##
227
+ # @param characters [Integer] Number of characters to generate in the paragraph
228
+ #
229
+ # @return [String]
230
+ #
231
+ # @example
232
+ # Faker::Books::Lovecraft.paragraph_by_chars
233
+ # #=> "Truffaut stumptown trust fund 8-bit messenger bag portland. Meh kombucha selvage swag biodiesel. Lomo kinfolk jean shorts asymmetrical diy. Wayfarers portland twee stumptown. Wes anderson biodiesel retro 90's pabst. Diy echo 90's mixtape semiotics. Cornho."
234
+ # @example
235
+ # Faker::Books::Lovecraft.paragraph_by_chars(characters: 128)
236
+ # #=> "Effulgence madness noisome. Fungus stygian mortal madness amorphous dank. Decadent noisome hideous effulgence. Tentacles charne."
237
+ #
238
+ # @faker.version 1.9.3
239
+ def paragraph_by_chars(characters: 256)
240
+ paragraph = paragraph(sentence_count: 3)
241
+
242
+ paragraph += " #{paragraph(sentence_count: 3)}" while paragraph.length < characters
243
+
244
+ "#{paragraph[0...characters - 1]}."
245
+ end
246
+ end
247
+ end
248
+ end
249
+ end