faker 1.8.7 → 2.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (531) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +1423 -6
  3. data/History.md +4 -4
  4. data/License.txt +2 -2
  5. data/README.md +301 -126
  6. data/bin/faker +5 -0
  7. data/lib/faker.rb +150 -61
  8. data/lib/faker/blockchain/aeternity.rb +70 -0
  9. data/lib/faker/blockchain/bitcoin.rb +60 -0
  10. data/lib/faker/blockchain/ethereum.rb +26 -0
  11. data/lib/faker/blockchain/tezos.rb +135 -0
  12. data/lib/faker/books/book.rb +61 -0
  13. data/lib/faker/books/culture_series.rb +83 -0
  14. data/lib/faker/books/dune.rb +132 -0
  15. data/lib/faker/books/lovecraft.rb +280 -0
  16. data/lib/faker/creature/animal.rb +22 -0
  17. data/lib/faker/creature/cat.rb +50 -0
  18. data/lib/faker/creature/dog.rb +115 -0
  19. data/lib/faker/creature/horse.rb +37 -0
  20. data/lib/faker/default/address.rb +368 -0
  21. data/lib/faker/default/alphanumeric.rb +73 -0
  22. data/lib/faker/default/ancient.rb +59 -0
  23. data/lib/faker/default/app.rb +77 -0
  24. data/lib/faker/default/appliance.rb +33 -0
  25. data/lib/faker/default/artist.rb +20 -0
  26. data/lib/faker/default/avatar.rb +60 -0
  27. data/lib/faker/default/bank.rb +207 -0
  28. data/lib/faker/default/barcode.rb +165 -0
  29. data/lib/faker/default/beer.rb +113 -0
  30. data/lib/faker/default/blood.rb +48 -0
  31. data/lib/faker/default/boolean.rb +26 -0
  32. data/lib/faker/default/bossa_nova.rb +33 -0
  33. data/lib/faker/default/business.rb +50 -0
  34. data/lib/faker/default/camera.rb +46 -0
  35. data/lib/faker/default/cannabis.rb +135 -0
  36. data/lib/faker/default/chile_rut.rb +98 -0
  37. data/lib/faker/default/chuck_norris.rb +25 -0
  38. data/lib/faker/default/code.rb +282 -0
  39. data/lib/faker/default/coffee.rb +82 -0
  40. data/lib/faker/default/coin.rb +33 -0
  41. data/lib/faker/default/color.rb +79 -0
  42. data/lib/faker/default/commerce.rb +143 -0
  43. data/lib/faker/default/company.rb +581 -0
  44. data/lib/faker/default/compass.rb +202 -0
  45. data/lib/faker/default/computer.rb +63 -0
  46. data/lib/faker/default/construction.rb +83 -0
  47. data/lib/faker/default/cosmere.rb +138 -0
  48. data/lib/faker/default/crypto.rb +48 -0
  49. data/lib/faker/default/crypto_coin.rb +94 -0
  50. data/lib/faker/default/currency.rb +46 -0
  51. data/lib/faker/default/date.rb +186 -0
  52. data/lib/faker/default/dc_comics.rb +70 -0
  53. data/lib/faker/default/demographic.rb +98 -0
  54. data/lib/faker/default/dessert.rb +48 -0
  55. data/lib/faker/default/device.rb +85 -0
  56. data/lib/faker/default/driving_licence.rb +131 -0
  57. data/lib/faker/default/drone.rb +332 -0
  58. data/lib/faker/default/educator.rb +102 -0
  59. data/lib/faker/default/electrical_components.rb +48 -0
  60. data/lib/faker/default/esport.rb +72 -0
  61. data/lib/faker/default/faker_adjective.rb +35 -0
  62. data/lib/faker/default/file.rb +100 -0
  63. data/lib/faker/default/fillmurray.rb +45 -0
  64. data/lib/faker/default/finance.rb +89 -0
  65. data/lib/faker/default/food.rb +113 -0
  66. data/lib/faker/default/funny_name.rb +90 -0
  67. data/lib/faker/default/gender.rb +46 -0
  68. data/lib/faker/default/greek_philosophers.rb +33 -0
  69. data/lib/faker/default/hacker.rb +103 -0
  70. data/lib/faker/default/hipster.rb +194 -0
  71. data/lib/faker/default/house.rb +33 -0
  72. data/lib/faker/default/id_number.rb +279 -0
  73. data/lib/faker/default/industry_segments.rb +61 -0
  74. data/lib/faker/default/internet.rb +584 -0
  75. data/lib/faker/default/internet_http.rb +48 -0
  76. data/lib/faker/default/invoice.rb +136 -0
  77. data/lib/faker/default/job.rb +61 -0
  78. data/lib/faker/default/json.rb +143 -0
  79. data/lib/faker/default/kpop.rb +85 -0
  80. data/lib/faker/default/lorem.rb +306 -0
  81. data/lib/faker/default/lorem_flickr.rb +138 -0
  82. data/lib/faker/default/lorem_pixel.rb +70 -0
  83. data/lib/faker/default/markdown.rb +175 -0
  84. data/lib/faker/default/marketing.rb +22 -0
  85. data/lib/faker/default/measurement.rb +207 -0
  86. data/lib/faker/default/military.rb +98 -0
  87. data/lib/faker/default/mountain.rb +33 -0
  88. data/lib/faker/default/name.rb +156 -0
  89. data/lib/faker/default/nation.rb +76 -0
  90. data/lib/faker/default/nato_phonetic_alphabet.rb +20 -0
  91. data/lib/faker/default/nhs.rb +57 -0
  92. data/lib/faker/default/number.rb +289 -0
  93. data/lib/faker/default/omniauth.rb +461 -0
  94. data/lib/faker/default/phone_number.rb +137 -0
  95. data/lib/faker/default/placeholdit.rb +63 -0
  96. data/lib/faker/default/programming_language.rb +33 -0
  97. data/lib/faker/default/relationship.rb +91 -0
  98. data/lib/faker/default/restaurant.rb +63 -0
  99. data/lib/faker/default/science.rb +46 -0
  100. data/lib/faker/default/slack_emoji.rb +124 -0
  101. data/lib/faker/default/source.rb +76 -0
  102. data/lib/faker/default/south_africa.rb +141 -0
  103. data/lib/faker/default/space.rb +191 -0
  104. data/lib/faker/default/string.rb +66 -0
  105. data/lib/faker/default/stripe.rb +142 -0
  106. data/lib/faker/default/subscription.rb +70 -0
  107. data/lib/faker/default/superhero.rb +72 -0
  108. data/lib/faker/default/team.rb +74 -0
  109. data/lib/faker/default/time.rb +179 -0
  110. data/lib/faker/default/twitter.rb +223 -0
  111. data/lib/faker/default/types.rb +182 -0
  112. data/lib/faker/default/university.rb +75 -0
  113. data/lib/faker/default/vehicle.rb +342 -0
  114. data/lib/faker/default/verb.rb +72 -0
  115. data/lib/faker/default/world_cup.rb +86 -0
  116. data/lib/faker/fantasy/tolkien.rb +67 -0
  117. data/lib/faker/games/clash_of_clans.rb +48 -0
  118. data/lib/faker/games/control.rb +113 -0
  119. data/lib/faker/games/dnd.rb +136 -0
  120. data/lib/faker/games/dota.rb +80 -0
  121. data/lib/faker/games/elder_scrolls.rb +139 -0
  122. data/lib/faker/games/fallout.rb +62 -0
  123. data/lib/faker/games/game.rb +48 -0
  124. data/lib/faker/games/half_life.rb +48 -0
  125. data/lib/faker/games/heroes.rb +61 -0
  126. data/lib/faker/games/heroes_of_the_storm.rb +72 -0
  127. data/lib/faker/games/league_of_legends.rb +87 -0
  128. data/lib/faker/games/minecraft.rb +113 -0
  129. data/lib/faker/games/myst.rb +74 -0
  130. data/lib/faker/games/overwatch.rb +48 -0
  131. data/lib/faker/games/pokemon.rb +48 -0
  132. data/lib/faker/games/sonic_the_hedgehog.rb +48 -0
  133. data/lib/faker/games/street_fighter.rb +61 -0
  134. data/lib/faker/games/super_mario.rb +48 -0
  135. data/lib/faker/games/super_smash_bros.rb +35 -0
  136. data/lib/faker/games/touhou.rb +75 -0
  137. data/lib/faker/games/warhammer_fantasy.rb +74 -0
  138. data/lib/faker/games/witcher.rb +87 -0
  139. data/lib/faker/games/world_of_warcraft.rb +60 -0
  140. data/lib/faker/games/zelda.rb +62 -0
  141. data/lib/faker/japanese_media/conan.rb +48 -0
  142. data/lib/faker/japanese_media/doraemon.rb +48 -0
  143. data/lib/faker/japanese_media/dragon_ball.rb +48 -0
  144. data/lib/faker/japanese_media/naruto.rb +61 -0
  145. data/lib/faker/japanese_media/one_piece.rb +87 -0
  146. data/lib/faker/japanese_media/studio_ghibli.rb +48 -0
  147. data/lib/faker/japanese_media/sword_art_online.rb +61 -0
  148. data/lib/faker/movies/back_to_the_future.rb +49 -0
  149. data/lib/faker/movies/departed.rb +49 -0
  150. data/lib/faker/movies/ghostbusters.rb +49 -0
  151. data/lib/faker/movies/harry_potter.rb +87 -0
  152. data/lib/faker/movies/hitchhikers_guide_to_the_galaxy.rb +106 -0
  153. data/lib/faker/movies/hobbit.rb +62 -0
  154. data/lib/faker/movies/how_to_train_your_dragon.rb +48 -0
  155. data/lib/faker/movies/lebowski.rb +48 -0
  156. data/lib/faker/movies/lord_of_the_rings.rb +49 -0
  157. data/lib/faker/movies/movie.rb +33 -0
  158. data/lib/faker/movies/princess_bride.rb +36 -0
  159. data/lib/faker/movies/room.rb +63 -0
  160. data/lib/faker/movies/star_wars.rb +273 -0
  161. data/lib/faker/movies/v_for_vendetta.rb +50 -0
  162. data/lib/faker/music/grateful_dead.rb +37 -0
  163. data/lib/faker/music/hiphop.rb +48 -0
  164. data/lib/faker/music/music.rb +133 -0
  165. data/lib/faker/music/opera.rb +298 -0
  166. data/lib/faker/music/pearl_jam.rb +50 -0
  167. data/lib/faker/music/phish.rb +48 -0
  168. data/lib/faker/music/prince.rb +64 -0
  169. data/lib/faker/music/rock_band.rb +34 -0
  170. data/lib/faker/music/rush.rb +37 -0
  171. data/lib/faker/music/show.rb +49 -0
  172. data/lib/faker/music/umphreys_mcgee.rb +22 -0
  173. data/lib/faker/quotes/chiquito.rb +80 -0
  174. data/lib/faker/quotes/quote.rb +111 -0
  175. data/lib/faker/quotes/rajnikanth.rb +27 -0
  176. data/lib/faker/quotes/shakespeare.rb +111 -0
  177. data/lib/faker/sports/basketball.rb +61 -0
  178. data/lib/faker/sports/football.rb +74 -0
  179. data/lib/faker/sports/volleyball.rb +74 -0
  180. data/lib/faker/tv_shows/aqua_teen_hunger_force.rb +37 -0
  181. data/lib/faker/tv_shows/big_bang_theory.rb +37 -0
  182. data/lib/faker/tv_shows/bojack_horseman.rb +51 -0
  183. data/lib/faker/tv_shows/breaking_bad.rb +37 -0
  184. data/lib/faker/tv_shows/buffy.rb +89 -0
  185. data/lib/faker/tv_shows/community.rb +38 -0
  186. data/lib/faker/tv_shows/dr_who.rb +115 -0
  187. data/lib/faker/tv_shows/dumb_and_dumber.rb +51 -0
  188. data/lib/faker/tv_shows/family_guy.rb +51 -0
  189. data/lib/faker/tv_shows/final_space.rb +51 -0
  190. data/lib/faker/tv_shows/friends.rb +50 -0
  191. data/lib/faker/tv_shows/futurama.rb +65 -0
  192. data/lib/faker/tv_shows/game_of_thrones.rb +77 -0
  193. data/lib/faker/tv_shows/hey_arnold.rb +50 -0
  194. data/lib/faker/tv_shows/how_i_met_your_mother.rb +64 -0
  195. data/lib/faker/tv_shows/michael_scott.rb +26 -0
  196. data/lib/faker/tv_shows/new_girl.rb +38 -0
  197. data/lib/faker/tv_shows/parks_and_rec.rb +37 -0
  198. data/lib/faker/tv_shows/rick_and_morty.rb +51 -0
  199. data/lib/faker/tv_shows/ru_paul.rb +37 -0
  200. data/lib/faker/tv_shows/seinfeld.rb +51 -0
  201. data/lib/faker/tv_shows/silicon_valley.rb +118 -0
  202. data/lib/faker/tv_shows/simpsons.rb +65 -0
  203. data/lib/faker/tv_shows/south_park.rb +38 -0
  204. data/lib/faker/tv_shows/star_trek.rb +63 -0
  205. data/lib/faker/tv_shows/stargate.rb +51 -0
  206. data/lib/faker/tv_shows/stranger_things.rb +38 -0
  207. data/lib/faker/tv_shows/suits.rb +37 -0
  208. data/lib/faker/tv_shows/the_expanse.rb +63 -0
  209. data/lib/faker/tv_shows/the_fresh_prince_of_bel_air.rb +64 -0
  210. data/lib/faker/tv_shows/the_it_crowd.rb +64 -0
  211. data/lib/faker/tv_shows/the_thick_of_it.rb +51 -0
  212. data/lib/faker/tv_shows/twin_peaks.rb +51 -0
  213. data/lib/faker/tv_shows/venture_bros.rb +65 -0
  214. data/lib/faker/version.rb +3 -1
  215. data/lib/helpers/base58.rb +22 -0
  216. data/lib/helpers/char.rb +31 -35
  217. data/lib/helpers/unique_generator.rb +28 -2
  218. data/lib/locales/README.md +8 -9
  219. data/lib/locales/ar.yml +102 -0
  220. data/lib/locales/bg.yml +5 -2
  221. data/lib/locales/ca-CAT.yml +1 -1
  222. data/lib/locales/ca.yml +2 -4
  223. data/lib/locales/da-DK.yml +10 -6
  224. data/lib/locales/de-AT.yml +12 -3
  225. data/lib/locales/de-CH.yml +1696 -1
  226. data/lib/locales/de.yml +19 -9
  227. data/lib/locales/ee.yml +61 -0
  228. data/lib/locales/en-AU.yml +50 -8
  229. data/lib/locales/en-CA.yml +27 -2
  230. data/lib/locales/en-GB.yml +2 -1
  231. data/lib/locales/en-IND.yml +5 -2
  232. data/lib/locales/en-MS.yml +8 -1
  233. data/lib/locales/en-NEP.yml +6 -3
  234. data/lib/locales/en-NG.yml +2 -0
  235. data/lib/locales/en-NZ.yml +140 -17
  236. data/lib/locales/en-PAK.yml +4 -2
  237. data/lib/locales/en-SG.yml +6 -1
  238. data/lib/locales/en-TH.yml +360 -0
  239. data/lib/locales/en-US.yml +37 -9
  240. data/lib/locales/en-ZA.yml +114 -17
  241. data/lib/locales/en-au-ocker.yml +2 -1
  242. data/lib/locales/en.yml +0 -1
  243. data/lib/locales/en/address.yml +501 -3
  244. data/lib/locales/en/adjective.yml +179 -0
  245. data/lib/locales/en/animal.yml +6 -0
  246. data/lib/locales/en/appliance.yml +5 -0
  247. data/lib/locales/en/aqua_teen_hunger_force.yml +33 -1
  248. data/lib/locales/en/bank.yml +275 -60
  249. data/lib/locales/en/barcode.yml +24 -0
  250. data/lib/locales/en/basketball.yml +99 -0
  251. data/lib/locales/en/beer.yml +2 -1
  252. data/lib/locales/en/big_bang_theory.yml +38 -0
  253. data/lib/locales/en/blood.yml +13 -0
  254. data/lib/locales/en/bojack_horseman.yml +6 -0
  255. data/lib/locales/en/buffy.yml +260 -0
  256. data/lib/locales/en/camera.yml +611 -0
  257. data/lib/locales/en/cannabis.yml +13 -0
  258. data/lib/locales/en/cat.yml +5 -4
  259. data/lib/locales/en/chiquito.yml +64 -0
  260. data/lib/locales/en/clash_of_clan.yml +101 -0
  261. data/lib/locales/en/coin.yml +6 -0
  262. data/lib/locales/en/color.yml +1 -1
  263. data/lib/locales/en/community.yml +33 -0
  264. data/lib/locales/en/company.yml +3 -2
  265. data/lib/locales/en/computer.yml +36 -0
  266. data/lib/locales/en/conan.yml +171 -0
  267. data/lib/locales/en/construction.yml +425 -0
  268. data/lib/locales/en/control.yml +247 -0
  269. data/lib/locales/en/cosmere.yml +57 -0
  270. data/lib/locales/en/crypto_coin.yml +25 -0
  271. data/lib/locales/en/culture_series.yml +307 -0
  272. data/lib/locales/en/currency.yml +6 -0
  273. data/lib/locales/en/dc_comics.yml +52 -0
  274. data/lib/locales/en/demographic.yml +218 -5
  275. data/lib/locales/en/departed.yml +50 -0
  276. data/lib/locales/en/dessert.yml +3 -3
  277. data/lib/locales/en/device.yml +115 -0
  278. data/lib/locales/en/dnd.yml +451 -0
  279. data/lib/locales/en/dog.yml +9 -9
  280. data/lib/locales/en/doraemon.yml +286 -0
  281. data/lib/locales/en/dota.yml +573 -0
  282. data/lib/locales/en/dr_who.yml +6 -2
  283. data/lib/locales/en/dragon_ball.yml +243 -1
  284. data/lib/locales/en/driving_license.yml +181 -0
  285. data/lib/locales/en/drone.yml +95 -0
  286. data/lib/locales/en/dumb_and_dumber.yml +1 -1
  287. data/lib/locales/en/dune.yml +401 -131
  288. data/lib/locales/en/educator.yml +76 -6
  289. data/lib/locales/en/elder_scrolls.yml +583 -5
  290. data/lib/locales/en/electrical_components.yml +6 -0
  291. data/lib/locales/en/esport.yml +5 -5
  292. data/lib/locales/en/fallout.yml +313 -134
  293. data/lib/locales/en/final_space.yml +37 -0
  294. data/lib/locales/en/finance.yml +116 -0
  295. data/lib/locales/en/food.yml +6 -2
  296. data/lib/locales/en/football.yml +8 -0
  297. data/lib/locales/en/fresh_prince_of_bel_air.yml +1 -1
  298. data/lib/locales/en/friends.yml +3 -3
  299. data/lib/locales/en/futurama.yml +344 -0
  300. data/lib/locales/en/game.yml +283 -0
  301. data/lib/locales/en/gender.yml +6 -0
  302. data/lib/locales/en/ghostbusters.yml +91 -0
  303. data/lib/locales/en/grateful_dead.yml +48 -0
  304. data/lib/locales/en/greek_philosophers.yml +26 -0
  305. data/lib/locales/en/half_life.yml +88 -0
  306. data/lib/locales/en/harry_potter.yml +2 -1
  307. data/lib/locales/en/heroes.yml +411 -0
  308. data/lib/locales/en/heroes_of_the_storm.yml +134 -0
  309. data/lib/locales/en/horse.yml +6 -0
  310. data/lib/locales/en/house.yml +5 -0
  311. data/lib/locales/en/how_to_train_your_dragon.yml +174 -0
  312. data/lib/locales/en/industry_segments.yml +7 -0
  313. data/lib/locales/en/invoice.yml +6 -0
  314. data/lib/locales/en/jack_handey.yml +54 -0
  315. data/lib/locales/en/job.yml +2 -2
  316. data/lib/locales/en/kpop.yml +3 -3
  317. data/lib/locales/en/league_of_legends.yml +287 -7
  318. data/lib/locales/en/lebowski.yml +1 -1
  319. data/lib/locales/en/lorem.yml +6 -0
  320. data/lib/locales/en/marketing.yml +4 -0
  321. data/lib/locales/en/michael_scott.yml +45 -0
  322. data/lib/locales/en/military.yml +182 -0
  323. data/lib/locales/en/minecraft.yml +663 -0
  324. data/lib/locales/en/mountain.yml +158 -0
  325. data/lib/locales/en/movie.yml +192 -1
  326. data/lib/locales/en/music.yml +451 -1
  327. data/lib/locales/en/myst.yml +104 -0
  328. data/lib/locales/en/name.yml +15 -14
  329. data/lib/locales/en/naruto.yml +231 -0
  330. data/lib/locales/en/nation.yml +11 -0
  331. data/lib/locales/en/nato_phonetic_alphabet.yml +4 -0
  332. data/lib/locales/en/new_girl.yml +40 -0
  333. data/lib/locales/en/one_piece.yml +2 -2
  334. data/lib/locales/en/opera.yml +340 -0
  335. data/lib/locales/en/overwatch.yml +2652 -33
  336. data/lib/locales/en/parks_and_rec.yml +7 -0
  337. data/lib/locales/en/pearl_jam.yml +213 -0
  338. data/lib/locales/en/phish.yml +395 -0
  339. data/lib/locales/en/phone_number.yml +2 -1
  340. data/lib/locales/en/pokemon.yml +419 -5
  341. data/lib/locales/en/prince.yml +227 -0
  342. data/lib/locales/en/princess_bride.yml +5 -0
  343. data/lib/locales/en/programming_language.yml +2 -1
  344. data/lib/locales/en/quote.yml +695 -0
  345. data/lib/locales/en/rajnikanth.yml +77 -0
  346. data/lib/locales/en/relationship.yml +10 -0
  347. data/lib/locales/en/restaurant.yml +129 -0
  348. data/lib/locales/en/rock_band.yml +1 -0
  349. data/lib/locales/en/room.yml +68 -0
  350. data/lib/locales/en/rupaul.yml +51 -21
  351. data/lib/locales/en/rush.yml +32 -0
  352. data/lib/locales/en/science.yml +1 -0
  353. data/lib/locales/en/seinfeld.yml +2 -1
  354. data/lib/locales/en/shakespeare.yml +23 -26
  355. data/lib/locales/en/show.yml +597 -0
  356. data/lib/locales/en/silicon_valley.yml +1 -0
  357. data/lib/locales/en/simpsons.yml +668 -0
  358. data/lib/locales/en/sonic_the_hedgehog.yml +410 -0
  359. data/lib/locales/en/source.yml +46 -0
  360. data/lib/locales/en/south_park.yml +5 -0
  361. data/lib/locales/en/space.yml +3 -2
  362. data/lib/locales/en/star_trek.yml +1 -1
  363. data/lib/locales/en/star_wars.yml +568 -210
  364. data/lib/locales/en/stargate.yml +1 -2
  365. data/lib/locales/en/stranger_thing.yml +36 -0
  366. data/lib/locales/en/street_fighter.yml +1524 -0
  367. data/lib/locales/en/stripe.yml +42 -0
  368. data/lib/locales/en/studio_ghibli.yml +107 -0
  369. data/lib/locales/en/subscription.yml +8 -0
  370. data/lib/locales/en/suits.yml +45 -0
  371. data/lib/locales/en/super_mario.yml +58 -0
  372. data/lib/locales/en/super_smash_bros.yml +220 -0
  373. data/lib/locales/en/sword_art_online.yml +334 -0
  374. data/lib/locales/en/team.yml +1 -1
  375. data/lib/locales/en/the_expanse.yml +7 -0
  376. data/lib/locales/en/the_it_crowd.yml +155 -0
  377. data/lib/locales/en/tolkien.yml +2453 -0
  378. data/lib/locales/en/touhou.yml +839 -0
  379. data/lib/locales/en/vehicle.yml +77 -49
  380. data/lib/locales/en/verbs.yml +8 -0
  381. data/lib/locales/en/volleyball.yml +501 -0
  382. data/lib/locales/en/warhammer_fantasy.yml +582 -0
  383. data/lib/locales/en/witcher.yml +391 -8
  384. data/lib/locales/en/world_cup.yml +271 -0
  385. data/lib/locales/en/world_of_warcraft.yml +124 -5
  386. data/lib/locales/en/zelda.yml +964 -5
  387. data/lib/locales/es-AR.yml +4603 -0
  388. data/lib/locales/es-MX.yml +17 -1
  389. data/lib/locales/es.yml +75 -1
  390. data/lib/locales/fa.yml +6 -0
  391. data/lib/locales/fi-FI.yml +12 -6
  392. data/lib/locales/fr-CA.yml +107 -0
  393. data/lib/locales/fr-CH.yml +78 -0
  394. data/lib/locales/fr.yml +65 -12
  395. data/lib/locales/he.yml +2 -0
  396. data/lib/locales/hy.yml +411 -0
  397. data/lib/locales/id.yml +7 -2
  398. data/lib/locales/it.yml +15 -3
  399. data/lib/locales/ja.yml +86 -15
  400. data/lib/locales/ko.yml +96 -2
  401. data/lib/locales/lv.yml +55 -0
  402. data/lib/locales/nb-NO.yml +15 -6
  403. data/lib/locales/nl.yml +13 -4
  404. data/lib/locales/no.yml +7 -0
  405. data/lib/locales/pl.yml +12 -1
  406. data/lib/locales/pt-BR.yml +624 -17
  407. data/lib/locales/pt.yml +16 -6
  408. data/lib/locales/ru.yml +6 -2
  409. data/lib/locales/sk.yml +21 -13
  410. data/lib/locales/sv.yml +15 -7
  411. data/lib/locales/th.yml +380 -0
  412. data/lib/locales/tr.yml +14 -0
  413. data/lib/locales/uk.yml +17 -4
  414. data/lib/locales/vi.yml +7 -2
  415. data/lib/locales/zh-CN.yml +4 -4
  416. data/lib/locales/zh-TW.yml +3 -1
  417. metadata +448 -127
  418. data/lib/extensions/array.rb +0 -22
  419. data/lib/extensions/symbol.rb +0 -9
  420. data/lib/faker/address.rb +0 -67
  421. data/lib/faker/ancient.rb +0 -21
  422. data/lib/faker/app.rb +0 -23
  423. data/lib/faker/aqua_teen_hunger_force.rb +0 -9
  424. data/lib/faker/artist.rb +0 -9
  425. data/lib/faker/avatar.rb +0 -15
  426. data/lib/faker/back_to_the_future.rb +0 -17
  427. data/lib/faker/bank.rb +0 -37
  428. data/lib/faker/beer.rb +0 -40
  429. data/lib/faker/bitcoin.rb +0 -48
  430. data/lib/faker/book.rb +0 -23
  431. data/lib/faker/boolean.rb +0 -9
  432. data/lib/faker/bossa_nova.rb +0 -13
  433. data/lib/faker/breaking_bad.rb +0 -16
  434. data/lib/faker/business.rb +0 -22
  435. data/lib/faker/cat.rb +0 -19
  436. data/lib/faker/chuck_norris.rb +0 -11
  437. data/lib/faker/code.rb +0 -147
  438. data/lib/faker/coffee.rb +0 -29
  439. data/lib/faker/color.rb +0 -30
  440. data/lib/faker/commerce.rb +0 -64
  441. data/lib/faker/company.rb +0 -162
  442. data/lib/faker/compass.rb +0 -65
  443. data/lib/faker/crypto.rb +0 -19
  444. data/lib/faker/date.rb +0 -80
  445. data/lib/faker/demographic.rb +0 -35
  446. data/lib/faker/dessert.rb +0 -19
  447. data/lib/faker/dog.rb +0 -39
  448. data/lib/faker/dr_who.rb +0 -34
  449. data/lib/faker/dragon_ball.rb +0 -9
  450. data/lib/faker/dumb_and_dumber.rb +0 -17
  451. data/lib/faker/dune.rb +0 -54
  452. data/lib/faker/educator.rb +0 -23
  453. data/lib/faker/elder_scrolls.rb +0 -21
  454. data/lib/faker/esport.rb +0 -25
  455. data/lib/faker/fallout.rb +0 -21
  456. data/lib/faker/family_guy.rb +0 -17
  457. data/lib/faker/file.rb +0 -24
  458. data/lib/faker/fillmurray.rb +0 -14
  459. data/lib/faker/finance.rb +0 -28
  460. data/lib/faker/food.rb +0 -25
  461. data/lib/faker/friends.rb +0 -17
  462. data/lib/faker/funny_name.rb +0 -43
  463. data/lib/faker/game_of_thrones.rb +0 -25
  464. data/lib/faker/hacker.rb +0 -45
  465. data/lib/faker/harry_potter.rb +0 -25
  466. data/lib/faker/hey_arnold.rb +0 -17
  467. data/lib/faker/hipster.rb +0 -59
  468. data/lib/faker/hitchhikers_guide_to_the_galaxy.rb +0 -33
  469. data/lib/faker/hobbit.rb +0 -21
  470. data/lib/faker/how_i_met_your_mother.rb +0 -21
  471. data/lib/faker/id_number.rb +0 -36
  472. data/lib/faker/internet.rb +0 -178
  473. data/lib/faker/job.rb +0 -16
  474. data/lib/faker/kpop.rb +0 -29
  475. data/lib/faker/league_of_legends.rb +0 -29
  476. data/lib/faker/lebowski.rb +0 -17
  477. data/lib/faker/lord_of_the_rings.rb +0 -13
  478. data/lib/faker/lorem.rb +0 -68
  479. data/lib/faker/lorem_pixel.rb +0 -21
  480. data/lib/faker/lovecraft.rb +0 -73
  481. data/lib/faker/markdown.rb +0 -67
  482. data/lib/faker/matz.rb +0 -9
  483. data/lib/faker/measurement.rb +0 -127
  484. data/lib/faker/most_interesting_man_in_the_world.rb +0 -9
  485. data/lib/faker/movie.rb +0 -9
  486. data/lib/faker/music.rb +0 -33
  487. data/lib/faker/name.rb +0 -46
  488. data/lib/faker/number.rb +0 -86
  489. data/lib/faker/omniauth.rb +0 -340
  490. data/lib/faker/one_piece.rb +0 -29
  491. data/lib/faker/overwatch.rb +0 -17
  492. data/lib/faker/phone_number.rb +0 -44
  493. data/lib/faker/placeholdit.rb +0 -20
  494. data/lib/faker/pokemon.rb +0 -17
  495. data/lib/faker/programming_language.rb +0 -13
  496. data/lib/faker/rick_and_morty.rb +0 -17
  497. data/lib/faker/robin.rb +0 -9
  498. data/lib/faker/rock_band.rb +0 -9
  499. data/lib/faker/rupaul.rb +0 -15
  500. data/lib/faker/science.rb +0 -15
  501. data/lib/faker/seinfeld.rb +0 -13
  502. data/lib/faker/shakespeare.rb +0 -40
  503. data/lib/faker/silicon_valley.rb +0 -33
  504. data/lib/faker/simpsons.rb +0 -22
  505. data/lib/faker/slack_emoji.rb +0 -43
  506. data/lib/faker/space.rb +0 -58
  507. data/lib/faker/star_trek.rb +0 -21
  508. data/lib/faker/star_wars.rb +0 -102
  509. data/lib/faker/stargate.rb +0 -17
  510. data/lib/faker/superhero.rb +0 -25
  511. data/lib/faker/team.rb +0 -24
  512. data/lib/faker/the_fresh_prince_of_bel_air.rb +0 -17
  513. data/lib/faker/the_thick_of_it.rb +0 -17
  514. data/lib/faker/time.rb +0 -51
  515. data/lib/faker/twin_peaks.rb +0 -17
  516. data/lib/faker/twitter.rb +0 -172
  517. data/lib/faker/types.rb +0 -93
  518. data/lib/faker/umphreys_mcgee.rb +0 -9
  519. data/lib/faker/university.rb +0 -28
  520. data/lib/faker/v_for_vendetta.rb +0 -17
  521. data/lib/faker/vehicle.rb +0 -39
  522. data/lib/faker/venture_bros.rb +0 -21
  523. data/lib/faker/witcher.rb +0 -29
  524. data/lib/faker/world_of_warcraft.rb +0 -13
  525. data/lib/faker/yoda.rb +0 -10
  526. data/lib/faker/zelda.rb +0 -22
  527. data/lib/locales/en/hobbit.yml +0 -19
  528. data/lib/locales/en/lord_of_the_rings.yml +0 -5
  529. data/lib/locales/en/matz.yml +0 -28
  530. data/lib/locales/en/most_interesting_man_in_the_world.yml +0 -106
  531. data/lib/locales/en/robin.yml +0 -4
@@ -0,0 +1,306 @@
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
+ #
32
+ # @faker.version 2.1.3
33
+ def words(legacy_number = NOT_GIVEN, legacy_supplemental = NOT_GIVEN, number: 3, supplemental: false)
34
+ warn_for_deprecated_arguments do |keywords|
35
+ keywords << :number if legacy_number != NOT_GIVEN
36
+ keywords << :supplemental if legacy_supplemental != NOT_GIVEN
37
+ end
38
+
39
+ resolved_num = resolve(number)
40
+ word_list = (
41
+ translate('faker.lorem.words') +
42
+ (supplemental ? translate('faker.lorem.supplemental') : [])
43
+ )
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(legacy_number = NOT_GIVEN, number: 255, min_alpha: 0, min_numeric: 0)
78
+ warn_for_deprecated_arguments do |keywords|
79
+ keywords << :number if legacy_number != NOT_GIVEN
80
+ end
81
+
82
+ Alphanumeric.alphanumeric(number: number, min_alpha: min_alpha, min_numeric: min_numeric)
83
+ end
84
+
85
+ # rubocop:disable Style/AsciiComments
86
+
87
+ ##
88
+ # Generates the emoji
89
+ #
90
+ # @return [String]
91
+ #
92
+ # @example
93
+ # Faker::Lorem.multibyte #=> "😀"
94
+ # Faker::Lorem.multibyte #=> "❤"
95
+ #
96
+ # @faker.version 2.1.3
97
+ def multibyte
98
+ sample(translate('faker.lorem.multibyte')).pack('C*').force_encoding('utf-8')
99
+ end
100
+ # rubocop:enable Style/AsciiComments
101
+
102
+ # rubocop:disable Metrics/ParameterLists
103
+
104
+ ##
105
+ # Generates sentence
106
+ #
107
+ # @param word_count [Integer] How many words should be there in a sentence, default to 4
108
+ # @param supplemental [Boolean] Add supplemental words, default to false
109
+ # @param random_words_to_add [Integer] Add any random words, default to 0
110
+ #
111
+ # @return [String]
112
+ #
113
+ # @example
114
+ # Faker::Lorem.sentence #=> "Magnam qui aut quidem."
115
+ # Faker::Lorem.sentence(word_count: 5) #=> "Voluptas rerum aut aliquam velit."
116
+ # Faker::Lorem.sentence(word_count: 5, supplemental: true) #=> "Aut viscus curtus votum iusto."
117
+ # Faker::Lorem.sentence(word_count: 5, supplemental: true, random_words_to_add:2) #=> "Crinis quo cruentus velit animi vomer."
118
+ #
119
+ # @faker.version 2.1.3
120
+ 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: 0)
121
+ warn_for_deprecated_arguments do |keywords|
122
+ keywords << :word_count if legacy_word_count != NOT_GIVEN
123
+ keywords << :supplemental if legacy_supplemental != NOT_GIVEN
124
+ keywords << :random_words_to_add if legacy_random_words_to_add != NOT_GIVEN
125
+ end
126
+
127
+ words(number: word_count + rand(random_words_to_add.to_i), supplemental: supplemental).join(locale_space).capitalize + locale_period
128
+ end
129
+ # rubocop:enable Metrics/ParameterLists
130
+
131
+ ##
132
+ # Generates three sentences
133
+ #
134
+ # @param number [Integer] How many sentences to be generated, default to 3
135
+ # @param supplemental [Boolean] Should add supplemental words, defaults to false
136
+ #
137
+ # @return [Array] Returns array for sentences.
138
+ #
139
+ # @example
140
+ # Faker::Lorem.sentences #=> ["Possimus non tenetur.", "Nulla non excepturi.", "Quisquam rerum facilis."]
141
+ # Faker::Lorem.sentences(number: 2) #=> ["Nulla est natus.", "Perferendis autem cum."]
142
+ # Faker::Lorem.sentences(number: 2, supplemental: true) #=> ["Cito cena ad.", "Solvo animus allatus."]
143
+ #
144
+ # @faker.version 2.1.3
145
+ def sentences(legacy_number = NOT_GIVEN, legacy_supplemental = NOT_GIVEN, number: 3, supplemental: false)
146
+ warn_for_deprecated_arguments do |keywords|
147
+ keywords << :number if legacy_number != NOT_GIVEN
148
+ keywords << :supplemental if legacy_supplemental != NOT_GIVEN
149
+ end
150
+
151
+ 1.upto(resolve(number)).collect { sentence(word_count: 3, supplemental: supplemental) }
152
+ end
153
+
154
+ # rubocop:disable Metrics/ParameterLists
155
+
156
+ ##
157
+ # Generates three sentence paragraph
158
+ #
159
+ # @param sentence_count [Integer] Number of sentences in the paragraph
160
+ # @param supplemental [Boolean]
161
+ # @param random_sentences_to_add [Integer]
162
+ #
163
+ # @return [String]
164
+ #
165
+ # @example
166
+ # Faker::Lorem.paragraph
167
+ # #=> "Impedit et est. Aliquid deleniti necessitatibus. Et aspernatur minima."
168
+ # Faker::Lorem.paragraph(sentence_count: 2)
169
+ # #=> "Rerum fugit vitae. Et atque autem."
170
+ # Faker::Lorem.paragraph(sentence_count: 2, supplemental: true)
171
+ # #=> "Terreo coerceo utor. Vester sunt cogito."
172
+ # Faker::Lorem.paragraph(sentence_count: 2, supplemental: true, random_sentences_to_add: 2)
173
+ # #=> "Texo tantillus tamisium. Tribuo amissio tamisium. Facere aut canis."
174
+ #
175
+ # @faker.version 2.1.3
176
+ 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: 0)
177
+ warn_for_deprecated_arguments do |keywords|
178
+ keywords << :sentence_count if legacy_sentence_count != NOT_GIVEN
179
+ keywords << :supplemental if legacy_supplemental != NOT_GIVEN
180
+ keywords << :random_sentences_to_add if legacy_random_sentences_to_add != NOT_GIVEN
181
+ end
182
+
183
+ sentences(number: resolve(sentence_count) + rand(random_sentences_to_add.to_i), supplemental: supplemental).join(locale_space)
184
+ end
185
+ # rubocop:enable Metrics/ParameterLists
186
+
187
+ ##
188
+ # Generates three paragraphs
189
+ #
190
+ # @param number [Integer]
191
+ # @param supplemental [Boolean]
192
+ #
193
+ # @return [Array]
194
+ #
195
+ # @example
196
+ # Faker::Lorem.paragraphs
197
+ # Faker::Lorem.paragraphs(number:2)
198
+ # Faker::Lorem.paragraphs(number:2, supplemental: true)
199
+ #
200
+ # @faker.version 2.1.3
201
+ def paragraphs(legacy_number = NOT_GIVEN, legacy_supplemental = NOT_GIVEN, number: 3, supplemental: false)
202
+ warn_for_deprecated_arguments do |keywords|
203
+ keywords << :number if legacy_number != NOT_GIVEN
204
+ end
205
+ warn_for_deprecated_arguments do |keywords|
206
+ keywords << :supplemental if legacy_supplemental != NOT_GIVEN
207
+ end
208
+
209
+ 1.upto(resolve(number)).collect { paragraph(sentence_count: 3, supplemental: supplemental) }
210
+ end
211
+
212
+ ##
213
+ # Generates paragraph with 256 characters
214
+ #
215
+ # @param number [Integer]
216
+ # @param supplemental [Boolean]
217
+ #
218
+ # @return [String]
219
+ #
220
+ # @example
221
+ # Faker::Lorem.paragraph_by_chars
222
+ # Faker::Lorem.paragraph_by_chars(number: 20) #=> "Sit modi alias. Imp."
223
+ # Faker::Lorem.paragraph_by_chars(number: 20, supplemental: true) #=> "Certus aveho admove."
224
+ #
225
+ # @faker.version 2.1.3
226
+ def paragraph_by_chars(legacy_number = NOT_GIVEN, legacy_supplemental = NOT_GIVEN, number: 256, supplemental: false)
227
+ warn_for_deprecated_arguments do |keywords|
228
+ keywords << :number if legacy_number != NOT_GIVEN
229
+ keywords << :supplemental if legacy_supplemental != NOT_GIVEN
230
+ end
231
+
232
+ paragraph = paragraph(sentence_count: 3, supplemental: supplemental)
233
+
234
+ paragraph += " #{paragraph(sentence_count: 3, supplemental: supplemental)}" while paragraph.length < number
235
+
236
+ "#{paragraph[0...number - 1]}."
237
+ end
238
+
239
+ # rubocop:disable Metrics/ParameterLists
240
+
241
+ ##
242
+ # Returns the question with 4 words
243
+ #
244
+ # @param word_count [Integer]
245
+ # @param supplemental [Boolean]
246
+ # @param random_words_to_add [Integer]
247
+ #
248
+ # @return [String]
249
+ #
250
+ # @example
251
+ # Faker::Lorem.question #=> "Natus deleniti sequi laudantium?"
252
+ # Faker::Lorem.question(word_count: 2) #=> "Quo ut?"
253
+ # Faker::Lorem.question(word_count: 2, supplemental: true) #=> "Terga consequatur?"
254
+ # Faker::Lorem.question(word_count: 2, supplemental: true, random_words_to_add: 2) #=> "Depulso uter ut?"
255
+ #
256
+ # @faker.version 2.1.3
257
+ def question(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: 0)
258
+ warn_for_deprecated_arguments do |keywords|
259
+ keywords << :word_count if legacy_word_count != NOT_GIVEN
260
+ keywords << :supplemental if legacy_supplemental != NOT_GIVEN
261
+ keywords << :random_words_to_add if legacy_random_words_to_add != NOT_GIVEN
262
+ end
263
+
264
+ words(number: word_count + rand(random_words_to_add), supplemental: supplemental).join(' ').capitalize + locale_question_mark
265
+ end
266
+ # rubocop:enable Metrics/ParameterLists
267
+
268
+ ##
269
+ # Generates array of three questions
270
+ #
271
+ # @param number [Integer]
272
+ # @param supplemental [Boolean]
273
+ #
274
+ # @return [Array]
275
+ #
276
+ # @example
277
+ # Faker::Lorem.questions #=> ["Amet culpa enim?", "Voluptatem deleniti numquam?", "Veniam non cum?"]
278
+ # Faker::Lorem.questions(number: 2) #=> ["Minus occaecati nobis?", "Veniam et alias?"]
279
+ # Faker::Lorem.questions(number: 2, supplemental: true) #=> ["Acceptus subito cetera?", "Aro sulum cubicularis?"]
280
+ #
281
+ # @faker.version 2.1.3
282
+ def questions(legacy_number = NOT_GIVEN, legacy_supplemental = NOT_GIVEN, number: 3, supplemental: false)
283
+ warn_for_deprecated_arguments do |keywords|
284
+ keywords << :number if legacy_number != NOT_GIVEN
285
+ keywords << :supplemental if legacy_supplemental != NOT_GIVEN
286
+ end
287
+
288
+ 1.upto(resolve(number)).collect { question(word_count: 3, supplemental: supplemental) }
289
+ end
290
+
291
+ private
292
+
293
+ def locale_period
294
+ translate('faker.lorem.punctuation.period') || '.'
295
+ end
296
+
297
+ def locale_space
298
+ translate('faker.lorem.punctuation.space') || ' '
299
+ end
300
+
301
+ def locale_question_mark
302
+ translate('faker.lorem.punctuation.question_mark') || '?'
303
+ end
304
+ end
305
+ end
306
+ end
@@ -0,0 +1,138 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class LoremFlickr < Base
5
+ class << self
6
+ SUPPORTED_COLORIZATIONS = %w[red green blue].freeze
7
+
8
+ # rubocop:disable Metrics/ParameterLists
9
+
10
+ ##
11
+ # Produces a random image URL from loremflickr.com.
12
+ #
13
+ # @param size [String] Specifies the size of image to generate.
14
+ # @param search_terms [Array<String>] Adds search terms to the image URL.
15
+ # @param match_all [Boolean] Add "all" as part of the URL.
16
+ # @return [String]
17
+ #
18
+ # @example
19
+ # Faker::LoremFlickr.image #=> "https://loremflickr.com/300/300"
20
+ # Faker::LoremFlickr.image(size: "50x60") #=> "https://loremflickr.com/50/60"
21
+ # Faker::LoremFlickr.image(size: "50x60", search_terms: ['sports']) #=> "https://loremflickr.com/50/60/sports"
22
+ # Faker::LoremFlickr.image(size: "50x60", search_terms: ['sports', 'fitness']) #=> "https://loremflickr.com/50/60/sports,fitness"
23
+ # Faker::LoremFlickr.image(size: "50x60", search_terms: ['sports', 'fitness'], match_all: true) #=> "https://loremflickr.com/50/60/sports,fitness/all"
24
+ #
25
+ # @faker.version 1.9.0
26
+ def image(legacy_size = NOT_GIVEN, legacy_search_terms = NOT_GIVEN, legacy_match_all = NOT_GIVEN, size: '300x300', search_terms: [], match_all: false)
27
+ warn_for_deprecated_arguments do |keywords|
28
+ keywords << :size if legacy_size != NOT_GIVEN
29
+ keywords << :search_terms if legacy_search_terms != NOT_GIVEN
30
+ keywords << :match_all if legacy_match_all != NOT_GIVEN
31
+ end
32
+
33
+ build_url(size, nil, search_terms, match_all)
34
+ end
35
+
36
+ ##
37
+ # Produces a random grayscale image URL from loremflickr.com.
38
+ #
39
+ # @param size [String] Specifies the size of image to generate.
40
+ # @param search_terms [Array<String>] Adds search terms to the image URL.
41
+ # @param match_all [Boolean] Add "all" as part of the URL.
42
+ # @return [String]
43
+ #
44
+ # @example
45
+ # Faker::LoremFlickr.grayscale_image #=> "https://loremflickr.com/g/300/300/all"
46
+ # Faker::LoremFlickr.grayscale_image(size: "50x60") #=> "https://loremflickr.com/g/50/60/all"
47
+ # Faker::LoremFlickr.grayscale_image(size: "50x60", search_terms: ['sports']) #=> "https://loremflickr.com/g/50/60/sports"
48
+ # Faker::LoremFlickr.grayscale_image(size: "50x60", search_terms: ['sports', 'fitness']) #=> "https://loremflickr.com/50/60/g/sports,fitness"
49
+ # Faker::LoremFlickr.grayscale_image(size: "50x60", search_terms: ['sports', 'fitness'], match_all: true) #=> "https://loremflickr.com/g/50/60/sports,fitness/all"
50
+ #
51
+ # @faker.version 1.9.0
52
+ def grayscale_image(legacy_size = NOT_GIVEN, legacy_search_terms = NOT_GIVEN, legacy_match_all = NOT_GIVEN, size: '300x300', search_terms: ['all'], match_all: false)
53
+ warn_for_deprecated_arguments do |keywords|
54
+ keywords << :size if legacy_size != NOT_GIVEN
55
+ keywords << :search_terms if legacy_search_terms != NOT_GIVEN
56
+ keywords << :match_all if legacy_match_all != NOT_GIVEN
57
+ end
58
+
59
+ raise ArgumentError, 'Search terms must be specified for grayscale images' unless search_terms.any?
60
+
61
+ build_url(size, 'g', search_terms, match_all)
62
+ end
63
+
64
+ ##
65
+ # Produces a random pixelated image URL from loremflickr.com.
66
+ #
67
+ # @param size [String] Specifies the size of image to generate.
68
+ # @param search_terms [Array<String>] Adds search terms to the image URL.
69
+ # @param match_all [Boolean] Add "all" as part of the URL.
70
+ # @return [String]
71
+ #
72
+ # @example
73
+ # Faker::LoremFlickr.pixelated_image #=> "https://loremflickr.com/p/300/300/all"
74
+ # Faker::LoremFlickr.pixelated_image(size: "50x60") #=> "https://loremflickr.com/p/50/60/all"
75
+ # Faker::LoremFlickr.pixelated_image(size: "50x60", search_terms: ['sports']) #=> "https://loremflickr.com/p/50/60/sports"
76
+ # Faker::LoremFlickr.pixelated_image(size: "50x60", search_terms: ['sports', 'fitness']) #=> "https://loremflickr.com/p/50/60/sports,fitness"
77
+ # Faker::LoremFlickr.pixelated_image(size: "50x60", search_terms: ['sports', 'fitness'], match_all: true) #=> "https://loremflickr.com/p/50/60/sports,fitness/all"
78
+ #
79
+ # @faker.version 1.9.0
80
+ def pixelated_image(legacy_size = NOT_GIVEN, legacy_search_terms = NOT_GIVEN, legacy_match_all = NOT_GIVEN, size: '300x300', search_terms: ['all'], match_all: false)
81
+ warn_for_deprecated_arguments do |keywords|
82
+ keywords << :size if legacy_size != NOT_GIVEN
83
+ keywords << :search_terms if legacy_search_terms != NOT_GIVEN
84
+ keywords << :match_all if legacy_match_all != NOT_GIVEN
85
+ end
86
+
87
+ raise ArgumentError, 'Search terms must be specified for pixelated images' unless search_terms.any?
88
+
89
+ build_url(size, 'p', search_terms, match_all)
90
+ end
91
+
92
+ ##
93
+ # Produces a random colorized image URL from loremflickr.com.
94
+ #
95
+ # @param size [String] Specifies the size of image to generate.
96
+ # @param color [String] Specifies the color of image to generate.
97
+ # @param search_terms [Array<String>] Adds search terms to the image URL.
98
+ # @param match_all [Boolean] Add "all" as part of the URL.
99
+ # @return [String]
100
+ #
101
+ # @example
102
+ # Faker::LoremFlickr.image #=> "https://loremflickr.com/red/300/300/all"
103
+ # Faker::LoremFlickr.image(size: "50x60", color: 'blue') #=> "https://loremflickr.com/blue/50/60/all"
104
+ # Faker::LoremFlickr.image(size: "50x60", color: 'blue', search_terms: ['sports']) #=> "https://loremflickr.com/blue/50/60/sports"
105
+ # Faker::LoremFlickr.image(size: "50x60", color: 'blue', search_terms: ['sports', 'fitness']) #=> "https://loremflickr.com/blue/50/60/sports,fitness"
106
+ # Faker::LoremFlickr.image(size: "50x60", color: 'blue', search_terms: ['sports', 'fitness'], match_all: true) #=> "https://loremflickr.com/blue/50/60/sports,fitness/all"
107
+ #
108
+ # @faker.version 1.9.0
109
+ def colorized_image(legacy_size = NOT_GIVEN, legacy_color = NOT_GIVEN, legacy_search_terms = NOT_GIVEN, legacy_match_all = NOT_GIVEN, size: '300x300', color: 'red', search_terms: ['all'], match_all: false)
110
+ warn_for_deprecated_arguments do |keywords|
111
+ keywords << :size if legacy_size != NOT_GIVEN
112
+ keywords << :color if legacy_color != NOT_GIVEN
113
+ keywords << :search_terms if legacy_search_terms != NOT_GIVEN
114
+ keywords << :match_all if legacy_match_all != NOT_GIVEN
115
+ end
116
+
117
+ raise ArgumentError, 'Search terms must be specified for colorized images' unless search_terms.any?
118
+ raise ArgumentError, "Supported colorizations are #{SUPPORTED_COLORIZATIONS.join(', ')}" unless SUPPORTED_COLORIZATIONS.include?(color)
119
+
120
+ build_url(size, color, search_terms, match_all)
121
+ end
122
+ # rubocop:enable Metrics/ParameterLists
123
+
124
+ private
125
+
126
+ def build_url(size, format, search_terms, match_all)
127
+ raise ArgumentError, 'Size should be specified in format 300x300' unless size =~ /^[0-9]+x[0-9]+$/
128
+
129
+ url_parts = ['https://loremflickr.com']
130
+ url_parts << format
131
+ url_parts += size.split('x')
132
+ url_parts << search_terms.compact.join(',') if search_terms.any?
133
+ url_parts << 'all' if match_all
134
+ url_parts.compact.join('/')
135
+ end
136
+ end
137
+ end
138
+ end
@@ -0,0 +1,70 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class LoremPixel < Base
5
+ class << self
6
+ SUPPORTED_CATEGORIES = %w[abstract
7
+ animals
8
+ business
9
+ cats
10
+ city
11
+ food
12
+ nightlife
13
+ fashion
14
+ people
15
+ nature
16
+ sports
17
+ technics
18
+ transport].freeze
19
+
20
+ # rubocop:disable Metrics/ParameterLists
21
+
22
+ ##
23
+ # Produces a random image URL from lorempixel.com.
24
+ #
25
+ # @param size [String] Specifies the size of image to generate.
26
+ # @param is_gray [Boolean] Determines if the image is gray.
27
+ # @param category [Symbol] Adds the category of the generated image to the URL.
28
+ # @param number [Integer] Adds a number as part of the URL.
29
+ # @param text [Integer] Adds dummy text as part of the URL.
30
+ # @param secure [Boolean] Changes the image URL between http and https.
31
+ # @return [String]
32
+ #
33
+ # @example
34
+ # Faker::LoremPixel.image #=> "https://lorempixel.com/300/300"
35
+ # Faker::LoremPixel.image(size: "50x60") #=> "https://lorempixel.com/50/60"
36
+ # Faker::LoremPixel.image(size: "50x60", is_gray: true) #=> "https://lorempixel.com/g/50/60"
37
+ # Faker::LoremPixel.image(size: "50x60", is_gray: false, category: 'sports') #=> "https://lorempixel.com/50/60/sports"
38
+ # Faker::LoremPixel.image(size: "50x60", is_gray: false, category: 'sports', number: 3) #=> "https://lorempixel.com/50/60/sports/3"
39
+ # Faker::LoremPixel.image(size: "50x60", is_gray: false, category: 'sports', number: 3, text: 'Dummy-text') #=> "https://lorempixel.com/50/60/sports/3/Dummy-text"
40
+ # Faker::LoremPixel.image(size: "50x60", is_gray: false, category: 'sports', number: nil, text: 'Dummy-text') #=> "https://lorempixel.com/50/60/sports/Dummy-text"
41
+ # Faker::LoremPixel.image(secure: false) #=> "http://lorempixel.com/300/300"
42
+ #
43
+ # @faker.version 1.7.0
44
+ def image(legacy_size = NOT_GIVEN, legacy_is_gray = NOT_GIVEN, legacy_category = NOT_GIVEN, legacy_number = NOT_GIVEN, legacy_text = NOT_GIVEN, legacy_secure = NOT_GIVEN, size: '300x300', is_gray: false, category: nil, number: nil, text: nil, secure: true)
45
+ warn_for_deprecated_arguments do |keywords|
46
+ keywords << :size if legacy_size != NOT_GIVEN
47
+ keywords << :is_gray if legacy_is_gray != NOT_GIVEN
48
+ keywords << :category if legacy_category != NOT_GIVEN
49
+ keywords << :number if legacy_number != NOT_GIVEN
50
+ keywords << :text if legacy_text != NOT_GIVEN
51
+ keywords << :secure if legacy_secure != NOT_GIVEN
52
+ end
53
+
54
+ raise ArgumentError, 'Size should be specified in format 300x300' unless size =~ /^[0-9]+x[0-9]+$/
55
+ raise ArgumentError, "Supported categories are #{SUPPORTED_CATEGORIES.join(', ')}" unless category.nil? || SUPPORTED_CATEGORIES.include?(category)
56
+ raise ArgumentError, 'Category required when number is passed' if !number.nil? && category.nil?
57
+ raise ArgumentError, 'Number must be between 1 and 10' unless number.nil? || (1..10).cover?(number)
58
+ raise ArgumentError, 'Category and number must be passed when text is passed' if !text.nil? && number.nil? && category.nil?
59
+
60
+ url_parts = secure ? ['https:/'] : ['http:/']
61
+ url_parts << ['lorempixel.com']
62
+ url_parts << 'g' if is_gray
63
+ url_parts += size.split('x')
64
+ url_parts += [category, number, text].compact
65
+ url_parts.join('/')
66
+ end
67
+ # rubocop:enable Metrics/ParameterLists
68
+ end
69
+ end
70
+ end