mega-pro-pkg 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (581) hide show
  1. checksums.yaml +7 -0
  2. data/faker-3.8.0/CHANGELOG.md +3068 -0
  3. data/faker-3.8.0/License.txt +20 -0
  4. data/faker-3.8.0/README.md +197 -0
  5. data/faker-3.8.0/bin/faker +5 -0
  6. data/faker-3.8.0/lib/faker/blockchain/aeternity.rb +70 -0
  7. data/faker-3.8.0/lib/faker/blockchain/bitcoin.rb +59 -0
  8. data/faker-3.8.0/lib/faker/blockchain/ethereum.rb +26 -0
  9. data/faker-3.8.0/lib/faker/blockchain/tezos.rb +134 -0
  10. data/faker-3.8.0/lib/faker/blockchain.rb +9 -0
  11. data/faker-3.8.0/lib/faker/books/culture_series.rb +83 -0
  12. data/faker-3.8.0/lib/faker/books/dune.rb +124 -0
  13. data/faker-3.8.0/lib/faker/books/lovecraft.rb +248 -0
  14. data/faker-3.8.0/lib/faker/books/the_kingkiller_chronicle.rb +61 -0
  15. data/faker-3.8.0/lib/faker/books.rb +9 -0
  16. data/faker-3.8.0/lib/faker/creature/animal.rb +22 -0
  17. data/faker-3.8.0/lib/faker/creature/bird.rb +203 -0
  18. data/faker-3.8.0/lib/faker/creature/cat.rb +50 -0
  19. data/faker-3.8.0/lib/faker/creature/dog.rb +115 -0
  20. data/faker-3.8.0/lib/faker/creature/horse.rb +37 -0
  21. data/faker-3.8.0/lib/faker/creature.rb +9 -0
  22. data/faker-3.8.0/lib/faker/default/address.rb +348 -0
  23. data/faker-3.8.0/lib/faker/default/adjective.rb +35 -0
  24. data/faker-3.8.0/lib/faker/default/alphanumeric.rb +67 -0
  25. data/faker-3.8.0/lib/faker/default/ancient.rb +59 -0
  26. data/faker-3.8.0/lib/faker/default/app.rb +68 -0
  27. data/faker-3.8.0/lib/faker/default/appliance.rb +33 -0
  28. data/faker-3.8.0/lib/faker/default/artist.rb +20 -0
  29. data/faker-3.8.0/lib/faker/default/avatar.rb +49 -0
  30. data/faker-3.8.0/lib/faker/default/bank.rb +195 -0
  31. data/faker-3.8.0/lib/faker/default/barcode.rb +165 -0
  32. data/faker-3.8.0/lib/faker/default/beer.rb +113 -0
  33. data/faker-3.8.0/lib/faker/default/blood.rb +48 -0
  34. data/faker-3.8.0/lib/faker/default/book.rb +61 -0
  35. data/faker-3.8.0/lib/faker/default/boolean.rb +24 -0
  36. data/faker-3.8.0/lib/faker/default/business.rb +50 -0
  37. data/faker-3.8.0/lib/faker/default/camera.rb +46 -0
  38. data/faker-3.8.0/lib/faker/default/cannabis.rb +135 -0
  39. data/faker-3.8.0/lib/faker/default/chile_rut.rb +98 -0
  40. data/faker-3.8.0/lib/faker/default/chuck_norris.rb +25 -0
  41. data/faker-3.8.0/lib/faker/default/code.rb +315 -0
  42. data/faker-3.8.0/lib/faker/default/coffee.rb +82 -0
  43. data/faker-3.8.0/lib/faker/default/coin.rb +33 -0
  44. data/faker-3.8.0/lib/faker/default/color.rb +150 -0
  45. data/faker-3.8.0/lib/faker/default/commerce.rb +157 -0
  46. data/faker-3.8.0/lib/faker/default/company.rb +678 -0
  47. data/faker-3.8.0/lib/faker/default/compass.rb +202 -0
  48. data/faker-3.8.0/lib/faker/default/computer.rb +63 -0
  49. data/faker-3.8.0/lib/faker/default/construction.rb +83 -0
  50. data/faker-3.8.0/lib/faker/default/cosmere.rb +138 -0
  51. data/faker-3.8.0/lib/faker/default/crypto.rb +68 -0
  52. data/faker-3.8.0/lib/faker/default/crypto_coin.rb +82 -0
  53. data/faker-3.8.0/lib/faker/default/currency.rb +46 -0
  54. data/faker-3.8.0/lib/faker/default/date.rb +209 -0
  55. data/faker-3.8.0/lib/faker/default/dc_comics.rb +70 -0
  56. data/faker-3.8.0/lib/faker/default/demographic.rb +94 -0
  57. data/faker-3.8.0/lib/faker/default/dessert.rb +48 -0
  58. data/faker-3.8.0/lib/faker/default/device.rb +85 -0
  59. data/faker-3.8.0/lib/faker/default/driving_licence.rb +132 -0
  60. data/faker-3.8.0/lib/faker/default/drone.rb +332 -0
  61. data/faker-3.8.0/lib/faker/default/educator.rb +102 -0
  62. data/faker-3.8.0/lib/faker/default/electrical_components.rb +48 -0
  63. data/faker-3.8.0/lib/faker/default/emotion.rb +33 -0
  64. data/faker-3.8.0/lib/faker/default/esport.rb +72 -0
  65. data/faker-3.8.0/lib/faker/default/file.rb +81 -0
  66. data/faker-3.8.0/lib/faker/default/finance.rb +112 -0
  67. data/faker-3.8.0/lib/faker/default/food.rb +139 -0
  68. data/faker-3.8.0/lib/faker/default/funny_name.rb +90 -0
  69. data/faker-3.8.0/lib/faker/default/game.rb +48 -0
  70. data/faker-3.8.0/lib/faker/default/gender.rb +46 -0
  71. data/faker-3.8.0/lib/faker/default/greek_philosophers.rb +33 -0
  72. data/faker-3.8.0/lib/faker/default/hacker.rb +103 -0
  73. data/faker-3.8.0/lib/faker/default/hipster.rb +154 -0
  74. data/faker-3.8.0/lib/faker/default/hobby.rb +22 -0
  75. data/faker-3.8.0/lib/faker/default/house.rb +33 -0
  76. data/faker-3.8.0/lib/faker/default/html.rb +230 -0
  77. data/faker-3.8.0/lib/faker/default/id_number.rb +424 -0
  78. data/faker-3.8.0/lib/faker/default/industry_segments.rb +61 -0
  79. data/faker-3.8.0/lib/faker/default/invoice.rb +123 -0
  80. data/faker-3.8.0/lib/faker/default/job.rb +61 -0
  81. data/faker-3.8.0/lib/faker/default/json.rb +130 -0
  82. data/faker-3.8.0/lib/faker/default/kpop.rb +85 -0
  83. data/faker-3.8.0/lib/faker/default/lorem.rb +253 -0
  84. data/faker-3.8.0/lib/faker/default/lorem_flickr.rb +110 -0
  85. data/faker-3.8.0/lib/faker/default/markdown.rb +170 -0
  86. data/faker-3.8.0/lib/faker/default/marketing.rb +22 -0
  87. data/faker-3.8.0/lib/faker/default/measurement.rb +175 -0
  88. data/faker-3.8.0/lib/faker/default/military.rb +98 -0
  89. data/faker-3.8.0/lib/faker/default/mountain.rb +33 -0
  90. data/faker-3.8.0/lib/faker/default/movie.rb +33 -0
  91. data/faker-3.8.0/lib/faker/default/name.rb +152 -0
  92. data/faker-3.8.0/lib/faker/default/nation.rb +73 -0
  93. data/faker-3.8.0/lib/faker/default/national_health_service.rb +57 -0
  94. data/faker-3.8.0/lib/faker/default/nato_phonetic_alphabet.rb +20 -0
  95. data/faker-3.8.0/lib/faker/default/number.rb +244 -0
  96. data/faker-3.8.0/lib/faker/default/omniauth.rb +471 -0
  97. data/faker-3.8.0/lib/faker/default/phone_number.rb +152 -0
  98. data/faker-3.8.0/lib/faker/default/placeholdit.rb +52 -0
  99. data/faker-3.8.0/lib/faker/default/programming_language.rb +33 -0
  100. data/faker-3.8.0/lib/faker/default/quote.rb +124 -0
  101. data/faker-3.8.0/lib/faker/default/relationship.rb +87 -0
  102. data/faker-3.8.0/lib/faker/default/restaurant.rb +63 -0
  103. data/faker-3.8.0/lib/faker/default/science.rb +154 -0
  104. data/faker-3.8.0/lib/faker/default/slack_emoji.rb +124 -0
  105. data/faker-3.8.0/lib/faker/default/source.rb +63 -0
  106. data/faker-3.8.0/lib/faker/default/south_africa.rb +141 -0
  107. data/faker-3.8.0/lib/faker/default/space.rb +191 -0
  108. data/faker-3.8.0/lib/faker/default/sport.rb +116 -0
  109. data/faker-3.8.0/lib/faker/default/string.rb +59 -0
  110. data/faker-3.8.0/lib/faker/default/stripe.rb +126 -0
  111. data/faker-3.8.0/lib/faker/default/subscription.rb +70 -0
  112. data/faker-3.8.0/lib/faker/default/superhero.rb +72 -0
  113. data/faker-3.8.0/lib/faker/default/tea.rb +41 -0
  114. data/faker-3.8.0/lib/faker/default/team.rb +74 -0
  115. data/faker-3.8.0/lib/faker/default/theater.rb +49 -0
  116. data/faker-3.8.0/lib/faker/default/time.rb +149 -0
  117. data/faker-3.8.0/lib/faker/default/types.rb +159 -0
  118. data/faker-3.8.0/lib/faker/default/university.rb +75 -0
  119. data/faker-3.8.0/lib/faker/default/vehicle.rb +332 -0
  120. data/faker-3.8.0/lib/faker/default/verb.rb +72 -0
  121. data/faker-3.8.0/lib/faker/default/vulnerability_identifier.rb +23 -0
  122. data/faker-3.8.0/lib/faker/default/world_cup.rb +77 -0
  123. data/faker-3.8.0/lib/faker/default/x.rb +189 -0
  124. data/faker-3.8.0/lib/faker/default.rb +9 -0
  125. data/faker-3.8.0/lib/faker/fantasy/tolkien.rb +67 -0
  126. data/faker-3.8.0/lib/faker/fantasy.rb +9 -0
  127. data/faker-3.8.0/lib/faker/games/clash_of_clans.rb +48 -0
  128. data/faker-3.8.0/lib/faker/games/control.rb +113 -0
  129. data/faker-3.8.0/lib/faker/games/dnd.rb +178 -0
  130. data/faker-3.8.0/lib/faker/games/dota.rb +89 -0
  131. data/faker-3.8.0/lib/faker/games/elder_scrolls.rb +139 -0
  132. data/faker-3.8.0/lib/faker/games/fallout.rb +62 -0
  133. data/faker-3.8.0/lib/faker/games/final_fantasy_xiv.rb +73 -0
  134. data/faker-3.8.0/lib/faker/games/half_life.rb +48 -0
  135. data/faker-3.8.0/lib/faker/games/heroes.rb +61 -0
  136. data/faker-3.8.0/lib/faker/games/heroes_of_the_storm.rb +61 -0
  137. data/faker-3.8.0/lib/faker/games/league_of_legends.rb +87 -0
  138. data/faker-3.8.0/lib/faker/games/minecraft.rb +113 -0
  139. data/faker-3.8.0/lib/faker/games/myst.rb +74 -0
  140. data/faker-3.8.0/lib/faker/games/overwatch.rb +48 -0
  141. data/faker-3.8.0/lib/faker/games/pokemon.rb +48 -0
  142. data/faker-3.8.0/lib/faker/games/sonic_the_hedgehog.rb +48 -0
  143. data/faker-3.8.0/lib/faker/games/street_fighter.rb +61 -0
  144. data/faker-3.8.0/lib/faker/games/super_mario.rb +48 -0
  145. data/faker-3.8.0/lib/faker/games/super_smash_bros.rb +35 -0
  146. data/faker-3.8.0/lib/faker/games/tarkov.rb +205 -0
  147. data/faker-3.8.0/lib/faker/games/touhou.rb +75 -0
  148. data/faker-3.8.0/lib/faker/games/warhammer_fantasy.rb +74 -0
  149. data/faker-3.8.0/lib/faker/games/witcher.rb +126 -0
  150. data/faker-3.8.0/lib/faker/games/world_of_warcraft.rb +60 -0
  151. data/faker-3.8.0/lib/faker/games/zelda.rb +62 -0
  152. data/faker-3.8.0/lib/faker/games.rb +9 -0
  153. data/faker-3.8.0/lib/faker/internet/http.rb +48 -0
  154. data/faker-3.8.0/lib/faker/internet.rb +582 -0
  155. data/faker-3.8.0/lib/faker/japanese_media/conan.rb +48 -0
  156. data/faker-3.8.0/lib/faker/japanese_media/cowboy_bebop.rb +61 -0
  157. data/faker-3.8.0/lib/faker/japanese_media/doraemon.rb +48 -0
  158. data/faker-3.8.0/lib/faker/japanese_media/dragon_ball.rb +48 -0
  159. data/faker-3.8.0/lib/faker/japanese_media/fullmetal_alchemist_brotherhood.rb +48 -0
  160. data/faker-3.8.0/lib/faker/japanese_media/kamen_rider.rb +102 -0
  161. data/faker-3.8.0/lib/faker/japanese_media/naruto.rb +61 -0
  162. data/faker-3.8.0/lib/faker/japanese_media/one_piece.rb +87 -0
  163. data/faker-3.8.0/lib/faker/japanese_media/studio_ghibli.rb +48 -0
  164. data/faker-3.8.0/lib/faker/japanese_media/sword_art_online.rb +61 -0
  165. data/faker-3.8.0/lib/faker/japanese_media.rb +9 -0
  166. data/faker-3.8.0/lib/faker/locations/australia.rb +49 -0
  167. data/faker-3.8.0/lib/faker/locations.rb +9 -0
  168. data/faker-3.8.0/lib/faker/movies/avatar.rb +49 -0
  169. data/faker-3.8.0/lib/faker/movies/back_to_the_future.rb +49 -0
  170. data/faker-3.8.0/lib/faker/movies/departed.rb +49 -0
  171. data/faker-3.8.0/lib/faker/movies/ghostbusters.rb +49 -0
  172. data/faker-3.8.0/lib/faker/movies/hackers.rb +48 -0
  173. data/faker-3.8.0/lib/faker/movies/harry_potter.rb +87 -0
  174. data/faker-3.8.0/lib/faker/movies/hitchhikers_guide_to_the_galaxy.rb +106 -0
  175. data/faker-3.8.0/lib/faker/movies/hobbit.rb +62 -0
  176. data/faker-3.8.0/lib/faker/movies/how_to_train_your_dragon.rb +48 -0
  177. data/faker-3.8.0/lib/faker/movies/lebowski.rb +48 -0
  178. data/faker-3.8.0/lib/faker/movies/lord_of_the_rings.rb +49 -0
  179. data/faker-3.8.0/lib/faker/movies/princess_bride.rb +36 -0
  180. data/faker-3.8.0/lib/faker/movies/star_wars.rb +269 -0
  181. data/faker-3.8.0/lib/faker/movies/the_room.rb +63 -0
  182. data/faker-3.8.0/lib/faker/movies/tron.rb +161 -0
  183. data/faker-3.8.0/lib/faker/movies/v_for_vendetta.rb +50 -0
  184. data/faker-3.8.0/lib/faker/movies.rb +9 -0
  185. data/faker-3.8.0/lib/faker/music/bossa_nova.rb +35 -0
  186. data/faker-3.8.0/lib/faker/music/grateful_dead.rb +35 -0
  187. data/faker-3.8.0/lib/faker/music/hiphop.rb +48 -0
  188. data/faker-3.8.0/lib/faker/music/opera.rb +298 -0
  189. data/faker-3.8.0/lib/faker/music/pearl_jam.rb +48 -0
  190. data/faker-3.8.0/lib/faker/music/phish.rb +48 -0
  191. data/faker-3.8.0/lib/faker/music/prince.rb +64 -0
  192. data/faker-3.8.0/lib/faker/music/rock_band.rb +34 -0
  193. data/faker-3.8.0/lib/faker/music/rush.rb +35 -0
  194. data/faker-3.8.0/lib/faker/music/smashing_pumpkins.rb +62 -0
  195. data/faker-3.8.0/lib/faker/music/umphreys_mcgee.rb +22 -0
  196. data/faker-3.8.0/lib/faker/music.rb +149 -0
  197. data/faker-3.8.0/lib/faker/quotes/chiquito.rb +80 -0
  198. data/faker-3.8.0/lib/faker/quotes/rajnikanth.rb +27 -0
  199. data/faker-3.8.0/lib/faker/quotes/shakespeare.rb +111 -0
  200. data/faker-3.8.0/lib/faker/quotes.rb +9 -0
  201. data/faker-3.8.0/lib/faker/religion/bible.rb +50 -0
  202. data/faker-3.8.0/lib/faker/religion.rb +9 -0
  203. data/faker-3.8.0/lib/faker/sports/basketball.rb +61 -0
  204. data/faker-3.8.0/lib/faker/sports/chess.rb +90 -0
  205. data/faker-3.8.0/lib/faker/sports/football.rb +74 -0
  206. data/faker-3.8.0/lib/faker/sports/mountaineering.rb +22 -0
  207. data/faker-3.8.0/lib/faker/sports/volleyball.rb +74 -0
  208. data/faker-3.8.0/lib/faker/sports.rb +9 -0
  209. data/faker-3.8.0/lib/faker/travel/airport.rb +43 -0
  210. data/faker-3.8.0/lib/faker/travel/train_station.rb +54 -0
  211. data/faker-3.8.0/lib/faker/travel.rb +9 -0
  212. data/faker-3.8.0/lib/faker/tv_shows/aqua_teen_hunger_force.rb +37 -0
  213. data/faker-3.8.0/lib/faker/tv_shows/archer.rb +51 -0
  214. data/faker-3.8.0/lib/faker/tv_shows/big_bang_theory.rb +37 -0
  215. data/faker-3.8.0/lib/faker/tv_shows/bojack_horseman.rb +51 -0
  216. data/faker-3.8.0/lib/faker/tv_shows/breaking_bad.rb +37 -0
  217. data/faker-3.8.0/lib/faker/tv_shows/brooklyn_nine_nine.rb +38 -0
  218. data/faker-3.8.0/lib/faker/tv_shows/buffy.rb +76 -0
  219. data/faker-3.8.0/lib/faker/tv_shows/community.rb +38 -0
  220. data/faker-3.8.0/lib/faker/tv_shows/dr_who.rb +102 -0
  221. data/faker-3.8.0/lib/faker/tv_shows/dumb_and_dumber.rb +51 -0
  222. data/faker-3.8.0/lib/faker/tv_shows/family_guy.rb +51 -0
  223. data/faker-3.8.0/lib/faker/tv_shows/final_space.rb +51 -0
  224. data/faker-3.8.0/lib/faker/tv_shows/friends.rb +50 -0
  225. data/faker-3.8.0/lib/faker/tv_shows/futurama.rb +65 -0
  226. data/faker-3.8.0/lib/faker/tv_shows/game_of_thrones.rb +77 -0
  227. data/faker-3.8.0/lib/faker/tv_shows/hey_arnold.rb +50 -0
  228. data/faker-3.8.0/lib/faker/tv_shows/how_i_met_your_mother.rb +64 -0
  229. data/faker-3.8.0/lib/faker/tv_shows/michael_scott.rb +23 -0
  230. data/faker-3.8.0/lib/faker/tv_shows/new_girl.rb +38 -0
  231. data/faker-3.8.0/lib/faker/tv_shows/parks_and_rec.rb +37 -0
  232. data/faker-3.8.0/lib/faker/tv_shows/rick_and_morty.rb +51 -0
  233. data/faker-3.8.0/lib/faker/tv_shows/ru_paul.rb +37 -0
  234. data/faker-3.8.0/lib/faker/tv_shows/seinfeld.rb +51 -0
  235. data/faker-3.8.0/lib/faker/tv_shows/silicon_valley.rb +118 -0
  236. data/faker-3.8.0/lib/faker/tv_shows/simpsons.rb +65 -0
  237. data/faker-3.8.0/lib/faker/tv_shows/south_park.rb +53 -0
  238. data/faker-3.8.0/lib/faker/tv_shows/spongebob.rb +50 -0
  239. data/faker-3.8.0/lib/faker/tv_shows/star_trek.rb +63 -0
  240. data/faker-3.8.0/lib/faker/tv_shows/stargate.rb +51 -0
  241. data/faker-3.8.0/lib/faker/tv_shows/stranger_things.rb +38 -0
  242. data/faker-3.8.0/lib/faker/tv_shows/suits.rb +37 -0
  243. data/faker-3.8.0/lib/faker/tv_shows/supernatural.rb +48 -0
  244. data/faker-3.8.0/lib/faker/tv_shows/the_expanse.rb +63 -0
  245. data/faker-3.8.0/lib/faker/tv_shows/the_fresh_prince_of_bel_air.rb +51 -0
  246. data/faker-3.8.0/lib/faker/tv_shows/the_it_crowd.rb +64 -0
  247. data/faker-3.8.0/lib/faker/tv_shows/the_office.rb +37 -0
  248. data/faker-3.8.0/lib/faker/tv_shows/the_thick_of_it.rb +51 -0
  249. data/faker-3.8.0/lib/faker/tv_shows/twin_peaks.rb +51 -0
  250. data/faker-3.8.0/lib/faker/tv_shows/venture_bros.rb +65 -0
  251. data/faker-3.8.0/lib/faker/tv_shows.rb +9 -0
  252. data/faker-3.8.0/lib/faker/version.rb +5 -0
  253. data/faker-3.8.0/lib/faker.rb +333 -0
  254. data/faker-3.8.0/lib/helpers/base58.rb +22 -0
  255. data/faker-3.8.0/lib/helpers/char.rb +61 -0
  256. data/faker-3.8.0/lib/helpers/deprecator.rb +118 -0
  257. data/faker-3.8.0/lib/helpers/positional_generator.rb +478 -0
  258. data/faker-3.8.0/lib/helpers/unique_generator.rb +60 -0
  259. data/faker-3.8.0/lib/locales/README.md +56 -0
  260. data/faker-3.8.0/lib/locales/ar.yml +1664 -0
  261. data/faker-3.8.0/lib/locales/bg.yml +960 -0
  262. data/faker-3.8.0/lib/locales/ca-CAT.yml +359 -0
  263. data/faker-3.8.0/lib/locales/ca.yml +596 -0
  264. data/faker-3.8.0/lib/locales/da-DK.yml +567 -0
  265. data/faker-3.8.0/lib/locales/de-AT.yml +3518 -0
  266. data/faker-3.8.0/lib/locales/de-CH.yml +6061 -0
  267. data/faker-3.8.0/lib/locales/de.yml +7262 -0
  268. data/faker-3.8.0/lib/locales/ee.yml +1219 -0
  269. data/faker-3.8.0/lib/locales/en/README.md +13 -0
  270. data/faker-3.8.0/lib/locales/en/address.yml +1851 -0
  271. data/faker-3.8.0/lib/locales/en/adjective.yml +179 -0
  272. data/faker-3.8.0/lib/locales/en/airport.yml +381 -0
  273. data/faker-3.8.0/lib/locales/en/ancient.yml +131 -0
  274. data/faker-3.8.0/lib/locales/en/animal.yml +145 -0
  275. data/faker-3.8.0/lib/locales/en/app.yml +95 -0
  276. data/faker-3.8.0/lib/locales/en/appliance.yml +84 -0
  277. data/faker-3.8.0/lib/locales/en/aqua_teen_hunger_force.yml +36 -0
  278. data/faker-3.8.0/lib/locales/en/archer.yml +75 -0
  279. data/faker-3.8.0/lib/locales/en/artist.yml +46 -0
  280. data/faker-3.8.0/lib/locales/en/australia.yml +108 -0
  281. data/faker-3.8.0/lib/locales/en/avatar.yml +57 -0
  282. data/faker-3.8.0/lib/locales/en/back_to_the_future.yml +148 -0
  283. data/faker-3.8.0/lib/locales/en/bank.yml +391 -0
  284. data/faker-3.8.0/lib/locales/en/barcode.yml +24 -0
  285. data/faker-3.8.0/lib/locales/en/basketball.yml +99 -0
  286. data/faker-3.8.0/lib/locales/en/beer.yml +235 -0
  287. data/faker-3.8.0/lib/locales/en/bible.yml +87 -0
  288. data/faker-3.8.0/lib/locales/en/big_bang_theory.yml +37 -0
  289. data/faker-3.8.0/lib/locales/en/bird.yml +1280 -0
  290. data/faker-3.8.0/lib/locales/en/blood.yml +13 -0
  291. data/faker-3.8.0/lib/locales/en/bojack_horseman.yml +66 -0
  292. data/faker-3.8.0/lib/locales/en/book.yml +490 -0
  293. data/faker-3.8.0/lib/locales/en/bossa_nova.yml +113 -0
  294. data/faker-3.8.0/lib/locales/en/breaking_bad.yml +113 -0
  295. data/faker-3.8.0/lib/locales/en/brooklyn_nine_nine.yml +34 -0
  296. data/faker-3.8.0/lib/locales/en/buffy.yml +242 -0
  297. data/faker-3.8.0/lib/locales/en/business.yml +21 -0
  298. data/faker-3.8.0/lib/locales/en/camera.yml +611 -0
  299. data/faker-3.8.0/lib/locales/en/cannabis.yml +347 -0
  300. data/faker-3.8.0/lib/locales/en/cat.yml +159 -0
  301. data/faker-3.8.0/lib/locales/en/chess.yml +102 -0
  302. data/faker-3.8.0/lib/locales/en/chiquito.yml +63 -0
  303. data/faker-3.8.0/lib/locales/en/chuck_norris.yml +81 -0
  304. data/faker-3.8.0/lib/locales/en/clash_of_clan.yml +99 -0
  305. data/faker-3.8.0/lib/locales/en/code.yml +504 -0
  306. data/faker-3.8.0/lib/locales/en/coffee.yml +456 -0
  307. data/faker-3.8.0/lib/locales/en/coin.yml +6 -0
  308. data/faker-3.8.0/lib/locales/en/color.yml +76 -0
  309. data/faker-3.8.0/lib/locales/en/commerce.yml +122 -0
  310. data/faker-3.8.0/lib/locales/en/community.yml +58 -0
  311. data/faker-3.8.0/lib/locales/en/company.yml +1765 -0
  312. data/faker-3.8.0/lib/locales/en/compass.yml +130 -0
  313. data/faker-3.8.0/lib/locales/en/computer.yml +55 -0
  314. data/faker-3.8.0/lib/locales/en/conan.yml +169 -0
  315. data/faker-3.8.0/lib/locales/en/construction.yml +419 -0
  316. data/faker-3.8.0/lib/locales/en/control.yml +247 -0
  317. data/faker-3.8.0/lib/locales/en/cosmere.yml +222 -0
  318. data/faker-3.8.0/lib/locales/en/cowboy_bebop.yml +160 -0
  319. data/faker-3.8.0/lib/locales/en/crypto_coin.yml +25 -0
  320. data/faker-3.8.0/lib/locales/en/culture_series.yml +307 -0
  321. data/faker-3.8.0/lib/locales/en/currency.yml +361 -0
  322. data/faker-3.8.0/lib/locales/en/dc_comics.yml +181 -0
  323. data/faker-3.8.0/lib/locales/en/demographic.yml +221 -0
  324. data/faker-3.8.0/lib/locales/en/departed.yml +46 -0
  325. data/faker-3.8.0/lib/locales/en/dessert.yml +81 -0
  326. data/faker-3.8.0/lib/locales/en/device.yml +115 -0
  327. data/faker-3.8.0/lib/locales/en/dnd.yml +636 -0
  328. data/faker-3.8.0/lib/locales/en/dog.yml +266 -0
  329. data/faker-3.8.0/lib/locales/en/doraemon.yml +284 -0
  330. data/faker-3.8.0/lib/locales/en/dota.yml +746 -0
  331. data/faker-3.8.0/lib/locales/en/dr_who.yml +471 -0
  332. data/faker-3.8.0/lib/locales/en/dragon_ball.yml +246 -0
  333. data/faker-3.8.0/lib/locales/en/driving_license.yml +181 -0
  334. data/faker-3.8.0/lib/locales/en/drone.yml +95 -0
  335. data/faker-3.8.0/lib/locales/en/dumb_and_dumber.yml +75 -0
  336. data/faker-3.8.0/lib/locales/en/dune.yml +298 -0
  337. data/faker-3.8.0/lib/locales/en/educator.yml +80 -0
  338. data/faker-3.8.0/lib/locales/en/elder_scrolls.yml +584 -0
  339. data/faker-3.8.0/lib/locales/en/electrical_components.yml +52 -0
  340. data/faker-3.8.0/lib/locales/en/emotion.yml +480 -0
  341. data/faker-3.8.0/lib/locales/en/esport.yml +61 -0
  342. data/faker-3.8.0/lib/locales/en/fallout.yml +315 -0
  343. data/faker-3.8.0/lib/locales/en/family_guy.yml +57 -0
  344. data/faker-3.8.0/lib/locales/en/file.yml +112 -0
  345. data/faker-3.8.0/lib/locales/en/final_fantasy_xiv.yml +754 -0
  346. data/faker-3.8.0/lib/locales/en/final_space.yml +35 -0
  347. data/faker-3.8.0/lib/locales/en/finance.yml +189 -0
  348. data/faker-3.8.0/lib/locales/en/food.yml +1070 -0
  349. data/faker-3.8.0/lib/locales/en/football.yml +124 -0
  350. data/faker-3.8.0/lib/locales/en/fresh_prince_of_bel_air.yml +122 -0
  351. data/faker-3.8.0/lib/locales/en/friends.yml +165 -0
  352. data/faker-3.8.0/lib/locales/en/fullmetal_alchemist_brotherhood.yml +78 -0
  353. data/faker-3.8.0/lib/locales/en/funny_name.yml +755 -0
  354. data/faker-3.8.0/lib/locales/en/futurama.yml +336 -0
  355. data/faker-3.8.0/lib/locales/en/game.yml +294 -0
  356. data/faker-3.8.0/lib/locales/en/game_of_thrones.yml +2490 -0
  357. data/faker-3.8.0/lib/locales/en/gender.yml +18 -0
  358. data/faker-3.8.0/lib/locales/en/ghostbusters.yml +104 -0
  359. data/faker-3.8.0/lib/locales/en/grateful_dead.yml +50 -0
  360. data/faker-3.8.0/lib/locales/en/greek_philosophers.yml +47 -0
  361. data/faker-3.8.0/lib/locales/en/hacker.yml +113 -0
  362. data/faker-3.8.0/lib/locales/en/hackers.yml +53 -0
  363. data/faker-3.8.0/lib/locales/en/half_life.yml +88 -0
  364. data/faker-3.8.0/lib/locales/en/harry_potter.yml +326 -0
  365. data/faker-3.8.0/lib/locales/en/heroes.yml +411 -0
  366. data/faker-3.8.0/lib/locales/en/heroes_of_the_storm.yml +134 -0
  367. data/faker-3.8.0/lib/locales/en/hey_arnold.yml +107 -0
  368. data/faker-3.8.0/lib/locales/en/hipster.yml +206 -0
  369. data/faker-3.8.0/lib/locales/en/hitchhikers_guide_to_the_galaxy.yml +246 -0
  370. data/faker-3.8.0/lib/locales/en/hobby.yml +170 -0
  371. data/faker-3.8.0/lib/locales/en/horse.yml +450 -0
  372. data/faker-3.8.0/lib/locales/en/house.yml +37 -0
  373. data/faker-3.8.0/lib/locales/en/how_i_met_your_mother.yml +100 -0
  374. data/faker-3.8.0/lib/locales/en/how_to_train_your_dragon.yml +173 -0
  375. data/faker-3.8.0/lib/locales/en/id_number.yml +10 -0
  376. data/faker-3.8.0/lib/locales/en/industry_segments.yml +191 -0
  377. data/faker-3.8.0/lib/locales/en/internet.yml +154 -0
  378. data/faker-3.8.0/lib/locales/en/invoice.yml +6 -0
  379. data/faker-3.8.0/lib/locales/en/jack_handey.yml +54 -0
  380. data/faker-3.8.0/lib/locales/en/job.yml +106 -0
  381. data/faker-3.8.0/lib/locales/en/kamen_rider.yml +718 -0
  382. data/faker-3.8.0/lib/locales/en/kpop.yml +957 -0
  383. data/faker-3.8.0/lib/locales/en/league_of_legends.yml +289 -0
  384. data/faker-3.8.0/lib/locales/en/lebowski.yml +61 -0
  385. data/faker-3.8.0/lib/locales/en/lorem.yml +1100 -0
  386. data/faker-3.8.0/lib/locales/en/lovecraft.yml +79 -0
  387. data/faker-3.8.0/lib/locales/en/markdown.yml +15 -0
  388. data/faker-3.8.0/lib/locales/en/marketing.yml +57 -0
  389. data/faker-3.8.0/lib/locales/en/measurement.yml +45 -0
  390. data/faker-3.8.0/lib/locales/en/michael_scott.yml +44 -0
  391. data/faker-3.8.0/lib/locales/en/military.yml +182 -0
  392. data/faker-3.8.0/lib/locales/en/minecraft.yml +663 -0
  393. data/faker-3.8.0/lib/locales/en/mitch_hedberg.yml +46 -0
  394. data/faker-3.8.0/lib/locales/en/mountain.yml +171 -0
  395. data/faker-3.8.0/lib/locales/en/mountaineering.yml +14 -0
  396. data/faker-3.8.0/lib/locales/en/movie.yml +209 -0
  397. data/faker-3.8.0/lib/locales/en/music.yml +464 -0
  398. data/faker-3.8.0/lib/locales/en/myst.yml +104 -0
  399. data/faker-3.8.0/lib/locales/en/name.yml +6088 -0
  400. data/faker-3.8.0/lib/locales/en/naruto.yml +230 -0
  401. data/faker-3.8.0/lib/locales/en/nation.yml +11 -0
  402. data/faker-3.8.0/lib/locales/en/nato_phonetic_alphabet.yml +30 -0
  403. data/faker-3.8.0/lib/locales/en/new_girl.yml +38 -0
  404. data/faker-3.8.0/lib/locales/en/one_piece.yml +362 -0
  405. data/faker-3.8.0/lib/locales/en/opera.yml +340 -0
  406. data/faker-3.8.0/lib/locales/en/overwatch.yml +2652 -0
  407. data/faker-3.8.0/lib/locales/en/parks_and_rec.yml +36 -0
  408. data/faker-3.8.0/lib/locales/en/pearl_jam.yml +213 -0
  409. data/faker-3.8.0/lib/locales/en/phish.yml +394 -0
  410. data/faker-3.8.0/lib/locales/en/phone_number.yml +82 -0
  411. data/faker-3.8.0/lib/locales/en/pokemon.yml +421 -0
  412. data/faker-3.8.0/lib/locales/en/prince.yml +227 -0
  413. data/faker-3.8.0/lib/locales/en/princess_bride.yml +51 -0
  414. data/faker-3.8.0/lib/locales/en/programming_language.yml +756 -0
  415. data/faker-3.8.0/lib/locales/en/quote.yml +609 -0
  416. data/faker-3.8.0/lib/locales/en/rajnikanth.yml +77 -0
  417. data/faker-3.8.0/lib/locales/en/relationship.yml +33 -0
  418. data/faker-3.8.0/lib/locales/en/restaurant.yml +129 -0
  419. data/faker-3.8.0/lib/locales/en/rick_and_morty.yml +119 -0
  420. data/faker-3.8.0/lib/locales/en/rock_band.yml +231 -0
  421. data/faker-3.8.0/lib/locales/en/rupaul.yml +123 -0
  422. data/faker-3.8.0/lib/locales/en/rush.yml +32 -0
  423. data/faker-3.8.0/lib/locales/en/science.yml +484 -0
  424. data/faker-3.8.0/lib/locales/en/seinfeld.yml +113 -0
  425. data/faker-3.8.0/lib/locales/en/shakespeare.yml +49 -0
  426. data/faker-3.8.0/lib/locales/en/silicon_valley.yml +125 -0
  427. data/faker-3.8.0/lib/locales/en/simpsons.yml +900 -0
  428. data/faker-3.8.0/lib/locales/en/slack_emoji.yml +886 -0
  429. data/faker-3.8.0/lib/locales/en/smashing_pumpkins.yml +382 -0
  430. data/faker-3.8.0/lib/locales/en/sonic_the_hedgehog.yml +410 -0
  431. data/faker-3.8.0/lib/locales/en/source.yml +51 -0
  432. data/faker-3.8.0/lib/locales/en/south_park.yml +363 -0
  433. data/faker-3.8.0/lib/locales/en/space.yml +376 -0
  434. data/faker-3.8.0/lib/locales/en/spongebob.yml +489 -0
  435. data/faker-3.8.0/lib/locales/en/sport.yml +130 -0
  436. data/faker-3.8.0/lib/locales/en/star_trek.yml +108 -0
  437. data/faker-3.8.0/lib/locales/en/star_wars.yml +603 -0
  438. data/faker-3.8.0/lib/locales/en/stargate.yml +68 -0
  439. data/faker-3.8.0/lib/locales/en/stranger_thing.yml +34 -0
  440. data/faker-3.8.0/lib/locales/en/street_fighter.yml +1524 -0
  441. data/faker-3.8.0/lib/locales/en/stripe.yml +42 -0
  442. data/faker-3.8.0/lib/locales/en/studio_ghibli.yml +107 -0
  443. data/faker-3.8.0/lib/locales/en/subscription.yml +50 -0
  444. data/faker-3.8.0/lib/locales/en/suits.yml +45 -0
  445. data/faker-3.8.0/lib/locales/en/super_mario.yml +58 -0
  446. data/faker-3.8.0/lib/locales/en/super_smash_bros.yml +223 -0
  447. data/faker-3.8.0/lib/locales/en/superhero.yml +582 -0
  448. data/faker-3.8.0/lib/locales/en/supernatural.yml +141 -0
  449. data/faker-3.8.0/lib/locales/en/sword_art_online.yml +330 -0
  450. data/faker-3.8.0/lib/locales/en/tarkov.yml +593 -0
  451. data/faker-3.8.0/lib/locales/en/tea.yml +172 -0
  452. data/faker-3.8.0/lib/locales/en/team.yml +130 -0
  453. data/faker-3.8.0/lib/locales/en/the_expanse.yml +95 -0
  454. data/faker-3.8.0/lib/locales/en/the_it_crowd.yml +151 -0
  455. data/faker-3.8.0/lib/locales/en/the_kingkiller_chronicle.yml +56 -0
  456. data/faker-3.8.0/lib/locales/en/the_office.yml +82 -0
  457. data/faker-3.8.0/lib/locales/en/the_room.yml +68 -0
  458. data/faker-3.8.0/lib/locales/en/the_thick_of_it.yml +86 -0
  459. data/faker-3.8.0/lib/locales/en/theater.yml +597 -0
  460. data/faker-3.8.0/lib/locales/en/tolkien.yml +2453 -0
  461. data/faker-3.8.0/lib/locales/en/touhou.yml +839 -0
  462. data/faker-3.8.0/lib/locales/en/train_station.yml +280 -0
  463. data/faker-3.8.0/lib/locales/en/tron.yml +227 -0
  464. data/faker-3.8.0/lib/locales/en/twin_peaks.yml +133 -0
  465. data/faker-3.8.0/lib/locales/en/umphreys_mcgee.yml +269 -0
  466. data/faker-3.8.0/lib/locales/en/university.yml +23 -0
  467. data/faker-3.8.0/lib/locales/en/v_for_vendetta.yml +160 -0
  468. data/faker-3.8.0/lib/locales/en/vehicle.yml +2814 -0
  469. data/faker-3.8.0/lib/locales/en/venture_bros.yml +228 -0
  470. data/faker-3.8.0/lib/locales/en/verbs.yml +3788 -0
  471. data/faker-3.8.0/lib/locales/en/volleyball.yml +501 -0
  472. data/faker-3.8.0/lib/locales/en/warhammer_fantasy.yml +549 -0
  473. data/faker-3.8.0/lib/locales/en/witcher.yml +430 -0
  474. data/faker-3.8.0/lib/locales/en/world_cup.yml +1168 -0
  475. data/faker-3.8.0/lib/locales/en/world_of_warcraft.yml +126 -0
  476. data/faker-3.8.0/lib/locales/en/yoda.yml +41 -0
  477. data/faker-3.8.0/lib/locales/en/zelda.yml +966 -0
  478. data/faker-3.8.0/lib/locales/en-AU.yml +739 -0
  479. data/faker-3.8.0/lib/locales/en-BORK.yml +107 -0
  480. data/faker-3.8.0/lib/locales/en-CA.yml +394 -0
  481. data/faker-3.8.0/lib/locales/en-GB.yml +124 -0
  482. data/faker-3.8.0/lib/locales/en-IND.yml +1268 -0
  483. data/faker-3.8.0/lib/locales/en-KE.yml +212 -0
  484. data/faker-3.8.0/lib/locales/en-MS.yml +395 -0
  485. data/faker-3.8.0/lib/locales/en-NEP.yml +226 -0
  486. data/faker-3.8.0/lib/locales/en-NG.yml +749 -0
  487. data/faker-3.8.0/lib/locales/en-NZ.yml +1195 -0
  488. data/faker-3.8.0/lib/locales/en-PAK.yml +401 -0
  489. data/faker-3.8.0/lib/locales/en-SG.yml +601 -0
  490. data/faker-3.8.0/lib/locales/en-TH.yml +360 -0
  491. data/faker-3.8.0/lib/locales/en-UG.yml +427 -0
  492. data/faker-3.8.0/lib/locales/en-US.yml +6969 -0
  493. data/faker-3.8.0/lib/locales/en-ZA.yml +1529 -0
  494. data/faker-3.8.0/lib/locales/en-au-ocker.yml +278 -0
  495. data/faker-3.8.0/lib/locales/en.yml +8 -0
  496. data/faker-3.8.0/lib/locales/es-AR.yml +4570 -0
  497. data/faker-3.8.0/lib/locales/es-MX.yml +1971 -0
  498. data/faker-3.8.0/lib/locales/es.yml +2214 -0
  499. data/faker-3.8.0/lib/locales/fa.yml +1631 -0
  500. data/faker-3.8.0/lib/locales/fi-FI.yml +335 -0
  501. data/faker-3.8.0/lib/locales/fr/address.yml +773 -0
  502. data/faker-3.8.0/lib/locales/fr/adjective.yml +266 -0
  503. data/faker-3.8.0/lib/locales/fr/ancient.yml +141 -0
  504. data/faker-3.8.0/lib/locales/fr/animal.yml +122 -0
  505. data/faker-3.8.0/lib/locales/fr/appliance.yml +69 -0
  506. data/faker-3.8.0/lib/locales/fr/book.yml +31 -0
  507. data/faker-3.8.0/lib/locales/fr/color.yml +34 -0
  508. data/faker-3.8.0/lib/locales/fr/company.yml +497 -0
  509. data/faker-3.8.0/lib/locales/fr/compass.yml +71 -0
  510. data/faker-3.8.0/lib/locales/fr/demographic.yml +6 -0
  511. data/faker-3.8.0/lib/locales/fr/gender.yml +21 -0
  512. data/faker-3.8.0/lib/locales/fr/internet.yml +15 -0
  513. data/faker-3.8.0/lib/locales/fr/lorem.yml +1094 -0
  514. data/faker-3.8.0/lib/locales/fr/measurement.yml +34 -0
  515. data/faker-3.8.0/lib/locales/fr/name.yml +1193 -0
  516. data/faker-3.8.0/lib/locales/fr/phone_number.yml +38 -0
  517. data/faker-3.8.0/lib/locales/fr/pokemon.yml +421 -0
  518. data/faker-3.8.0/lib/locales/fr-CA.yml +2802 -0
  519. data/faker-3.8.0/lib/locales/fr-CH.yml +2491 -0
  520. data/faker-3.8.0/lib/locales/fr.yml +5 -0
  521. data/faker-3.8.0/lib/locales/he.yml +273 -0
  522. data/faker-3.8.0/lib/locales/hy.yml +3922 -0
  523. data/faker-3.8.0/lib/locales/id.yml +853 -0
  524. data/faker-3.8.0/lib/locales/it.yml +1349 -0
  525. data/faker-3.8.0/lib/locales/ja/README.md +13 -0
  526. data/faker-3.8.0/lib/locales/ja/address.yml +363 -0
  527. data/faker-3.8.0/lib/locales/ja/adjective.yml +148 -0
  528. data/faker-3.8.0/lib/locales/ja/ancient.yml +18 -0
  529. data/faker-3.8.0/lib/locales/ja/animal.yml +87 -0
  530. data/faker-3.8.0/lib/locales/ja/artist.yml +46 -0
  531. data/faker-3.8.0/lib/locales/ja/bank.yml +139 -0
  532. data/faker-3.8.0/lib/locales/ja/book.yml +496 -0
  533. data/faker-3.8.0/lib/locales/ja/cat.yml +79 -0
  534. data/faker-3.8.0/lib/locales/ja/coffee.yml +22 -0
  535. data/faker-3.8.0/lib/locales/ja/color.yml +35 -0
  536. data/faker-3.8.0/lib/locales/ja/commerce.yml +103 -0
  537. data/faker-3.8.0/lib/locales/ja/company.yml +26 -0
  538. data/faker-3.8.0/lib/locales/ja/dog.yml +339 -0
  539. data/faker-3.8.0/lib/locales/ja/emotion.yml +49 -0
  540. data/faker-3.8.0/lib/locales/ja/food.yml +41 -0
  541. data/faker-3.8.0/lib/locales/ja/football.yml +115 -0
  542. data/faker-3.8.0/lib/locales/ja/gender.yml +6 -0
  543. data/faker-3.8.0/lib/locales/ja/lorem.yml +1020 -0
  544. data/faker-3.8.0/lib/locales/ja/name.yml +213 -0
  545. data/faker-3.8.0/lib/locales/ja/naruto.yml +230 -0
  546. data/faker-3.8.0/lib/locales/ja/overwatch.yml +37 -0
  547. data/faker-3.8.0/lib/locales/ja/phone_number.yml +13 -0
  548. data/faker-3.8.0/lib/locales/ja/pokemon.yml +441 -0
  549. data/faker-3.8.0/lib/locales/ja/relationship.yml +33 -0
  550. data/faker-3.8.0/lib/locales/ja/restaurant.yml +82 -0
  551. data/faker-3.8.0/lib/locales/ja/space.yml +23 -0
  552. data/faker-3.8.0/lib/locales/ja/sport.yml +130 -0
  553. data/faker-3.8.0/lib/locales/ja/studio_ghibli.yml +112 -0
  554. data/faker-3.8.0/lib/locales/ja/subscription.yml +50 -0
  555. data/faker-3.8.0/lib/locales/ja/super_mario.yml +73 -0
  556. data/faker-3.8.0/lib/locales/ja/super_smash_bros.yml +8 -0
  557. data/faker-3.8.0/lib/locales/ja/touhou.yml +466 -0
  558. data/faker-3.8.0/lib/locales/ja/university.yml +22 -0
  559. data/faker-3.8.0/lib/locales/ja/zelda.yml +19 -0
  560. data/faker-3.8.0/lib/locales/ko.yml +1473 -0
  561. data/faker-3.8.0/lib/locales/lt.yml +315 -0
  562. data/faker-3.8.0/lib/locales/lv.yml +1249 -0
  563. data/faker-3.8.0/lib/locales/mi-NZ.yml +283 -0
  564. data/faker-3.8.0/lib/locales/nb-NO.yml +553 -0
  565. data/faker-3.8.0/lib/locales/nl.yml +33551 -0
  566. data/faker-3.8.0/lib/locales/no.yml +7 -0
  567. data/faker-3.8.0/lib/locales/pl.yml +4047 -0
  568. data/faker-3.8.0/lib/locales/pt-BR.yml +8266 -0
  569. data/faker-3.8.0/lib/locales/pt.yml +867 -0
  570. data/faker-3.8.0/lib/locales/ru.yml +1401 -0
  571. data/faker-3.8.0/lib/locales/sk.yml +4453 -0
  572. data/faker-3.8.0/lib/locales/sv.yml +771 -0
  573. data/faker-3.8.0/lib/locales/th.yml +380 -0
  574. data/faker-3.8.0/lib/locales/tr.yml +98 -0
  575. data/faker-3.8.0/lib/locales/uk.yml +1852 -0
  576. data/faker-3.8.0/lib/locales/vi.yml +412 -0
  577. data/faker-3.8.0/lib/locales/zh-CN/bank.yml +17 -0
  578. data/faker-3.8.0/lib/locales/zh-CN.yml +578 -0
  579. data/faker-3.8.0/lib/locales/zh-TW.yml +1045 -0
  580. data/mega-pro-pkg.gemspec +12 -0
  581. metadata +620 -0
@@ -0,0 +1,118 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Based on Rails ActiveSupport Deprecator
4
+ # https://github.com/rails/rails/blob/main/activesupport/lib/active_support/deprecation/constant_accessor.rb
5
+
6
+ # rubocop:disable Style/ClassVars
7
+ module Faker
8
+ # Provides a way to rename generators, including their namespaces, with a deprecation cycle in which
9
+ # both the old and new names work, but using the old one prints a deprecation message.
10
+ #
11
+ # Deprecator provides a deprecate_generator method to be used when
12
+ # renaming a generator. For example, let's say we want to change the following Generator's
13
+ # name to <tt>Faker::NewGenerator</tt>:
14
+ #
15
+ # module Faker
16
+ # class Generator
17
+ # def self.generate
18
+ # "be kind"
19
+ # end
20
+ # end
21
+ # end
22
+ #
23
+ # To rename it, you need to do the update the name and declare the deprecation by
24
+ # including the <tt>Deprecator</tt> module and using the deprecate_generator method:
25
+ #
26
+ # module Faker
27
+ # class NewGenerator
28
+ # def self.generate
29
+ # "be kind"
30
+ # end
31
+ # end
32
+ #
33
+ # include Deprecator
34
+ # deprecate_generator('DeprecatedGenerator', NewGenerator)
35
+ # end
36
+ #
37
+ # The first argument is a constant name (no colons) as a string. It is the name of
38
+ # the constant you want to deprecate.
39
+ #
40
+ # The second argument is the constant path of the replacement (no colons) as a constant.
41
+ #
42
+ # For this to work, a +const_missing+ hook is installed. When users
43
+ # reference the deprecated constant, the callback prints the
44
+ # message and constantizes the replacement.
45
+ #
46
+ # With that in place, references to <tt>Faker::Deprecator</tt> still work, they
47
+ # evaluate to <tt>Faker::NewGenerator</tt> now, and trigger a deprecation warning:
48
+ #
49
+ # Faker::Generator.generate
50
+ # # DEPRECATION WARNING: Faker::Generator is deprecated. Use Faker::NewGenerator instead
51
+ # # "be kind"
52
+ #
53
+ # For testing the deprecations, we provide <tt>assert_deprecated</tt>
54
+ # and <tt>assert_not_deprecated</tt> matchers.
55
+ #
56
+ # There's also a <tt>Faker::Deprecator.skip_warning</tt> helper to silence
57
+ # the deprecation messages in the *test* output. Use it for generators that have lots of tests
58
+ # to avoid too many noise when running the tests.
59
+ module Deprecator
60
+ def self.included(base)
61
+ extension = Module.new do
62
+ def const_missing(missing_const_name)
63
+ if class_variable_defined?(:@@_deprecated_constants) && (replacement = class_variable_get(:@@_deprecated_constants)[missing_const_name.to_s])
64
+ unless Faker::Deprecator.skip_warning?
65
+ deprecated_message = "#{name}::#{replacement[:old_generator]} is deprecated."
66
+ replacement_message = "Use #{replacement[:new_constant]} instead."
67
+ $stdout.puts("DEPRECATION WARNING: #{deprecated_message} #{replacement_message}")
68
+ end
69
+
70
+ return replacement[:new_constant]
71
+ end
72
+
73
+ super
74
+ end
75
+
76
+ def deprecate_generator(old_generator_name, new_generator_constant)
77
+ class_variable_set(:@@_deprecated_constants, {}) unless class_variable_defined?(:@@_deprecated_constants)
78
+ class_variable_get(:@@_deprecated_constants)[old_generator_name] = {
79
+ new_constant: new_generator_constant,
80
+ old_generator: old_generator_name
81
+ }
82
+ end
83
+ end
84
+
85
+ base.singleton_class.prepend extension
86
+ end
87
+
88
+ # Silence deprecation warnings within the block.
89
+ #
90
+ # Faker::Generator.generate
91
+ # # => DEPRECATION WARNING: Faker::Generator is deprecated. Use Faker::NewGenerator instead.
92
+ #
93
+ # Faker::Deprecator.skip_warning do
94
+ # Faker::Generator.generate
95
+ # end
96
+ # # => nil
97
+ def self.skip_warning
98
+ original = Faker::Deprecator.skip
99
+ Faker::Deprecator.skip = true
100
+ yield
101
+ ensure
102
+ Faker::Deprecator.skip = original
103
+ end
104
+
105
+ def self.skip_warning?
106
+ @skip == true
107
+ end
108
+
109
+ def self.skip
110
+ @skip ||= false
111
+ end
112
+
113
+ def self.skip=(value)
114
+ @skip = value
115
+ end
116
+ end
117
+ end
118
+ # rubocop:enable Style/ClassVars
@@ -0,0 +1,478 @@
1
+ # frozen_string_literal: true
2
+
3
+ ##
4
+ # A high level way to generate a list of generated values that fit a specific
5
+ # format, such as an ID, postal code, or phone number.
6
+ #
7
+ # It provides generators for random digits and letters, hardcoded literal
8
+ # strings, computed values based on previously-generated values, union (one-of)
9
+ # selectors, and grouped generators.
10
+ #
11
+ # The generation allows for dependencies on previously generated values -- most
12
+ # useful for computations -- and this object knows how to build that dependency
13
+ # graph.
14
+ #
15
+ # See {PositionalGenerator::Builder} for more.
16
+ class PositionalGenerator
17
+ ##
18
+ # @param as_type [Symbol] +:string+ to generate a String
19
+ # @param block [Method] a function that interacts with the {Builder}
20
+ def initialize(as_type, &block)
21
+ @block = block
22
+ @generator_builder = Builder.new(as_type)
23
+ end
24
+
25
+ ##
26
+ # @return [String] if +as_type+ is +:string+
27
+ def generate
28
+ @block.call(@generator_builder)
29
+ @generator_builder.build
30
+ end
31
+
32
+ Component = Struct.new(:position, :name, :deps, :generator)
33
+
34
+ class Builder
35
+ attr_reader :as_type
36
+
37
+ def initialize(as_type)
38
+ @components = []
39
+ @as_type = as_type
40
+ end
41
+
42
+ ##
43
+ # Generate a value in the range of 0..9.
44
+ #
45
+ # @param name [Symbol] the name for this node in the group
46
+ # @param length [Integer] how many digits to generate
47
+ # @param ranges [Array<Range, Array, Set>] an array of limitations on the
48
+ # generation. Elements can be a Range to select from within that range,
49
+ # or an Array or Set to select an element from within the list.
50
+ # @return [void]
51
+ #
52
+ # @example a digit
53
+ # int
54
+ #
55
+ # @example five digits named :a
56
+ # int(name: :a, length: 5)
57
+ #
58
+ # @example digits of any length between 4 to 10
59
+ # int(ranges: [1_000 .. 9_999_999_999)
60
+ def int(name: nil, length: 1, ranges: nil)
61
+ @components << Component.new(@components.count, name, [], Int.new(length, ranges))
62
+ end
63
+
64
+ ##
65
+ # Generate a value in the range of 'a'..'Z'.
66
+ #
67
+ # @param name [Symbol] the name for this node in the group
68
+ # @param length [Integer, Range] how many letters to generate
69
+ # @param ranges [Array<Range, Array, Set>] an array of limitations on the
70
+ # generation. Elements can be a Range to select from within that range,
71
+ # or an Array or Set to select an element from within the list.
72
+ # @return [void]
73
+ #
74
+ # @example Generate a letter
75
+ # letter
76
+ #
77
+ # @example Generate five uppercase letters named :b
78
+ # letter(name: :b, length: 5, ranges: ['A'..'Z'])
79
+ #
80
+ # @example Generate three-letter strings from within specific values
81
+ # letter(ranges: ['700'..'799', '7A0'..'7F9'])
82
+ def letter(name: nil, length: 1, ranges: ['a'..'z', 'A'..'Z'])
83
+ @components << Component.new(@components.count, name, [], Letter.new(length, ranges))
84
+ end
85
+
86
+ ##
87
+ # Generate a literal String
88
+ #
89
+ # @param value [String]
90
+ # @param name [Symbol] the name for this node in the group
91
+ # @return [void]
92
+ # @example
93
+ # lit("-")
94
+ def lit(value, name: nil)
95
+ @components << Component.new(@components.count, name, [], Literal.new(value))
96
+ end
97
+
98
+ ##
99
+ # Fill the position with an arbitrary value.
100
+ #
101
+ # @param name [Symbol] the name for this node in the group
102
+ # @param deps [Array<Symbol>] the name of other fields that this one depends on
103
+ # @param block [Method] the block that yields the arbitrary value. Its
104
+ # arguments are the deps.
105
+ # @return [void]
106
+ #
107
+ # @example Today's date
108
+ # computed do
109
+ # Date.today
110
+ # end
111
+ #
112
+ # @example A check digit
113
+ # int(name: :a, length: 5)
114
+ # computed(deps: [:a]) do |a|
115
+ # a.to_s.bytes.sum % 10
116
+ # end
117
+ def computed(name: nil, deps: [], &block)
118
+ @components << Component.new(@components.count, name, deps, Computed.new(block))
119
+ end
120
+
121
+ ##
122
+ # Fill the position with one of the results from the given generators.
123
+ #
124
+ # @param name [Symbol] the name for this node in the group
125
+ # @param block [Method] subgenerator block
126
+ # @return [void]
127
+ #
128
+ # @example Either five digits, or two letters
129
+ # oneof do |or_else|
130
+ # or_else.int(length: 5)
131
+ # or_else.letter(length: 2)
132
+ # end
133
+ #
134
+ # @example Either one letter; or a slash, five digits, then a slash.
135
+ # oneof do |or_else|
136
+ # or_else.letter
137
+ # or_else.group do |g_|
138
+ # g_.lit("/")
139
+ # g_.digit(length: 5)
140
+ # g_.lit("/")
141
+ # end
142
+ # end
143
+ def oneof(name: nil, &block)
144
+ @components << Component.new(@components.count, name, [], Oneof.new(self, block))
145
+ end
146
+
147
+ ##
148
+ # A group of generators. Useful for {#oneof}.
149
+ #
150
+ # @param name [Symbol] the name for this node in the group
151
+ # @param block [Method] a subgenerator block
152
+ # @return [void]
153
+ def group(name: nil, &block)
154
+ @components << Component.new(@components.count, name, [], Group.new(@as_type, block))
155
+ end
156
+
157
+ ##
158
+ # Generate the value.
159
+ #
160
+ # @return [String] if +as_type+ is +:string+
161
+ def build
162
+ graph = build_graph
163
+ stack = build_stack(graph)
164
+ values = generate_values(stack)
165
+ convert(values)
166
+ end
167
+
168
+ private
169
+
170
+ ##
171
+ # Turn the components into a graph following dependencies.
172
+ #
173
+ # @return [Array<(Integer, Integer)>]
174
+ #
175
+ # Components can have dependencies. Here's one where a computation (b)
176
+ # depends on a value generated after it (c):
177
+ #
178
+ # @components = [
179
+ # Int.new(0, :a, 1, nil),
180
+ # Computed.new(1, :b, [:c]) { |c| c + 1 },
181
+ # Int.new(2, :c, 1, nil),
182
+ # ]
183
+ #
184
+ # We can think of a graph like so:
185
+ #
186
+ # (a) (c)
187
+ # | |
188
+ # | (b)
189
+ # \ /
190
+ # end
191
+ #
192
+ # Or in Mermaid:
193
+ #
194
+ # ```mermaid
195
+ # stateDiagram-v2
196
+ # a --> [*]
197
+ # c --> b
198
+ # b --> [*]
199
+ # ```
200
+ #
201
+ # This method builds that graph, using their positional locations as the
202
+ # ID. The end state is represented as +nil+. So continuing the example
203
+ # above, it will give this output:
204
+ #
205
+ # [
206
+ # [0, nil],
207
+ # [2, 1],
208
+ # [1, nil],
209
+ # ]
210
+ #
211
+ # Later we can look up the appropriate component by indexing into the
212
+ # +@components+ array.
213
+ def build_graph
214
+ graph = []
215
+
216
+ # rubocop:disable Style/CombinableLoops
217
+ @components.each do |component|
218
+ component.deps.each do |dep|
219
+ dep_component = @components.detect { |c| c.name == dep }
220
+ raise if dep_component.nil?
221
+
222
+ graph.push([dep_component.position, component.position])
223
+ end
224
+ end
225
+
226
+ @components.each do |component|
227
+ graph.push([component.position, nil]) if graph.none? { |(from, _to)| from == component.position }
228
+ end
229
+ # rubocop:enable Style/CombinableLoops
230
+
231
+ graph
232
+ end
233
+
234
+ ##
235
+ # Produce a stack of components to evaluate in sequence.
236
+ #
237
+ # @param graph [Array<(Integer, Integer)>]
238
+ # @return [Array<Array<Int>>]
239
+ #
240
+ # Now that we have a graph, we know enough to determine how to traverse the
241
+ # generators such that all dependencies are met.
242
+ #
243
+ # The initial stack is an array of all the free traversals to the goal
244
+ # (where the +to+ is +nil+).
245
+ #
246
+ # Loop over the top of the stack:
247
+ # - The next array is all the nodes that lead into the nodes atop the
248
+ # stack.
249
+ # - If the next array has values, push that onto the top of the stack.
250
+ # - If the next array is empty, we are done.
251
+ #
252
+ # For example, given the graph:
253
+ #
254
+ # [
255
+ # [0, nil],
256
+ # [2, 1],
257
+ # [1, nil],
258
+ # ]
259
+ #
260
+ # The initial stack is:
261
+ #
262
+ # [
263
+ # [0, 1]
264
+ # ]
265
+ #
266
+ # We loop over the top of the stack, +[0, 1]+, and find all the nodes of
267
+ # the graph that lead there. Nothing leads to +0+, and +2+ leads to +1+.
268
+ #
269
+ # Therefore, push +[2]+ to the top of the stack.
270
+ #
271
+ # Repeat for +[2]+. Nothing leads to +2+, so our new goal is +[]+. This is
272
+ # empty, so don't push it onto the stack. We are done.
273
+ #
274
+ # The final stack is:
275
+ #
276
+ # [
277
+ # [0, 1],
278
+ # [2]
279
+ # ]
280
+ def build_stack(graph)
281
+ terminals = graph.filter_map { |(from, to)| to.nil? && from }
282
+ stack = [terminals]
283
+ seen = Set.new(terminals)
284
+ deps = []
285
+
286
+ loop do
287
+ stack[-1].each do |e|
288
+ deps = graph.select { |(from, to)| to == e && !seen.include?(from) }.map do |from, _to|
289
+ seen << from
290
+ from
291
+ end
292
+ stack << deps if deps.any?
293
+ end
294
+
295
+ break if deps.empty?
296
+ end
297
+
298
+ stack
299
+ end
300
+
301
+ ##
302
+ # Turn a stack into a list of generated values.
303
+ #
304
+ # @param stack [Array<Array<Int>>]
305
+ # @return [Array<Object>] values sorted by desired order
306
+ #
307
+ # We start with a stack of components we need evaluated. We have been
308
+ # tracking these components by position, so first we need to look up the
309
+ # component in our list.
310
+ #
311
+ # From there we can get a list of all the dependencies for the component.
312
+ # These have already been evaluated, since +stack+ is sorted, so we fetch
313
+ # them.
314
+ #
315
+ # Since the stack was sorted by computation order, we must re-sort them
316
+ # into positional order at the end.
317
+ def generate_values(stack)
318
+ result = []
319
+
320
+ while (top = stack.pop)
321
+ top.each do |component_id|
322
+ component = @components[component_id]
323
+ raise if component.nil?
324
+
325
+ values = result.filter_map do |(_id, name, value)|
326
+ value if component.deps.include?(name)
327
+ end
328
+
329
+ result << [component.position, component.name, component.generator.generate(values)]
330
+ end
331
+ end
332
+
333
+ result.sort_by do |component_position, _, _|
334
+ component_position
335
+ end
336
+ end
337
+
338
+ ##
339
+ # @param values [Array<Object>]
340
+ # @return [String] if +@as_type+ is +:string+
341
+ # @raise [ArgumentError] if +@as_type+ is unsupported
342
+ def convert(values)
343
+ case @as_type
344
+ when :string
345
+ values.inject('') do |acc, (_, _, v)|
346
+ "#{acc}#{v}"
347
+ end
348
+ else
349
+ raise ArgumentError, "unknown return type: #{@as_type}"
350
+ end
351
+ end
352
+
353
+ class Group
354
+ def initialize(as_type, block)
355
+ @as_type = as_type
356
+ @block = block
357
+ end
358
+
359
+ def generate(_)
360
+ builder = Builder.new(@as_type)
361
+ @block.call(builder)
362
+ builder.build
363
+ end
364
+ end
365
+
366
+ class Oneof
367
+ def initialize(builder, block)
368
+ @block = block
369
+ @builder = builder
370
+ end
371
+
372
+ def generate(...)
373
+ subgens = OneofSelector.new(@builder)
374
+ @block.call(subgens)
375
+ subgens.sample
376
+ subgens.generate(...)
377
+ end
378
+
379
+ class OneofSelector
380
+ def initialize(builder)
381
+ @subgens = []
382
+ @builder = Builder.new(builder.as_type)
383
+ end
384
+
385
+ def method_missing(meth, *args, **kwargs, &block)
386
+ @subgens << [meth, args, kwargs, block]
387
+ end
388
+
389
+ def respond_to_missing?(method_name, include_private = false)
390
+ @builder.respond_to?(method_name, include_private)
391
+ end
392
+
393
+ def sample
394
+ (meth, args, kwargs, block) = Faker::Base.sample(@subgens)
395
+ @builder.send(meth, *args, **kwargs, &block)
396
+ end
397
+
398
+ def generate(...)
399
+ @builder.build
400
+ end
401
+ end
402
+ end
403
+
404
+ class Int
405
+ def initialize(length, ranges)
406
+ # Internally we store only an Enumerable of Range values. So if we are
407
+ # not given any Ranges but are given a length, we need to convert the
408
+ # length to a Range.
409
+ #
410
+ # If the length is `5`, that means we should compute the Range `10000..99999`.
411
+ # We can compute the lower end with a simple exponent: 10^4 = 10000.
412
+ # The upper end is one less than an exponent: 10^5 - 1 = 99999.
413
+ if ranges.nil?
414
+ lower = 10**(length - 1)
415
+ upper = (10**length) - 1
416
+ ranges = [lower..upper]
417
+ end
418
+
419
+ @ranges = ranges
420
+ end
421
+
422
+ def generate(_)
423
+ Faker::Base.rand(@ranges.sample(random: Faker::Config.random))
424
+ end
425
+ end
426
+
427
+ class Letter
428
+ def initialize(length, ranges)
429
+ @length = length
430
+ @ranges = ranges
431
+ end
432
+
433
+ def generate(_)
434
+ @length.times.inject('') do |acc, _index|
435
+ generated_character = char
436
+ "#{acc}#{generated_character}"
437
+ end
438
+ end
439
+
440
+ private
441
+
442
+ def char
443
+ if @ranges
444
+ case s = @ranges.sample(random: Faker::Config.random)
445
+ when Range
446
+ s.to_a.sample(random: Faker::Config.random)
447
+ when Array, Set
448
+ s.sample(random: Faker::Config.random)
449
+ else
450
+ raise ArgumentError, "unsupported range type: #{s.inspect}"
451
+ end
452
+ else
453
+ Faker::Base.sample(Faker::Base::Letters)
454
+ end
455
+ end
456
+ end
457
+
458
+ class Literal
459
+ def initialize(value)
460
+ @value = value
461
+ end
462
+
463
+ def generate(_)
464
+ @value
465
+ end
466
+ end
467
+
468
+ class Computed
469
+ def initialize(block)
470
+ @block = block
471
+ end
472
+
473
+ def generate(args)
474
+ @block.call(*args)
475
+ end
476
+ end
477
+ end
478
+ end
@@ -0,0 +1,60 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class UniqueGenerator
5
+ def initialize(generator, max_retries)
6
+ @generator = generator
7
+ @max_retries = max_retries
8
+ end
9
+
10
+ def method_missing(name, *arguments)
11
+ self.class.marked_unique.add(self)
12
+
13
+ @max_retries.times do
14
+ result = @generator.public_send(name, *arguments)
15
+
16
+ next if previous_results[[name, arguments]].include?(result)
17
+
18
+ previous_results[[name, arguments]] << result
19
+ return result
20
+ end
21
+
22
+ raise RetryLimitExceeded, "Retry limit exceeded for #{name}"
23
+ end
24
+ # Have method_missing use ruby 2.x keywords if the method exists.
25
+ # This is necessary because the syntax for passing arguments (`...`)
26
+ # is invalid on versions before Ruby 2.7, so it can't be used.
27
+ ruby2_keywords(:method_missing) if respond_to?(:ruby2_keywords, true)
28
+
29
+ def respond_to_missing?(method_name, include_private = false)
30
+ method_name.to_s.start_with?('faker_') || super
31
+ end
32
+
33
+ class RetryLimitExceeded < StandardError; end
34
+
35
+ def previous_results
36
+ Thread.current[:faker_unique_generator_previous_results] ||= {}
37
+ Thread.current[:faker_unique_generator_previous_results][@generator] ||= Hash.new { |hash, key| hash[key] = Set.new }
38
+ end
39
+
40
+ def clear
41
+ previous_results.clear
42
+ end
43
+
44
+ def self.marked_unique
45
+ Thread.current[:faker_unique_generator_marked_unique] ||= Set.new
46
+ end
47
+
48
+ def self.clear
49
+ marked_unique.each(&:clear)
50
+ marked_unique.clear
51
+ end
52
+
53
+ def exclude(name, arguments, values)
54
+ values ||= []
55
+ values.each do |value|
56
+ previous_results[[name, arguments]] << value
57
+ end
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,56 @@
1
+ # How Locales Work
2
+
3
+ The default locale is English. You can see how it is implemented in the "translate" method in [Faker.rb](/lib/faker.rb).
4
+
5
+ Here's how to set it:
6
+
7
+ ```ruby
8
+ # Sets the locale to "Simplified Chinese":
9
+ Faker::Config.locale = 'zh-CN'
10
+ ```
11
+
12
+ It works so that once the Faker locale is set to a different location, the translate method will check that `.yml` file for an equivalent and use that data. If it doesn't exist, it defaults back to English. It uses the [I18n](https://github.com/ruby-i18n/i18n) gem to do this.
13
+
14
+ Using Chinese as an example, when the locale is set to Chinese and you attempt to call for hipster ipsem (which doesn't exist at the time of this writing), you will get English back. It checks the "zh-CH.yml" file, does not find "hipster" and then checks the "en.yml" file and returns a word from that array.
15
+
16
+ ```ruby
17
+ Faker::Config.locale = 'zh-CN'
18
+ Faker::Hipster.word #=> "kogi"
19
+ ```
20
+
21
+ ## How to update a locale with more translations
22
+
23
+ To update a locale with more translation features, simply add a new field to the `.yml` file that corresponds to an existing piece of functionality in the "en.yml" file. In this example, that would mean providing Chinese hipster words.
24
+
25
+ ```yaml
26
+ # /lib/locales/zh-CN.yml
27
+ hipster:
28
+ - "屌丝"
29
+ ```
30
+
31
+ ```ruby
32
+ # Now this should work:
33
+ Faker::Hipster.word #=> "屌丝"
34
+ ```
35
+
36
+ After you've done that, find or create a test file for the locale you've updated and test the functionality for that language.
37
+
38
+ In our hypothetical example here, one would add something like this to the "test-zh-locale.rb" file in the "test_ch_methods" method:
39
+
40
+ ```ruby
41
+ assert Faker::Hipster.word.is_a? String
42
+ ```
43
+
44
+ ## How to set the default locale for in threaded server environments
45
+
46
+ If you want to modify the default locale that will be used in new threads, set it in your configuration:
47
+
48
+ ```ruby
49
+ Faker::Config.default_locale = :pt
50
+ ```
51
+
52
+ In threaded server environments, e.g., Puma, locale per thread can be set as the following:
53
+
54
+ ```ruby
55
+ Faker::Config.locale = :es
56
+ ```