faker 1.8.2 → 2.23.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (615) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +1756 -10
  3. data/History.md +4 -4
  4. data/License.txt +2 -2
  5. data/README.md +328 -111
  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 +132 -0
  14. data/lib/faker/books/lovecraft.rb +280 -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 +368 -0
  22. data/lib/faker/default/adjective.rb +35 -0
  23. data/lib/faker/default/alphanumeric.rb +73 -0
  24. data/lib/faker/default/ancient.rb +59 -0
  25. data/lib/faker/default/app.rb +77 -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 +60 -0
  29. data/lib/faker/default/bank.rb +207 -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 +26 -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 +102 -0
  39. data/lib/faker/default/chuck_norris.rb +25 -0
  40. data/lib/faker/default/code.rb +282 -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 +79 -0
  44. data/lib/faker/default/commerce.rb +171 -0
  45. data/lib/faker/default/company.rb +579 -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 +94 -0
  52. data/lib/faker/default/currency.rb +46 -0
  53. data/lib/faker/default/date.rb +186 -0
  54. data/lib/faker/default/dc_comics.rb +70 -0
  55. data/lib/faker/default/demographic.rb +98 -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 +131 -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 +100 -0
  65. data/lib/faker/default/fillmurray.rb +45 -0
  66. data/lib/faker/default/finance.rb +116 -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 +194 -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 +418 -0
  76. data/lib/faker/default/industry_segments.rb +61 -0
  77. data/lib/faker/default/internet.rb +629 -0
  78. data/lib/faker/default/internet_http.rb +48 -0
  79. data/lib/faker/default/invoice.rb +136 -0
  80. data/lib/faker/default/job.rb +61 -0
  81. data/lib/faker/default/json.rb +143 -0
  82. data/lib/faker/default/kpop.rb +85 -0
  83. data/lib/faker/default/lorem.rb +302 -0
  84. data/lib/faker/default/lorem_flickr.rb +138 -0
  85. data/lib/faker/default/lorem_pixel.rb +70 -0
  86. data/lib/faker/default/markdown.rb +175 -0
  87. data/lib/faker/default/marketing.rb +22 -0
  88. data/lib/faker/default/measurement.rb +207 -0
  89. data/lib/faker/default/military.rb +98 -0
  90. data/lib/faker/default/mountain.rb +33 -0
  91. data/lib/faker/default/name.rb +156 -0
  92. data/lib/faker/default/nation.rb +73 -0
  93. data/lib/faker/default/nato_phonetic_alphabet.rb +20 -0
  94. data/lib/faker/default/nhs.rb +57 -0
  95. data/lib/faker/default/number.rb +289 -0
  96. data/lib/faker/default/omniauth.rb +505 -0
  97. data/lib/faker/default/phone_number.rb +137 -0
  98. data/lib/faker/default/placeholdit.rb +63 -0
  99. data/lib/faker/default/programming_language.rb +33 -0
  100. data/lib/faker/default/relationship.rb +91 -0
  101. data/lib/faker/default/religion.rb +6 -0
  102. data/lib/faker/default/restaurant.rb +63 -0
  103. data/lib/faker/default/science.rb +154 -0
  104. data/lib/faker/default/slack_emoji.rb +124 -0
  105. data/lib/faker/default/source.rb +76 -0
  106. data/lib/faker/default/south_africa.rb +141 -0
  107. data/lib/faker/default/space.rb +191 -0
  108. data/lib/faker/default/string.rb +63 -0
  109. data/lib/faker/default/stripe.rb +142 -0
  110. data/lib/faker/default/subscription.rb +70 -0
  111. data/lib/faker/default/superhero.rb +72 -0
  112. data/lib/faker/default/tea.rb +41 -0
  113. data/lib/faker/default/team.rb +74 -0
  114. data/lib/faker/default/time.rb +177 -0
  115. data/lib/faker/default/twitter.rb +223 -0
  116. data/lib/faker/default/types.rb +182 -0
  117. data/lib/faker/default/university.rb +75 -0
  118. data/lib/faker/default/vehicle.rb +355 -0
  119. data/lib/faker/default/verb.rb +72 -0
  120. data/lib/faker/default/vulnerability_identifier.rb +23 -0
  121. data/lib/faker/default/world_cup.rb +86 -0
  122. data/lib/faker/fantasy/tolkien.rb +67 -0
  123. data/lib/faker/games/clash_of_clans.rb +48 -0
  124. data/lib/faker/games/control.rb +113 -0
  125. data/lib/faker/games/dnd.rb +136 -0
  126. data/lib/faker/games/dota.rb +93 -0
  127. data/lib/faker/games/elder_scrolls.rb +139 -0
  128. data/lib/faker/games/fallout.rb +62 -0
  129. data/lib/faker/games/game.rb +48 -0
  130. data/lib/faker/games/half_life.rb +48 -0
  131. data/lib/faker/games/heroes.rb +61 -0
  132. data/lib/faker/games/heroes_of_the_storm.rb +72 -0
  133. data/lib/faker/games/league_of_legends.rb +87 -0
  134. data/lib/faker/games/minecraft.rb +113 -0
  135. data/lib/faker/games/myst.rb +74 -0
  136. data/lib/faker/games/overwatch.rb +48 -0
  137. data/lib/faker/games/pokemon.rb +48 -0
  138. data/lib/faker/games/sonic_the_hedgehog.rb +48 -0
  139. data/lib/faker/games/street_fighter.rb +61 -0
  140. data/lib/faker/games/super_mario.rb +48 -0
  141. data/lib/faker/games/super_smash_bros.rb +35 -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/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/back_to_the_future.rb +49 -0
  158. data/lib/faker/movies/departed.rb +49 -0
  159. data/lib/faker/movies/ghostbusters.rb +49 -0
  160. data/lib/faker/movies/harry_potter.rb +87 -0
  161. data/lib/faker/movies/hitchhikers_guide_to_the_galaxy.rb +106 -0
  162. data/lib/faker/movies/hobbit.rb +62 -0
  163. data/lib/faker/movies/how_to_train_your_dragon.rb +48 -0
  164. data/lib/faker/movies/lebowski.rb +48 -0
  165. data/lib/faker/movies/lord_of_the_rings.rb +49 -0
  166. data/lib/faker/movies/movie.rb +33 -0
  167. data/lib/faker/movies/princess_bride.rb +36 -0
  168. data/lib/faker/movies/room.rb +63 -0
  169. data/lib/faker/movies/star_wars.rb +273 -0
  170. data/lib/faker/movies/tron.rb +161 -0
  171. data/lib/faker/movies/v_for_vendetta.rb +50 -0
  172. data/lib/faker/music/grateful_dead.rb +37 -0
  173. data/lib/faker/music/hiphop.rb +48 -0
  174. data/lib/faker/music/music.rb +145 -0
  175. data/lib/faker/music/opera.rb +298 -0
  176. data/lib/faker/music/pearl_jam.rb +50 -0
  177. data/lib/faker/music/phish.rb +48 -0
  178. data/lib/faker/music/prince.rb +64 -0
  179. data/lib/faker/music/rock_band.rb +34 -0
  180. data/lib/faker/music/rush.rb +37 -0
  181. data/lib/faker/music/show.rb +49 -0
  182. data/lib/faker/music/umphreys_mcgee.rb +22 -0
  183. data/lib/faker/quotes/chiquito.rb +80 -0
  184. data/lib/faker/quotes/quote.rb +111 -0
  185. data/lib/faker/quotes/rajnikanth.rb +27 -0
  186. data/lib/faker/quotes/shakespeare.rb +111 -0
  187. data/lib/faker/religion/bible.rb +50 -0
  188. data/lib/faker/sports/basketball.rb +61 -0
  189. data/lib/faker/sports/football.rb +74 -0
  190. data/lib/faker/sports/mountaineering.rb +22 -0
  191. data/lib/faker/sports/sport.rb +110 -0
  192. data/lib/faker/sports/volleyball.rb +74 -0
  193. data/lib/faker/tv_shows/aqua_teen_hunger_force.rb +37 -0
  194. data/lib/faker/tv_shows/big_bang_theory.rb +37 -0
  195. data/lib/faker/tv_shows/bojack_horseman.rb +51 -0
  196. data/lib/faker/tv_shows/breaking_bad.rb +37 -0
  197. data/lib/faker/tv_shows/brooklyn_nine_nine.rb +38 -0
  198. data/lib/faker/tv_shows/buffy.rb +89 -0
  199. data/lib/faker/tv_shows/community.rb +38 -0
  200. data/lib/faker/tv_shows/dr_who.rb +115 -0
  201. data/lib/faker/tv_shows/dumb_and_dumber.rb +51 -0
  202. data/lib/faker/tv_shows/family_guy.rb +51 -0
  203. data/lib/faker/tv_shows/final_space.rb +51 -0
  204. data/lib/faker/tv_shows/friends.rb +50 -0
  205. data/lib/faker/tv_shows/futurama.rb +65 -0
  206. data/lib/faker/tv_shows/game_of_thrones.rb +77 -0
  207. data/lib/faker/tv_shows/hey_arnold.rb +50 -0
  208. data/lib/faker/tv_shows/how_i_met_your_mother.rb +64 -0
  209. data/lib/faker/tv_shows/michael_scott.rb +23 -0
  210. data/lib/faker/tv_shows/new_girl.rb +38 -0
  211. data/lib/faker/tv_shows/parks_and_rec.rb +37 -0
  212. data/lib/faker/tv_shows/rick_and_morty.rb +51 -0
  213. data/lib/faker/tv_shows/ru_paul.rb +37 -0
  214. data/lib/faker/tv_shows/seinfeld.rb +51 -0
  215. data/lib/faker/tv_shows/silicon_valley.rb +118 -0
  216. data/lib/faker/tv_shows/simpsons.rb +65 -0
  217. data/lib/faker/tv_shows/south_park.rb +38 -0
  218. data/lib/faker/tv_shows/star_trek.rb +63 -0
  219. data/lib/faker/tv_shows/stargate.rb +51 -0
  220. data/lib/faker/tv_shows/stranger_things.rb +38 -0
  221. data/lib/faker/tv_shows/suits.rb +37 -0
  222. data/lib/faker/tv_shows/supernatural.rb +48 -0
  223. data/lib/faker/tv_shows/the_expanse.rb +63 -0
  224. data/lib/faker/tv_shows/the_fresh_prince_of_bel_air.rb +64 -0
  225. data/lib/faker/tv_shows/the_it_crowd.rb +64 -0
  226. data/lib/faker/tv_shows/the_office.rb +37 -0
  227. data/lib/faker/tv_shows/the_thick_of_it.rb +51 -0
  228. data/lib/faker/tv_shows/twin_peaks.rb +51 -0
  229. data/lib/faker/tv_shows/venture_bros.rb +65 -0
  230. data/lib/faker/version.rb +4 -2
  231. data/lib/faker.rb +166 -66
  232. data/lib/helpers/base58.rb +22 -0
  233. data/lib/helpers/char.rb +37 -20
  234. data/lib/helpers/unique_generator.rb +34 -6
  235. data/lib/locales/README.md +40 -0
  236. data/lib/locales/ar.yml +106 -0
  237. data/lib/locales/bg.yml +5 -2
  238. data/lib/locales/ca-CAT.yml +1 -1
  239. data/lib/locales/ca.yml +2 -4
  240. data/lib/locales/da-DK.yml +10 -6
  241. data/lib/locales/de-AT.yml +14 -5
  242. data/lib/locales/de-CH.yml +1696 -1
  243. data/lib/locales/de.yml +27 -13
  244. data/lib/locales/ee.yml +61 -0
  245. data/lib/locales/en/address.yml +553 -4
  246. data/lib/locales/en/adjective.yml +179 -0
  247. data/lib/locales/en/ancient.yml +7 -0
  248. data/lib/locales/en/animal.yml +6 -0
  249. data/lib/locales/en/app.yml +8 -0
  250. data/lib/locales/en/appliance.yml +5 -0
  251. data/lib/locales/en/aqua_teen_hunger_force.yml +36 -0
  252. data/lib/locales/en/artist.yml +4 -0
  253. data/lib/locales/en/australia.yml +107 -0
  254. data/lib/locales/en/back_to_the_future.yml +120 -0
  255. data/lib/locales/en/bank.yml +302 -0
  256. data/lib/locales/en/barcode.yml +24 -0
  257. data/lib/locales/en/basketball.yml +99 -0
  258. data/lib/locales/en/beer.yml +9 -0
  259. data/lib/locales/en/bible.yml +90 -0
  260. data/lib/locales/en/big_bang_theory.yml +38 -0
  261. data/lib/locales/en/bird.yml +1281 -0
  262. data/lib/locales/en/blood.yml +13 -0
  263. data/lib/locales/en/bojack_horseman.yml +6 -0
  264. data/lib/locales/en/book.yml +491 -0
  265. data/lib/locales/en/bossa_nova.yml +6 -0
  266. data/lib/locales/en/breaking_bad.yml +28 -0
  267. data/lib/locales/en/brooklyn_nine_nine.yml +35 -0
  268. data/lib/locales/en/buffy.yml +260 -0
  269. data/lib/locales/en/business.yml +5 -0
  270. data/lib/locales/en/camera.yml +611 -0
  271. data/lib/locales/en/cannabis.yml +13 -0
  272. data/lib/locales/en/cat.yml +7 -0
  273. data/lib/locales/en/chiquito.yml +64 -0
  274. data/lib/locales/en/chuck_norris.yml +82 -0
  275. data/lib/locales/en/clash_of_clan.yml +101 -0
  276. data/lib/locales/en/code.yml +4 -0
  277. data/lib/locales/en/coffee.yml +31 -0
  278. data/lib/locales/en/coin.yml +6 -0
  279. data/lib/locales/en/color.yml +4 -0
  280. data/lib/locales/en/commerce.yml +28 -0
  281. data/lib/locales/en/community.yml +33 -0
  282. data/lib/locales/en/company.yml +22 -0
  283. data/lib/locales/en/compass.yml +34 -0
  284. data/lib/locales/en/computer.yml +55 -0
  285. data/lib/locales/en/conan.yml +171 -0
  286. data/lib/locales/en/construction.yml +425 -0
  287. data/lib/locales/en/control.yml +247 -0
  288. data/lib/locales/en/cosmere.yml +57 -0
  289. data/lib/locales/en/crypto_coin.yml +25 -0
  290. data/lib/locales/en/culture_series.yml +307 -0
  291. data/lib/locales/en/currency.yml +6 -0
  292. data/lib/locales/en/dc_comics.yml +52 -0
  293. data/lib/locales/en/demographic.yml +221 -0
  294. data/lib/locales/en/departed.yml +50 -0
  295. data/lib/locales/en/dessert.yml +6 -0
  296. data/lib/locales/en/device.yml +115 -0
  297. data/lib/locales/en/dnd.yml +451 -0
  298. data/lib/locales/en/dog.yml +11 -0
  299. data/lib/locales/en/doraemon.yml +286 -0
  300. data/lib/locales/en/dota.yml +693 -0
  301. data/lib/locales/en/dr_who.yml +31 -9
  302. data/lib/locales/en/dragon_ball.yml +246 -0
  303. data/lib/locales/en/driving_license.yml +181 -0
  304. data/lib/locales/en/drone.yml +95 -0
  305. data/lib/locales/en/dumb_and_dumber.yml +59 -0
  306. data/lib/locales/en/dune.yml +298 -0
  307. data/lib/locales/en/educator.yml +80 -0
  308. data/lib/locales/en/elder_scrolls.yml +585 -0
  309. data/lib/locales/en/electrical_components.yml +6 -0
  310. data/lib/locales/en/emotion.yml +480 -0
  311. data/lib/locales/en/esport.yml +8 -0
  312. data/lib/locales/en/fallout.yml +315 -0
  313. data/lib/locales/en/file.yml +13 -0
  314. data/lib/locales/en/final_space.yml +37 -0
  315. data/lib/locales/en/finance.yml +189 -0
  316. data/lib/locales/en/fma_brotherhood.yml +78 -0
  317. data/lib/locales/en/food.yml +1057 -0
  318. data/lib/locales/en/football.yml +8 -0
  319. data/lib/locales/en/fresh_prince_of_bel_air.yml +73 -0
  320. data/lib/locales/en/friends.yml +6 -0
  321. data/lib/locales/en/funny_name.yml +4 -0
  322. data/lib/locales/en/futurama.yml +344 -0
  323. data/lib/locales/en/game.yml +294 -0
  324. data/lib/locales/en/game_of_thrones.yml +8 -0
  325. data/lib/locales/en/gender.yml +6 -0
  326. data/lib/locales/en/ghostbusters.yml +91 -0
  327. data/lib/locales/en/grateful_dead.yml +48 -0
  328. data/lib/locales/en/greek_philosophers.yml +26 -0
  329. data/lib/locales/en/hacker.yml +8 -0
  330. data/lib/locales/en/half_life.yml +88 -0
  331. data/lib/locales/en/harry_potter.yml +9 -0
  332. data/lib/locales/en/heroes.yml +411 -0
  333. data/lib/locales/en/heroes_of_the_storm.yml +134 -0
  334. data/lib/locales/en/hey_arnold.yml +24 -0
  335. data/lib/locales/en/hipster.yml +4 -0
  336. data/lib/locales/en/hitchhikers_guide_to_the_galaxy.yml +45 -0
  337. data/lib/locales/en/hobby.yml +171 -0
  338. data/lib/locales/en/horse.yml +6 -0
  339. data/lib/locales/en/house.yml +5 -0
  340. data/lib/locales/en/how_i_met_your_mother.yml +28 -0
  341. data/lib/locales/en/how_to_train_your_dragon.yml +174 -0
  342. data/lib/locales/en/id_number.yml +5 -0
  343. data/lib/locales/en/industry_segments.yml +7 -0
  344. data/lib/locales/en/internet.yml +137 -3
  345. data/lib/locales/en/invoice.yml +6 -0
  346. data/lib/locales/en/jack_handey.yml +54 -0
  347. data/lib/locales/en/job.yml +15 -0
  348. data/lib/locales/en/kamen_rider.yml +452 -0
  349. data/lib/locales/en/kpop.yml +83 -0
  350. data/lib/locales/en/league_of_legends.yml +289 -0
  351. data/lib/locales/en/lebowski.yml +43 -0
  352. data/lib/locales/en/lorem.yml +11 -0
  353. data/lib/locales/en/lovecraft.yml +76 -6
  354. data/lib/locales/en/markdown.yml +5 -0
  355. data/lib/locales/en/marketing.yml +4 -0
  356. data/lib/locales/en/measurement.yml +11 -0
  357. data/lib/locales/en/michael_scott.yml +45 -0
  358. data/lib/locales/en/military.yml +182 -0
  359. data/lib/locales/en/minecraft.yml +663 -0
  360. data/lib/locales/en/mountain.yml +171 -0
  361. data/lib/locales/en/mountaineering.yml +14 -0
  362. data/lib/locales/en/movie.yml +194 -2
  363. data/lib/locales/en/music.yml +464 -0
  364. data/lib/locales/en/myst.yml +104 -0
  365. data/lib/locales/en/name.yml +26 -0
  366. data/lib/locales/en/naruto.yml +230 -0
  367. data/lib/locales/en/nation.yml +11 -0
  368. data/lib/locales/en/nato_phonetic_alphabet.yml +4 -0
  369. data/lib/locales/en/new_girl.yml +40 -0
  370. data/lib/locales/en/one_piece.yml +9 -0
  371. data/lib/locales/en/opera.yml +340 -0
  372. data/lib/locales/en/overwatch.yml +2654 -0
  373. data/lib/locales/en/parks_and_rec.yml +7 -0
  374. data/lib/locales/en/pearl_jam.yml +213 -0
  375. data/lib/locales/en/phish.yml +395 -0
  376. data/lib/locales/en/phone_number.yml +7 -0
  377. data/lib/locales/en/pokemon.yml +421 -0
  378. data/lib/locales/en/prince.yml +227 -0
  379. data/lib/locales/en/princess_bride.yml +5 -0
  380. data/lib/locales/en/programming_language.yml +6 -0
  381. data/lib/locales/en/quote.yml +695 -0
  382. data/lib/locales/en/rajnikanth.yml +77 -0
  383. data/lib/locales/en/relationship.yml +10 -0
  384. data/lib/locales/en/restaurant.yml +129 -0
  385. data/lib/locales/en/rock_band.yml +5 -0
  386. data/lib/locales/en/room.yml +68 -0
  387. data/lib/locales/en/rupaul.yml +125 -0
  388. data/lib/locales/en/rush.yml +32 -0
  389. data/lib/locales/en/science.yml +484 -0
  390. data/lib/locales/en/seinfeld.yml +6 -0
  391. data/lib/locales/en/shakespeare.yml +53 -0
  392. data/lib/locales/en/show.yml +597 -0
  393. data/lib/locales/en/silicon_valley.yml +53 -0
  394. data/lib/locales/en/simpsons.yml +694 -0
  395. data/lib/locales/en/slack_emoji.yml +20 -0
  396. data/lib/locales/en/sonic_the_hedgehog.yml +410 -0
  397. data/lib/locales/en/source.yml +46 -0
  398. data/lib/locales/en/south_park.yml +5 -0
  399. data/lib/locales/en/space.yml +17 -0
  400. data/lib/locales/en/sport.yml +121 -0
  401. data/lib/locales/en/star_trek.yml +7 -0
  402. data/lib/locales/en/star_wars.yml +606 -0
  403. data/lib/locales/en/stargate.yml +21 -0
  404. data/lib/locales/en/stranger_thing.yml +36 -0
  405. data/lib/locales/en/street_fighter.yml +1524 -0
  406. data/lib/locales/en/stripe.yml +42 -0
  407. data/lib/locales/en/studio_ghibli.yml +107 -0
  408. data/lib/locales/en/subscription.yml +8 -0
  409. data/lib/locales/en/suits.yml +45 -0
  410. data/lib/locales/en/super_mario.yml +58 -0
  411. data/lib/locales/en/super_smash_bros.yml +223 -0
  412. data/lib/locales/en/superhero.yml +12 -0
  413. data/lib/locales/en/supernatural.yml +141 -0
  414. data/lib/locales/en/sword_art_online.yml +334 -0
  415. data/lib/locales/en/tea.yml +172 -0
  416. data/lib/locales/en/team.yml +8 -0
  417. data/lib/locales/en/the_expanse.yml +7 -0
  418. data/lib/locales/en/the_it_crowd.yml +155 -0
  419. data/lib/locales/en/the_kingkiller_chronicle.yml +56 -0
  420. data/lib/locales/en/the_office.yml +86 -0
  421. data/lib/locales/en/the_thick_of_it.yml +6 -0
  422. data/lib/locales/en/tolkien.yml +2453 -0
  423. data/lib/locales/en/touhou.yml +839 -0
  424. data/lib/locales/en/tron.yml +227 -0
  425. data/lib/locales/en/twin_peaks.yml +6 -0
  426. data/lib/locales/en/umphreys_mcgee.yml +4 -0
  427. data/lib/locales/en/university.yml +10 -0
  428. data/lib/locales/en/v_for_vendetta.yml +163 -0
  429. data/lib/locales/en/vehicle.yml +2814 -0
  430. data/lib/locales/en/venture_bros.yml +7 -0
  431. data/lib/locales/en/verbs.yml +8 -0
  432. data/lib/locales/en/volleyball.yml +501 -0
  433. data/lib/locales/en/warhammer_fantasy.yml +582 -0
  434. data/lib/locales/en/witcher.yml +430 -0
  435. data/lib/locales/en/world_cup.yml +271 -0
  436. data/lib/locales/en/world_of_warcraft.yml +126 -0
  437. data/lib/locales/en/yoda.yml +4 -0
  438. data/lib/locales/en/zelda.yml +966 -0
  439. data/lib/locales/en-AU.yml +50 -8
  440. data/lib/locales/en-CA.yml +27 -2
  441. data/lib/locales/en-GB.yml +2 -1
  442. data/lib/locales/en-IND.yml +5 -2
  443. data/lib/locales/en-MS.yml +10 -1
  444. data/lib/locales/en-NEP.yml +6 -3
  445. data/lib/locales/en-NG.yml +2 -0
  446. data/lib/locales/en-NZ.yml +140 -17
  447. data/lib/locales/en-PAK.yml +4 -2
  448. data/lib/locales/en-SG.yml +6 -1
  449. data/lib/locales/en-TH.yml +360 -0
  450. data/lib/locales/en-US.yml +38 -10
  451. data/lib/locales/en-ZA.yml +114 -17
  452. data/lib/locales/en-au-ocker.yml +2 -1
  453. data/lib/locales/en.yml +0 -746
  454. data/lib/locales/es-AR.yml +4600 -0
  455. data/lib/locales/es-MX.yml +17 -1
  456. data/lib/locales/es.yml +75 -1
  457. data/lib/locales/fa.yml +6 -0
  458. data/lib/locales/fi-FI.yml +12 -6
  459. data/lib/locales/fr/address.yml +21 -0
  460. data/lib/locales/fr/adjective.yml +266 -0
  461. data/lib/locales/fr/animal.yml +5 -0
  462. data/lib/locales/fr/appliance.yml +4 -0
  463. data/lib/locales/fr/book.yml +7 -0
  464. data/lib/locales/fr/color.yml +4 -0
  465. data/lib/locales/fr/company.yml +17 -0
  466. data/lib/locales/fr/compass.yml +23 -0
  467. data/lib/locales/fr/demographic.yml +4 -0
  468. data/lib/locales/fr/gender.yml +6 -0
  469. data/lib/locales/fr/internet.yml +5 -0
  470. data/lib/locales/fr/lorem.yml +5 -0
  471. data/lib/locales/fr/measurement.yml +7 -0
  472. data/lib/locales/fr/name.yml +21 -0
  473. data/lib/locales/fr/phone_number.yml +7 -0
  474. data/lib/locales/fr/pokemon.yml +7 -0
  475. data/lib/locales/fr-CA.yml +107 -0
  476. data/lib/locales/fr-CH.yml +78 -0
  477. data/lib/locales/fr.yml +1 -65
  478. data/lib/locales/he.yml +2 -0
  479. data/lib/locales/hy.yml +411 -0
  480. data/lib/locales/id.yml +7 -2
  481. data/lib/locales/it.yml +15 -3
  482. data/lib/locales/ja/README.md +13 -0
  483. data/lib/locales/ja/address.yml +120539 -0
  484. data/lib/locales/ja/adjective.yml +148 -0
  485. data/lib/locales/ja/ancient.yml +4 -0
  486. data/lib/locales/ja/animal.yml +5 -0
  487. data/lib/locales/ja/bank.yml +4 -0
  488. data/lib/locales/ja/book.yml +7 -0
  489. data/lib/locales/ja/cat.yml +5 -0
  490. data/lib/locales/ja/coffee.yml +4 -0
  491. data/lib/locales/ja/color.yml +4 -0
  492. data/lib/locales/ja/commerce.yml +11 -0
  493. data/lib/locales/ja/company.yml +8 -0
  494. data/lib/locales/ja/dog.yml +6 -0
  495. data/lib/locales/ja/emotion.yml +51 -0
  496. data/lib/locales/ja/food.yml +4 -0
  497. data/lib/locales/ja/gender.yml +4 -0
  498. data/lib/locales/ja/lorem.yml +9 -0
  499. data/lib/locales/ja/name.yml +13 -0
  500. data/lib/locales/ja/naruto.yml +230 -0
  501. data/lib/locales/ja/overwatch.yml +5 -0
  502. data/lib/locales/ja/phone_number.yml +7 -0
  503. data/lib/locales/ja/pokemon.yml +7 -0
  504. data/lib/locales/ja/relationship.yml +10 -0
  505. data/lib/locales/ja/restaurant.yml +11 -0
  506. data/lib/locales/ja/space.yml +5 -0
  507. data/lib/locales/ja/studio_ghibli.yml +112 -0
  508. data/lib/locales/ja/subscription.yml +8 -0
  509. data/lib/locales/ja/super_mario.yml +9 -0
  510. data/lib/locales/ja/super_smash_bros.yml +8 -0
  511. data/lib/locales/ja/university.yml +9 -0
  512. data/lib/locales/ja/zelda.yml +5 -0
  513. data/lib/locales/ko.yml +98 -3
  514. data/lib/locales/lt.yml +35 -0
  515. data/lib/locales/lv.yml +55 -0
  516. data/lib/locales/mi-NZ.yml +281 -0
  517. data/lib/locales/nb-NO.yml +15 -6
  518. data/lib/locales/nl.yml +13 -4
  519. data/lib/locales/no.yml +7 -0
  520. data/lib/locales/pl.yml +13 -2
  521. data/lib/locales/pt-BR.yml +657 -17
  522. data/lib/locales/pt.yml +16 -6
  523. data/lib/locales/ru.yml +54 -5
  524. data/lib/locales/sk.yml +21 -13
  525. data/lib/locales/sv.yml +15 -7
  526. data/lib/locales/th.yml +380 -0
  527. data/lib/locales/tr.yml +14 -0
  528. data/lib/locales/uk.yml +17 -4
  529. data/lib/locales/vi.yml +7 -2
  530. data/lib/locales/zh-CN.yml +10 -4
  531. data/lib/locales/zh-TW.yml +3 -1
  532. metadata +620 -98
  533. data/lib/extensions/array.rb +0 -22
  534. data/lib/extensions/symbol.rb +0 -9
  535. data/lib/faker/address.rb +0 -67
  536. data/lib/faker/ancient.rb +0 -21
  537. data/lib/faker/app.rb +0 -18
  538. data/lib/faker/artist.rb +0 -9
  539. data/lib/faker/avatar.rb +0 -15
  540. data/lib/faker/bank.rb +0 -31
  541. data/lib/faker/beer.rb +0 -40
  542. data/lib/faker/bitcoin.rb +0 -48
  543. data/lib/faker/book.rb +0 -23
  544. data/lib/faker/boolean.rb +0 -9
  545. data/lib/faker/business.rb +0 -22
  546. data/lib/faker/cat.rb +0 -19
  547. data/lib/faker/chuck_norris.rb +0 -11
  548. data/lib/faker/code.rb +0 -147
  549. data/lib/faker/coffee.rb +0 -29
  550. data/lib/faker/color.rb +0 -30
  551. data/lib/faker/commerce.rb +0 -64
  552. data/lib/faker/company.rb +0 -141
  553. data/lib/faker/compass.rb +0 -65
  554. data/lib/faker/crypto.rb +0 -19
  555. data/lib/faker/date.rb +0 -78
  556. data/lib/faker/demographic.rb +0 -35
  557. data/lib/faker/dessert.rb +0 -19
  558. data/lib/faker/dr_who.rb +0 -34
  559. data/lib/faker/dragon_ball.rb +0 -9
  560. data/lib/faker/educator.rb +0 -23
  561. data/lib/faker/esport.rb +0 -25
  562. data/lib/faker/family_guy.rb +0 -17
  563. data/lib/faker/file.rb +0 -24
  564. data/lib/faker/fillmurray.rb +0 -14
  565. data/lib/faker/finance.rb +0 -28
  566. data/lib/faker/food.rb +0 -21
  567. data/lib/faker/friends.rb +0 -17
  568. data/lib/faker/funny_name.rb +0 -43
  569. data/lib/faker/game_of_thrones.rb +0 -25
  570. data/lib/faker/hacker.rb +0 -45
  571. data/lib/faker/harry_potter.rb +0 -21
  572. data/lib/faker/hey_arnold.rb +0 -17
  573. data/lib/faker/hipster.rb +0 -59
  574. data/lib/faker/hitchhikers_guide_to_the_galaxy.rb +0 -33
  575. data/lib/faker/hobbit.rb +0 -21
  576. data/lib/faker/how_i_met_your_mother.rb +0 -21
  577. data/lib/faker/id_number.rb +0 -36
  578. data/lib/faker/internet.rb +0 -178
  579. data/lib/faker/job.rb +0 -16
  580. data/lib/faker/league_of_legends.rb +0 -29
  581. data/lib/faker/lord_of_the_rings.rb +0 -13
  582. data/lib/faker/lorem.rb +0 -68
  583. data/lib/faker/lorem_pixel.rb +0 -21
  584. data/lib/faker/lovecraft.rb +0 -73
  585. data/lib/faker/markdown.rb +0 -66
  586. data/lib/faker/matz.rb +0 -9
  587. data/lib/faker/movie.rb +0 -9
  588. data/lib/faker/music.rb +0 -33
  589. data/lib/faker/name.rb +0 -42
  590. data/lib/faker/number.rb +0 -86
  591. data/lib/faker/omniauth.rb +0 -340
  592. data/lib/faker/overwatch.rb +0 -17
  593. data/lib/faker/phone_number.rb +0 -44
  594. data/lib/faker/placeholdit.rb +0 -20
  595. data/lib/faker/pokemon.rb +0 -17
  596. data/lib/faker/rick_and_morty.rb +0 -17
  597. data/lib/faker/robin.rb +0 -9
  598. data/lib/faker/rock_band.rb +0 -9
  599. data/lib/faker/rupaul.rb +0 -11
  600. data/lib/faker/shakespeare.rb +0 -83
  601. data/lib/faker/simpsons.rb +0 -22
  602. data/lib/faker/slack_emoji.rb +0 -43
  603. data/lib/faker/space.rb +0 -58
  604. data/lib/faker/star_trek.rb +0 -21
  605. data/lib/faker/star_wars.rb +0 -80
  606. data/lib/faker/superhero.rb +0 -25
  607. data/lib/faker/team.rb +0 -24
  608. data/lib/faker/time.rb +0 -51
  609. data/lib/faker/twin_peaks.rb +0 -17
  610. data/lib/faker/twitter.rb +0 -172
  611. data/lib/faker/university.rb +0 -20
  612. data/lib/faker/vehicle.rb +0 -37
  613. data/lib/faker/yoda.rb +0 -10
  614. data/lib/faker/zelda.rb +0 -18
  615. data/lib/locales/ja.yml +0 -46
@@ -0,0 +1,194 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Hipster < Base
5
+ class << self
6
+ ##
7
+ # Produces a random hipster word.
8
+ #
9
+ # @return [String]
10
+ #
11
+ # @example
12
+ # Faker::Hipster.word #=> "irony"
13
+ #
14
+ # @faker.version 1.6.0
15
+ def word
16
+ random_word = sample(translate('faker.hipster.words'))
17
+ random_word =~ /\s/ ? word : random_word
18
+ end
19
+
20
+ # rubocop:disable Metrics/ParameterLists
21
+
22
+ ##
23
+ # Produces a random hipster word.
24
+ #
25
+ # @param number [Integer] Specifies the number of words returned
26
+ # @param supplemental [Boolean] Specifies if the words are supplemental
27
+ # @param spaces_allowed [Boolean] Specifies if the words may contain spaces
28
+ # @return [Array<String>]
29
+ #
30
+ # @example
31
+ # Faker::Hipster.words #=> ["pug", "pitchfork", "chia"]
32
+ # Faker::Hipster.words(number: 4) #=> ["ugh", "cardigan", "poutine", "stumptown"]
33
+ # Faker::Hipster.words(number: 4, supplemental: true) #=> ["iste", "seitan", "normcore", "provident"]
34
+ # Faker::Hipster.words(number: 4, supplemental: true, spaces_allowed: true) #=> ["qui", "magni", "craft beer", "est"]
35
+ #
36
+ # @faker.version 1.6.0
37
+ def words(legacy_number = NOT_GIVEN, legacy_supplemental = NOT_GIVEN, legacy_spaces_allowed = NOT_GIVEN, number: 3, supplemental: false, spaces_allowed: false)
38
+ warn_for_deprecated_arguments do |keywords|
39
+ keywords << :number if legacy_number != NOT_GIVEN
40
+ keywords << :supplemental if legacy_supplemental != NOT_GIVEN
41
+ keywords << :spaces_allowed if legacy_spaces_allowed != NOT_GIVEN
42
+ end
43
+
44
+ resolved_num = resolve(number)
45
+ word_list = (
46
+ translate('faker.hipster.words') +
47
+ (supplemental ? translate('faker.lorem.words') : [])
48
+ )
49
+ word_list *= ((resolved_num / word_list.length) + 1)
50
+
51
+ return shuffle(word_list)[0, resolved_num] if spaces_allowed
52
+
53
+ words = shuffle(word_list)[0, resolved_num]
54
+ words.each_with_index { |w, i| words[i] = word if w =~ /\s/ }
55
+ end
56
+
57
+ ##
58
+ # Produces a random hipster sentence.
59
+ #
60
+ # @param word_count [Integer] Specifies the number of words in the sentence
61
+ # @param supplemental [Boolean] Specifies if the words are supplemental
62
+ # @param random_words_to_add [Integer] Specifies the number of random words to add
63
+ # @param open_compounds_allowed [Boolean] Specifies if the generated sentence can contain words having additional spaces
64
+ # @return [String]
65
+ #
66
+ # @example
67
+ # Faker::Hipster.sentence #=> "Park iphone leggings put a bird on it."
68
+ # Faker::Hipster.sentence(word_count: 3) #=> "Pour-over swag godard."
69
+ # Faker::Hipster.sentence(word_count: 3, supplemental: true) #=> "Beard laboriosam sequi celiac."
70
+ # Faker::Hipster.sentence(word_count: 3, supplemental: false, random_words_to_add: 4) #=> "Bitters retro mustache aesthetic biodiesel 8-bit."
71
+ # Faker::Hipster.sentence(word_count: 3, supplemental: true, random_words_to_add: 4) #=> "Occaecati deleniti messenger bag meh crucifix autem."
72
+ # Faker::Hipster.sentence(word_count: 3, supplemental: true, random_words_to_add: 0, open_compounds_allowed: true) #=> "Kale chips nihil eos."
73
+ # Faker::Hipster.sentence(word_count: 3, supplemental: true, random_words_to_add: 0, open_compounds_allowed: false) #=> "Dreamcatcher umami fixie."
74
+ #
75
+ # @faker.version 1.6.0
76
+ def sentence(legacy_word_count = NOT_GIVEN, legacy_supplemental = NOT_GIVEN, legacy_random_words_to_add = NOT_GIVEN, word_count: 4, supplemental: false, random_words_to_add: 6, open_compounds_allowed: true)
77
+ warn_for_deprecated_arguments do |keywords|
78
+ keywords << :word_count if legacy_word_count != NOT_GIVEN
79
+ keywords << :supplemental if legacy_supplemental != NOT_GIVEN
80
+ keywords << :random_words_to_add if legacy_random_words_to_add != NOT_GIVEN
81
+ end
82
+
83
+ "#{words(number: word_count + rand(random_words_to_add.to_i).to_i, supplemental: supplemental, spaces_allowed: open_compounds_allowed).join(' ').capitalize}."
84
+ end
85
+ # rubocop:enable Metrics/ParameterLists
86
+
87
+ ##
88
+ # Produces random hipster sentences.
89
+ #
90
+ # @param number [Integer] Specifies the number of sentences returned
91
+ # @param supplemental [Boolean] Specifies if the words are supplemental
92
+ # @return [Array<String>]
93
+ #
94
+ # @example
95
+ # Faker::Hipster.sentences #=> ["Godard pitchfork vinegar chillwave everyday 90's whatever.", "Pour-over artisan distillery street waistcoat.", "Salvia yr leggings franzen blue bottle."]
96
+ # Faker::Hipster.sentences(number: 1) #=> ["Before they sold out pinterest venmo umami try-hard ugh hoodie artisan."]
97
+ # Faker::Hipster.sentences(number: 1, supplemental: true) #=> ["Et sustainable optio aesthetic et."]
98
+ #
99
+ # @faker.version 1.6.0
100
+ def sentences(legacy_number = NOT_GIVEN, legacy_supplemental = NOT_GIVEN, number: 3, supplemental: false)
101
+ warn_for_deprecated_arguments do |keywords|
102
+ keywords << :number if legacy_number != NOT_GIVEN
103
+ keywords << :supplemental if legacy_supplemental != NOT_GIVEN
104
+ end
105
+
106
+ [].tap do |sentences|
107
+ 1.upto(resolve(number)) do
108
+ sentences << sentence(word_count: 3, supplemental: supplemental)
109
+ end
110
+ end
111
+ end
112
+
113
+ # rubocop:disable Metrics/ParameterLists
114
+
115
+ ##
116
+ # Produces a random hipster paragraph.
117
+ #
118
+ # @param sentence_count [Integer] Specifies the number of sentences in the paragraph
119
+ # @param supplemental [Boolean] Specifies if the words are supplemental
120
+ # @param random_sentences_to_add [Boolean] Specifies the number of random sentences to add
121
+ # @return [String]
122
+ #
123
+ # @example
124
+ # Faker::Hipster.paragraph #=> "Migas fingerstache pbr&b tofu. Polaroid distillery typewriter echo tofu actually. Slow-carb fanny pack pickled direct trade scenester mlkshk plaid. Banjo venmo chambray cold-pressed typewriter. Fap skateboard intelligentsia."
125
+ # Faker::Hipster.paragraph(sentence_count: 2) #=> "Yolo tilde farm-to-table hashtag. Lomo kitsch disrupt forage +1."
126
+ # Faker::Hipster.paragraph(sentence_count: 2, supplemental: true) #=> "Typewriter iste ut viral kombucha voluptatem. Sint voluptates saepe. Direct trade irony chia excepturi yuccie. Biodiesel esse listicle et quam suscipit."
127
+ # Faker::Hipster.paragraph(sentence_count: 2, supplemental: false, random_sentences_to_add: 4) #=> "Selvage vhs chartreuse narwhal vinegar. Authentic vinyl truffaut carry vhs pop-up. Hammock everyday iphone locavore thundercats bitters vegan goth. Fashion axe banh mi shoreditch whatever artisan."
128
+ # Faker::Hipster.paragraph(sentence_count: 2, supplemental: true, random_sentences_to_add: 4) #=> "Deep v gluten-free unde waistcoat aperiam migas voluptas dolorum. Aut drinking illo sustainable sapiente. Direct trade fanny pack kale chips ennui semiotics."
129
+ #
130
+ # @faker.version 1.6.0
131
+ def paragraph(legacy_sentence_count = NOT_GIVEN, legacy_supplemental = NOT_GIVEN, legacy_random_sentences_to_add = NOT_GIVEN, sentence_count: 3, supplemental: false, random_sentences_to_add: 3)
132
+ warn_for_deprecated_arguments do |keywords|
133
+ keywords << :sentence_count if legacy_sentence_count != NOT_GIVEN
134
+ keywords << :supplemental if legacy_supplemental != NOT_GIVEN
135
+ keywords << :random_sentences_to_add if legacy_random_sentences_to_add != NOT_GIVEN
136
+ end
137
+
138
+ sentences(number: resolve(sentence_count) + rand(random_sentences_to_add.to_i).to_i, supplemental: supplemental).join(' ')
139
+ end
140
+ # rubocop:enable Metrics/ParameterLists
141
+
142
+ ##
143
+ # Produces random hipster paragraphs.
144
+ #
145
+ # @param number [Integer] Specifies the number of paragraphs
146
+ # @param supplemental [Boolean] Specifies if the words are supplemental
147
+ # @return [Array<String>]
148
+ #
149
+ # @example
150
+ # Faker::Hipster.paragraphs #=> ["Tilde microdosing blog cliche meggings. Intelligentsia five dollar toast forage yuccie. Master kitsch knausgaard. Try-hard everyday trust fund mumblecore.", "Normcore viral pickled. Listicle humblebrag swag tote bag. Taxidermy street hammock neutra butcher cred kale chips. Blog portland humblebrag trust fund irony.", "Single-origin coffee fixie cleanse tofu xoxo. Post-ironic tote bag ramps gluten-free locavore mumblecore hammock. Umami loko twee. Ugh kitsch before they sold out."]
151
+ # Faker::Hipster.paragraphs(number: 1) #=> ["Skateboard cronut synth +1 fashion axe. Pop-up polaroid skateboard asymmetrical. Ennui fingerstache shoreditch before they sold out. Tattooed pitchfork ramps. Photo booth yr messenger bag raw denim bespoke locavore lomo synth."]
152
+ # Faker::Hipster.paragraphs(number: 1, supplemental: true) #=> ["Quae direct trade pbr&b quo taxidermy autem loko. Umami quas ratione migas cardigan sriracha minima. Tenetur perspiciatis pickled sed eum doloribus truffaut. Excepturi dreamcatcher meditation."]
153
+ #
154
+ # @faker.version 1.6.0
155
+ def paragraphs(legacy_number = NOT_GIVEN, legacy_supplemental = NOT_GIVEN, number: 3, supplemental: false)
156
+ warn_for_deprecated_arguments do |keywords|
157
+ keywords << :number if legacy_number != NOT_GIVEN
158
+ keywords << :supplemental if legacy_supplemental != NOT_GIVEN
159
+ end
160
+
161
+ [].tap do |paragraphs|
162
+ 1.upto(resolve(number)) do
163
+ paragraphs << paragraph(sentence_count: 3, supplemental: supplemental)
164
+ end
165
+ end
166
+ end
167
+
168
+ ##
169
+ # Produces a random hipster paragraph by characters.
170
+ #
171
+ # @param characters [Integer] Specifies the number of characters in the paragraph
172
+ # @param supplemental [Boolean] Specifies if the words are supplemental
173
+ # @return [String]
174
+ #
175
+ # @example
176
+ # Faker::Hipster.paragraph_by_chars #=> "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."
177
+ # Faker::Hipster.paragraph_by_chars(characters: 256, supplemental: false) #=> "Hella kogi blog narwhal sartorial selfies mustache schlitz. Bespoke normcore kitsch cred hella fixie. Park aesthetic fixie migas twee. Cliche mustache brunch tumblr fixie godard. Drinking pop-up synth hoodie dreamcatcher typewriter. Kitsch biodiesel green."
178
+ #
179
+ # @faker.version 1.6.0
180
+ def paragraph_by_chars(legacy_characters = NOT_GIVEN, legacy_supplemental = NOT_GIVEN, characters: 256, supplemental: false)
181
+ warn_for_deprecated_arguments do |keywords|
182
+ keywords << :characters if legacy_characters != NOT_GIVEN
183
+ keywords << :supplemental if legacy_supplemental != NOT_GIVEN
184
+ end
185
+
186
+ paragraph = paragraph(sentence_count: 3, supplemental: supplemental)
187
+
188
+ paragraph += " #{paragraph(sentence_count: 3, supplemental: supplemental)}" while paragraph.length < characters
189
+
190
+ "#{paragraph[0...characters - 1]}."
191
+ end
192
+ end
193
+ end
194
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Hobby < Base
5
+ flexible :hobby
6
+
7
+ class << self
8
+ ##
9
+ # Retrieves a typical hobby activity.
10
+ #
11
+ # @return [String]
12
+ #
13
+ # @example
14
+ # Faker::Hobby.activity #=> "Cooking"
15
+ #
16
+ # @faker.version next
17
+ def activity
18
+ fetch('hobby.activity')
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class House < Base
5
+ class << self
6
+ ##
7
+ # Produces the name of a piece of furniture.
8
+ #
9
+ # @return [String]
10
+ #
11
+ # @example
12
+ # Faker::House.furniture #=> "chair"
13
+ #
14
+ # @faker.version 1.9.2
15
+ def furniture
16
+ fetch('house.furniture')
17
+ end
18
+
19
+ ##
20
+ # Produces the name of a room in a house.
21
+ #
22
+ # @return [String]
23
+ #
24
+ # @example
25
+ # Faker::House.room #=> "kitchen"
26
+ #
27
+ # @faker.version 1.9.2
28
+ def room
29
+ fetch('house.rooms')
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,418 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class IDNumber < Base
5
+ CHECKS = 'TRWAGMYFPDXBNJZSQVHLCKE'
6
+ INVALID_SSN = [
7
+ /0{3}-\d{2}-\d{4}/,
8
+ /\d{3}-0{2}-\d{4}/,
9
+ /\d{3}-\d{2}-0{4}/,
10
+ /666-\d{2}-\d{4}/,
11
+ /9\d{2}-\d{2}-\d{4}/
12
+ ].freeze
13
+ ZA_RACE_DIGIT = '8'
14
+ ZA_CITIZENSHIP_DIGITS = %w[0 1].freeze
15
+ BRAZILIAN_ID_FORMAT = /(\d{1,2})(\d{3})(\d{3})([\dX])/.freeze
16
+ BRAZILIAN_ID_FROM = 10_000_000
17
+ BRAZILIAN_ID_TO = 99_999_999
18
+
19
+ CHILEAN_MODULO = 11
20
+
21
+ class << self
22
+ ##
23
+ # Produces a random valid US Social Security number.
24
+ #
25
+ # @return [String]
26
+ #
27
+ # @example
28
+ # Faker::IDNumber.valid #=> "552-56-3593"
29
+ #
30
+ # @faker.version 1.6.0
31
+ def valid
32
+ _translate('valid')
33
+ end
34
+
35
+ ##
36
+ # Produces a random invalid US Social Security number.
37
+ #
38
+ # @return [String]
39
+ #
40
+ # @example
41
+ # Faker::IDNumber.invalid #=> "311-72-0000"
42
+ #
43
+ # @faker.version 1.6.0
44
+ def invalid
45
+ _translate('invalid')
46
+ end
47
+
48
+ def ssn_valid
49
+ ssn = regexify(/[0-8]\d{2}-\d{2}-\d{4}/)
50
+ # We could still have all 0s in one segment or another
51
+ INVALID_SSN.any? { |regex| regex =~ ssn } ? ssn_valid : ssn
52
+ end
53
+
54
+ ##
55
+ # Produces a random Spanish citizen identifier (DNI).
56
+ #
57
+ # @return [String]
58
+ #
59
+ # @example
60
+ # Faker::IDNumber.spanish_citizen_number #=> "53290236-H"
61
+ #
62
+ # @faker.version 1.9.0
63
+ def spanish_citizen_number
64
+ num = Faker::Number.number(digits: 8)
65
+ mod = num.to_i % 23
66
+ check = CHECKS[mod]
67
+ "#{num}-#{check}"
68
+ end
69
+
70
+ ##
71
+ # Produces a random Spanish foreign born citizen identifier (NIE).
72
+ #
73
+ # @return [String]
74
+ #
75
+ # @example
76
+ # Faker::IDNumber.spanish_foreign_citizen_number #=> "Z-1600870-Y"
77
+ #
78
+ # @faker.version 1.9.0
79
+ def spanish_foreign_citizen_number
80
+ code = 'XYZ'
81
+ digits = Faker::Number.number(digits: 7)
82
+ prefix = code[rand(code.length)]
83
+ prefix_val = 'XYZ'.index(prefix).to_s
84
+ mod = "#{prefix_val}#{digits}".to_i % 23
85
+ check = CHECKS[mod]
86
+ "#{prefix}-#{digits}-#{check}"
87
+ end
88
+
89
+ ##
90
+ # Produces a random valid South African ID Number.
91
+ #
92
+ # @return [String]
93
+ #
94
+ # @example
95
+ # Faker::IDNumber.south_african_id_number #=> "8105128870184"
96
+ # Faker::IDNumber.valid_south_african_id_number #=> "8105128870184"
97
+ #
98
+ # @faker.version 1.9.2
99
+ def valid_south_african_id_number
100
+ id_number = [
101
+ Faker::Date.birthday.strftime('%y%m%d'),
102
+ Faker::Number.number(digits: 4),
103
+ ZA_CITIZENSHIP_DIGITS.sample(random: Faker::Config.random),
104
+ ZA_RACE_DIGIT
105
+ ].join
106
+
107
+ [id_number, south_african_id_checksum_digit(id_number)].join
108
+ end
109
+
110
+ alias south_african_id_number valid_south_african_id_number
111
+
112
+ ##
113
+ # Produces a random invalid South African ID Number.
114
+ #
115
+ # @return [String]
116
+ #
117
+ # @example
118
+ # Faker::IDNumber.invalid_south_african_id_number #=> "1642972065088"
119
+ #
120
+ # @faker.version 1.9.2
121
+ def invalid_south_african_id_number
122
+ invalid_date_of_birth = [
123
+ Faker::Number.number(digits: 2),
124
+ Faker::Number.between(from: 13, to: 99),
125
+ Faker::Number.between(from: 32, to: 99)
126
+ ].map(&:to_s).join
127
+
128
+ id_number = [
129
+ invalid_date_of_birth,
130
+ Faker::Number.number(digits: 4),
131
+ ZA_CITIZENSHIP_DIGITS.sample(random: Faker::Config.random),
132
+ ZA_RACE_DIGIT
133
+ ].join
134
+
135
+ [id_number, south_african_id_checksum_digit(id_number)].join
136
+ end
137
+
138
+ ##
139
+ # Produces a random Brazilian Citizen Number (CPF).
140
+ #
141
+ # @param formatted [Boolean] Specifies if the number is formatted with dividers.
142
+ # @return [String]
143
+ #
144
+ # @example
145
+ # Faker::IDNumber.brazilian_citizen_number #=> "53540542221"
146
+ # Faker::IDNumber.brazilian_citizen_number(formatted: true) #=> "535.405.422-21"
147
+ #
148
+ # @faker.version 1.9.2
149
+ def brazilian_citizen_number(legacy_formatted = NOT_GIVEN, formatted: false)
150
+ warn_for_deprecated_arguments do |keywords|
151
+ keywords << :formatted if legacy_formatted != NOT_GIVEN
152
+ end
153
+
154
+ digits = Faker::Number.leading_zero_number(digits: 9) until digits&.match(/(\d)((?!\1)\d)+/)
155
+ first_digit = brazilian_citizen_number_checksum_digit(digits)
156
+ second_digit = brazilian_citizen_number_checksum_digit(digits + first_digit)
157
+ number = [digits, first_digit, second_digit].join
158
+ formatted ? format('%s.%s.%s-%s', *number.scan(/\d{2,3}/).flatten) : number
159
+ end
160
+
161
+ alias brazilian_cpf brazilian_citizen_number
162
+
163
+ ##
164
+ # Produces a random Brazilian ID Number (RG).
165
+ #
166
+ # @param formatted [Boolean] Specifies if the number is formatted with dividers.
167
+ # @return [String]
168
+ #
169
+ # @example
170
+ # Faker::IDNumber.brazilian_id #=> "493054029"
171
+ # Faker::IDNumber.brazilian_id(formatted: true) #=> "49.305.402-9"
172
+ #
173
+ # @faker.version 2.1.2
174
+ def brazilian_id(legacy_formatted = NOT_GIVEN, formatted: false)
175
+ warn_for_deprecated_arguments do |keywords|
176
+ keywords << :formatted if legacy_formatted != NOT_GIVEN
177
+ end
178
+
179
+ digits = Faker::Number.between(to: BRAZILIAN_ID_FROM, from: BRAZILIAN_ID_TO).to_s
180
+ check_digit = brazilian_id_checksum_digit(digits)
181
+ number = [digits, check_digit].join
182
+ formatted ? format('%s.%s.%s-%s', *number.scan(BRAZILIAN_ID_FORMAT).flatten) : number
183
+ end
184
+
185
+ alias brazilian_rg brazilian_id
186
+
187
+ ##
188
+ # Produces a random Chilean ID (Rut with 8 digits).
189
+ #
190
+ # @return [String]
191
+ #
192
+ # @example
193
+ # Faker::IDNumber.chilean_id #=> "15620613-K"
194
+ #
195
+ # @faker.version 2.1.2
196
+ def chilean_id
197
+ digits = Faker::Number.number(digits: 8)
198
+ verification_code = chilean_verification_code(digits)
199
+
200
+ "#{digits}-#{verification_code}"
201
+ end
202
+
203
+ ##
204
+ # Produces a random Croatian ID number (OIB).
205
+ #
206
+ # @param international [Boolean] Specifies whether to add international prefix.
207
+ # @return [String]
208
+ #
209
+ # @example
210
+ # Faker::IDNumber.croatian_id #=> "88467617508"
211
+ # Faker::IDNumber.croatian_id(international: true) #=> "HR88467617508"
212
+ #
213
+ # @faker.version next
214
+ def croatian_id(international: false)
215
+ prefix = international ? 'HR' : ''
216
+ digits = Faker::Number.number(digits: 10).to_s
217
+ checksum_digit = croatian_id_checksum_digit(digits)
218
+
219
+ "#{prefix}#{digits}#{checksum_digit}"
220
+ end
221
+
222
+ ##
223
+ # Produces a random Danish ID Number (CPR number).
224
+ # CPR number is 10 digits. Digit 1-6 is the birthdate (format "DDMMYY").
225
+ # Digit 7-10 is a sequence number.
226
+ # Digit 7 digit is a control digit that determines the century of birth.
227
+ # Digit 10 reveals the gender: # even is female, odd is male.
228
+ #
229
+ # @param formatted [Boolean] Specifies if the number is formatted with dividers.
230
+ # @param birthday [Date] Specifies the birthday for the id number.
231
+ # @param gender [Symbol] Specifies the gender for the id number. Must be one :male or :female if present.
232
+ # @return [String]
233
+ #
234
+ # @example
235
+ # Faker::IDNumber.danish_id_number #=> "0503909980"
236
+ # Faker::IDNumber.danish_id_number(formatted: true) #=> "050390-9980"
237
+ # Faker::IDNumber.danish_id_number(birthday: Date.new(1990, 3, 5)) #=> "0503909980"
238
+ # Faker::IDNumber.danish_id_number(gender: :female) #=> "0503909980"
239
+ #
240
+ # @faker.version next
241
+ def danish_id_number(formatted: false, birthday: Faker::Date.birthday, gender: nil)
242
+ valid_control_digits = danish_control_digits(birthday)
243
+ control_digit = sample(valid_control_digits)
244
+ digits = (0..9).to_a
245
+ gender = gender.to_sym if gender.respond_to?(:to_sym)
246
+ gender_digit = case gender
247
+ when nil
248
+ sample(digits)
249
+ when :male
250
+ sample(digits.select(&:odd?))
251
+ when :female
252
+ sample(digits.select(&:even?))
253
+ else
254
+ raise ArgumentError, "Invalid gender #{gender}. Must be one of male, female, or be omitted."
255
+ end
256
+
257
+ [
258
+ birthday.strftime('%d%m%y'),
259
+ formatted ? '-' : '',
260
+ control_digit,
261
+ Faker::Number.number(digits: 2),
262
+ gender_digit
263
+ ].join
264
+ end
265
+
266
+ ##
267
+ # Produces a random French social security number (INSEE number).
268
+ #
269
+ # @return [String]
270
+ #
271
+ # @example
272
+ # Faker::IDNumber.french_insee_number #=> "53290236-H"
273
+ #
274
+ # @faker.version next
275
+ def french_insee_number
276
+ num = [
277
+ [1, 2].sample(random: Faker::Config.random), # gender
278
+ Faker::Number.between(from: 0, to: 99).to_s.rjust(2, '0'), # year of birth
279
+ Faker::Number.between(from: 1, to: 12).to_s.rjust(2, '0'), # month of birth
280
+ Faker::Number.number(digits: 5), # place of birth
281
+ Faker::Number.number(digits: 3) # order number
282
+ ].join
283
+ mod = num.to_i % 97
284
+ check = (97 - mod).to_s.rjust(2, '0')
285
+ "#{num}#{check}"
286
+ end
287
+
288
+ private
289
+
290
+ def croatian_id_checksum_digit(digits)
291
+ control_sum = 10
292
+
293
+ digits.chars.map(&:to_i).each do |digit|
294
+ control_sum += digit
295
+ control_sum %= 10
296
+ control_sum = 10 if control_sum.zero?
297
+ control_sum *= 2
298
+ control_sum %= 11
299
+ end
300
+
301
+ control_sum = 11 - control_sum
302
+ control_sum % 10
303
+ end
304
+
305
+ def chilean_verification_code(digits)
306
+ # First digit is multiplied by 3, second by 2, and so on
307
+ multiplication_rule = [3, 2, 7, 6, 5, 4, 3, 2]
308
+ digits_splitted = digits.to_s.chars.map(&:to_i)
309
+
310
+ sum = digits_splitted.map.with_index { |digit, index| digit * multiplication_rule[index] }.reduce(:+)
311
+
312
+ modulo = sum.modulo(CHILEAN_MODULO)
313
+ difference = CHILEAN_MODULO - modulo
314
+
315
+ case difference
316
+ when 0..9
317
+ difference
318
+ when 10
319
+ 'K'
320
+ when 11
321
+ 0
322
+ end
323
+ end
324
+
325
+ def south_african_id_checksum_digit(id_number)
326
+ value_parts = id_number.chars
327
+ even_digits = value_parts
328
+ .select
329
+ .with_index { |_, i| (i + 1).even? }
330
+ odd_digits_without_last_character = value_parts[0...-1]
331
+ .select
332
+ .with_index { |_, i| (i + 1).odd? }
333
+
334
+ sum_of_odd_digits = odd_digits_without_last_character.map(&:to_i).reduce(:+)
335
+ even_digits_times_two = (even_digits.join.to_i * 2).to_s
336
+ sum_of_even_digits = even_digits_times_two.chars.map(&:to_i).reduce(:+)
337
+
338
+ total_sum = sum_of_odd_digits + sum_of_even_digits
339
+
340
+ ((10 - (total_sum % 10)) % 10).to_s
341
+ end
342
+
343
+ def brazilian_citizen_number_checksum_digit(digits)
344
+ checksum = brazilian_document_checksum(digits)
345
+ brazilian_document_digit(checksum)
346
+ end
347
+
348
+ def brazilian_id_checksum_digit(digits)
349
+ checksum = brazilian_document_checksum(digits)
350
+ brazilian_document_digit(checksum, id: true)
351
+ end
352
+
353
+ def brazilian_document_checksum(digits)
354
+ digits.chars.each_with_index.inject(0) do |acc, (digit, i)|
355
+ acc + digit.to_i * (digits.size + 1 - i)
356
+ end * 10
357
+ end
358
+
359
+ def brazilian_document_digit(checksum, id: false)
360
+ remainder = checksum % 11
361
+ id ? brazilian_id_digit(remainder) : brazilian_citizen_number_digit(remainder)
362
+ end
363
+
364
+ def brazilian_citizen_number_digit(remainder)
365
+ remainder == 10 ? '0' : remainder.to_s
366
+ end
367
+
368
+ def brazilian_id_digit(remainder)
369
+ subtraction = 11 - remainder.to_i
370
+ digits = { 10 => 'X', 11 => '0' }
371
+ digits.include?(subtraction) ? digits[subtraction] : subtraction.to_s
372
+ end
373
+
374
+ def danish_control_digits(birthday)
375
+ year = birthday.year
376
+ century = year.to_s.slice(0, 2).to_i
377
+ year_digits = year.to_s.slice(2, 2).to_i
378
+ error_message = "Invalid birthday: #{birthday}. Danish CPR numbers are only distributed to persons born between 1858 and 2057."
379
+
380
+ case century
381
+ when 18
382
+ # If 5, 6, 7 or 8 and the year numbers are greater than or equal to 58, you were born in 18XX.
383
+ case year_digits
384
+ when 58..99
385
+ [5, 6, 7, 8]
386
+ else
387
+ raise ArgumentError, error_message
388
+ end
389
+ when 19
390
+ # If 0, 1, 2 or 3, you are always born in 19XX.
391
+ # If 4 or 9, you are born in 19XX if the year digits are greater than 36.
392
+
393
+ case year_digits
394
+ when 0..36
395
+ [0, 1, 2, 3]
396
+ else # 37..99
397
+ [0, 1, 2, 3, 4, 9]
398
+ end
399
+ else
400
+ # If 4, 5, 6, 7, 8 or 9 and the year digits are less than or equal to 36, you were born in 20XX.
401
+ # 5, 6, 7 and 8 are not distributed to persons, with year digits from and including 37 to and including 57.
402
+ case year_digits
403
+ when 0..36
404
+ [4, 5, 6, 7, 8, 9]
405
+ when 37..57
406
+ [5, 6, 7, 8]
407
+ else
408
+ raise ArgumentError, error_message
409
+ end
410
+ end
411
+ end
412
+
413
+ def _translate(key)
414
+ parse("id_number.#{key}")
415
+ end
416
+ end
417
+ end
418
+ end