faker 2.13.0 → 3.8.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 (485) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +1277 -24
  3. data/README.md +138 -320
  4. data/lib/faker/blockchain/aeternity.rb +5 -5
  5. data/lib/faker/blockchain/bitcoin.rb +1 -2
  6. data/lib/faker/blockchain/ethereum.rb +1 -1
  7. data/lib/faker/blockchain/tezos.rb +30 -3
  8. data/lib/faker/blockchain.rb +9 -0
  9. data/lib/faker/books/dune.rb +17 -12
  10. data/lib/faker/books/lovecraft.rb +16 -44
  11. data/lib/faker/books/the_kingkiller_chronicle.rb +61 -0
  12. data/lib/faker/books.rb +9 -0
  13. data/lib/faker/creature/bird.rb +203 -0
  14. data/lib/faker/creature.rb +9 -0
  15. data/lib/faker/default/address.rb +11 -31
  16. data/lib/faker/default/adjective.rb +35 -0
  17. data/lib/faker/default/alphanumeric.rb +3 -9
  18. data/lib/faker/default/app.rb +1 -10
  19. data/lib/faker/default/avatar.rb +2 -13
  20. data/lib/faker/default/bank.rb +28 -26
  21. data/lib/faker/default/barcode.rb +165 -0
  22. data/lib/faker/default/beer.rb +3 -3
  23. data/lib/faker/default/boolean.rb +2 -4
  24. data/lib/faker/default/camera.rb +46 -0
  25. data/lib/faker/default/cannabis.rb +10 -0
  26. data/lib/faker/default/chile_rut.rb +28 -27
  27. data/lib/faker/default/chuck_norris.rb +1 -0
  28. data/lib/faker/default/code.rb +166 -52
  29. data/lib/faker/default/color.rb +77 -6
  30. data/lib/faker/default/commerce.rb +32 -18
  31. data/lib/faker/default/company.rb +175 -30
  32. data/lib/faker/default/crypto.rb +25 -5
  33. data/lib/faker/default/crypto_coin.rb +3 -15
  34. data/lib/faker/default/date.rb +65 -42
  35. data/lib/faker/default/demographic.rb +1 -5
  36. data/lib/faker/default/driving_licence.rb +45 -20
  37. data/lib/faker/default/drone.rb +332 -0
  38. data/lib/faker/default/educator.rb +13 -0
  39. data/lib/faker/default/emotion.rb +33 -0
  40. data/lib/faker/default/file.rb +5 -22
  41. data/lib/faker/default/finance.rb +51 -7
  42. data/lib/faker/default/food.rb +28 -2
  43. data/lib/faker/default/hipster.rb +15 -52
  44. data/lib/faker/default/hobby.rb +22 -0
  45. data/lib/faker/default/html.rb +230 -0
  46. data/lib/faker/default/id_number.rb +176 -31
  47. data/lib/faker/default/invoice.rb +8 -21
  48. data/lib/faker/default/json.rb +15 -27
  49. data/lib/faker/default/lorem.rb +179 -77
  50. data/lib/faker/default/lorem_flickr.rb +5 -38
  51. data/lib/faker/default/markdown.rb +14 -17
  52. data/lib/faker/default/marketing.rb +1 -1
  53. data/lib/faker/default/measurement.rb +19 -50
  54. data/lib/faker/default/military.rb +26 -0
  55. data/lib/faker/default/mountain.rb +33 -0
  56. data/lib/faker/default/name.rb +1 -5
  57. data/lib/faker/default/nation.rb +0 -3
  58. data/lib/faker/default/{nhs.rb → national_health_service.rb} +10 -10
  59. data/lib/faker/default/number.rb +34 -62
  60. data/lib/faker/default/omniauth.rb +102 -97
  61. data/lib/faker/default/phone_number.rb +36 -21
  62. data/lib/faker/default/placeholdit.rb +12 -22
  63. data/lib/faker/{quotes → default}/quote.rb +39 -0
  64. data/lib/faker/default/relationship.rb +2 -6
  65. data/lib/faker/default/science.rb +108 -0
  66. data/lib/faker/default/source.rb +3 -16
  67. data/lib/faker/default/south_africa.rb +3 -3
  68. data/lib/faker/default/space.rb +1 -1
  69. data/lib/faker/default/sport.rb +116 -0
  70. data/lib/faker/default/string.rb +2 -8
  71. data/lib/faker/default/stripe.rb +7 -23
  72. data/lib/faker/default/tea.rb +41 -0
  73. data/lib/faker/{music/show.rb → default/theater.rb} +8 -8
  74. data/lib/faker/default/time.rb +4 -34
  75. data/lib/faker/default/types.rb +14 -36
  76. data/lib/faker/default/vehicle.rb +45 -55
  77. data/lib/faker/default/vulnerability_identifier.rb +23 -0
  78. data/lib/faker/default/world_cup.rb +2 -11
  79. data/lib/faker/default/x.rb +189 -0
  80. data/lib/faker/default.rb +9 -0
  81. data/lib/faker/fantasy/tolkien.rb +67 -0
  82. data/lib/faker/fantasy.rb +9 -0
  83. data/lib/faker/games/clash_of_clans.rb +48 -0
  84. data/lib/faker/games/control.rb +1 -1
  85. data/lib/faker/games/dnd.rb +131 -14
  86. data/lib/faker/games/dota.rb +14 -5
  87. data/lib/faker/games/elder_scrolls.rb +26 -0
  88. data/lib/faker/games/final_fantasy_xiv.rb +73 -0
  89. data/lib/faker/games/heroes.rb +13 -0
  90. data/lib/faker/games/heroes_of_the_storm.rb +0 -11
  91. data/lib/faker/games/minecraft.rb +66 -1
  92. data/lib/faker/games/myst.rb +1 -1
  93. data/lib/faker/games/street_fighter.rb +61 -0
  94. data/lib/faker/games/super_mario.rb +48 -0
  95. data/lib/faker/games/tarkov.rb +205 -0
  96. data/lib/faker/games/touhou.rb +75 -0
  97. data/lib/faker/games/witcher.rb +39 -0
  98. data/lib/faker/games/world_of_warcraft.rb +26 -1
  99. data/lib/faker/games.rb +9 -0
  100. data/lib/faker/internet.rb +582 -0
  101. data/lib/faker/japanese_media/conan.rb +48 -0
  102. data/lib/faker/japanese_media/cowboy_bebop.rb +61 -0
  103. data/lib/faker/japanese_media/doraemon.rb +48 -0
  104. data/lib/faker/japanese_media/dragon_ball.rb +26 -0
  105. data/lib/faker/japanese_media/fullmetal_alchemist_brotherhood.rb +48 -0
  106. data/lib/faker/japanese_media/kamen_rider.rb +102 -0
  107. data/lib/faker/japanese_media/naruto.rb +61 -0
  108. data/lib/faker/japanese_media/one_piece.rb +1 -1
  109. data/lib/faker/japanese_media/studio_ghibli.rb +48 -0
  110. data/lib/faker/japanese_media.rb +9 -0
  111. data/lib/faker/locations/australia.rb +49 -0
  112. data/lib/faker/locations.rb +9 -0
  113. data/lib/faker/movies/avatar.rb +49 -0
  114. data/lib/faker/movies/hackers.rb +48 -0
  115. data/lib/faker/movies/hobbit.rb +4 -4
  116. data/lib/faker/movies/how_to_train_your_dragon.rb +48 -0
  117. data/lib/faker/movies/lord_of_the_rings.rb +3 -3
  118. data/lib/faker/movies/star_wars.rb +75 -7
  119. data/lib/faker/movies/the_room.rb +63 -0
  120. data/lib/faker/movies/tron.rb +161 -0
  121. data/lib/faker/movies.rb +9 -0
  122. data/lib/faker/music/bossa_nova.rb +35 -0
  123. data/lib/faker/music/grateful_dead.rb +0 -2
  124. data/lib/faker/music/hiphop.rb +48 -0
  125. data/lib/faker/music/opera.rb +237 -1
  126. data/lib/faker/music/pearl_jam.rb +0 -2
  127. data/lib/faker/music/rock_band.rb +12 -0
  128. data/lib/faker/music/rush.rb +0 -2
  129. data/lib/faker/music/smashing_pumpkins.rb +62 -0
  130. data/lib/faker/{music/music.rb → music.rb} +16 -0
  131. data/lib/faker/quotes/rajnikanth.rb +1 -0
  132. data/lib/faker/quotes/shakespeare.rb +34 -0
  133. data/lib/faker/quotes.rb +9 -0
  134. data/lib/faker/religion/bible.rb +50 -0
  135. data/lib/faker/religion.rb +9 -0
  136. data/lib/faker/sports/chess.rb +90 -0
  137. data/lib/faker/sports/mountaineering.rb +22 -0
  138. data/lib/faker/sports/volleyball.rb +74 -0
  139. data/lib/faker/sports.rb +9 -0
  140. data/lib/faker/travel/airport.rb +43 -0
  141. data/lib/faker/travel/train_station.rb +54 -0
  142. data/lib/faker/travel.rb +9 -0
  143. data/lib/faker/tv_shows/archer.rb +51 -0
  144. data/lib/faker/tv_shows/big_bang_theory.rb +1 -1
  145. data/lib/faker/tv_shows/brooklyn_nine_nine.rb +38 -0
  146. data/lib/faker/tv_shows/buffy.rb +5 -5
  147. data/lib/faker/tv_shows/dr_who.rb +0 -13
  148. data/lib/faker/tv_shows/final_space.rb +51 -0
  149. data/lib/faker/tv_shows/michael_scott.rb +0 -3
  150. data/lib/faker/tv_shows/south_park.rb +15 -0
  151. data/lib/faker/tv_shows/spongebob.rb +50 -0
  152. data/lib/faker/tv_shows/suits.rb +1 -1
  153. data/lib/faker/tv_shows/supernatural.rb +48 -0
  154. data/lib/faker/tv_shows/the_fresh_prince_of_bel_air.rb +5 -5
  155. data/lib/faker/tv_shows/the_office.rb +37 -0
  156. data/lib/faker/tv_shows.rb +9 -0
  157. data/lib/faker/version.rb +2 -2
  158. data/lib/faker.rb +96 -79
  159. data/lib/helpers/base58.rb +1 -1
  160. data/lib/helpers/deprecator.rb +118 -0
  161. data/lib/helpers/positional_generator.rb +478 -0
  162. data/lib/helpers/unique_generator.rb +14 -14
  163. data/lib/locales/README.md +18 -2
  164. data/lib/locales/ar.yml +1608 -46
  165. data/lib/locales/bg.yml +935 -19
  166. data/lib/locales/ca-CAT.yml +347 -12
  167. data/lib/locales/ca.yml +580 -7
  168. data/lib/locales/da-DK.yml +529 -35
  169. data/lib/locales/de-AT.yml +3487 -25
  170. data/lib/locales/de-CH.yml +4359 -10
  171. data/lib/locales/de.yml +7185 -97
  172. data/lib/locales/ee.yml +1185 -27
  173. data/lib/locales/en/address.yml +1826 -562
  174. data/lib/locales/en/adjective.yml +179 -0
  175. data/lib/locales/en/airport.yml +381 -0
  176. data/lib/locales/en/ancient.yml +128 -4
  177. data/lib/locales/en/animal.yml +141 -2
  178. data/lib/locales/en/app.yml +89 -2
  179. data/lib/locales/en/appliance.yml +81 -2
  180. data/lib/locales/en/aqua_teen_hunger_force.yml +31 -31
  181. data/lib/locales/en/archer.yml +75 -0
  182. data/lib/locales/en/artist.yml +43 -1
  183. data/lib/locales/en/australia.yml +108 -0
  184. data/lib/locales/en/avatar.yml +57 -0
  185. data/lib/locales/en/back_to_the_future.yml +145 -117
  186. data/lib/locales/en/bank.yml +92 -3
  187. data/lib/locales/en/barcode.yml +24 -0
  188. data/lib/locales/en/beer.yml +232 -6
  189. data/lib/locales/en/bible.yml +87 -0
  190. data/lib/locales/en/big_bang_theory.yml +34 -35
  191. data/lib/locales/en/bird.yml +1280 -0
  192. data/lib/locales/en/bojack_horseman.yml +63 -3
  193. data/lib/locales/en/book.yml +486 -3
  194. data/lib/locales/en/bossa_nova.yml +110 -3
  195. data/lib/locales/en/breaking_bad.yml +110 -25
  196. data/lib/locales/en/brooklyn_nine_nine.yml +34 -0
  197. data/lib/locales/en/buffy.yml +239 -257
  198. data/lib/locales/en/business.yml +18 -2
  199. data/lib/locales/en/camera.yml +611 -0
  200. data/lib/locales/en/cannabis.yml +344 -10
  201. data/lib/locales/en/cat.yml +155 -3
  202. data/lib/locales/en/chess.yml +102 -0
  203. data/lib/locales/en/chiquito.yml +60 -61
  204. data/lib/locales/en/chuck_norris.yml +78 -79
  205. data/lib/locales/en/clash_of_clan.yml +99 -0
  206. data/lib/locales/en/code.yml +501 -1
  207. data/lib/locales/en/coffee.yml +450 -25
  208. data/lib/locales/en/color.yml +73 -1
  209. data/lib/locales/en/commerce.yml +117 -6
  210. data/lib/locales/en/community.yml +55 -30
  211. data/lib/locales/en/company.yml +1756 -13
  212. data/lib/locales/en/compass.yml +108 -12
  213. data/lib/locales/en/computer.yml +23 -4
  214. data/lib/locales/en/conan.yml +169 -0
  215. data/lib/locales/en/construction.yml +416 -422
  216. data/lib/locales/en/cosmere.yml +219 -54
  217. data/lib/locales/en/cowboy_bebop.yml +160 -0
  218. data/lib/locales/en/culture_series.yml +298 -298
  219. data/lib/locales/en/currency.yml +358 -3
  220. data/lib/locales/en/dc_comics.yml +178 -49
  221. data/lib/locales/en/demographic.yml +218 -5
  222. data/lib/locales/en/departed.yml +40 -44
  223. data/lib/locales/en/dessert.yml +78 -3
  224. data/lib/locales/en/device.yml +112 -4
  225. data/lib/locales/en/dnd.yml +615 -33
  226. data/lib/locales/en/dog.yml +262 -7
  227. data/lib/locales/en/doraemon.yml +284 -0
  228. data/lib/locales/en/dota.yml +704 -63
  229. data/lib/locales/en/dr_who.yml +468 -93
  230. data/lib/locales/en/dragon_ball.yml +243 -1
  231. data/lib/locales/en/driving_license.yml +181 -0
  232. data/lib/locales/en/drone.yml +95 -0
  233. data/lib/locales/en/dumb_and_dumber.yml +72 -56
  234. data/lib/locales/en/dune.yml +270 -131
  235. data/lib/locales/en/educator.yml +6 -0
  236. data/lib/locales/en/elder_scrolls.yml +582 -9
  237. data/lib/locales/en/electrical_components.yml +49 -3
  238. data/lib/locales/en/emotion.yml +480 -0
  239. data/lib/locales/en/esport.yml +58 -5
  240. data/lib/locales/en/fallout.yml +311 -133
  241. data/lib/locales/en/family_guy.yml +54 -4
  242. data/lib/locales/en/file.yml +109 -2
  243. data/lib/locales/en/final_fantasy_xiv.yml +754 -0
  244. data/lib/locales/en/final_space.yml +35 -0
  245. data/lib/locales/en/finance.yml +80 -4
  246. data/lib/locales/en/food.yml +1067 -10
  247. data/lib/locales/en/football.yml +121 -5
  248. data/lib/locales/en/fresh_prince_of_bel_air.yml +119 -70
  249. data/lib/locales/en/friends.yml +162 -3
  250. data/lib/locales/en/fullmetal_alchemist_brotherhood.yml +78 -0
  251. data/lib/locales/en/funny_name.yml +752 -1
  252. data/lib/locales/en/futurama.yml +7 -15
  253. data/lib/locales/en/game.yml +11 -0
  254. data/lib/locales/en/game_of_thrones.yml +2487 -5
  255. data/lib/locales/en/gender.yml +15 -3
  256. data/lib/locales/en/ghostbusters.yml +101 -88
  257. data/lib/locales/en/grateful_dead.yml +47 -45
  258. data/lib/locales/en/greek_philosophers.yml +44 -23
  259. data/lib/locales/en/hacker.yml +110 -5
  260. data/lib/locales/en/hackers.yml +53 -0
  261. data/lib/locales/en/half_life.yml +84 -3
  262. data/lib/locales/en/harry_potter.yml +323 -6
  263. data/lib/locales/en/heroes.yml +408 -3
  264. data/lib/locales/en/heroes_of_the_storm.yml +131 -4
  265. data/lib/locales/en/hey_arnold.yml +104 -21
  266. data/lib/locales/en/hipster.yml +203 -1
  267. data/lib/locales/en/hitchhikers_guide_to_the_galaxy.yml +243 -42
  268. data/lib/locales/en/hobby.yml +170 -0
  269. data/lib/locales/en/horse.yml +446 -2
  270. data/lib/locales/en/house.yml +34 -2
  271. data/lib/locales/en/how_i_met_your_mother.yml +97 -25
  272. data/lib/locales/en/how_to_train_your_dragon.yml +173 -0
  273. data/lib/locales/en/id_number.yml +7 -2
  274. data/lib/locales/en/industry_segments.yml +188 -4
  275. data/lib/locales/en/internet.yml +136 -3
  276. data/lib/locales/en/jack_handey.yml +54 -0
  277. data/lib/locales/en/job.yml +98 -7
  278. data/lib/locales/en/kamen_rider.yml +718 -0
  279. data/lib/locales/en/kpop.yml +954 -80
  280. data/lib/locales/en/league_of_legends.yml +285 -6
  281. data/lib/locales/en/lebowski.yml +58 -40
  282. data/lib/locales/en/lorem.yml +1095 -6
  283. data/lib/locales/en/lovecraft.yml +76 -6
  284. data/lib/locales/en/markdown.yml +12 -2
  285. data/lib/locales/en/marketing.yml +54 -1
  286. data/lib/locales/en/measurement.yml +42 -8
  287. data/lib/locales/en/michael_scott.yml +41 -42
  288. data/lib/locales/en/military.yml +179 -5
  289. data/lib/locales/en/minecraft.yml +273 -0
  290. data/lib/locales/en/mitch_hedberg.yml +46 -0
  291. data/lib/locales/en/mountain.yml +171 -0
  292. data/lib/locales/en/mountaineering.yml +14 -0
  293. data/lib/locales/en/movie.yml +188 -175
  294. data/lib/locales/en/music.yml +461 -29
  295. data/lib/locales/en/myst.yml +87 -31
  296. data/lib/locales/en/name.yml +6068 -6
  297. data/lib/locales/en/naruto.yml +230 -0
  298. data/lib/locales/en/nato_phonetic_alphabet.yml +27 -1
  299. data/lib/locales/en/new_girl.yml +35 -37
  300. data/lib/locales/en/one_piece.yml +359 -6
  301. data/lib/locales/en/opera.yml +169 -1
  302. data/lib/locales/en/overwatch.yml +2648 -2622
  303. data/lib/locales/en/parks_and_rec.yml +33 -4
  304. data/lib/locales/en/pearl_jam.yml +207 -207
  305. data/lib/locales/en/phish.yml +388 -389
  306. data/lib/locales/en/phone_number.yml +78 -3
  307. data/lib/locales/en/pokemon.yml +417 -4
  308. data/lib/locales/en/prince.yml +219 -219
  309. data/lib/locales/en/princess_bride.yml +48 -2
  310. data/lib/locales/en/programming_language.yml +753 -3
  311. data/lib/locales/en/quote.yml +606 -163
  312. data/lib/locales/en/rajnikanth.yml +74 -74
  313. data/lib/locales/en/relationship.yml +29 -6
  314. data/lib/locales/en/restaurant.yml +31 -31
  315. data/lib/locales/en/rick_and_morty.yml +116 -3
  316. data/lib/locales/en/rock_band.yml +228 -1
  317. data/lib/locales/en/rupaul.yml +120 -122
  318. data/lib/locales/en/science.yml +481 -3
  319. data/lib/locales/en/seinfeld.yml +110 -3
  320. data/lib/locales/en/shakespeare.yml +46 -53
  321. data/lib/locales/en/silicon_valley.yml +122 -50
  322. data/lib/locales/en/simpsons.yml +897 -691
  323. data/lib/locales/en/slack_emoji.yml +874 -8
  324. data/lib/locales/en/smashing_pumpkins.yml +382 -0
  325. data/lib/locales/en/source.yml +35 -0
  326. data/lib/locales/en/south_park.yml +360 -2
  327. data/lib/locales/en/space.yml +373 -14
  328. data/lib/locales/en/spongebob.yml +489 -0
  329. data/lib/locales/en/sport.yml +130 -0
  330. data/lib/locales/en/star_trek.yml +105 -4
  331. data/lib/locales/en/star_wars.yml +525 -528
  332. data/lib/locales/en/stargate.yml +65 -18
  333. data/lib/locales/en/stranger_thing.yml +31 -33
  334. data/lib/locales/en/street_fighter.yml +1524 -0
  335. data/lib/locales/en/studio_ghibli.yml +107 -0
  336. data/lib/locales/en/subscription.yml +47 -5
  337. data/lib/locales/en/super_mario.yml +58 -0
  338. data/lib/locales/en/super_smash_bros.yml +23 -6
  339. data/lib/locales/en/superhero.yml +574 -4
  340. data/lib/locales/en/supernatural.yml +141 -0
  341. data/lib/locales/en/sword_art_online.yml +327 -331
  342. data/lib/locales/en/tarkov.yml +593 -0
  343. data/lib/locales/en/tea.yml +172 -0
  344. data/lib/locales/en/team.yml +125 -3
  345. data/lib/locales/en/the_expanse.yml +92 -4
  346. data/lib/locales/en/the_it_crowd.yml +148 -152
  347. data/lib/locales/en/the_kingkiller_chronicle.yml +56 -0
  348. data/lib/locales/en/the_office.yml +82 -0
  349. data/lib/locales/en/the_room.yml +68 -0
  350. data/lib/locales/en/the_thick_of_it.yml +83 -3
  351. data/lib/locales/en/theater.yml +597 -0
  352. data/lib/locales/en/tolkien.yml +2453 -0
  353. data/lib/locales/en/touhou.yml +839 -0
  354. data/lib/locales/en/train_station.yml +280 -0
  355. data/lib/locales/en/tron.yml +227 -0
  356. data/lib/locales/en/twin_peaks.yml +130 -3
  357. data/lib/locales/en/umphreys_mcgee.yml +266 -1
  358. data/lib/locales/en/university.yml +15 -2
  359. data/lib/locales/en/v_for_vendetta.yml +157 -160
  360. data/lib/locales/en/vehicle.yml +2809 -75
  361. data/lib/locales/en/venture_bros.yml +225 -4
  362. data/lib/locales/en/verbs.yml +3785 -5
  363. data/lib/locales/en/volleyball.yml +501 -0
  364. data/lib/locales/en/warhammer_fantasy.yml +540 -573
  365. data/lib/locales/en/witcher.yml +426 -7
  366. data/lib/locales/en/world_cup.yml +1132 -235
  367. data/lib/locales/en/world_of_warcraft.yml +122 -4
  368. data/lib/locales/en/yoda.yml +38 -1
  369. data/lib/locales/en/zelda.yml +962 -4
  370. data/lib/locales/en-AU.yml +725 -48
  371. data/lib/locales/en-BORK.yml +104 -1
  372. data/lib/locales/en-CA.yml +373 -18
  373. data/lib/locales/en-GB.yml +118 -8
  374. data/lib/locales/en-IND.yml +1259 -16
  375. data/lib/locales/en-KE.yml +212 -0
  376. data/lib/locales/en-MS.yml +364 -16
  377. data/lib/locales/en-NEP.yml +212 -35
  378. data/lib/locales/en-NG.yml +737 -65
  379. data/lib/locales/en-NZ.yml +1153 -121
  380. data/lib/locales/en-PAK.yml +392 -9
  381. data/lib/locales/en-SG.yml +581 -15
  382. data/lib/locales/en-TH.yml +1 -1
  383. data/lib/locales/en-UG.yml +374 -75
  384. data/lib/locales/en-US.yml +6921 -81
  385. data/lib/locales/en-ZA.yml +1394 -13
  386. data/lib/locales/en-au-ocker.yml +266 -21
  387. data/lib/locales/en.yml +0 -3
  388. data/lib/locales/es-AR.yml +4570 -0
  389. data/lib/locales/es-MX.yml +1907 -41
  390. data/lib/locales/es.yml +2172 -52
  391. data/lib/locales/fa.yml +1624 -5
  392. data/lib/locales/fi-FI.yml +316 -16
  393. data/lib/locales/fr/address.yml +773 -0
  394. data/lib/locales/fr/adjective.yml +266 -0
  395. data/lib/locales/fr/ancient.yml +141 -0
  396. data/lib/locales/fr/animal.yml +122 -0
  397. data/lib/locales/fr/appliance.yml +69 -0
  398. data/lib/locales/fr/book.yml +31 -0
  399. data/lib/locales/fr/color.yml +34 -0
  400. data/lib/locales/fr/company.yml +497 -0
  401. data/lib/locales/fr/compass.yml +71 -0
  402. data/lib/locales/fr/demographic.yml +6 -0
  403. data/lib/locales/fr/gender.yml +21 -0
  404. data/lib/locales/fr/internet.yml +15 -0
  405. data/lib/locales/fr/lorem.yml +1094 -0
  406. data/lib/locales/fr/measurement.yml +34 -0
  407. data/lib/locales/fr/name.yml +1193 -0
  408. data/lib/locales/fr/phone_number.yml +38 -0
  409. data/lib/locales/fr/pokemon.yml +421 -0
  410. data/lib/locales/fr-CA.yml +2754 -45
  411. data/lib/locales/fr-CH.yml +2455 -42
  412. data/lib/locales/fr.yml +2 -112
  413. data/lib/locales/he.yml +255 -9
  414. data/lib/locales/hy.yml +3630 -119
  415. data/lib/locales/id.yml +839 -10
  416. data/lib/locales/it.yml +1310 -31
  417. data/lib/locales/ja/README.md +13 -0
  418. data/lib/locales/ja/address.yml +363 -0
  419. data/lib/locales/ja/adjective.yml +148 -0
  420. data/lib/locales/ja/ancient.yml +18 -0
  421. data/lib/locales/ja/animal.yml +87 -0
  422. data/lib/locales/ja/artist.yml +46 -0
  423. data/lib/locales/ja/bank.yml +139 -0
  424. data/lib/locales/ja/book.yml +496 -0
  425. data/lib/locales/ja/cat.yml +79 -0
  426. data/lib/locales/ja/coffee.yml +22 -0
  427. data/lib/locales/ja/color.yml +35 -0
  428. data/lib/locales/ja/commerce.yml +103 -0
  429. data/lib/locales/ja/company.yml +26 -0
  430. data/lib/locales/ja/dog.yml +339 -0
  431. data/lib/locales/ja/emotion.yml +49 -0
  432. data/lib/locales/ja/food.yml +41 -0
  433. data/lib/locales/ja/football.yml +115 -0
  434. data/lib/locales/ja/gender.yml +6 -0
  435. data/lib/locales/ja/lorem.yml +1020 -0
  436. data/lib/locales/ja/name.yml +213 -0
  437. data/lib/locales/ja/naruto.yml +230 -0
  438. data/lib/locales/ja/overwatch.yml +37 -0
  439. data/lib/locales/ja/phone_number.yml +13 -0
  440. data/lib/locales/ja/pokemon.yml +441 -0
  441. data/lib/locales/ja/relationship.yml +33 -0
  442. data/lib/locales/ja/restaurant.yml +82 -0
  443. data/lib/locales/ja/space.yml +23 -0
  444. data/lib/locales/ja/sport.yml +130 -0
  445. data/lib/locales/ja/studio_ghibli.yml +112 -0
  446. data/lib/locales/ja/subscription.yml +50 -0
  447. data/lib/locales/ja/super_mario.yml +73 -0
  448. data/lib/locales/ja/super_smash_bros.yml +8 -0
  449. data/lib/locales/ja/touhou.yml +466 -0
  450. data/lib/locales/ja/university.yml +22 -0
  451. data/lib/locales/ja/zelda.yml +19 -0
  452. data/lib/locales/ko.yml +1380 -29
  453. data/lib/locales/lt.yml +315 -0
  454. data/lib/locales/lv.yml +1221 -27
  455. data/lib/locales/mi-NZ.yml +283 -0
  456. data/lib/locales/nb-NO.yml +518 -27
  457. data/lib/locales/nl.yml +33514 -55
  458. data/lib/locales/pl.yml +4008 -38
  459. data/lib/locales/pt-BR.yml +8207 -660
  460. data/lib/locales/pt.yml +844 -43
  461. data/lib/locales/ru.yml +1355 -30
  462. data/lib/locales/sk.yml +4416 -41
  463. data/lib/locales/sv.yml +731 -41
  464. data/lib/locales/th.yml +375 -375
  465. data/lib/locales/tr.yml +77 -19
  466. data/lib/locales/uk.yml +1810 -44
  467. data/lib/locales/vi.yml +392 -48
  468. data/lib/locales/zh-CN/bank.yml +17 -0
  469. data/lib/locales/zh-CN.yml +540 -18
  470. data/lib/locales/zh-TW.yml +1030 -14
  471. metadata +188 -141
  472. data/History.md +0 -176
  473. data/lib/faker/default/bossa_nova.rb +0 -33
  474. data/lib/faker/default/fillmurray.rb +0 -45
  475. data/lib/faker/default/internet.rb +0 -358
  476. data/lib/faker/default/lorem_pixel.rb +0 -69
  477. data/lib/faker/default/twitter.rb +0 -223
  478. data/lib/locales/en/hobbit.yml +0 -19
  479. data/lib/locales/en/lord_of_the_rings.yml +0 -6
  480. data/lib/locales/en/show.yml +0 -597
  481. data/lib/locales/ja.yml +0 -101
  482. /data/lib/faker/{books → default}/book.rb +0 -0
  483. /data/lib/faker/{games → default}/game.rb +0 -0
  484. /data/lib/faker/{movies → default}/movie.rb +0 -0
  485. /data/lib/faker/{default/internet_http.rb → internet/http.rb} +0 -0
data/History.md DELETED
@@ -1,176 +0,0 @@
1
- ## v1.6.5 (2016-07-08)
2
- * Removed Faker::ChuckNorris.name
3
-
4
- ## v1.6.4 (2016-07-06)
5
- * Removed support for Ruby 1.9.3
6
- * Added Faker::ChuckNorris, Faker::Crypto, Faker::Educator, Faker::File, Faker::Music, Faker::Space, Faker::Vehicle, and Faker::Yoda
7
- * Fixed bug with credit card types
8
- * DST fixes in Faker::Time
9
- * Added Faker::Name.name_with_middle
10
- * Added Faker::Code.imei
11
- * Added Faker::Code.asin
12
- * Added Faker::Lorem.question and Faker::Lorem.questions
13
- * Added Faker::Internet.private_ip_v4_address
14
- * Added Faker::Company.australian_business_number
15
- * Other miscellaneous fixes and locale updates
16
-
17
- ## v1.6.3 (2016-02-23)
18
- * Fix for UTF problem in Ruby 1.9.3
19
- * Fix for Faker::StarWars.character
20
- * Updated sv locale
21
-
22
- ## v1.6.2 (2016-02-20)
23
- * Fix for locale-switching (Russian email addresses)
24
- * Added Faker::Beer, Faker::Boolean, Faker::Cat, Faker::StarWars, and Faker::Superhero
25
- * Added Faker::Color.color_name
26
- * Added Faker::Date.between_except
27
- * Fixed Faker::Internet.ip_v4_cidr and Faker::Internet.ip_v6_cidr
28
- * Added locales: ca, ca-CAT, da-DK, fi-FI, and pt
29
-
30
- ## v1.6.1 (2015-11-23)
31
- * Fix for locale issues in tests
32
-
33
- ## v1.6.0 (2015-11-23)
34
- * Lots of bug fixes -- most notably, a fix for email addresses and domains in non-en locales
35
- * Updated locales: de, en-AU, en-NZ, en-SG, en-US, en-au-ocker, en, es, fr, he, it, ja, nb-NO, pl, pt-BR, sk, and zh-CN
36
- * Updated classes: Address, Avatar, Book, Code, Commerce, Company, Hipster, IDNumber, Internet, Number, Placeholdit, Shakespeare, and Time
37
-
38
- ## v1.5.0 (2015-08-17)
39
- * Added logos
40
- * Added Slack Emoji
41
- * Updated image generators
42
- * Updated Dutch Locale
43
- * Added support for generating RGB values, HSL colors, alpha channel, and HSLA colors
44
- * Added locale for Uganda
45
- * Added basic Ukrainian support
46
- * Added university name generator
47
- * Updated documentation
48
- * Updated a variety of locales
49
- * Various fixes
50
-
51
- ## v1.4.3 (2014-08-15)
52
- * Updated Russian locale
53
- * Added EIN generator
54
- * Fixed Swedish locale
55
- * Added birthday to Faker::Date
56
- * Added Faker::App
57
-
58
- ## v1.4.2 (2014-07-15)
59
- * Added Swedish locale
60
- * README update
61
-
62
- ## v1.4.1 (2014-07-04)
63
- * Bugfix and cleanup
64
-
65
- ## v1.4.0 (2014-07-03)
66
- * Many enhancements and bugfixes
67
-
68
- ## v1.3.0 (2014-03-08)
69
- * Many enhancements and few bugfixes
70
-
71
- ## v1.2.0 (2013-07-27)
72
- * Many major and minor enhancements :)
73
-
74
- ## v1.1.2 (2012-09-18)
75
- * 1 minor change:
76
- * Fixed Ruby 1.8 compatibility
77
-
78
- ## v1.1.1 (2012-09-17)
79
- * 1 minor change:
80
- * Removed ja locale because of parse errors
81
-
82
- ## v1.1.0 (2012-09-15)
83
- * 1 major change:
84
- * Removed deprecated methods from Address: earth_country, us_state, us_state_abbr, uk_postcode, uk_county
85
- * Many minor changes (please see github pull requests for credits)
86
- * Added many localizations
87
- * Added range and array support for Lorem
88
-
89
- ## v1.0.1 (2011-09-27)
90
- * 1 minor enhancement
91
- * Added safe_email method to get someaddress@example.com [Kazimierz Kiełkowicz]
92
- * 1 bug fix:
93
- * Use the locale fallback properly when parsing string formats
94
-
95
- ## v1.0.0 (2011-09-08)
96
- * 2 major enhancements
97
- * Moved all formats to locale files
98
- * Stopped interfering with I18n's global settings for fallbacks
99
- * 3 minor bug fixes:
100
- * Ruby 1.9.2 fixes [eMxyzptlk]
101
- * UTF8 fixes [maxmiliano]
102
- * Updated IPv4 generator to return valid addresses [Sylvain Desbureaux]
103
- * Many minor enhancements:
104
- * Added bork locale for bork-ified lorem [johnbentcope]
105
- * Added IPv6 address generator [jc00ke]
106
- * Removed deprecation warnings for Array#rand [chrismarshall]
107
- * Added German translation and I18n improvments [Matthias Kühnert]
108
- * Added Dutch translation [moretea]
109
- * Added Lat/Long generator [Andy Callaghan]
110
- * Added buzzword-laden title generator [supercleanse]
111
- * Added optional extended wordlist for lorem [chriskottom]
112
- * Updated German translation [Jan Schwenzien]
113
- * Locale improvements [suweller]
114
- * Added limit to lorem generator [darrenterhune]
115
- * Added Brazilian Portuguese translation [maxmiliano]
116
- * Added Australian translation [madeindata]
117
- * Added Canadian translation [igbanam]
118
- * Added Norwegian translation [kytrinyx]
119
- * Lots of translation-related cleanup [kytrinyx]
120
-
121
-
122
- ## v0.9.5 (2011-01-27)
123
- * 1 minor bug fix:
124
- * Fixed YAML [Aaron Patterson]
125
- * 3 minor enhancements:
126
- * Added default rake task to run all tests [Aaron Patterson]
127
- * Removed shuffle method [Aaron Patterson]
128
- * Use psych if present [Aaron Patterson]
129
-
130
- ## v0.9.4 (2010-12-29)
131
- * 1 minor bug fix:
132
- * Stopped getting in the way of Rails' late locale loading
133
-
134
- ## v0.9.3 (2010-12-28)
135
- * 1 minor enhancement:
136
- * Added a faker namespace for translations
137
-
138
- ## v0.9.2 (2010-12-22)
139
- * 1 bug fix:
140
- * Stopped stomping on I18n load path
141
-
142
- ## v0.9.1 (2010-12-22)
143
- * 1 bug fix:
144
- * Stopped setting I18n default locale
145
- * 1 major enhancement:
146
- * Added method_missing to Address to add methods based on data in locale files
147
- * 1 minor enhancement:
148
- * Added Swiss locale [Lukas Westermann]
149
-
150
- ## v0.9.0 (2010-12-21)
151
- * 1 major enhancement:
152
- * Moved strings and some formats to locale files
153
-
154
- ## v0.3.1 (2008-04-03)
155
- * 1 minor enhancement:
156
- * Added city to Address
157
-
158
- ## v0.3.0 (2008-01-01)
159
- * 3 major enhancements:
160
- * Added Lorem to generate fake Latin
161
- * Added secondary_address to Address, and made inclusion of
162
- secondary address in street_address optional (false by
163
- default).
164
- * Added UK address methods [Caius Durling]
165
-
166
- ## v0.2.1 (2007-12-05)
167
- * 1 major enhancement:
168
- * Dropped facets to avoid conflict with ActiveSupport
169
- * 2 minor enhancements:
170
- * Changed the output of user_name to randomly separate with a . or _
171
- * Added a few tests
172
-
173
- ## v0.1.0 (2007-11-22)
174
-
175
- * 1 major enhancement:
176
- * Initial release
@@ -1,33 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Faker
4
- class BossaNova < Base
5
- class << self
6
- ##
7
- # Produces the name of a bossa nova artist.
8
- #
9
- # @return [String]
10
- #
11
- # @example
12
- # Faker::BossaNova.artist #=> "Tom Jobin"
13
- #
14
- # @faker.version 1.8.3
15
- def artist
16
- fetch('bossa_nova.artists')
17
- end
18
-
19
- ##
20
- # Produces a bossa nova song.
21
- #
22
- # @return [String]
23
- #
24
- # @example
25
- # Faker::BossaNova.song #=> "Chega de Saudade"
26
- #
27
- # @faker.version 1.8.3
28
- def song
29
- fetch('bossa_nova.songs')
30
- end
31
- end
32
- end
33
- end
@@ -1,45 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Faker
4
- class Fillmurray < Base
5
- class << self
6
- # rubocop:disable Metrics/ParameterLists
7
-
8
- ##
9
- # Produces the URL of an image from Fill Murray, a site which hosts
10
- # exclusively photographs of actor Bill Murray.
11
- #
12
- # @param grayscale [Boolean] Whether to return a grayscale image.
13
- # @param width [Integer] The iamage width.
14
- # @param height [Integer] The image height.
15
- # @return [String]
16
- #
17
- # @example
18
- # Faker::Fillmurray.image #=> "https://www.fillmurray.com/300/300"
19
- #
20
- # @example
21
- # Faker::Fillmurray.image(grayscale: true)
22
- # #=> "https://fillmurray.com/g/300/300"
23
- #
24
- # @example
25
- # Faker::Fillmurray.image(grayscale: false, width: 200, height: 400)
26
- # #=> "https://fillmurray.com/200/400"
27
- #
28
- # @faker.version 1.7.1
29
- def image(legacy_grayscale = NOT_GIVEN, legacy_width = NOT_GIVEN, legacy_height = NOT_GIVEN, grayscale: false, width: 200, height: 200)
30
- warn_for_deprecated_arguments do |keywords|
31
- keywords << :grayscale if legacy_grayscale != NOT_GIVEN
32
- keywords << :width if legacy_width != NOT_GIVEN
33
- keywords << :height if legacy_height != NOT_GIVEN
34
- end
35
-
36
- raise ArgumentError, 'Width should be a number' unless width.to_s =~ /^\d+$/
37
- raise ArgumentError, 'Height should be a number' unless height.to_s =~ /^\d+$/
38
- raise ArgumentError, 'Grayscale should be a boolean' unless [true, false].include?(grayscale)
39
-
40
- "https://www.fillmurray.com#{'/g' if grayscale == true}/#{width}/#{height}"
41
- end
42
- # rubocop:enable Metrics/ParameterLists
43
- end
44
- end
45
- end
@@ -1,358 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Faker
4
- class Internet < Base
5
- class << self
6
- def email(legacy_name = NOT_GIVEN, legacy_separators = NOT_GIVEN, name: nil, separators: nil, domain: nil)
7
- warn_for_deprecated_arguments do |keywords|
8
- keywords << :name if legacy_name != NOT_GIVEN
9
- keywords << :separators if legacy_separators != NOT_GIVEN
10
- end
11
-
12
- local_part = if separators
13
- username(specifier: name, separators: separators)
14
- else
15
- username(specifier: name)
16
- end
17
-
18
- sanitized_local_part = sanitize_email_local_part(local_part)
19
- construct_email(sanitized_local_part, domain_name(domain: domain))
20
- end
21
-
22
- def free_email(legacy_name = NOT_GIVEN, name: nil)
23
- warn_for_deprecated_arguments do |keywords|
24
- keywords << :name if legacy_name != NOT_GIVEN
25
- end
26
-
27
- construct_email(
28
- sanitize_email_local_part(username(specifier: name)),
29
- fetch('internet.free_email')
30
- )
31
- end
32
-
33
- def safe_email(legacy_name = NOT_GIVEN, name: nil)
34
- warn_for_deprecated_arguments do |keywords|
35
- keywords << :name if legacy_name != NOT_GIVEN
36
- end
37
-
38
- construct_email(
39
- sanitize_email_local_part(username(specifier: name)),
40
- 'example.' + sample(%w[org com net])
41
- )
42
- end
43
-
44
- def username(legacy_specifier = NOT_GIVEN, legacy_separators = NOT_GIVEN, specifier: nil, separators: %w[. _])
45
- warn_for_deprecated_arguments do |keywords|
46
- keywords << :specifier if legacy_specifier != NOT_GIVEN
47
- keywords << :separators if legacy_separators != NOT_GIVEN
48
- end
49
-
50
- with_locale(:en) do
51
- return shuffle(specifier.scan(/[[:word:]]+/)).join(sample(separators)).downcase if specifier.respond_to?(:scan)
52
-
53
- if specifier.is_a?(Integer)
54
- # If specifier is Integer and has large value, Argument error exception is raised to overcome memory full error
55
- raise ArgumentError, 'Given argument is too large' if specifier > 10**6
56
-
57
- tries = 0 # Don't try forever in case we get something like 1_000_000.
58
- result = nil
59
- loop do
60
- result = username(specifier: nil, separators: separators)
61
- tries += 1
62
- break unless result.length < specifier && tries < 7
63
- end
64
- return result * (specifier / result.length + 1) if specifier.positive?
65
- elsif specifier.is_a?(Range)
66
- tries = 0
67
- result = nil
68
- loop do
69
- result = username(specifier: specifier.min, separators: separators)
70
- tries += 1
71
- break unless !specifier.include?(result.length) && tries < 7
72
- end
73
- return result[0...specifier.max]
74
- end
75
-
76
- sample([
77
- Char.prepare(Name.first_name),
78
- [Name.first_name, Name.last_name].map do |name|
79
- Char.prepare(name)
80
- end.join(sample(separators))
81
- ])
82
- end
83
- end
84
-
85
- # rubocop:disable Metrics/ParameterLists
86
-
87
- ##
88
- # Produces a randomized string of characters suitable for passwords
89
- #
90
- # @param min_length [Integer] The minimum length of the password
91
- # @param max_length [Integer] The maximum length of the password
92
- # @param mix_case [Boolean] Toggles if uppercased letters are allowed. If true, at least one will be added.
93
- # @param special_characters [Boolean] Toggles if special characters are allowed. If true, at least one will be added.
94
- #
95
- # @return [String]
96
- #
97
- # @example
98
- # Faker::Internet.password #=> "Vg5mSvY1UeRg7"
99
- # @example
100
- # Faker::Internet.password(min_length: 8) #=> "YfGjIk0hGzDqS0"
101
- # @example
102
- # Faker::Internet.password(min_length: 10, max_length: 20) #=> "EoC9ShWd1hWq4vBgFw"
103
- # @example
104
- # Faker::Internet.password(min_length: 10, max_length: 20, mix_case: true) #=> "3k5qS15aNmG"
105
- # @example
106
- # Faker::Internet.password(min_length: 10, max_length: 20, mix_case: true, special_characters: true) #=> "*%NkOnJsH4"
107
- #
108
- # @faker.version 2.1.3
109
- def password(legacy_min_length = NOT_GIVEN, legacy_max_length = NOT_GIVEN, legacy_mix_case = NOT_GIVEN, legacy_special_characters = NOT_GIVEN, min_length: 8, max_length: 16, mix_case: true, special_characters: false)
110
- # rubocop:enable Metrics/ParameterLists
111
- warn_for_deprecated_arguments do |keywords|
112
- keywords << :min_length if legacy_min_length != NOT_GIVEN
113
- keywords << :max_length if legacy_max_length != NOT_GIVEN
114
- keywords << :mix_case if legacy_mix_case != NOT_GIVEN
115
- keywords << :special_characters if legacy_special_characters != NOT_GIVEN
116
- end
117
-
118
- min_alpha = mix_case ? 2 : 0
119
- temp = Lorem.characters(number: min_length, min_alpha: min_alpha)
120
- diff_length = max_length - min_length
121
-
122
- if diff_length.positive?
123
- diff_rand = rand(diff_length + 1)
124
- temp += Lorem.characters(number: diff_rand)
125
- end
126
-
127
- if mix_case
128
- alpha_count = 0
129
- temp.chars.each_with_index do |char, index|
130
- if char =~ /[[:alpha:]]/
131
- temp[index] = char.upcase if alpha_count.even?
132
- alpha_count += 1
133
- end
134
- end
135
- end
136
-
137
- if special_characters
138
- chars = %w[! @ # $ % ^ & *]
139
- rand(1..min_length).times do |i|
140
- temp[i] = chars[rand(chars.length)]
141
- end
142
- end
143
-
144
- temp
145
- end
146
-
147
- def domain_name(legacy_subdomain = NOT_GIVEN, subdomain: false, domain: nil)
148
- warn_for_deprecated_arguments do |keywords|
149
- keywords << :subdomain if legacy_subdomain != NOT_GIVEN
150
- end
151
-
152
- with_locale(:en) do
153
- if domain
154
- domain
155
- .split('.')
156
- .map { |domain_part| Char.prepare(domain_part) }
157
- .tap do |domain_elements|
158
- domain_elements << domain_suffix if domain_elements.length < 2
159
- domain_elements.unshift(Char.prepare(domain_word)) if subdomain && domain_elements.length < 3
160
- end.join('.')
161
- else
162
- [domain_word, domain_suffix].tap do |domain_elements|
163
- domain_elements.unshift(Char.prepare(domain_word)) if subdomain
164
- end.join('.')
165
- end
166
- end
167
- end
168
-
169
- def fix_umlauts(legacy_string = NOT_GIVEN, string: '')
170
- warn_for_deprecated_arguments do |keywords|
171
- keywords << :string if legacy_string != NOT_GIVEN
172
- end
173
-
174
- Char.fix_umlauts(string)
175
- end
176
-
177
- def domain_word
178
- with_locale(:en) { Char.prepare(Company.name.split(' ').first) }
179
- end
180
-
181
- def domain_suffix
182
- fetch('internet.domain_suffix')
183
- end
184
-
185
- def mac_address(legacy_prefix = NOT_GIVEN, prefix: '')
186
- warn_for_deprecated_arguments do |keywords|
187
- keywords << :prefix if legacy_prefix != NOT_GIVEN
188
- end
189
-
190
- prefix_digits = prefix.split(':').map { |d| d.to_i(16) }
191
- address_digits = Array.new((6 - prefix_digits.size)) { rand(256) }
192
- (prefix_digits + address_digits).map { |d| format('%02x', d) }.join(':')
193
- end
194
-
195
- def ip_v4_address
196
- [rand_in_range(0, 255), rand_in_range(0, 255),
197
- rand_in_range(0, 255), rand_in_range(0, 255)].join('.')
198
- end
199
-
200
- def private_ip_v4_address
201
- addr = nil
202
- loop do
203
- addr = ip_v4_address
204
- break if private_net_checker[addr]
205
- end
206
- addr
207
- end
208
-
209
- def public_ip_v4_address
210
- addr = nil
211
- loop do
212
- addr = ip_v4_address
213
- break unless reserved_net_checker[addr]
214
- end
215
- addr
216
- end
217
-
218
- def private_nets_regex
219
- [
220
- /^10\./, # 10.0.0.0 - 10.255.255.255
221
- /^100\.(6[4-9]|[7-9]\d|1[0-1]\d|12[0-7])\./, # 100.64.0.0 - 100.127.255.255
222
- /^127\./, # 127.0.0.0 - 127.255.255.255
223
- /^169\.254\./, # 169.254.0.0 - 169.254.255.255
224
- /^172\.(1[6-9]|2\d|3[0-1])\./, # 172.16.0.0 - 172.31.255.255
225
- /^192\.0\.0\./, # 192.0.0.0 - 192.0.0.255
226
- /^192\.168\./, # 192.168.0.0 - 192.168.255.255
227
- /^198\.(1[8-9])\./ # 198.18.0.0 - 198.19.255.255
228
- ]
229
- end
230
-
231
- def private_net_checker
232
- ->(addr) { private_nets_regex.any? { |net| net =~ addr } }
233
- end
234
-
235
- def reserved_nets_regex
236
- [
237
- /^0\./, # 0.0.0.0 - 0.255.255.255
238
- /^192\.0\.2\./, # 192.0.2.0 - 192.0.2.255
239
- /^192\.88\.99\./, # 192.88.99.0 - 192.88.99.255
240
- /^198\.51\.100\./, # 198.51.100.0 - 198.51.100.255
241
- /^203\.0\.113\./, # 203.0.113.0 - 203.0.113.255
242
- /^(22[4-9]|23\d)\./, # 224.0.0.0 - 239.255.255.255
243
- /^(24\d|25[0-5])\./ # 240.0.0.0 - 255.255.255.254 and 255.255.255.255
244
- ]
245
- end
246
-
247
- def reserved_net_checker
248
- ->(addr) { (private_nets_regex + reserved_nets_regex).any? { |net| net =~ addr } }
249
- end
250
-
251
- def ip_v4_cidr
252
- "#{ip_v4_address}/#{rand(1..31)}"
253
- end
254
-
255
- def ip_v6_address
256
- (1..8).map { rand(65_536).to_s(16) }.join(':')
257
- end
258
-
259
- def ip_v6_cidr
260
- "#{ip_v6_address}/#{rand(1..127)}"
261
- end
262
-
263
- # rubocop:disable Metrics/ParameterLists
264
- def url(legacy_host = NOT_GIVEN, legacy_path = NOT_GIVEN, legacy_scheme = NOT_GIVEN, host: domain_name, path: "/#{username}", scheme: 'http')
265
- # rubocop:enable Metrics/ParameterLists
266
- warn_for_deprecated_arguments do |keywords|
267
- keywords << :host if legacy_host != NOT_GIVEN
268
- keywords << :path if legacy_path != NOT_GIVEN
269
- keywords << :scheme if legacy_scheme != NOT_GIVEN
270
- end
271
-
272
- "#{scheme}://#{host}#{path}"
273
- end
274
-
275
- def slug(legacy_words = NOT_GIVEN, legacy_glue = NOT_GIVEN, words: nil, glue: nil)
276
- warn_for_deprecated_arguments do |keywords|
277
- keywords << :words if legacy_words != NOT_GIVEN
278
- keywords << :glue if legacy_glue != NOT_GIVEN
279
- end
280
-
281
- glue ||= sample(%w[- _])
282
- (words || Faker::Lorem.words(number: 2).join(' ')).delete(',.').gsub(' ', glue).downcase
283
- end
284
-
285
- def device_token
286
- shuffle(rand(16**64).to_s(16).rjust(64, '0').chars.to_a).join
287
- end
288
-
289
- def user_agent(legacy_vendor = NOT_GIVEN, vendor: nil)
290
- warn_for_deprecated_arguments do |keywords|
291
- keywords << :vendor if legacy_vendor != NOT_GIVEN
292
- end
293
-
294
- agent_hash = translate('faker.internet.user_agent')
295
- agents = vendor.respond_to?(:to_sym) && agent_hash[vendor.to_sym] || agent_hash[sample(agent_hash.keys)]
296
- sample(agents)
297
- end
298
-
299
- def uuid
300
- # borrowed from: https://github.com/ruby/ruby/blob/d48783bb0236db505fe1205d1d9822309de53a36/lib/securerandom.rb#L250
301
- ary = Faker::Config.random.bytes(16).unpack('NnnnnN')
302
- ary[2] = (ary[2] & 0x0fff) | 0x4000
303
- ary[3] = (ary[3] & 0x3fff) | 0x8000
304
- '%08x-%04x-%04x-%04x-%04x%08x' % ary # rubocop:disable Style/FormatString
305
- end
306
-
307
- ##
308
- # Produces a random string of alphabetic characters, (no digits)
309
- #
310
- # @param length [Integer] The length of the string to generate
311
- # @param padding [Boolean] Toggles if a final equal '=' will be added.
312
- # @param urlsafe [Boolean] Toggles charset to '-' and '_' instead of '+' and '/'.
313
- #
314
- # @return [String]
315
- #
316
- # @example
317
- # Faker::Internet.base64
318
- # #=> "r_hbZ2DSD-ZACzZT"
319
- # @example
320
- # Faker::Internet.base64(length: 4, padding: true, urlsafe: false)
321
- # #=> "x1/R="
322
- #
323
- # @faker.version 2.11.0
324
- def base64(length: 16, padding: false, urlsafe: true)
325
- char_range = [
326
- Array('0'..'9'),
327
- Array('A'..'Z'),
328
- Array('a'..'z'),
329
- urlsafe ? %w[- _] : %w[+ /]
330
- ].flatten
331
- s = Array.new(length) { sample(char_range) }.join
332
- s += '=' if padding
333
- s
334
- end
335
-
336
- alias user_name username
337
-
338
- private
339
-
340
- def sanitize_email_local_part(local_part)
341
- char_range = [
342
- Array('0'..'9'),
343
- Array('A'..'Z'),
344
- Array('a'..'z'),
345
- "!#$%&'*+-/=?^_`{|}~.".split(//)
346
- ].flatten
347
-
348
- local_part.split(//).map do |char|
349
- char_range.include?(char) ? char : '#'
350
- end.join
351
- end
352
-
353
- def construct_email(local_part, domain_name)
354
- [local_part, domain_name].join('@')
355
- end
356
- end
357
- end
358
- end
@@ -1,69 +0,0 @@
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
- ##
21
- # Produces a random image URL from lorempixel.com.
22
- #
23
- # @param size [String] Specifies the size of image to generate.
24
- # @param is_gray [Boolean] Determines if the image is gray.
25
- # @param category [Symbol] Adds the category of the generated image to the URL.
26
- # @param number [Integer] Adds a number as part of the URL.
27
- # @param text [Integer] Adds dummy text as part of the URL.
28
- # @param secure [Boolean] Changes the image URL between http and https.
29
- # @return [String]
30
- #
31
- # @example
32
- # Faker::LoremPixel.image #=> "https://lorempixel.com/300/300"
33
- # Faker::LoremPixel.image(size: "50x60") #=> "https://lorempixel.com/50/60"
34
- # Faker::LoremPixel.image(size: "50x60", is_gray: true) #=> "https://lorempixel.com/g/50/60"
35
- # Faker::LoremPixel.image(size: "50x60", is_gray: false, category: 'sports') #=> "https://lorempixel.com/50/60/sports"
36
- # Faker::LoremPixel.image(size: "50x60", is_gray: false, category: 'sports', number: 3) #=> "https://lorempixel.com/50/60/sports/3"
37
- # Faker::LoremPixel.image(size: "50x60", is_gray: false, category: 'sports', number: 3, text: 'Dummy-text') #=> "https://lorempixel.com/50/60/sports/3/Dummy-text"
38
- # Faker::LoremPixel.image(size: "50x60", is_gray: false, category: 'sports', number: nil, text: 'Dummy-text') #=> "https://lorempixel.com/50/60/sports/Dummy-text"
39
- # Faker::LoremPixel.image(secure: false) #=> "http://lorempixel.com/300/300"
40
- #
41
- # @faker.version 1.7.0
42
- # rubocop:disable Metrics/ParameterLists
43
- 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)
44
- warn_for_deprecated_arguments do |keywords|
45
- keywords << :size if legacy_size != NOT_GIVEN
46
- keywords << :is_gray if legacy_is_gray != NOT_GIVEN
47
- keywords << :category if legacy_category != NOT_GIVEN
48
- keywords << :number if legacy_number != NOT_GIVEN
49
- keywords << :text if legacy_text != NOT_GIVEN
50
- keywords << :secure if legacy_secure != NOT_GIVEN
51
- end
52
-
53
- raise ArgumentError, 'Size should be specified in format 300x300' unless size =~ /^[0-9]+x[0-9]+$/
54
- raise ArgumentError, "Supported categories are #{SUPPORTED_CATEGORIES.join(', ')}" unless category.nil? || SUPPORTED_CATEGORIES.include?(category)
55
- raise ArgumentError, 'Category required when number is passed' if !number.nil? && category.nil?
56
- raise ArgumentError, 'Number must be between 1 and 10' unless number.nil? || (1..10).cover?(number)
57
- raise ArgumentError, 'Category and number must be passed when text is passed' if !text.nil? && number.nil? && category.nil?
58
-
59
- url_parts = secure ? ['https:/'] : ['http:/']
60
- url_parts << ['lorempixel.com']
61
- url_parts << 'g' if is_gray
62
- url_parts += size.split('x')
63
- url_parts += [category, number, text].compact
64
- url_parts.join('/')
65
- end
66
- # rubocop:enable Metrics/ParameterLists
67
- end
68
- end
69
- end