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,142 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Stripe < Base
5
+ class << self
6
+ ##
7
+ # Produces a random valid card number.
8
+ #
9
+ # @param card_type [String] Specific valid card type.
10
+ # @return [String]
11
+ #
12
+ # @example
13
+ # Faker::Stripe.valid_card #=> "4242424242424242"
14
+ # Faker::Stripe.valid_card(card_type: "visa_debit") #=> "4000056655665556"
15
+ #
16
+ # @faker.version 1.9.0
17
+ def valid_card(legacy_card_type = NOT_GIVEN, card_type: nil)
18
+ warn_for_deprecated_arguments do |keywords|
19
+ keywords << :card_type if legacy_card_type != NOT_GIVEN
20
+ end
21
+
22
+ valid_cards = translate('faker.stripe.valid_cards').keys
23
+
24
+ if card_type.nil?
25
+ card_type = sample(valid_cards).to_s
26
+ else
27
+ unless valid_cards.include?(card_type.to_sym)
28
+ raise ArgumentError,
29
+ "Valid credit cards argument can be left blank or include #{valid_cards.join(', ')}"
30
+ end
31
+ end
32
+
33
+ fetch("stripe.valid_cards.#{card_type}")
34
+ end
35
+
36
+ ##
37
+ # Produces a random valid Stripe token.
38
+ #
39
+ # @param card_type [String] Specific valid card type.
40
+ # @return [String]
41
+ #
42
+ # @example
43
+ # Faker::Stripe.valid_token #=> "tok_visa"
44
+ # Faker::Stripe.valid_token(card_type: "mc_debit") #=> "tok_mastercard_debit"
45
+ #
46
+ # @faker.version 1.9.0
47
+ def valid_token(legacy_card_type = NOT_GIVEN, card_type: nil)
48
+ warn_for_deprecated_arguments do |keywords|
49
+ keywords << :card_type if legacy_card_type != NOT_GIVEN
50
+ end
51
+
52
+ valid_tokens = translate('faker.stripe.valid_tokens').keys
53
+
54
+ if card_type.nil?
55
+ card_type = sample(valid_tokens).to_s
56
+ else
57
+ unless valid_tokens.include?(card_type.to_sym)
58
+ raise ArgumentError,
59
+ "Valid credit cards argument can be left blank or include #{valid_tokens.join(', ')}"
60
+ end
61
+ end
62
+
63
+ fetch("stripe.valid_tokens.#{card_type}")
64
+ end
65
+
66
+ ##
67
+ # Produces a random invalid card number.
68
+ #
69
+ # @return [String]
70
+ #
71
+ # @example
72
+ # Faker::Stripe.invalid_card #=> "4000000000000002"
73
+ # Faker::Stripe.invalid_card(card_error: "addressZipFail") #=> "4000000000000010"
74
+ #
75
+ # @faker.version 1.9.0
76
+ def invalid_card(legacy_card_error = NOT_GIVEN, card_error: nil)
77
+ warn_for_deprecated_arguments do |keywords|
78
+ keywords << :card_error if legacy_card_error != NOT_GIVEN
79
+ end
80
+
81
+ invalid_cards = translate('faker.stripe.invalid_cards').keys
82
+
83
+ if card_error.nil?
84
+ card_error = sample(invalid_cards).to_s
85
+ else
86
+ unless invalid_cards.include?(card_error.to_sym)
87
+ raise ArgumentError,
88
+ "Invalid credit cards argument can be left blank or include #{invalid_cards.join(', ')}"
89
+ end
90
+ end
91
+
92
+ fetch("stripe.invalid_cards.#{card_error}")
93
+ end
94
+
95
+ ##
96
+ # Produces a random month in two digits format.
97
+ #
98
+ # @return [String]
99
+ #
100
+ # @example
101
+ # Faker::Stripe.month #=> "10"
102
+ #
103
+ # @faker.version 1.9.0
104
+ def month
105
+ format('%02d', rand_in_range(1, 12))
106
+ end
107
+
108
+ ##
109
+ # Produces a random year that is always in the future.
110
+ #
111
+ # @return [String]
112
+ #
113
+ # @example
114
+ # Faker::Stripe.year #=> "2018" # This will always be a year in the future
115
+ #
116
+ # @faker.version 1.9.0
117
+ def year
118
+ start_year = ::Time.new.year + 1
119
+ rand_in_range(start_year, start_year + 5).to_s
120
+ end
121
+
122
+ ##
123
+ # Produces a random ccv number.
124
+ #
125
+ # @param card_type [String] Specific valid card type.
126
+ # @return [String]
127
+ #
128
+ # @example
129
+ # Faker::Stripe.ccv #=> "123"
130
+ # Faker::Stripe.ccv(card_type: "amex") #=> "1234"
131
+ #
132
+ # @faker.version 1.9.0
133
+ def ccv(legacy_card_type = NOT_GIVEN, card_type: nil)
134
+ warn_for_deprecated_arguments do |keywords|
135
+ keywords << :card_type if legacy_card_type != NOT_GIVEN
136
+ end
137
+
138
+ (card_type.to_s == 'amex' ? rand_in_range(1000, 9999) : rand_in_range(100, 999)).to_s
139
+ end
140
+ end
141
+ end
142
+ end
@@ -0,0 +1,70 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Subscription < Base
5
+ ##
6
+ # Produces the name of a subscription plan.
7
+ #
8
+ # @return [String]
9
+ #
10
+ # @example
11
+ # Faker::Subscription.plan #=> "Platinum"
12
+ #
13
+ # @faker.version 1.9.2
14
+ def self.plan
15
+ fetch('subscription.plans')
16
+ end
17
+
18
+ ##
19
+ # Produces a subscription status.
20
+ #
21
+ # @return [String]
22
+ #
23
+ # @example
24
+ # Faker::Subscription.status #=> "Active"
25
+ #
26
+ # @faker.version 1.9.2
27
+ def self.status
28
+ fetch('subscription.statuses')
29
+ end
30
+
31
+ ##
32
+ # Produces the name of a payment method.
33
+ #
34
+ # @return [String]
35
+ #
36
+ # @example
37
+ # Faker::Subscription.payment_method #=> "PayPal"
38
+ #
39
+ # @faker.version 1.9.2
40
+ def self.payment_method
41
+ fetch('subscription.payment_methods')
42
+ end
43
+
44
+ ##
45
+ # Produces the name of a subscription term.
46
+ #
47
+ # @return [String]
48
+ #
49
+ # @example
50
+ # Faker::Subscription.subscription_term #=> "Annual"
51
+ #
52
+ # @faker.version 1.9.2
53
+ def self.subscription_term
54
+ fetch('subscription.subscription_terms')
55
+ end
56
+
57
+ ##
58
+ # Produces the name of a payment term.
59
+ #
60
+ # @return [String]
61
+ #
62
+ # @example
63
+ # Faker::Subscription.payment_term #=> "Monthly"
64
+ #
65
+ # @faker.version 1.9.2
66
+ def self.payment_term
67
+ fetch('subscription.payment_terms')
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,72 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Superhero < Base
5
+ class << self
6
+ ##
7
+ # Produces a superpower.
8
+ #
9
+ # @return [String]
10
+ #
11
+ # @example
12
+ # Faker::Superhero.power #=> "Photokinesis"
13
+ #
14
+ # @faker.version 1.6.2
15
+ def power
16
+ fetch('superhero.power')
17
+ end
18
+
19
+ ##
20
+ # Produces a superhero name prefix.
21
+ #
22
+ # @return [String]
23
+ #
24
+ # @example
25
+ # Faker::Superhero.prefix #=> "the Fated"
26
+ #
27
+ # @faker.version 1.6.2
28
+ def prefix
29
+ fetch('superhero.prefix')
30
+ end
31
+
32
+ ##
33
+ # Produces a superhero name suffix.
34
+ #
35
+ # @return [String]
36
+ #
37
+ # @example
38
+ # Faker::Superhero.suffix #=> "Captain"
39
+ #
40
+ # @faker.version 1.6.2
41
+ def suffix
42
+ fetch('superhero.suffix')
43
+ end
44
+
45
+ ##
46
+ # Produces a superhero descriptor.
47
+ #
48
+ # @return [String]
49
+ #
50
+ # @example
51
+ # Faker::Superhero.descriptor #=> "Bizarro"
52
+ #
53
+ # @faker.version 1.6.2
54
+ def descriptor
55
+ fetch('superhero.descriptor')
56
+ end
57
+
58
+ ##
59
+ # Produces a random superhero name.
60
+ #
61
+ # @return [String]
62
+ #
63
+ # @example
64
+ # Faker::Superhero.name #=> "Magnificent Shatterstar"
65
+ #
66
+ # @faker.version 1.6.2
67
+ def name
68
+ parse('superhero.name')
69
+ end
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,74 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Team < Base
5
+ flexible :team
6
+
7
+ class << self
8
+ ##
9
+ # Produces a team name from a state and a creature.
10
+ #
11
+ # @return [String]
12
+ #
13
+ # @example
14
+ # Faker::Team.name #=> "Oregon vixens"
15
+ #
16
+ # @faker.version 1.3.0
17
+ def name
18
+ parse('team.name')
19
+ end
20
+
21
+ ##
22
+ # Produces a team creature.
23
+ #
24
+ # @return [String]
25
+ #
26
+ # @example
27
+ # Faker::Team.creature #=> "geese"
28
+ #
29
+ # @faker.version 1.3.0
30
+ def creature
31
+ fetch('team.creature')
32
+ end
33
+
34
+ ##
35
+ # Produces a team state.
36
+ #
37
+ # @return [String]
38
+ #
39
+ # @example
40
+ # Faker::Team.state #=> "Oregon"
41
+ #
42
+ # @faker.version 1.3.0
43
+ def state
44
+ fetch('address.state')
45
+ end
46
+
47
+ ##
48
+ # Produces a team sport.
49
+ #
50
+ # @return [String]
51
+ #
52
+ # @example
53
+ # Faker::Team.sport #=> "Lacrosse"
54
+ #
55
+ # @faker.version 1.5.0
56
+ def sport
57
+ fetch('team.sport')
58
+ end
59
+
60
+ ##
61
+ # Produces the name of a team mascot.
62
+ #
63
+ # @return [String]
64
+ #
65
+ # @example
66
+ # Faker::Team.mascot #=> "Hugo"
67
+ #
68
+ # @faker.version 1.8.1
69
+ def mascot
70
+ fetch('team.mascot')
71
+ end
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,179 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Time < Base
5
+ TIME_RANGES = {
6
+ all: (0..23),
7
+ day: (9..17),
8
+ night: (18..23),
9
+ morning: (6..11),
10
+ afternoon: (12..17),
11
+ evening: (17..21),
12
+ midnight: (0..4)
13
+ }.freeze
14
+
15
+ class << self
16
+ # rubocop:disable Metrics/ParameterLists
17
+ # rubocop:disable Style/AsciiComments
18
+
19
+ ##
20
+ # Produce a random time between two times.
21
+ #
22
+ # @param from [Time, Date, DateTime] The start of the usable time range.
23
+ # @param to [Time, Date, DateTime] The end of the usable time range.
24
+ # @param format [Symbol] The name of a DateTime format to use.
25
+ # @return [Time]
26
+ #
27
+ # @example
28
+ # # Random Stringified time between two times, formatted to the specified I18n format
29
+ # # (Examples are from a Rails console with rails-i18n 5.1.1 defaults loaded)
30
+ # I18n.locale = 'en-US'
31
+ # Faker::Time.between(from: DateTime.now - 1, to: DateTime.now, format: :default) #=> "Tue, 16 Oct 2018 10:48:27 AM -05:00"
32
+ # Faker::Time.between(from: DateTime.now - 1, to: DateTime.now, format: :short) #=> "15 Oct 10:48 AM"
33
+ # Faker::Time.between(from: DateTime.now - 1, to: DateTime.now, format: :long) #=> "October 15, 2018 10:48 AM"
34
+ #
35
+ # I18n.locale = 'ja'
36
+ # Faker::Time.between(from: DateTime.now - 1, to: DateTime.now, format: :default) #=> "2018/10/15 10:48:27"
37
+ # Faker::Time.between(from: DateTime.now - 1, to: DateTime.now, format: :short) #=> "18/10/15 10:48"
38
+ # Faker::Time.between(from: DateTime.now - 1, to: DateTime.now, format: :long) #=> "2018年10月16日(火) 10時48分27秒 -0500"
39
+ #
40
+ # @faker.version 1.5.0
41
+ def between(legacy_from = NOT_GIVEN, legacy_to = NOT_GIVEN, legacy_format = NOT_GIVEN, from:, to:, format: nil)
42
+ warn_for_deprecated_arguments do |keywords|
43
+ keywords << :from if legacy_from != NOT_GIVEN
44
+ keywords << :to if legacy_to != NOT_GIVEN
45
+ keywords << :format if legacy_format != NOT_GIVEN
46
+ end
47
+
48
+ from = get_time_object(from)
49
+ to = get_time_object(to)
50
+
51
+ time = Faker::Base.rand_in_range(from, to)
52
+ time_with_format(time, format)
53
+ end
54
+ # rubocop:enable Style/AsciiComments
55
+
56
+ ##
57
+ # Produce a random time between two dates.
58
+ #
59
+ # @param from [Date] The start of the usable time range.
60
+ # @param to [Date] The end of the usable time range.
61
+ # @param period [Symbol] The time of day, if any. See {TIME_RANGES}.
62
+ # @param format [Symbol] The name of a DateTime format to use.
63
+ # @return [Time]
64
+ #
65
+ # @example
66
+ # Faker::Time.between_dates(from: Date.today - 1, to: Date.today, period: :all)
67
+ # #=> "2014-09-19 07:03:30 -0700"
68
+ # Faker::Time.between_dates(from: Date.today - 1, to: Date.today, period: :day)
69
+ # #=> "2014-09-18 16:28:13 -0700"
70
+ # Faker::Time.between_dates(from: Date.today - 1, to: Date.today, period: :night)
71
+ # #=> "2014-09-20 19:39:38 -0700"
72
+ # Faker::Time.between_dates(from: Date.today - 1, to: Date.today, period: :morning)
73
+ # #=> "2014-09-19 08:07:52 -0700"
74
+ # Faker::Time.between_dates(from: Date.today - 1, to: Date.today, period: :afternoon)
75
+ # #=> "2014-09-18 12:10:34 -0700"
76
+ # Faker::Time.between_dates(from: Date.today - 1, to: Date.today, period: :evening)
77
+ # #=> "2014-09-19 20:21:03 -0700"
78
+ # Faker::Time.between_dates(from: Date.today - 1, to: Date.today, period: :midnight)
79
+ # #=> "2014-09-20 00:40:14 -0700"
80
+ # Faker::Time.between_dates(from: Date.today - 5, to: Date.today + 5, period: :afternoon, format: :default)
81
+ # #=> "Fri, 19 Oct 2018 15:17:46 -0500"
82
+ #
83
+ # @faker.version 1.0.0
84
+ def between_dates(legacy_from = NOT_GIVEN, legacy_to = NOT_GIVEN, legacy_period = NOT_GIVEN, legacy_format = NOT_GIVEN, from:, to:, period: :all, format: nil)
85
+ warn_for_deprecated_arguments do |keywords|
86
+ keywords << :from if legacy_from != NOT_GIVEN
87
+ keywords << :to if legacy_to != NOT_GIVEN
88
+ keywords << :period if legacy_period != NOT_GIVEN
89
+ keywords << :format if legacy_format != NOT_GIVEN
90
+ end
91
+
92
+ date = Faker::Date.between(from: from, to: to)
93
+ time = date_with_random_time(date, period)
94
+ time_with_format(time, format)
95
+ end
96
+
97
+ ##
98
+ # Produce a random time in the future (up to N days).
99
+ #
100
+ # @param days [Integer] The maximum number of days to go into the future.
101
+ # @param period [Symbol] The time of day, if any. See {TIME_RANGES}.
102
+ # @param format [Symbol] The name of a DateTime format to use.
103
+ # @return [Time]
104
+ #
105
+ # @example
106
+ # Faker::Time.forward(days: 23, period: :morning)
107
+ # # => "2014-09-26 06:54:47 -0700"
108
+ # Faker::Time.forward(days: 5, period: :evening, format: :long)
109
+ # #=> "October 21, 2018 20:47"
110
+ #
111
+ # @faker.version 1.5.0
112
+ def forward(legacy_days = NOT_GIVEN, legacy_period = NOT_GIVEN, legacy_format = NOT_GIVEN, days: 365, period: :all, format: nil)
113
+ warn_for_deprecated_arguments do |keywords|
114
+ keywords << :days if legacy_days != NOT_GIVEN
115
+ keywords << :period if legacy_period != NOT_GIVEN
116
+ keywords << :format if legacy_format != NOT_GIVEN
117
+ end
118
+
119
+ time_with_format(date_with_random_time(Faker::Date.forward(days: days), period), format)
120
+ end
121
+
122
+ ##
123
+ # Produce a random time in the past (up to N days).
124
+ #
125
+ # @param days [Integer] The maximum number of days to go into the past.
126
+ # @param period [Symbol] The time of day, if any. See {TIME_RANGES}.
127
+ # @param format [Symbol] The name of a DateTime format to use.
128
+ # @return [Time]
129
+ #
130
+ # @example
131
+ # Faker::Time.backward(days: 14, period: :evening)
132
+ # #=> "2014-09-17 19:56:33 -0700"
133
+ # Faker::Time.backward(days: 5, period: :morning, format: :short)
134
+ # #=> "14 Oct 07:44"
135
+ #
136
+ # @faker.version 1.5.0
137
+ def backward(legacy_days = NOT_GIVEN, legacy_period = NOT_GIVEN, legacy_format = NOT_GIVEN, days: 365, period: :all, format: nil)
138
+ warn_for_deprecated_arguments do |keywords|
139
+ keywords << :days if legacy_days != NOT_GIVEN
140
+ keywords << :period if legacy_period != NOT_GIVEN
141
+ keywords << :format if legacy_format != NOT_GIVEN
142
+ end
143
+
144
+ time_with_format(date_with_random_time(Faker::Date.backward(days: days), period), format)
145
+ end
146
+ # rubocop:enable Metrics/ParameterLists
147
+
148
+ private
149
+
150
+ def date_with_random_time(date, period)
151
+ ::Time.local(date.year, date.month, date.day, hours(period), minutes, seconds)
152
+ end
153
+
154
+ def time_with_format(time, format)
155
+ format.nil? ? time : I18n.localize(time, format: format)
156
+ end
157
+
158
+ def hours(period)
159
+ raise ArgumentError, 'invalid period' unless TIME_RANGES.key? period
160
+
161
+ sample(TIME_RANGES[period].to_a)
162
+ end
163
+
164
+ def minutes
165
+ seconds
166
+ end
167
+
168
+ def seconds
169
+ sample((0..59).to_a)
170
+ end
171
+
172
+ def get_time_object(time)
173
+ time = ::Time.parse(time) if time.is_a? String
174
+ time = time.to_time if time.respond_to?(:to_time)
175
+ time
176
+ end
177
+ end
178
+ end
179
+ end