faker 1.1.2 → 3.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (569) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +2383 -0
  3. data/History.md +176 -0
  4. data/License.txt +2 -2
  5. data/README.md +487 -47
  6. data/bin/faker +5 -0
  7. data/lib/faker/blockchain/aeternity.rb +70 -0
  8. data/lib/faker/blockchain/bitcoin.rb +60 -0
  9. data/lib/faker/blockchain/ethereum.rb +26 -0
  10. data/lib/faker/blockchain/tezos.rb +135 -0
  11. data/lib/faker/books/book.rb +61 -0
  12. data/lib/faker/books/culture_series.rb +83 -0
  13. data/lib/faker/books/dune.rb +124 -0
  14. data/lib/faker/books/lovecraft.rb +249 -0
  15. data/lib/faker/books/the_kingkiller_chronicle.rb +61 -0
  16. data/lib/faker/creature/animal.rb +22 -0
  17. data/lib/faker/creature/bird.rb +203 -0
  18. data/lib/faker/creature/cat.rb +50 -0
  19. data/lib/faker/creature/dog.rb +115 -0
  20. data/lib/faker/creature/horse.rb +37 -0
  21. data/lib/faker/default/address.rb +348 -0
  22. data/lib/faker/default/adjective.rb +35 -0
  23. data/lib/faker/default/alphanumeric.rb +67 -0
  24. data/lib/faker/default/ancient.rb +59 -0
  25. data/lib/faker/default/app.rb +68 -0
  26. data/lib/faker/default/appliance.rb +33 -0
  27. data/lib/faker/default/artist.rb +20 -0
  28. data/lib/faker/default/avatar.rb +49 -0
  29. data/lib/faker/default/bank.rb +199 -0
  30. data/lib/faker/default/barcode.rb +165 -0
  31. data/lib/faker/default/beer.rb +113 -0
  32. data/lib/faker/default/blood.rb +48 -0
  33. data/lib/faker/default/boolean.rb +23 -0
  34. data/lib/faker/default/bossa_nova.rb +33 -0
  35. data/lib/faker/default/business.rb +50 -0
  36. data/lib/faker/default/camera.rb +46 -0
  37. data/lib/faker/default/cannabis.rb +135 -0
  38. data/lib/faker/default/chile_rut.rb +92 -0
  39. data/lib/faker/default/chuck_norris.rb +25 -0
  40. data/lib/faker/default/code.rb +269 -0
  41. data/lib/faker/default/coffee.rb +82 -0
  42. data/lib/faker/default/coin.rb +33 -0
  43. data/lib/faker/default/color.rb +150 -0
  44. data/lib/faker/default/commerce.rb +157 -0
  45. data/lib/faker/default/company.rb +571 -0
  46. data/lib/faker/default/compass.rb +202 -0
  47. data/lib/faker/default/computer.rb +63 -0
  48. data/lib/faker/default/construction.rb +83 -0
  49. data/lib/faker/default/cosmere.rb +138 -0
  50. data/lib/faker/default/crypto.rb +61 -0
  51. data/lib/faker/default/crypto_coin.rb +82 -0
  52. data/lib/faker/default/currency.rb +46 -0
  53. data/lib/faker/default/date.rb +153 -0
  54. data/lib/faker/default/dc_comics.rb +70 -0
  55. data/lib/faker/default/demographic.rb +94 -0
  56. data/lib/faker/default/dessert.rb +48 -0
  57. data/lib/faker/default/device.rb +85 -0
  58. data/lib/faker/default/driving_licence.rb +121 -0
  59. data/lib/faker/default/drone.rb +332 -0
  60. data/lib/faker/default/educator.rb +102 -0
  61. data/lib/faker/default/electrical_components.rb +48 -0
  62. data/lib/faker/default/emotion.rb +33 -0
  63. data/lib/faker/default/esport.rb +72 -0
  64. data/lib/faker/default/file.rb +81 -0
  65. data/lib/faker/default/fillmurray.rb +38 -0
  66. data/lib/faker/default/finance.rb +112 -0
  67. data/lib/faker/default/food.rb +126 -0
  68. data/lib/faker/default/funny_name.rb +90 -0
  69. data/lib/faker/default/gender.rb +46 -0
  70. data/lib/faker/default/greek_philosophers.rb +33 -0
  71. data/lib/faker/default/hacker.rb +103 -0
  72. data/lib/faker/default/hipster.rb +155 -0
  73. data/lib/faker/default/hobby.rb +22 -0
  74. data/lib/faker/default/house.rb +33 -0
  75. data/lib/faker/default/id_number.rb +410 -0
  76. data/lib/faker/default/industry_segments.rb +61 -0
  77. data/lib/faker/default/internet.rb +582 -0
  78. data/lib/faker/default/internet_http.rb +48 -0
  79. data/lib/faker/default/invoice.rb +123 -0
  80. data/lib/faker/default/job.rb +61 -0
  81. data/lib/faker/default/json.rb +125 -0
  82. data/lib/faker/default/kpop.rb +85 -0
  83. data/lib/faker/default/lorem.rb +250 -0
  84. data/lib/faker/default/lorem_flickr.rb +110 -0
  85. data/lib/faker/default/markdown.rb +170 -0
  86. data/lib/faker/default/marketing.rb +22 -0
  87. data/lib/faker/default/measurement.rb +175 -0
  88. data/lib/faker/default/military.rb +98 -0
  89. data/lib/faker/default/mountain.rb +33 -0
  90. data/lib/faker/default/name.rb +152 -0
  91. data/lib/faker/default/nation.rb +73 -0
  92. data/lib/faker/default/nato_phonetic_alphabet.rb +20 -0
  93. data/lib/faker/default/nhs.rb +53 -0
  94. data/lib/faker/default/number.rb +244 -0
  95. data/lib/faker/default/omniauth.rb +471 -0
  96. data/lib/faker/default/phone_number.rb +133 -0
  97. data/lib/faker/default/placeholdit.rb +52 -0
  98. data/lib/faker/default/programming_language.rb +33 -0
  99. data/lib/faker/default/relationship.rb +87 -0
  100. data/lib/faker/default/religion.rb +6 -0
  101. data/lib/faker/default/restaurant.rb +63 -0
  102. data/lib/faker/default/science.rb +154 -0
  103. data/lib/faker/default/slack_emoji.rb +124 -0
  104. data/lib/faker/default/source.rb +63 -0
  105. data/lib/faker/default/south_africa.rb +141 -0
  106. data/lib/faker/default/space.rb +191 -0
  107. data/lib/faker/default/string.rb +59 -0
  108. data/lib/faker/default/stripe.rb +126 -0
  109. data/lib/faker/default/subscription.rb +70 -0
  110. data/lib/faker/default/superhero.rb +72 -0
  111. data/lib/faker/default/tea.rb +41 -0
  112. data/lib/faker/default/team.rb +74 -0
  113. data/lib/faker/default/time.rb +149 -0
  114. data/lib/faker/default/twitter.rb +207 -0
  115. data/lib/faker/default/types.rb +160 -0
  116. data/lib/faker/default/university.rb +75 -0
  117. data/lib/faker/default/vehicle.rb +320 -0
  118. data/lib/faker/default/verb.rb +72 -0
  119. data/lib/faker/default/vulnerability_identifier.rb +23 -0
  120. data/lib/faker/default/world_cup.rb +77 -0
  121. data/lib/faker/fantasy/tolkien.rb +67 -0
  122. data/lib/faker/games/clash_of_clans.rb +48 -0
  123. data/lib/faker/games/control.rb +113 -0
  124. data/lib/faker/games/dnd.rb +136 -0
  125. data/lib/faker/games/dota.rb +89 -0
  126. data/lib/faker/games/elder_scrolls.rb +139 -0
  127. data/lib/faker/games/fallout.rb +62 -0
  128. data/lib/faker/games/game.rb +48 -0
  129. data/lib/faker/games/half_life.rb +48 -0
  130. data/lib/faker/games/heroes.rb +61 -0
  131. data/lib/faker/games/heroes_of_the_storm.rb +72 -0
  132. data/lib/faker/games/league_of_legends.rb +87 -0
  133. data/lib/faker/games/minecraft.rb +113 -0
  134. data/lib/faker/games/myst.rb +74 -0
  135. data/lib/faker/games/overwatch.rb +48 -0
  136. data/lib/faker/games/pokemon.rb +48 -0
  137. data/lib/faker/games/sonic_the_hedgehog.rb +48 -0
  138. data/lib/faker/games/street_fighter.rb +61 -0
  139. data/lib/faker/games/super_mario.rb +48 -0
  140. data/lib/faker/games/super_smash_bros.rb +35 -0
  141. data/lib/faker/games/tarkov.rb +205 -0
  142. data/lib/faker/games/touhou.rb +75 -0
  143. data/lib/faker/games/warhammer_fantasy.rb +74 -0
  144. data/lib/faker/games/witcher.rb +126 -0
  145. data/lib/faker/games/world_of_warcraft.rb +60 -0
  146. data/lib/faker/games/zelda.rb +62 -0
  147. data/lib/faker/japanese_media/conan.rb +48 -0
  148. data/lib/faker/japanese_media/cowboy_bebop.rb +61 -0
  149. data/lib/faker/japanese_media/doraemon.rb +48 -0
  150. data/lib/faker/japanese_media/dragon_ball.rb +48 -0
  151. data/lib/faker/japanese_media/fullmetal_alchemist_brotherhood.rb +48 -0
  152. data/lib/faker/japanese_media/kamen_rider.rb +102 -0
  153. data/lib/faker/japanese_media/naruto.rb +61 -0
  154. data/lib/faker/japanese_media/one_piece.rb +87 -0
  155. data/lib/faker/japanese_media/studio_ghibli.rb +48 -0
  156. data/lib/faker/japanese_media/sword_art_online.rb +61 -0
  157. data/lib/faker/locations/australia.rb +47 -0
  158. data/lib/faker/movies/back_to_the_future.rb +49 -0
  159. data/lib/faker/movies/departed.rb +49 -0
  160. data/lib/faker/movies/ghostbusters.rb +49 -0
  161. data/lib/faker/movies/hackers.rb +48 -0
  162. data/lib/faker/movies/harry_potter.rb +87 -0
  163. data/lib/faker/movies/hitchhikers_guide_to_the_galaxy.rb +106 -0
  164. data/lib/faker/movies/hobbit.rb +62 -0
  165. data/lib/faker/movies/how_to_train_your_dragon.rb +48 -0
  166. data/lib/faker/movies/lebowski.rb +48 -0
  167. data/lib/faker/movies/lord_of_the_rings.rb +49 -0
  168. data/lib/faker/movies/movie.rb +33 -0
  169. data/lib/faker/movies/princess_bride.rb +36 -0
  170. data/lib/faker/movies/room.rb +63 -0
  171. data/lib/faker/movies/star_wars.rb +269 -0
  172. data/lib/faker/movies/tron.rb +161 -0
  173. data/lib/faker/movies/v_for_vendetta.rb +50 -0
  174. data/lib/faker/music/grateful_dead.rb +37 -0
  175. data/lib/faker/music/hiphop.rb +48 -0
  176. data/lib/faker/music/music.rb +145 -0
  177. data/lib/faker/music/opera.rb +298 -0
  178. data/lib/faker/music/pearl_jam.rb +50 -0
  179. data/lib/faker/music/phish.rb +48 -0
  180. data/lib/faker/music/prince.rb +64 -0
  181. data/lib/faker/music/rock_band.rb +34 -0
  182. data/lib/faker/music/rush.rb +37 -0
  183. data/lib/faker/music/show.rb +49 -0
  184. data/lib/faker/music/umphreys_mcgee.rb +22 -0
  185. data/lib/faker/quotes/chiquito.rb +80 -0
  186. data/lib/faker/quotes/quote.rb +111 -0
  187. data/lib/faker/quotes/rajnikanth.rb +27 -0
  188. data/lib/faker/quotes/shakespeare.rb +111 -0
  189. data/lib/faker/religion/bible.rb +50 -0
  190. data/lib/faker/sports/basketball.rb +61 -0
  191. data/lib/faker/sports/football.rb +74 -0
  192. data/lib/faker/sports/mountaineering.rb +22 -0
  193. data/lib/faker/sports/sport.rb +116 -0
  194. data/lib/faker/sports/volleyball.rb +74 -0
  195. data/lib/faker/travel/airport.rb +47 -0
  196. data/lib/faker/tv_shows/aqua_teen_hunger_force.rb +37 -0
  197. data/lib/faker/tv_shows/big_bang_theory.rb +37 -0
  198. data/lib/faker/tv_shows/bojack_horseman.rb +51 -0
  199. data/lib/faker/tv_shows/breaking_bad.rb +37 -0
  200. data/lib/faker/tv_shows/brooklyn_nine_nine.rb +38 -0
  201. data/lib/faker/tv_shows/buffy.rb +89 -0
  202. data/lib/faker/tv_shows/community.rb +38 -0
  203. data/lib/faker/tv_shows/dr_who.rb +115 -0
  204. data/lib/faker/tv_shows/dumb_and_dumber.rb +51 -0
  205. data/lib/faker/tv_shows/family_guy.rb +51 -0
  206. data/lib/faker/tv_shows/final_space.rb +51 -0
  207. data/lib/faker/tv_shows/friends.rb +50 -0
  208. data/lib/faker/tv_shows/futurama.rb +65 -0
  209. data/lib/faker/tv_shows/game_of_thrones.rb +77 -0
  210. data/lib/faker/tv_shows/hey_arnold.rb +50 -0
  211. data/lib/faker/tv_shows/how_i_met_your_mother.rb +64 -0
  212. data/lib/faker/tv_shows/michael_scott.rb +23 -0
  213. data/lib/faker/tv_shows/new_girl.rb +38 -0
  214. data/lib/faker/tv_shows/parks_and_rec.rb +37 -0
  215. data/lib/faker/tv_shows/rick_and_morty.rb +51 -0
  216. data/lib/faker/tv_shows/ru_paul.rb +37 -0
  217. data/lib/faker/tv_shows/seinfeld.rb +51 -0
  218. data/lib/faker/tv_shows/silicon_valley.rb +118 -0
  219. data/lib/faker/tv_shows/simpsons.rb +65 -0
  220. data/lib/faker/tv_shows/south_park.rb +38 -0
  221. data/lib/faker/tv_shows/spongebob.rb +50 -0
  222. data/lib/faker/tv_shows/star_trek.rb +63 -0
  223. data/lib/faker/tv_shows/stargate.rb +51 -0
  224. data/lib/faker/tv_shows/stranger_things.rb +38 -0
  225. data/lib/faker/tv_shows/suits.rb +37 -0
  226. data/lib/faker/tv_shows/supernatural.rb +48 -0
  227. data/lib/faker/tv_shows/the_expanse.rb +63 -0
  228. data/lib/faker/tv_shows/the_fresh_prince_of_bel_air.rb +64 -0
  229. data/lib/faker/tv_shows/the_it_crowd.rb +64 -0
  230. data/lib/faker/tv_shows/the_office.rb +37 -0
  231. data/lib/faker/tv_shows/the_thick_of_it.rb +51 -0
  232. data/lib/faker/tv_shows/twin_peaks.rb +51 -0
  233. data/lib/faker/tv_shows/venture_bros.rb +65 -0
  234. data/lib/faker/version.rb +4 -2
  235. data/lib/faker.rb +170 -58
  236. data/lib/helpers/base58.rb +22 -0
  237. data/lib/helpers/char.rb +61 -0
  238. data/lib/helpers/unique_generator.rb +60 -0
  239. data/lib/locales/README.md +40 -0
  240. data/lib/locales/ar.yml +106 -0
  241. data/lib/locales/bg.yml +44 -0
  242. data/lib/locales/ca-CAT.yml +24 -0
  243. data/lib/locales/ca.yml +23 -0
  244. data/lib/locales/da-DK.yml +72 -0
  245. data/lib/locales/de-AT.yml +57 -0
  246. data/lib/locales/de-CH.yml +1713 -0
  247. data/lib/locales/de.yml +131 -9
  248. data/lib/locales/ee.yml +61 -0
  249. data/lib/locales/en/README.md +13 -0
  250. data/lib/locales/en/address.yml +586 -0
  251. data/lib/locales/en/adjective.yml +179 -0
  252. data/lib/locales/en/airport.yml +381 -0
  253. data/lib/locales/en/ancient.yml +7 -0
  254. data/lib/locales/en/animal.yml +6 -0
  255. data/lib/locales/en/app.yml +8 -0
  256. data/lib/locales/en/appliance.yml +5 -0
  257. data/lib/locales/en/aqua_teen_hunger_force.yml +36 -0
  258. data/lib/locales/en/artist.yml +4 -0
  259. data/lib/locales/en/australia.yml +107 -0
  260. data/lib/locales/en/back_to_the_future.yml +120 -0
  261. data/lib/locales/en/bank.yml +302 -0
  262. data/lib/locales/en/barcode.yml +24 -0
  263. data/lib/locales/en/basketball.yml +99 -0
  264. data/lib/locales/en/beer.yml +9 -0
  265. data/lib/locales/en/bible.yml +90 -0
  266. data/lib/locales/en/big_bang_theory.yml +38 -0
  267. data/lib/locales/en/bird.yml +1281 -0
  268. data/lib/locales/en/blood.yml +13 -0
  269. data/lib/locales/en/bojack_horseman.yml +6 -0
  270. data/lib/locales/en/book.yml +491 -0
  271. data/lib/locales/en/bossa_nova.yml +6 -0
  272. data/lib/locales/en/breaking_bad.yml +28 -0
  273. data/lib/locales/en/brooklyn_nine_nine.yml +35 -0
  274. data/lib/locales/en/buffy.yml +260 -0
  275. data/lib/locales/en/business.yml +5 -0
  276. data/lib/locales/en/camera.yml +611 -0
  277. data/lib/locales/en/cannabis.yml +13 -0
  278. data/lib/locales/en/cat.yml +7 -0
  279. data/lib/locales/en/chiquito.yml +64 -0
  280. data/lib/locales/en/chuck_norris.yml +82 -0
  281. data/lib/locales/en/clash_of_clan.yml +101 -0
  282. data/lib/locales/en/code.yml +4 -0
  283. data/lib/locales/en/coffee.yml +31 -0
  284. data/lib/locales/en/coin.yml +6 -0
  285. data/lib/locales/en/color.yml +4 -0
  286. data/lib/locales/en/commerce.yml +28 -0
  287. data/lib/locales/en/community.yml +33 -0
  288. data/lib/locales/en/company.yml +22 -0
  289. data/lib/locales/en/compass.yml +34 -0
  290. data/lib/locales/en/computer.yml +55 -0
  291. data/lib/locales/en/conan.yml +171 -0
  292. data/lib/locales/en/construction.yml +425 -0
  293. data/lib/locales/en/control.yml +247 -0
  294. data/lib/locales/en/cosmere.yml +57 -0
  295. data/lib/locales/en/cowboy_bebop.yml +163 -0
  296. data/lib/locales/en/crypto_coin.yml +25 -0
  297. data/lib/locales/en/culture_series.yml +307 -0
  298. data/lib/locales/en/currency.yml +6 -0
  299. data/lib/locales/en/dc_comics.yml +52 -0
  300. data/lib/locales/en/demographic.yml +221 -0
  301. data/lib/locales/en/departed.yml +50 -0
  302. data/lib/locales/en/dessert.yml +6 -0
  303. data/lib/locales/en/device.yml +115 -0
  304. data/lib/locales/en/dnd.yml +451 -0
  305. data/lib/locales/en/dog.yml +11 -0
  306. data/lib/locales/en/doraemon.yml +286 -0
  307. data/lib/locales/en/dota.yml +693 -0
  308. data/lib/locales/en/dr_who.yml +96 -0
  309. data/lib/locales/en/dragon_ball.yml +246 -0
  310. data/lib/locales/en/driving_license.yml +181 -0
  311. data/lib/locales/en/drone.yml +95 -0
  312. data/lib/locales/en/dumb_and_dumber.yml +59 -0
  313. data/lib/locales/en/dune.yml +298 -0
  314. data/lib/locales/en/educator.yml +80 -0
  315. data/lib/locales/en/elder_scrolls.yml +585 -0
  316. data/lib/locales/en/electrical_components.yml +6 -0
  317. data/lib/locales/en/emotion.yml +480 -0
  318. data/lib/locales/en/esport.yml +8 -0
  319. data/lib/locales/en/fallout.yml +315 -0
  320. data/lib/locales/en/family_guy.yml +7 -0
  321. data/lib/locales/en/file.yml +13 -0
  322. data/lib/locales/en/final_space.yml +37 -0
  323. data/lib/locales/en/finance.yml +189 -0
  324. data/lib/locales/en/fma_brotherhood.yml +78 -0
  325. data/lib/locales/en/food.yml +1057 -0
  326. data/lib/locales/en/football.yml +8 -0
  327. data/lib/locales/en/fresh_prince_of_bel_air.yml +73 -0
  328. data/lib/locales/en/friends.yml +6 -0
  329. data/lib/locales/en/funny_name.yml +4 -0
  330. data/lib/locales/en/futurama.yml +344 -0
  331. data/lib/locales/en/game.yml +294 -0
  332. data/lib/locales/en/game_of_thrones.yml +8 -0
  333. data/lib/locales/en/gender.yml +6 -0
  334. data/lib/locales/en/ghostbusters.yml +91 -0
  335. data/lib/locales/en/grateful_dead.yml +48 -0
  336. data/lib/locales/en/greek_philosophers.yml +26 -0
  337. data/lib/locales/en/hacker.yml +8 -0
  338. data/lib/locales/en/hackers.yml +53 -0
  339. data/lib/locales/en/half_life.yml +88 -0
  340. data/lib/locales/en/harry_potter.yml +9 -0
  341. data/lib/locales/en/heroes.yml +411 -0
  342. data/lib/locales/en/heroes_of_the_storm.yml +134 -0
  343. data/lib/locales/en/hey_arnold.yml +24 -0
  344. data/lib/locales/en/hipster.yml +4 -0
  345. data/lib/locales/en/hitchhikers_guide_to_the_galaxy.yml +45 -0
  346. data/lib/locales/en/hobby.yml +171 -0
  347. data/lib/locales/en/horse.yml +6 -0
  348. data/lib/locales/en/house.yml +5 -0
  349. data/lib/locales/en/how_i_met_your_mother.yml +28 -0
  350. data/lib/locales/en/how_to_train_your_dragon.yml +174 -0
  351. data/lib/locales/en/id_number.yml +5 -0
  352. data/lib/locales/en/industry_segments.yml +7 -0
  353. data/lib/locales/en/internet.yml +155 -0
  354. data/lib/locales/en/invoice.yml +6 -0
  355. data/lib/locales/en/jack_handey.yml +54 -0
  356. data/lib/locales/en/job.yml +15 -0
  357. data/lib/locales/en/kamen_rider.yml +452 -0
  358. data/lib/locales/en/kpop.yml +83 -0
  359. data/lib/locales/en/league_of_legends.yml +289 -0
  360. data/lib/locales/en/lebowski.yml +43 -0
  361. data/lib/locales/en/lorem.yml +11 -0
  362. data/lib/locales/en/lovecraft.yml +79 -0
  363. data/lib/locales/en/markdown.yml +5 -0
  364. data/lib/locales/en/marketing.yml +4 -0
  365. data/lib/locales/en/measurement.yml +11 -0
  366. data/lib/locales/en/michael_scott.yml +45 -0
  367. data/lib/locales/en/military.yml +182 -0
  368. data/lib/locales/en/minecraft.yml +663 -0
  369. data/lib/locales/en/mountain.yml +171 -0
  370. data/lib/locales/en/mountaineering.yml +14 -0
  371. data/lib/locales/en/movie.yml +197 -0
  372. data/lib/locales/en/music.yml +464 -0
  373. data/lib/locales/en/myst.yml +104 -0
  374. data/lib/locales/en/name.yml +26 -0
  375. data/lib/locales/en/naruto.yml +230 -0
  376. data/lib/locales/en/nation.yml +11 -0
  377. data/lib/locales/en/nato_phonetic_alphabet.yml +4 -0
  378. data/lib/locales/en/new_girl.yml +40 -0
  379. data/lib/locales/en/one_piece.yml +9 -0
  380. data/lib/locales/en/opera.yml +340 -0
  381. data/lib/locales/en/overwatch.yml +2652 -0
  382. data/lib/locales/en/parks_and_rec.yml +7 -0
  383. data/lib/locales/en/pearl_jam.yml +213 -0
  384. data/lib/locales/en/phish.yml +395 -0
  385. data/lib/locales/en/phone_number.yml +7 -0
  386. data/lib/locales/en/pokemon.yml +421 -0
  387. data/lib/locales/en/prince.yml +227 -0
  388. data/lib/locales/en/princess_bride.yml +5 -0
  389. data/lib/locales/en/programming_language.yml +6 -0
  390. data/lib/locales/en/quote.yml +695 -0
  391. data/lib/locales/en/rajnikanth.yml +77 -0
  392. data/lib/locales/en/relationship.yml +10 -0
  393. data/lib/locales/en/restaurant.yml +129 -0
  394. data/lib/locales/en/rick_and_morty.yml +6 -0
  395. data/lib/locales/en/rock_band.yml +5 -0
  396. data/lib/locales/en/room.yml +68 -0
  397. data/lib/locales/en/rupaul.yml +125 -0
  398. data/lib/locales/en/rush.yml +32 -0
  399. data/lib/locales/en/science.yml +484 -0
  400. data/lib/locales/en/seinfeld.yml +6 -0
  401. data/lib/locales/en/shakespeare.yml +53 -0
  402. data/lib/locales/en/show.yml +597 -0
  403. data/lib/locales/en/silicon_valley.yml +53 -0
  404. data/lib/locales/en/simpsons.yml +694 -0
  405. data/lib/locales/en/slack_emoji.yml +20 -0
  406. data/lib/locales/en/sonic_the_hedgehog.yml +410 -0
  407. data/lib/locales/en/source.yml +51 -0
  408. data/lib/locales/en/south_park.yml +5 -0
  409. data/lib/locales/en/space.yml +17 -0
  410. data/lib/locales/en/spongebob.yml +489 -0
  411. data/lib/locales/en/sport.yml +130 -0
  412. data/lib/locales/en/star_trek.yml +7 -0
  413. data/lib/locales/en/star_wars.yml +606 -0
  414. data/lib/locales/en/stargate.yml +21 -0
  415. data/lib/locales/en/stranger_thing.yml +36 -0
  416. data/lib/locales/en/street_fighter.yml +1524 -0
  417. data/lib/locales/en/stripe.yml +42 -0
  418. data/lib/locales/en/studio_ghibli.yml +107 -0
  419. data/lib/locales/en/subscription.yml +8 -0
  420. data/lib/locales/en/suits.yml +45 -0
  421. data/lib/locales/en/super_mario.yml +58 -0
  422. data/lib/locales/en/super_smash_bros.yml +223 -0
  423. data/lib/locales/en/superhero.yml +12 -0
  424. data/lib/locales/en/supernatural.yml +141 -0
  425. data/lib/locales/en/sword_art_online.yml +334 -0
  426. data/lib/locales/en/tarkov.yml +593 -0
  427. data/lib/locales/en/tea.yml +172 -0
  428. data/lib/locales/en/team.yml +8 -0
  429. data/lib/locales/en/the_expanse.yml +7 -0
  430. data/lib/locales/en/the_it_crowd.yml +155 -0
  431. data/lib/locales/en/the_kingkiller_chronicle.yml +56 -0
  432. data/lib/locales/en/the_office.yml +86 -0
  433. data/lib/locales/en/the_thick_of_it.yml +6 -0
  434. data/lib/locales/en/tolkien.yml +2453 -0
  435. data/lib/locales/en/touhou.yml +839 -0
  436. data/lib/locales/en/tron.yml +227 -0
  437. data/lib/locales/en/twin_peaks.yml +6 -0
  438. data/lib/locales/en/umphreys_mcgee.yml +4 -0
  439. data/lib/locales/en/university.yml +10 -0
  440. data/lib/locales/en/v_for_vendetta.yml +163 -0
  441. data/lib/locales/en/vehicle.yml +2814 -0
  442. data/lib/locales/en/venture_bros.yml +7 -0
  443. data/lib/locales/en/verbs.yml +8 -0
  444. data/lib/locales/en/volleyball.yml +501 -0
  445. data/lib/locales/en/warhammer_fantasy.yml +582 -0
  446. data/lib/locales/en/witcher.yml +430 -0
  447. data/lib/locales/en/world_cup.yml +271 -0
  448. data/lib/locales/en/world_of_warcraft.yml +126 -0
  449. data/lib/locales/en/yoda.yml +4 -0
  450. data/lib/locales/en/zelda.yml +966 -0
  451. data/lib/locales/en-AU.yml +67 -0
  452. data/lib/locales/{en-bork.yml → en-BORK.yml} +1 -1
  453. data/lib/locales/en-CA.yml +39 -0
  454. data/lib/locales/{en-gb.yml → en-GB.yml} +3 -3
  455. data/lib/locales/{en-ind.yml → en-IND.yml} +10 -4
  456. data/lib/locales/en-MS.yml +48 -0
  457. data/lib/locales/en-NEP.yml +52 -0
  458. data/lib/locales/en-NG.yml +77 -0
  459. data/lib/locales/en-NZ.yml +165 -0
  460. data/lib/locales/en-PAK.yml +19 -0
  461. data/lib/locales/en-SG.yml +36 -0
  462. data/lib/locales/en-TH.yml +360 -0
  463. data/lib/locales/en-UG.yml +128 -0
  464. data/lib/locales/en-US.yml +128 -0
  465. data/lib/locales/en-ZA.yml +147 -0
  466. data/lib/locales/en-au-ocker.yml +34 -0
  467. data/lib/locales/en.yml +6 -67
  468. data/lib/locales/es-AR.yml +4600 -0
  469. data/lib/locales/es-MX.yml +104 -0
  470. data/lib/locales/es.yml +149 -0
  471. data/lib/locales/fa.yml +12 -0
  472. data/lib/locales/fi-FI.yml +36 -0
  473. data/lib/locales/fr/address.yml +20 -0
  474. data/lib/locales/fr/adjective.yml +266 -0
  475. data/lib/locales/fr/ancient.yml +141 -0
  476. data/lib/locales/fr/animal.yml +5 -0
  477. data/lib/locales/fr/appliance.yml +4 -0
  478. data/lib/locales/fr/book.yml +7 -0
  479. data/lib/locales/fr/color.yml +4 -0
  480. data/lib/locales/fr/company.yml +17 -0
  481. data/lib/locales/fr/compass.yml +23 -0
  482. data/lib/locales/fr/demographic.yml +4 -0
  483. data/lib/locales/fr/gender.yml +6 -0
  484. data/lib/locales/fr/internet.yml +5 -0
  485. data/lib/locales/fr/lorem.yml +5 -0
  486. data/lib/locales/fr/measurement.yml +7 -0
  487. data/lib/locales/fr/name.yml +21 -0
  488. data/lib/locales/fr/phone_number.yml +7 -0
  489. data/lib/locales/fr/pokemon.yml +7 -0
  490. data/lib/locales/fr-CA.yml +106 -0
  491. data/lib/locales/fr-CH.yml +77 -0
  492. data/lib/locales/fr.yml +1 -51
  493. data/lib/locales/he.yml +27 -0
  494. data/lib/locales/hy.yml +411 -0
  495. data/lib/locales/id.yml +26 -0
  496. data/lib/locales/it.yml +71 -0
  497. data/lib/locales/ja/README.md +13 -0
  498. data/lib/locales/ja/address.yml +120539 -0
  499. data/lib/locales/ja/adjective.yml +148 -0
  500. data/lib/locales/ja/ancient.yml +4 -0
  501. data/lib/locales/ja/animal.yml +5 -0
  502. data/lib/locales/ja/bank.yml +4 -0
  503. data/lib/locales/ja/book.yml +7 -0
  504. data/lib/locales/ja/cat.yml +5 -0
  505. data/lib/locales/ja/coffee.yml +4 -0
  506. data/lib/locales/ja/color.yml +4 -0
  507. data/lib/locales/ja/commerce.yml +11 -0
  508. data/lib/locales/ja/company.yml +8 -0
  509. data/lib/locales/ja/dog.yml +6 -0
  510. data/lib/locales/ja/emotion.yml +51 -0
  511. data/lib/locales/ja/food.yml +4 -0
  512. data/lib/locales/ja/gender.yml +4 -0
  513. data/lib/locales/ja/lorem.yml +9 -0
  514. data/lib/locales/ja/name.yml +13 -0
  515. data/lib/locales/ja/naruto.yml +230 -0
  516. data/lib/locales/ja/overwatch.yml +5 -0
  517. data/lib/locales/ja/phone_number.yml +7 -0
  518. data/lib/locales/ja/pokemon.yml +7 -0
  519. data/lib/locales/ja/relationship.yml +10 -0
  520. data/lib/locales/ja/restaurant.yml +11 -0
  521. data/lib/locales/ja/space.yml +5 -0
  522. data/lib/locales/ja/studio_ghibli.yml +112 -0
  523. data/lib/locales/ja/subscription.yml +8 -0
  524. data/lib/locales/ja/super_mario.yml +9 -0
  525. data/lib/locales/ja/super_smash_bros.yml +8 -0
  526. data/lib/locales/ja/university.yml +9 -0
  527. data/lib/locales/ja/zelda.yml +5 -0
  528. data/lib/locales/ko.yml +132 -0
  529. data/lib/locales/lt.yml +34 -0
  530. data/lib/locales/lv.yml +55 -0
  531. data/lib/locales/mi-NZ.yml +281 -0
  532. data/lib/locales/{no-nb.yml → nb-NO.yml} +20 -8
  533. data/lib/locales/nl.yml +45 -30
  534. data/lib/locales/no.yml +7 -0
  535. data/lib/locales/pl.yml +20 -10
  536. data/lib/locales/pt-BR.yml +725 -0
  537. data/lib/locales/{pt-br.yml → pt.yml} +25 -15
  538. data/lib/locales/ru.yml +117 -0
  539. data/lib/locales/sk.yml +80 -0
  540. data/lib/locales/sv.yml +81 -0
  541. data/lib/locales/th.yml +380 -0
  542. data/lib/locales/tr.yml +40 -0
  543. data/lib/locales/uk.yml +88 -0
  544. data/lib/locales/vi.yml +8 -3
  545. data/lib/locales/zh-CN.yml +56 -0
  546. data/lib/locales/zh-TW.yml +29 -0
  547. metadata +731 -97
  548. data/History.txt +0 -103
  549. data/lib/extensions/array.rb +0 -7
  550. data/lib/extensions/symbol.rb +0 -9
  551. data/lib/faker/address.rb +0 -49
  552. data/lib/faker/company.rb +0 -26
  553. data/lib/faker/internet.rb +0 -71
  554. data/lib/faker/lorem.rb +0 -59
  555. data/lib/faker/name.rb +0 -22
  556. data/lib/faker/phone_number.rb +0 -17
  557. data/lib/locales/de-ch.yml +0 -19
  558. data/lib/locales/en-au.yml +0 -22
  559. data/lib/locales/en-ca.yml +0 -14
  560. data/lib/locales/en-us.yml +0 -6
  561. data/test/test_faker.rb +0 -29
  562. data/test/test_faker_city.rb +0 -45
  563. data/test/test_faker_internet.rb +0 -56
  564. data/test/test_faker_lorem.rb +0 -69
  565. data/test/test_faker_name.rb +0 -20
  566. data/test/test_faker_street.rb +0 -44
  567. data/test/test_flexible.rb +0 -56
  568. data/test/test_helper.rb +0 -5
  569. data/test/test_locale.rb +0 -41
@@ -0,0 +1,123 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Invoice < Base
5
+ flexible :invoice
6
+
7
+ class << self
8
+ ##
9
+ # Produces a random amount between values with 2 decimals
10
+ #
11
+ # @param from [Integer] Specifies lower limit.
12
+ # @param to [Integer] Specifies upper limit.
13
+ # @return [Integer]
14
+ #
15
+ # @example
16
+ # Faker::Finance.amount_between #=> 0
17
+ # Faker::Finance.amount_between(0, 10) #=> 4.33
18
+ #
19
+ # @faker.version 1.9.0
20
+ def amount_between(from: 0, to: 0)
21
+ Faker::Base.rand_in_range(from, to).round(2)
22
+ end
23
+
24
+ ##
25
+ # Produces a random valid reference accoring to the International bank slip reference https://en.wikipedia.org/wiki/Creditor_Reference
26
+ #
27
+ # @param ref [String] Specifies reference base.
28
+ # @return [String]
29
+ #
30
+ # @example
31
+ # Faker::Invoice.creditor_reference #=> "RF34118592570724925498"
32
+ #
33
+ # @faker.version 1.9.0
34
+ def creditor_reference(ref: '')
35
+ ref = reference if ref.empty?
36
+
37
+ "RF#{iban_checksum('RF', ref)}#{ref}"
38
+ end
39
+
40
+ ##
41
+ # Produces a random valid reference.
42
+ #
43
+ # @param ref [String] Specifies reference base.
44
+ # @return [String]
45
+ #
46
+ # @example
47
+ # Faker::Invoice.reference #=> "45656646957845"
48
+ #
49
+ # @faker.version 1.9.0
50
+ def reference(ref: '')
51
+ pattern = fetch('invoice.reference.pattern')
52
+
53
+ ref = Base.regexify(/#{pattern}/) if ref.empty?
54
+
55
+ # If reference contains reserved '#' characters we need to calculate check_digits as well
56
+ check_digit_match = ref.match(/#+/)
57
+ if check_digit_match
58
+ # Get the method for selected language
59
+ check_digit_method = fetch('invoice.reference.check_digit_method')
60
+
61
+ # Calculate the check digit with matching method name
62
+ # Trim all '#' from the reference before calculating that
63
+ check_digit = send(check_digit_method, ref.tr('#', ''))
64
+
65
+ # Make sure that our check digit is as long as all of the '###' we found
66
+ check_digit = check_digit.to_s.rjust(check_digit_match[0].length, '0')
67
+
68
+ # Replace all of the
69
+ ref = ref.sub(check_digit_match[0], check_digit)
70
+ end
71
+
72
+ ref
73
+ end
74
+
75
+ private
76
+
77
+ # Calculates the mandatory checksum in 3rd and 4th characters in IBAN format
78
+ # source: https://en.wikipedia.org/wiki/International_Bank_Account_Number#Validating_the_IBAN
79
+ def iban_checksum(country_code, account)
80
+ # Converts letters to numbers according the iban rules, A=10..Z=35
81
+ account_to_number = "#{account}#{country_code}00".upcase.chars.map do |d|
82
+ d =~ /[A-Z]/ ? (d.ord - 55).to_s : d
83
+ end.join.to_i
84
+
85
+ # This is answer to (iban_to_num + checksum) % 97 == 1
86
+ checksum = (1 - account_to_number) % 97
87
+
88
+ # Use leftpad to make the size always to 2
89
+ checksum.to_s.rjust(2, '0')
90
+ end
91
+
92
+ # 731 Method
93
+ # Source: https://wiki.xmldation.com/support/fk/finnish_reference_number
94
+ def method_731(base)
95
+ weighted_sum = calculate_weighted_sum(base, [7, 3, 1])
96
+ mod10_remainder(weighted_sum)
97
+ end
98
+
99
+ # Norsk Modulus 10 - KIDMOD10
100
+ def kidmod10(base)
101
+ weighted_sum = calculate_weighted_sum(base, [1, 2])
102
+ mod10_remainder(weighted_sum)
103
+ end
104
+
105
+ # Calculates weighted sum
106
+ #
107
+ # For example with 12345678, [1,2]
108
+ # Ref.num. 1 2 3 4 5 6 7 8
109
+ # Multipl. 1 2 1 2 1 2 1 2
110
+ # Total 1+ 4+ 3+ 8+ 5+1+2+ 7+1+6 = 38
111
+ def calculate_weighted_sum(base, weight_factors)
112
+ base.to_s.reverse.each_char.with_index.map do |digit, index|
113
+ digit.to_i * weight_factors.at(index % weight_factors.length)
114
+ end.reduce(:+) # reduce(:+) = sum() but with better ruby version support
115
+ end
116
+
117
+ # MOD-10 - remainder
118
+ def mod10_remainder(number)
119
+ -number % 10
120
+ end
121
+ end
122
+ end
123
+ end
@@ -0,0 +1,61 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Job < Base
5
+ flexible :job
6
+
7
+ class << self
8
+ ##
9
+ # Produces a random job title.
10
+ #
11
+ # @return [String]
12
+ #
13
+ # @example
14
+ # Faker::Job.title #=> "Construction Manager"
15
+ #
16
+ # @faker.version 1.7.0
17
+ def title
18
+ parse('job.title')
19
+ end
20
+
21
+ ##
22
+ # Produces a random job position.
23
+ #
24
+ # @return [String]
25
+ #
26
+ # @example
27
+ # Faker::Job.position #=> "Strategist"
28
+ #
29
+ # @faker.version 1.8.7
30
+ def position
31
+ fetch('job.position')
32
+ end
33
+
34
+ ##
35
+ # Produces a random job field.
36
+ #
37
+ # @return [String]
38
+ #
39
+ # @example
40
+ # Faker::Job.field #=> "Banking"
41
+ #
42
+ # @faker.version 1.7.0
43
+ def field
44
+ fetch('job.field')
45
+ end
46
+
47
+ ##
48
+ # Produces a random job skill.
49
+ #
50
+ # @return [String]
51
+ #
52
+ # @example
53
+ # Faker::Job.key_skill #=> "Leadership"
54
+ #
55
+ # @faker.version 1.7.0
56
+ def key_skill
57
+ fetch('job.key_skills')
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,125 @@
1
+ module Faker
2
+ class Json < Base
3
+ require 'json'
4
+
5
+ class << self
6
+ ##
7
+ # Produces a random simple JSON formatted string.
8
+ #
9
+ # @param width [Integer] Specifies the number of key-value pairs.
10
+ # @param options [Hash] Specifies a Faker gem class to use for keys and for values, respectably. options_hash = {key: Class.method, value: Class.method}
11
+ # @return [Hash{String => String}]
12
+ #
13
+ # @example
14
+ # Faker::Json.shallow_json(width: 3, options: { key: 'RockBand.name', value: 'Seinfeld.quote' }) # =>
15
+ # {"Parliament Funkadelic":"They're real, and they're spectacular.",
16
+ # "Fleetwood Mac":"I'm not a lesbian. I hate men, but I'm not a lesbian.",
17
+ # "The Roots":"It became very clear to me sitting out there today that every decision
18
+ # I've made in my entire life has been wrong. My life is the complete opposite of everything
19
+ # I want it to be. Every instinct I have, in every aspect of life, be it something to wear,
20
+ # something to eat - it's all been wrong."}
21
+ #
22
+ # @faker.version 1.9.2
23
+ def shallow_json(width: 3, options: { key: 'Name.first_name', value: 'Name.first_name' })
24
+ options[:key] = "Faker::#{options[:key]}"
25
+ options[:value] = "Faker::#{options[:value]}"
26
+
27
+ hash = build_shallow_hash(width, options)
28
+ JSON.generate(hash)
29
+ end
30
+
31
+ ##
32
+ # Produces a random nested JSON formatted string that can take JSON as an additional argument.
33
+ #
34
+ # @param json [Hash{String => String}] Specifies a Json.shallow_json and uses its keys as keys of the nested JSON.
35
+ # @param width [Integer] Specifies the number of nested key-value pairs.
36
+ # @param options [Hash] Specifies a Faker gem class to use for nested keys and for values, respectably. options_hash = {key: Class.method, value: Class.method}
37
+ # @return [Hash{String => String}]
38
+ #
39
+ # @example
40
+ # json = Faker::Json.shallow_json(width: 3, options: { key: 'Name.first_name', value: 'Name.last_name' })
41
+ # puts json # =>
42
+ # {"Alisha":"Olson","Everardo":"DuBuque","Bridgette":"Turner"}
43
+ #
44
+ # json2 = Faker::Json.add_depth_to_json(json: json, width: 2, options: { key: 'Name.first_name', value: 'Name.last_name' })
45
+ # puts json2 # =>
46
+ # {"Alisha":{"Daisy":"Trantow","Oda":"Haag"},
47
+ # "Everardo":{"Javier":"Marvin","Eliseo":"Schuppe"},
48
+ # "Bridgette":{"Jorge":"Kertzmann","Lelah":"MacGyver"}}
49
+ #
50
+ # json3 = Faker::Json.add_depth_to_json(json: json2, width: 4, options: { key: 'Name.first_name', value: 'Name.last_name' })
51
+ # puts json3 # =>
52
+ # {"Alisha":
53
+ # {"Daisy":
54
+ # {"Bulah":"Wunsch","Cristian":"Champlin","Lester":"Bartoletti","Greg":"Jacobson"},
55
+ # "Oda":
56
+ # {"Salvatore":"Kuhlman","Aubree":"Okuneva","Larry":"Schmitt","Velva":"Gibson"}},
57
+ # "Everardo":
58
+ # {"Javier":
59
+ # {"Eduardo":"Orn","Laila":"Kub","Thad":"Legros","Dion":"Wilderman"},
60
+ # "Eliseo":
61
+ # {"Olin":"Hilpert","Marisa":"Greenfelder","Karlee":"Schmitt","Judd":"Larkin"}},
62
+ # "Bridgette":
63
+ # {"Jorge":
64
+ # {"Eloy":"Pfeffer","Kody":"Hansen","Paxton":"Lubowitz","Abe":"Lesch"},
65
+ # "Lelah":
66
+ # {"Rick":"Wiza","Bonita":"Bayer","Gardner":"Auer","Felicity":"Abbott"}}}
67
+ #
68
+ # @faker.version 1.9.2
69
+ def add_depth_to_json(json: shallow_json, width: 3, options: { key: 'Name.first_name', value: 'Name.first_name' })
70
+ options[:key] = "Faker::#{options[:key]}"
71
+ options[:value] = "Faker::#{options[:value]}"
72
+
73
+ hash = JSON.parse(json)
74
+ hash.each do |key, _|
75
+ add_hash_to_bottom(hash, [key], width, options)
76
+ end
77
+ JSON.generate(hash)
78
+ end
79
+
80
+ private
81
+
82
+ def build_shallow_hash(width, options)
83
+ key = options[:key]
84
+ value = options[:value]
85
+
86
+ hash = {}
87
+ width.times do
88
+ hash[eval(key)] = eval(value)
89
+ end
90
+ hash
91
+ end
92
+
93
+ def add_hash_to_bottom(hash, key_array, width, options)
94
+ key_string = build_keys_from_array(key_array)
95
+ if eval("hash#{key_string}").is_a?(::Hash)
96
+ eval("hash#{key_string}").each do |key, _|
97
+ key_array << key
98
+ add_hash_to_bottom(hash, key_array, width, options)
99
+ end
100
+ else
101
+ add_hash(key_array, hash, width, options)
102
+ key_array.pop
103
+ end
104
+ end
105
+
106
+ def add_hash(key_array, hash, width, options)
107
+ string_to_eval = 'hash'
108
+ key_array.length.times do |index|
109
+ string_to_eval << "['#{key_array[index]}']"
110
+ end
111
+ string_to_eval << " = #{build_shallow_hash(width, options)}"
112
+ eval(string_to_eval)
113
+ hash
114
+ end
115
+
116
+ def build_keys_from_array(key_array)
117
+ key_string = ''
118
+ key_array.each do |value|
119
+ key_string << "['#{value}']"
120
+ end
121
+ key_string
122
+ end
123
+ end
124
+ end
125
+ end
@@ -0,0 +1,85 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Kpop < Base
5
+ class << self
6
+ ##
7
+ # Produces the name of a 1990's 'OG' K-Pop group.
8
+ #
9
+ # @return [String]
10
+ #
11
+ # @example
12
+ # Faker::Kpop.i_groups #=> "Seo Taiji and Boys"
13
+ #
14
+ # @faker.version 1.8.5
15
+ def i_groups
16
+ fetch('kpop.i_groups')
17
+ end
18
+
19
+ ##
20
+ # Produces the name of a 2000's K-Pop group.
21
+ #
22
+ # @return [String]
23
+ #
24
+ # @example
25
+ # Faker::Kpop.ii_groups #=> "Girls' Generation"
26
+ #
27
+ # @faker.version 1.8.5
28
+ def ii_groups
29
+ fetch('kpop.ii_groups')
30
+ end
31
+
32
+ ##
33
+ # Produces the name of a 2010's K-Pop group.
34
+ #
35
+ # @return [String]
36
+ #
37
+ # @example
38
+ # Faker::Kpop.iii_groups #=> "Trouble Maker"
39
+ #
40
+ # @faker.version 1.8.5
41
+ def iii_groups
42
+ fetch('kpop.iii_groups')
43
+ end
44
+
45
+ ##
46
+ # Produces the name of a K-Pop girl group.
47
+ #
48
+ # @return [String]
49
+ #
50
+ # @example
51
+ # Faker::Kpop.girl_groups #=> "2NE1"
52
+ #
53
+ # @faker.version 1.8.5
54
+ def girl_groups
55
+ fetch('kpop.girl_groups')
56
+ end
57
+
58
+ ##
59
+ # Produces the name of a K-Pop boy band.
60
+ #
61
+ # @return [String]
62
+ #
63
+ # @example
64
+ # Faker::Kpop.boy_bands #=> "Exo"
65
+ #
66
+ # @faker.version 1.8.5
67
+ def boy_bands
68
+ fetch('kpop.boy_bands')
69
+ end
70
+
71
+ ##
72
+ # Produces the name of a solo K-Pop artist.
73
+ #
74
+ # @return [String]
75
+ #
76
+ # @example
77
+ # Faker::Kpop.solo #=> "T.O.P"
78
+ #
79
+ # @faker.version 1.8.5
80
+ def solo
81
+ fetch('kpop.solo')
82
+ end
83
+ end
84
+ end
85
+ end
@@ -0,0 +1,250 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ # Based on Perl's Text::Lorem
5
+ class Lorem < Base
6
+ class << self
7
+ ##
8
+ # Returs the random word
9
+ # @return [String]
10
+ #
11
+ # @example
12
+ # Faker::Lorem.word #=> "soluto"
13
+ #
14
+ # @faker.version 2.1.3
15
+ def word
16
+ sample(translate('faker.lorem.words'))
17
+ end
18
+
19
+ ##
20
+ # Generates random 3 words
21
+ #
22
+ # @param number [Integer] Number of words to be generated
23
+ # @param supplemental [Boolean] Whether to attach supplemental words at the end, default is false
24
+ #
25
+ # @return [Array] Array for words
26
+ #
27
+ # @example
28
+ # Faker::Lorem.words #=> ["hic", "quia", "nihil"]
29
+ # Faker::Lorem.words(number: 4) #=> ["est", "temporibus", "et", "quaerat"]
30
+ # Faker::Lorem.words(number: 4, supplemental: true) #=> ["nisi", "sit", "allatus", "consequatur"]
31
+ # Faker::Lorem.words(number: 4, supplemental: true, exclude_words: 'sit') #=> ["nisi", "allatus", "consequatur", "aut"]
32
+ #
33
+ # @faker.version 2.1.3
34
+ def words(number: 3, supplemental: false, exclude_words: nil)
35
+ resolved_num = resolve(number)
36
+ word_list = (
37
+ translate('faker.lorem.words') +
38
+ (supplemental ? translate('faker.lorem.supplemental') : [])
39
+ )
40
+ if exclude_words
41
+ exclude_words = exclude_words.split(', ') if exclude_words.instance_of?(::String)
42
+ word_list -= exclude_words
43
+ end
44
+ word_list *= ((resolved_num / word_list.length) + 1)
45
+ shuffle(word_list)[0, resolved_num]
46
+ end
47
+
48
+ ##
49
+ # Generates single character
50
+ #
51
+ # @return [String]
52
+ #
53
+ # @example
54
+ # Faker::Lorem.character #=> "e"
55
+ #
56
+ # @faker.version 2.1.3
57
+ def character
58
+ sample(Types::CHARACTERS)
59
+ end
60
+
61
+ ##
62
+ # Produces a random string of alphanumeric characters
63
+ #
64
+ # @param number [Integer] The number of characters to generate
65
+ # @param min_alpha [Integer] The minimum number of alphabetic to add to the string
66
+ # @param min_numeric [Integer] The minimum number of numbers to add to the string
67
+ #
68
+ # @return [String]
69
+ #
70
+ # @example
71
+ # Faker::Lorem.characters #=> "uw1ep04lhs0c4d931n1jmrspprf5w..."
72
+ # Faker::Lorem.characters(number: 10) #=> "ang9cbhoa8"
73
+ # Faker::Lorem.characters(number: 10, min_alpha: 4) #=> "ang9cbhoa8"
74
+ # Faker::Lorem.characters(number: 10, min_alpha: 4, min_numeric: 1) #=> "ang9cbhoa8"
75
+ #
76
+ # @faker.version 2.1.3
77
+ def characters(number: 255, min_alpha: 0, min_numeric: 0)
78
+ Alphanumeric.alphanumeric(number: number, min_alpha: min_alpha, min_numeric: min_numeric)
79
+ end
80
+
81
+ ##
82
+ # Generates the emoji
83
+ #
84
+ # @return [String]
85
+ #
86
+ # @example
87
+ # Faker::Lorem.multibyte #=> "😀"
88
+ # Faker::Lorem.multibyte #=> "❤"
89
+ #
90
+ # @faker.version 2.1.3
91
+ def multibyte
92
+ sample(translate('faker.lorem.multibyte')).pack('C*').force_encoding('utf-8')
93
+ end
94
+
95
+ ##
96
+ # Generates sentence
97
+ #
98
+ # @param word_count [Integer] How many words should be there in a sentence, default to 4
99
+ # @param supplemental [Boolean] Add supplemental words, default to false
100
+ # @param random_words_to_add [Integer] Add any random words, default to 0
101
+ #
102
+ # @return [String]
103
+ #
104
+ # @example
105
+ # Faker::Lorem.sentence #=> "Magnam qui aut quidem."
106
+ # Faker::Lorem.sentence(word_count: 5) #=> "Voluptas rerum aut aliquam velit."
107
+ # Faker::Lorem.sentence(word_count: 5, supplemental: true) #=> "Aut viscus curtus votum iusto."
108
+ # Faker::Lorem.sentence(word_count: 5, supplemental: true, random_words_to_add:2) #=> "Crinis quo cruentus velit animi vomer."
109
+ #
110
+ # @faker.version 2.1.3
111
+ def sentence(word_count: 4, supplemental: false, random_words_to_add: 0, exclude_words: nil)
112
+ words(number: word_count + rand(random_words_to_add.to_i), supplemental: supplemental, exclude_words: exclude_words).join(locale_space).capitalize + locale_period
113
+ end
114
+
115
+ ##
116
+ # Generates three sentences
117
+ #
118
+ # @param number [Integer] How many sentences to be generated, default to 3
119
+ # @param supplemental [Boolean] Should add supplemental words, defaults to false
120
+ #
121
+ # @return [Array] Returns array for sentences.
122
+ #
123
+ # @example
124
+ # Faker::Lorem.sentences #=> ["Possimus non tenetur.", "Nulla non excepturi.", "Quisquam rerum facilis."]
125
+ # Faker::Lorem.sentences(number: 2) #=> ["Nulla est natus.", "Perferendis autem cum."]
126
+ # Faker::Lorem.sentences(number: 2, supplemental: true) #=> ["Cito cena ad.", "Solvo animus allatus."]
127
+ #
128
+ # @faker.version 2.1.3
129
+ def sentences(number: 3, supplemental: false, exclude_words: nil)
130
+ 1.upto(resolve(number)).collect { sentence(word_count: 3, supplemental: supplemental, exclude_words: exclude_words) }
131
+ end
132
+
133
+ ##
134
+ # Generates three sentence paragraph
135
+ #
136
+ # @param sentence_count [Integer] Number of sentences in the paragraph
137
+ # @param supplemental [Boolean]
138
+ # @param random_sentences_to_add [Integer]
139
+ #
140
+ # @return [String]
141
+ #
142
+ # @example
143
+ # Faker::Lorem.paragraph
144
+ # #=> "Impedit et est. Aliquid deleniti necessitatibus. Et aspernatur minima."
145
+ # Faker::Lorem.paragraph(sentence_count: 2)
146
+ # #=> "Rerum fugit vitae. Et atque autem."
147
+ # Faker::Lorem.paragraph(sentence_count: 2, supplemental: true)
148
+ # #=> "Terreo coerceo utor. Vester sunt cogito."
149
+ # Faker::Lorem.paragraph(sentence_count: 2, supplemental: true, random_sentences_to_add: 2)
150
+ # #=> "Texo tantillus tamisium. Tribuo amissio tamisium. Facere aut canis."
151
+ #
152
+ # @faker.version 2.1.3
153
+ def paragraph(sentence_count: 3, supplemental: false, random_sentences_to_add: 0, exclude_words: nil)
154
+ sentences(number: resolve(sentence_count) + rand(random_sentences_to_add.to_i), supplemental: supplemental, exclude_words: exclude_words).join(locale_space)
155
+ end
156
+
157
+ ##
158
+ # Generates three paragraphs
159
+ #
160
+ # @param number [Integer]
161
+ # @param supplemental [Boolean]
162
+ #
163
+ # @return [Array]
164
+ #
165
+ # @example
166
+ # Faker::Lorem.paragraphs
167
+ # Faker::Lorem.paragraphs(number:2)
168
+ # Faker::Lorem.paragraphs(number:2, supplemental: true)
169
+ #
170
+ # @faker.version 2.1.3
171
+ def paragraphs(number: 3, supplemental: false, exclude_words: nil)
172
+ 1.upto(resolve(number)).collect { paragraph(sentence_count: 3, supplemental: supplemental, exclude_words: exclude_words) }
173
+ end
174
+
175
+ ##
176
+ # Generates paragraph with 256 characters
177
+ #
178
+ # @param number [Integer]
179
+ # @param supplemental [Boolean]
180
+ #
181
+ # @return [String]
182
+ #
183
+ # @example
184
+ # Faker::Lorem.paragraph_by_chars
185
+ # Faker::Lorem.paragraph_by_chars(number: 20) #=> "Sit modi alias. Imp."
186
+ # Faker::Lorem.paragraph_by_chars(number: 20, supplemental: true) #=> "Certus aveho admove."
187
+ #
188
+ # @faker.version 2.1.3
189
+ def paragraph_by_chars(number: 256, supplemental: false)
190
+ paragraph = paragraph(sentence_count: 3, supplemental: supplemental)
191
+
192
+ paragraph += " #{paragraph(sentence_count: 3, supplemental: supplemental)}" while paragraph.length < number
193
+
194
+ "#{paragraph[0...number - 1]}."
195
+ end
196
+
197
+ ##
198
+ # Returns the question with 4 words
199
+ #
200
+ # @param word_count [Integer]
201
+ # @param supplemental [Boolean]
202
+ # @param random_words_to_add [Integer]
203
+ #
204
+ # @return [String]
205
+ #
206
+ # @example
207
+ # Faker::Lorem.question #=> "Natus deleniti sequi laudantium?"
208
+ # Faker::Lorem.question(word_count: 2) #=> "Quo ut?"
209
+ # Faker::Lorem.question(word_count: 2, supplemental: true) #=> "Terga consequatur?"
210
+ # Faker::Lorem.question(word_count: 2, supplemental: true, random_words_to_add: 2) #=> "Depulso uter ut?"
211
+ #
212
+ # @faker.version 2.1.3
213
+ def question(word_count: 4, supplemental: false, random_words_to_add: 0, exclude_words: nil)
214
+ words(number: word_count + rand(random_words_to_add), supplemental: supplemental, exclude_words: exclude_words).join(' ').capitalize + locale_question_mark
215
+ end
216
+
217
+ ##
218
+ # Generates array of three questions
219
+ #
220
+ # @param number [Integer]
221
+ # @param supplemental [Boolean]
222
+ #
223
+ # @return [Array]
224
+ #
225
+ # @example
226
+ # Faker::Lorem.questions #=> ["Amet culpa enim?", "Voluptatem deleniti numquam?", "Veniam non cum?"]
227
+ # Faker::Lorem.questions(number: 2) #=> ["Minus occaecati nobis?", "Veniam et alias?"]
228
+ # Faker::Lorem.questions(number: 2, supplemental: true) #=> ["Acceptus subito cetera?", "Aro sulum cubicularis?"]
229
+ #
230
+ # @faker.version 2.1.3
231
+ def questions(number: 3, supplemental: false, exclude_words: nil)
232
+ 1.upto(resolve(number)).collect { question(word_count: 3, supplemental: supplemental, exclude_words: exclude_words) }
233
+ end
234
+
235
+ private
236
+
237
+ def locale_period
238
+ translate('faker.lorem.punctuation.period') || '.'
239
+ end
240
+
241
+ def locale_space
242
+ translate('faker.lorem.punctuation.space') || ' '
243
+ end
244
+
245
+ def locale_question_mark
246
+ translate('faker.lorem.punctuation.question_mark') || '?'
247
+ end
248
+ end
249
+ end
250
+ end