faker 2.13.0 → 3.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (485) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +1277 -24
  3. data/README.md +138 -320
  4. data/lib/faker/blockchain/aeternity.rb +5 -5
  5. data/lib/faker/blockchain/bitcoin.rb +1 -2
  6. data/lib/faker/blockchain/ethereum.rb +1 -1
  7. data/lib/faker/blockchain/tezos.rb +30 -3
  8. data/lib/faker/blockchain.rb +9 -0
  9. data/lib/faker/books/dune.rb +17 -12
  10. data/lib/faker/books/lovecraft.rb +16 -44
  11. data/lib/faker/books/the_kingkiller_chronicle.rb +61 -0
  12. data/lib/faker/books.rb +9 -0
  13. data/lib/faker/creature/bird.rb +203 -0
  14. data/lib/faker/creature.rb +9 -0
  15. data/lib/faker/default/address.rb +11 -31
  16. data/lib/faker/default/adjective.rb +35 -0
  17. data/lib/faker/default/alphanumeric.rb +3 -9
  18. data/lib/faker/default/app.rb +1 -10
  19. data/lib/faker/default/avatar.rb +2 -13
  20. data/lib/faker/default/bank.rb +28 -26
  21. data/lib/faker/default/barcode.rb +165 -0
  22. data/lib/faker/default/beer.rb +3 -3
  23. data/lib/faker/default/boolean.rb +2 -4
  24. data/lib/faker/default/camera.rb +46 -0
  25. data/lib/faker/default/cannabis.rb +10 -0
  26. data/lib/faker/default/chile_rut.rb +28 -27
  27. data/lib/faker/default/chuck_norris.rb +1 -0
  28. data/lib/faker/default/code.rb +166 -52
  29. data/lib/faker/default/color.rb +77 -6
  30. data/lib/faker/default/commerce.rb +32 -18
  31. data/lib/faker/default/company.rb +175 -30
  32. data/lib/faker/default/crypto.rb +25 -5
  33. data/lib/faker/default/crypto_coin.rb +3 -15
  34. data/lib/faker/default/date.rb +65 -42
  35. data/lib/faker/default/demographic.rb +1 -5
  36. data/lib/faker/default/driving_licence.rb +45 -20
  37. data/lib/faker/default/drone.rb +332 -0
  38. data/lib/faker/default/educator.rb +13 -0
  39. data/lib/faker/default/emotion.rb +33 -0
  40. data/lib/faker/default/file.rb +5 -22
  41. data/lib/faker/default/finance.rb +51 -7
  42. data/lib/faker/default/food.rb +28 -2
  43. data/lib/faker/default/hipster.rb +15 -52
  44. data/lib/faker/default/hobby.rb +22 -0
  45. data/lib/faker/default/html.rb +230 -0
  46. data/lib/faker/default/id_number.rb +176 -31
  47. data/lib/faker/default/invoice.rb +8 -21
  48. data/lib/faker/default/json.rb +15 -27
  49. data/lib/faker/default/lorem.rb +179 -77
  50. data/lib/faker/default/lorem_flickr.rb +5 -38
  51. data/lib/faker/default/markdown.rb +14 -17
  52. data/lib/faker/default/marketing.rb +1 -1
  53. data/lib/faker/default/measurement.rb +19 -50
  54. data/lib/faker/default/military.rb +26 -0
  55. data/lib/faker/default/mountain.rb +33 -0
  56. data/lib/faker/default/name.rb +1 -5
  57. data/lib/faker/default/nation.rb +0 -3
  58. data/lib/faker/default/{nhs.rb → national_health_service.rb} +10 -10
  59. data/lib/faker/default/number.rb +34 -62
  60. data/lib/faker/default/omniauth.rb +102 -97
  61. data/lib/faker/default/phone_number.rb +36 -21
  62. data/lib/faker/default/placeholdit.rb +12 -22
  63. data/lib/faker/{quotes → default}/quote.rb +39 -0
  64. data/lib/faker/default/relationship.rb +2 -6
  65. data/lib/faker/default/science.rb +108 -0
  66. data/lib/faker/default/source.rb +3 -16
  67. data/lib/faker/default/south_africa.rb +3 -3
  68. data/lib/faker/default/space.rb +1 -1
  69. data/lib/faker/default/sport.rb +116 -0
  70. data/lib/faker/default/string.rb +2 -8
  71. data/lib/faker/default/stripe.rb +7 -23
  72. data/lib/faker/default/tea.rb +41 -0
  73. data/lib/faker/{music/show.rb → default/theater.rb} +8 -8
  74. data/lib/faker/default/time.rb +4 -34
  75. data/lib/faker/default/types.rb +14 -36
  76. data/lib/faker/default/vehicle.rb +45 -55
  77. data/lib/faker/default/vulnerability_identifier.rb +23 -0
  78. data/lib/faker/default/world_cup.rb +2 -11
  79. data/lib/faker/default/x.rb +189 -0
  80. data/lib/faker/default.rb +9 -0
  81. data/lib/faker/fantasy/tolkien.rb +67 -0
  82. data/lib/faker/fantasy.rb +9 -0
  83. data/lib/faker/games/clash_of_clans.rb +48 -0
  84. data/lib/faker/games/control.rb +1 -1
  85. data/lib/faker/games/dnd.rb +131 -14
  86. data/lib/faker/games/dota.rb +14 -5
  87. data/lib/faker/games/elder_scrolls.rb +26 -0
  88. data/lib/faker/games/final_fantasy_xiv.rb +73 -0
  89. data/lib/faker/games/heroes.rb +13 -0
  90. data/lib/faker/games/heroes_of_the_storm.rb +0 -11
  91. data/lib/faker/games/minecraft.rb +66 -1
  92. data/lib/faker/games/myst.rb +1 -1
  93. data/lib/faker/games/street_fighter.rb +61 -0
  94. data/lib/faker/games/super_mario.rb +48 -0
  95. data/lib/faker/games/tarkov.rb +205 -0
  96. data/lib/faker/games/touhou.rb +75 -0
  97. data/lib/faker/games/witcher.rb +39 -0
  98. data/lib/faker/games/world_of_warcraft.rb +26 -1
  99. data/lib/faker/games.rb +9 -0
  100. data/lib/faker/internet.rb +582 -0
  101. data/lib/faker/japanese_media/conan.rb +48 -0
  102. data/lib/faker/japanese_media/cowboy_bebop.rb +61 -0
  103. data/lib/faker/japanese_media/doraemon.rb +48 -0
  104. data/lib/faker/japanese_media/dragon_ball.rb +26 -0
  105. data/lib/faker/japanese_media/fullmetal_alchemist_brotherhood.rb +48 -0
  106. data/lib/faker/japanese_media/kamen_rider.rb +102 -0
  107. data/lib/faker/japanese_media/naruto.rb +61 -0
  108. data/lib/faker/japanese_media/one_piece.rb +1 -1
  109. data/lib/faker/japanese_media/studio_ghibli.rb +48 -0
  110. data/lib/faker/japanese_media.rb +9 -0
  111. data/lib/faker/locations/australia.rb +49 -0
  112. data/lib/faker/locations.rb +9 -0
  113. data/lib/faker/movies/avatar.rb +49 -0
  114. data/lib/faker/movies/hackers.rb +48 -0
  115. data/lib/faker/movies/hobbit.rb +4 -4
  116. data/lib/faker/movies/how_to_train_your_dragon.rb +48 -0
  117. data/lib/faker/movies/lord_of_the_rings.rb +3 -3
  118. data/lib/faker/movies/star_wars.rb +75 -7
  119. data/lib/faker/movies/the_room.rb +63 -0
  120. data/lib/faker/movies/tron.rb +161 -0
  121. data/lib/faker/movies.rb +9 -0
  122. data/lib/faker/music/bossa_nova.rb +35 -0
  123. data/lib/faker/music/grateful_dead.rb +0 -2
  124. data/lib/faker/music/hiphop.rb +48 -0
  125. data/lib/faker/music/opera.rb +237 -1
  126. data/lib/faker/music/pearl_jam.rb +0 -2
  127. data/lib/faker/music/rock_band.rb +12 -0
  128. data/lib/faker/music/rush.rb +0 -2
  129. data/lib/faker/music/smashing_pumpkins.rb +62 -0
  130. data/lib/faker/{music/music.rb → music.rb} +16 -0
  131. data/lib/faker/quotes/rajnikanth.rb +1 -0
  132. data/lib/faker/quotes/shakespeare.rb +34 -0
  133. data/lib/faker/quotes.rb +9 -0
  134. data/lib/faker/religion/bible.rb +50 -0
  135. data/lib/faker/religion.rb +9 -0
  136. data/lib/faker/sports/chess.rb +90 -0
  137. data/lib/faker/sports/mountaineering.rb +22 -0
  138. data/lib/faker/sports/volleyball.rb +74 -0
  139. data/lib/faker/sports.rb +9 -0
  140. data/lib/faker/travel/airport.rb +43 -0
  141. data/lib/faker/travel/train_station.rb +54 -0
  142. data/lib/faker/travel.rb +9 -0
  143. data/lib/faker/tv_shows/archer.rb +51 -0
  144. data/lib/faker/tv_shows/big_bang_theory.rb +1 -1
  145. data/lib/faker/tv_shows/brooklyn_nine_nine.rb +38 -0
  146. data/lib/faker/tv_shows/buffy.rb +5 -5
  147. data/lib/faker/tv_shows/dr_who.rb +0 -13
  148. data/lib/faker/tv_shows/final_space.rb +51 -0
  149. data/lib/faker/tv_shows/michael_scott.rb +0 -3
  150. data/lib/faker/tv_shows/south_park.rb +15 -0
  151. data/lib/faker/tv_shows/spongebob.rb +50 -0
  152. data/lib/faker/tv_shows/suits.rb +1 -1
  153. data/lib/faker/tv_shows/supernatural.rb +48 -0
  154. data/lib/faker/tv_shows/the_fresh_prince_of_bel_air.rb +5 -5
  155. data/lib/faker/tv_shows/the_office.rb +37 -0
  156. data/lib/faker/tv_shows.rb +9 -0
  157. data/lib/faker/version.rb +2 -2
  158. data/lib/faker.rb +96 -79
  159. data/lib/helpers/base58.rb +1 -1
  160. data/lib/helpers/deprecator.rb +118 -0
  161. data/lib/helpers/positional_generator.rb +478 -0
  162. data/lib/helpers/unique_generator.rb +14 -14
  163. data/lib/locales/README.md +18 -2
  164. data/lib/locales/ar.yml +1608 -46
  165. data/lib/locales/bg.yml +935 -19
  166. data/lib/locales/ca-CAT.yml +347 -12
  167. data/lib/locales/ca.yml +580 -7
  168. data/lib/locales/da-DK.yml +529 -35
  169. data/lib/locales/de-AT.yml +3487 -25
  170. data/lib/locales/de-CH.yml +4359 -10
  171. data/lib/locales/de.yml +7185 -97
  172. data/lib/locales/ee.yml +1185 -27
  173. data/lib/locales/en/address.yml +1826 -562
  174. data/lib/locales/en/adjective.yml +179 -0
  175. data/lib/locales/en/airport.yml +381 -0
  176. data/lib/locales/en/ancient.yml +128 -4
  177. data/lib/locales/en/animal.yml +141 -2
  178. data/lib/locales/en/app.yml +89 -2
  179. data/lib/locales/en/appliance.yml +81 -2
  180. data/lib/locales/en/aqua_teen_hunger_force.yml +31 -31
  181. data/lib/locales/en/archer.yml +75 -0
  182. data/lib/locales/en/artist.yml +43 -1
  183. data/lib/locales/en/australia.yml +108 -0
  184. data/lib/locales/en/avatar.yml +57 -0
  185. data/lib/locales/en/back_to_the_future.yml +145 -117
  186. data/lib/locales/en/bank.yml +92 -3
  187. data/lib/locales/en/barcode.yml +24 -0
  188. data/lib/locales/en/beer.yml +232 -6
  189. data/lib/locales/en/bible.yml +87 -0
  190. data/lib/locales/en/big_bang_theory.yml +34 -35
  191. data/lib/locales/en/bird.yml +1280 -0
  192. data/lib/locales/en/bojack_horseman.yml +63 -3
  193. data/lib/locales/en/book.yml +486 -3
  194. data/lib/locales/en/bossa_nova.yml +110 -3
  195. data/lib/locales/en/breaking_bad.yml +110 -25
  196. data/lib/locales/en/brooklyn_nine_nine.yml +34 -0
  197. data/lib/locales/en/buffy.yml +239 -257
  198. data/lib/locales/en/business.yml +18 -2
  199. data/lib/locales/en/camera.yml +611 -0
  200. data/lib/locales/en/cannabis.yml +344 -10
  201. data/lib/locales/en/cat.yml +155 -3
  202. data/lib/locales/en/chess.yml +102 -0
  203. data/lib/locales/en/chiquito.yml +60 -61
  204. data/lib/locales/en/chuck_norris.yml +78 -79
  205. data/lib/locales/en/clash_of_clan.yml +99 -0
  206. data/lib/locales/en/code.yml +501 -1
  207. data/lib/locales/en/coffee.yml +450 -25
  208. data/lib/locales/en/color.yml +73 -1
  209. data/lib/locales/en/commerce.yml +117 -6
  210. data/lib/locales/en/community.yml +55 -30
  211. data/lib/locales/en/company.yml +1756 -13
  212. data/lib/locales/en/compass.yml +108 -12
  213. data/lib/locales/en/computer.yml +23 -4
  214. data/lib/locales/en/conan.yml +169 -0
  215. data/lib/locales/en/construction.yml +416 -422
  216. data/lib/locales/en/cosmere.yml +219 -54
  217. data/lib/locales/en/cowboy_bebop.yml +160 -0
  218. data/lib/locales/en/culture_series.yml +298 -298
  219. data/lib/locales/en/currency.yml +358 -3
  220. data/lib/locales/en/dc_comics.yml +178 -49
  221. data/lib/locales/en/demographic.yml +218 -5
  222. data/lib/locales/en/departed.yml +40 -44
  223. data/lib/locales/en/dessert.yml +78 -3
  224. data/lib/locales/en/device.yml +112 -4
  225. data/lib/locales/en/dnd.yml +615 -33
  226. data/lib/locales/en/dog.yml +262 -7
  227. data/lib/locales/en/doraemon.yml +284 -0
  228. data/lib/locales/en/dota.yml +704 -63
  229. data/lib/locales/en/dr_who.yml +468 -93
  230. data/lib/locales/en/dragon_ball.yml +243 -1
  231. data/lib/locales/en/driving_license.yml +181 -0
  232. data/lib/locales/en/drone.yml +95 -0
  233. data/lib/locales/en/dumb_and_dumber.yml +72 -56
  234. data/lib/locales/en/dune.yml +270 -131
  235. data/lib/locales/en/educator.yml +6 -0
  236. data/lib/locales/en/elder_scrolls.yml +582 -9
  237. data/lib/locales/en/electrical_components.yml +49 -3
  238. data/lib/locales/en/emotion.yml +480 -0
  239. data/lib/locales/en/esport.yml +58 -5
  240. data/lib/locales/en/fallout.yml +311 -133
  241. data/lib/locales/en/family_guy.yml +54 -4
  242. data/lib/locales/en/file.yml +109 -2
  243. data/lib/locales/en/final_fantasy_xiv.yml +754 -0
  244. data/lib/locales/en/final_space.yml +35 -0
  245. data/lib/locales/en/finance.yml +80 -4
  246. data/lib/locales/en/food.yml +1067 -10
  247. data/lib/locales/en/football.yml +121 -5
  248. data/lib/locales/en/fresh_prince_of_bel_air.yml +119 -70
  249. data/lib/locales/en/friends.yml +162 -3
  250. data/lib/locales/en/fullmetal_alchemist_brotherhood.yml +78 -0
  251. data/lib/locales/en/funny_name.yml +752 -1
  252. data/lib/locales/en/futurama.yml +7 -15
  253. data/lib/locales/en/game.yml +11 -0
  254. data/lib/locales/en/game_of_thrones.yml +2487 -5
  255. data/lib/locales/en/gender.yml +15 -3
  256. data/lib/locales/en/ghostbusters.yml +101 -88
  257. data/lib/locales/en/grateful_dead.yml +47 -45
  258. data/lib/locales/en/greek_philosophers.yml +44 -23
  259. data/lib/locales/en/hacker.yml +110 -5
  260. data/lib/locales/en/hackers.yml +53 -0
  261. data/lib/locales/en/half_life.yml +84 -3
  262. data/lib/locales/en/harry_potter.yml +323 -6
  263. data/lib/locales/en/heroes.yml +408 -3
  264. data/lib/locales/en/heroes_of_the_storm.yml +131 -4
  265. data/lib/locales/en/hey_arnold.yml +104 -21
  266. data/lib/locales/en/hipster.yml +203 -1
  267. data/lib/locales/en/hitchhikers_guide_to_the_galaxy.yml +243 -42
  268. data/lib/locales/en/hobby.yml +170 -0
  269. data/lib/locales/en/horse.yml +446 -2
  270. data/lib/locales/en/house.yml +34 -2
  271. data/lib/locales/en/how_i_met_your_mother.yml +97 -25
  272. data/lib/locales/en/how_to_train_your_dragon.yml +173 -0
  273. data/lib/locales/en/id_number.yml +7 -2
  274. data/lib/locales/en/industry_segments.yml +188 -4
  275. data/lib/locales/en/internet.yml +136 -3
  276. data/lib/locales/en/jack_handey.yml +54 -0
  277. data/lib/locales/en/job.yml +98 -7
  278. data/lib/locales/en/kamen_rider.yml +718 -0
  279. data/lib/locales/en/kpop.yml +954 -80
  280. data/lib/locales/en/league_of_legends.yml +285 -6
  281. data/lib/locales/en/lebowski.yml +58 -40
  282. data/lib/locales/en/lorem.yml +1095 -6
  283. data/lib/locales/en/lovecraft.yml +76 -6
  284. data/lib/locales/en/markdown.yml +12 -2
  285. data/lib/locales/en/marketing.yml +54 -1
  286. data/lib/locales/en/measurement.yml +42 -8
  287. data/lib/locales/en/michael_scott.yml +41 -42
  288. data/lib/locales/en/military.yml +179 -5
  289. data/lib/locales/en/minecraft.yml +273 -0
  290. data/lib/locales/en/mitch_hedberg.yml +46 -0
  291. data/lib/locales/en/mountain.yml +171 -0
  292. data/lib/locales/en/mountaineering.yml +14 -0
  293. data/lib/locales/en/movie.yml +188 -175
  294. data/lib/locales/en/music.yml +461 -29
  295. data/lib/locales/en/myst.yml +87 -31
  296. data/lib/locales/en/name.yml +6068 -6
  297. data/lib/locales/en/naruto.yml +230 -0
  298. data/lib/locales/en/nato_phonetic_alphabet.yml +27 -1
  299. data/lib/locales/en/new_girl.yml +35 -37
  300. data/lib/locales/en/one_piece.yml +359 -6
  301. data/lib/locales/en/opera.yml +169 -1
  302. data/lib/locales/en/overwatch.yml +2648 -2622
  303. data/lib/locales/en/parks_and_rec.yml +33 -4
  304. data/lib/locales/en/pearl_jam.yml +207 -207
  305. data/lib/locales/en/phish.yml +388 -389
  306. data/lib/locales/en/phone_number.yml +78 -3
  307. data/lib/locales/en/pokemon.yml +417 -4
  308. data/lib/locales/en/prince.yml +219 -219
  309. data/lib/locales/en/princess_bride.yml +48 -2
  310. data/lib/locales/en/programming_language.yml +753 -3
  311. data/lib/locales/en/quote.yml +606 -163
  312. data/lib/locales/en/rajnikanth.yml +74 -74
  313. data/lib/locales/en/relationship.yml +29 -6
  314. data/lib/locales/en/restaurant.yml +31 -31
  315. data/lib/locales/en/rick_and_morty.yml +116 -3
  316. data/lib/locales/en/rock_band.yml +228 -1
  317. data/lib/locales/en/rupaul.yml +120 -122
  318. data/lib/locales/en/science.yml +481 -3
  319. data/lib/locales/en/seinfeld.yml +110 -3
  320. data/lib/locales/en/shakespeare.yml +46 -53
  321. data/lib/locales/en/silicon_valley.yml +122 -50
  322. data/lib/locales/en/simpsons.yml +897 -691
  323. data/lib/locales/en/slack_emoji.yml +874 -8
  324. data/lib/locales/en/smashing_pumpkins.yml +382 -0
  325. data/lib/locales/en/source.yml +35 -0
  326. data/lib/locales/en/south_park.yml +360 -2
  327. data/lib/locales/en/space.yml +373 -14
  328. data/lib/locales/en/spongebob.yml +489 -0
  329. data/lib/locales/en/sport.yml +130 -0
  330. data/lib/locales/en/star_trek.yml +105 -4
  331. data/lib/locales/en/star_wars.yml +525 -528
  332. data/lib/locales/en/stargate.yml +65 -18
  333. data/lib/locales/en/stranger_thing.yml +31 -33
  334. data/lib/locales/en/street_fighter.yml +1524 -0
  335. data/lib/locales/en/studio_ghibli.yml +107 -0
  336. data/lib/locales/en/subscription.yml +47 -5
  337. data/lib/locales/en/super_mario.yml +58 -0
  338. data/lib/locales/en/super_smash_bros.yml +23 -6
  339. data/lib/locales/en/superhero.yml +574 -4
  340. data/lib/locales/en/supernatural.yml +141 -0
  341. data/lib/locales/en/sword_art_online.yml +327 -331
  342. data/lib/locales/en/tarkov.yml +593 -0
  343. data/lib/locales/en/tea.yml +172 -0
  344. data/lib/locales/en/team.yml +125 -3
  345. data/lib/locales/en/the_expanse.yml +92 -4
  346. data/lib/locales/en/the_it_crowd.yml +148 -152
  347. data/lib/locales/en/the_kingkiller_chronicle.yml +56 -0
  348. data/lib/locales/en/the_office.yml +82 -0
  349. data/lib/locales/en/the_room.yml +68 -0
  350. data/lib/locales/en/the_thick_of_it.yml +83 -3
  351. data/lib/locales/en/theater.yml +597 -0
  352. data/lib/locales/en/tolkien.yml +2453 -0
  353. data/lib/locales/en/touhou.yml +839 -0
  354. data/lib/locales/en/train_station.yml +280 -0
  355. data/lib/locales/en/tron.yml +227 -0
  356. data/lib/locales/en/twin_peaks.yml +130 -3
  357. data/lib/locales/en/umphreys_mcgee.yml +266 -1
  358. data/lib/locales/en/university.yml +15 -2
  359. data/lib/locales/en/v_for_vendetta.yml +157 -160
  360. data/lib/locales/en/vehicle.yml +2809 -75
  361. data/lib/locales/en/venture_bros.yml +225 -4
  362. data/lib/locales/en/verbs.yml +3785 -5
  363. data/lib/locales/en/volleyball.yml +501 -0
  364. data/lib/locales/en/warhammer_fantasy.yml +540 -573
  365. data/lib/locales/en/witcher.yml +426 -7
  366. data/lib/locales/en/world_cup.yml +1132 -235
  367. data/lib/locales/en/world_of_warcraft.yml +122 -4
  368. data/lib/locales/en/yoda.yml +38 -1
  369. data/lib/locales/en/zelda.yml +962 -4
  370. data/lib/locales/en-AU.yml +725 -48
  371. data/lib/locales/en-BORK.yml +104 -1
  372. data/lib/locales/en-CA.yml +373 -18
  373. data/lib/locales/en-GB.yml +118 -8
  374. data/lib/locales/en-IND.yml +1259 -16
  375. data/lib/locales/en-KE.yml +212 -0
  376. data/lib/locales/en-MS.yml +364 -16
  377. data/lib/locales/en-NEP.yml +212 -35
  378. data/lib/locales/en-NG.yml +737 -65
  379. data/lib/locales/en-NZ.yml +1153 -121
  380. data/lib/locales/en-PAK.yml +392 -9
  381. data/lib/locales/en-SG.yml +581 -15
  382. data/lib/locales/en-TH.yml +1 -1
  383. data/lib/locales/en-UG.yml +374 -75
  384. data/lib/locales/en-US.yml +6921 -81
  385. data/lib/locales/en-ZA.yml +1394 -13
  386. data/lib/locales/en-au-ocker.yml +266 -21
  387. data/lib/locales/en.yml +0 -3
  388. data/lib/locales/es-AR.yml +4570 -0
  389. data/lib/locales/es-MX.yml +1907 -41
  390. data/lib/locales/es.yml +2172 -52
  391. data/lib/locales/fa.yml +1624 -5
  392. data/lib/locales/fi-FI.yml +316 -16
  393. data/lib/locales/fr/address.yml +773 -0
  394. data/lib/locales/fr/adjective.yml +266 -0
  395. data/lib/locales/fr/ancient.yml +141 -0
  396. data/lib/locales/fr/animal.yml +122 -0
  397. data/lib/locales/fr/appliance.yml +69 -0
  398. data/lib/locales/fr/book.yml +31 -0
  399. data/lib/locales/fr/color.yml +34 -0
  400. data/lib/locales/fr/company.yml +497 -0
  401. data/lib/locales/fr/compass.yml +71 -0
  402. data/lib/locales/fr/demographic.yml +6 -0
  403. data/lib/locales/fr/gender.yml +21 -0
  404. data/lib/locales/fr/internet.yml +15 -0
  405. data/lib/locales/fr/lorem.yml +1094 -0
  406. data/lib/locales/fr/measurement.yml +34 -0
  407. data/lib/locales/fr/name.yml +1193 -0
  408. data/lib/locales/fr/phone_number.yml +38 -0
  409. data/lib/locales/fr/pokemon.yml +421 -0
  410. data/lib/locales/fr-CA.yml +2754 -45
  411. data/lib/locales/fr-CH.yml +2455 -42
  412. data/lib/locales/fr.yml +2 -112
  413. data/lib/locales/he.yml +255 -9
  414. data/lib/locales/hy.yml +3630 -119
  415. data/lib/locales/id.yml +839 -10
  416. data/lib/locales/it.yml +1310 -31
  417. data/lib/locales/ja/README.md +13 -0
  418. data/lib/locales/ja/address.yml +363 -0
  419. data/lib/locales/ja/adjective.yml +148 -0
  420. data/lib/locales/ja/ancient.yml +18 -0
  421. data/lib/locales/ja/animal.yml +87 -0
  422. data/lib/locales/ja/artist.yml +46 -0
  423. data/lib/locales/ja/bank.yml +139 -0
  424. data/lib/locales/ja/book.yml +496 -0
  425. data/lib/locales/ja/cat.yml +79 -0
  426. data/lib/locales/ja/coffee.yml +22 -0
  427. data/lib/locales/ja/color.yml +35 -0
  428. data/lib/locales/ja/commerce.yml +103 -0
  429. data/lib/locales/ja/company.yml +26 -0
  430. data/lib/locales/ja/dog.yml +339 -0
  431. data/lib/locales/ja/emotion.yml +49 -0
  432. data/lib/locales/ja/food.yml +41 -0
  433. data/lib/locales/ja/football.yml +115 -0
  434. data/lib/locales/ja/gender.yml +6 -0
  435. data/lib/locales/ja/lorem.yml +1020 -0
  436. data/lib/locales/ja/name.yml +213 -0
  437. data/lib/locales/ja/naruto.yml +230 -0
  438. data/lib/locales/ja/overwatch.yml +37 -0
  439. data/lib/locales/ja/phone_number.yml +13 -0
  440. data/lib/locales/ja/pokemon.yml +441 -0
  441. data/lib/locales/ja/relationship.yml +33 -0
  442. data/lib/locales/ja/restaurant.yml +82 -0
  443. data/lib/locales/ja/space.yml +23 -0
  444. data/lib/locales/ja/sport.yml +130 -0
  445. data/lib/locales/ja/studio_ghibli.yml +112 -0
  446. data/lib/locales/ja/subscription.yml +50 -0
  447. data/lib/locales/ja/super_mario.yml +73 -0
  448. data/lib/locales/ja/super_smash_bros.yml +8 -0
  449. data/lib/locales/ja/touhou.yml +466 -0
  450. data/lib/locales/ja/university.yml +22 -0
  451. data/lib/locales/ja/zelda.yml +19 -0
  452. data/lib/locales/ko.yml +1380 -29
  453. data/lib/locales/lt.yml +315 -0
  454. data/lib/locales/lv.yml +1221 -27
  455. data/lib/locales/mi-NZ.yml +283 -0
  456. data/lib/locales/nb-NO.yml +518 -27
  457. data/lib/locales/nl.yml +33514 -55
  458. data/lib/locales/pl.yml +4008 -38
  459. data/lib/locales/pt-BR.yml +8207 -660
  460. data/lib/locales/pt.yml +844 -43
  461. data/lib/locales/ru.yml +1355 -30
  462. data/lib/locales/sk.yml +4416 -41
  463. data/lib/locales/sv.yml +731 -41
  464. data/lib/locales/th.yml +375 -375
  465. data/lib/locales/tr.yml +77 -19
  466. data/lib/locales/uk.yml +1810 -44
  467. data/lib/locales/vi.yml +392 -48
  468. data/lib/locales/zh-CN/bank.yml +17 -0
  469. data/lib/locales/zh-CN.yml +540 -18
  470. data/lib/locales/zh-TW.yml +1030 -14
  471. metadata +188 -141
  472. data/History.md +0 -176
  473. data/lib/faker/default/bossa_nova.rb +0 -33
  474. data/lib/faker/default/fillmurray.rb +0 -45
  475. data/lib/faker/default/internet.rb +0 -358
  476. data/lib/faker/default/lorem_pixel.rb +0 -69
  477. data/lib/faker/default/twitter.rb +0 -223
  478. data/lib/locales/en/hobbit.yml +0 -19
  479. data/lib/locales/en/lord_of_the_rings.yml +0 -6
  480. data/lib/locales/en/show.yml +0 -597
  481. data/lib/locales/ja.yml +0 -101
  482. /data/lib/faker/{books → default}/book.rb +0 -0
  483. /data/lib/faker/{games → default}/game.rb +0 -0
  484. /data/lib/faker/{movies → default}/movie.rb +0 -0
  485. /data/lib/faker/{default/internet_http.rb → internet/http.rb} +0 -0
@@ -32,25 +32,16 @@ module Faker
32
32
  # Faker::Hipster.words(number: 4, supplemental: true, spaces_allowed: true) #=> ["qui", "magni", "craft beer", "est"]
33
33
  #
34
34
  # @faker.version 1.6.0
35
- # rubocop:disable Metrics/ParameterLists
36
- def words(legacy_number = NOT_GIVEN, legacy_supplemental = NOT_GIVEN, legacy_spaces_allowed = NOT_GIVEN, number: 3, supplemental: false, spaces_allowed: false)
37
- # rubocop:enable Metrics/ParameterLists
38
- warn_for_deprecated_arguments do |keywords|
39
- keywords << :number if legacy_number != NOT_GIVEN
40
- keywords << :supplemental if legacy_supplemental != NOT_GIVEN
41
- keywords << :spaces_allowed if legacy_spaces_allowed != NOT_GIVEN
42
- end
43
-
35
+ def words(number: 3, supplemental: false, spaces_allowed: false)
44
36
  resolved_num = resolve(number)
45
37
  word_list = (
46
38
  translate('faker.hipster.words') +
47
39
  (supplemental ? translate('faker.lorem.words') : [])
48
40
  )
49
41
  word_list *= ((resolved_num / word_list.length) + 1)
42
+ words = sample(word_list, resolved_num)
43
+ return words if spaces_allowed
50
44
 
51
- return shuffle(word_list)[0, resolved_num] if spaces_allowed
52
-
53
- words = shuffle(word_list)[0, resolved_num]
54
45
  words.each_with_index { |w, i| words[i] = word if w =~ /\s/ }
55
46
  end
56
47
 
@@ -59,7 +50,8 @@ module Faker
59
50
  #
60
51
  # @param word_count [Integer] Specifies the number of words in the sentence
61
52
  # @param supplemental [Boolean] Specifies if the words are supplemental
62
- # @param random_words_to_add [Boolean] Specifies the number of random words to add
53
+ # @param random_words_to_add [Integer] Specifies the number of random words to add
54
+ # @param open_compounds_allowed [Boolean] Specifies if the generated sentence can contain words having additional spaces
63
55
  # @return [String]
64
56
  #
65
57
  # @example
@@ -68,18 +60,12 @@ module Faker
68
60
  # Faker::Hipster.sentence(word_count: 3, supplemental: true) #=> "Beard laboriosam sequi celiac."
69
61
  # Faker::Hipster.sentence(word_count: 3, supplemental: false, random_words_to_add: 4) #=> "Bitters retro mustache aesthetic biodiesel 8-bit."
70
62
  # Faker::Hipster.sentence(word_count: 3, supplemental: true, random_words_to_add: 4) #=> "Occaecati deleniti messenger bag meh crucifix autem."
63
+ # Faker::Hipster.sentence(word_count: 3, supplemental: true, random_words_to_add: 0, open_compounds_allowed: true) #=> "Kale chips nihil eos."
64
+ # Faker::Hipster.sentence(word_count: 3, supplemental: true, random_words_to_add: 0, open_compounds_allowed: false) #=> "Dreamcatcher umami fixie."
71
65
  #
72
66
  # @faker.version 1.6.0
73
- # rubocop:disable Metrics/ParameterLists
74
- def sentence(legacy_word_count = NOT_GIVEN, legacy_supplemental = NOT_GIVEN, legacy_random_words_to_add = NOT_GIVEN, word_count: 4, supplemental: false, random_words_to_add: 6)
75
- # rubocop:enable Metrics/ParameterLists
76
- warn_for_deprecated_arguments do |keywords|
77
- keywords << :word_count if legacy_word_count != NOT_GIVEN
78
- keywords << :supplemental if legacy_supplemental != NOT_GIVEN
79
- keywords << :random_words_to_add if legacy_random_words_to_add != NOT_GIVEN
80
- end
81
-
82
- words(number: word_count + rand(random_words_to_add.to_i).to_i, supplemental: supplemental, spaces_allowed: true).join(' ').capitalize + '.'
67
+ def sentence(word_count: 4, supplemental: false, random_words_to_add: 6, open_compounds_allowed: true)
68
+ "#{words(number: word_count + rand(random_words_to_add.to_i).to_i, supplemental: supplemental, spaces_allowed: open_compounds_allowed).join(' ').capitalize}."
83
69
  end
84
70
 
85
71
  ##
@@ -95,12 +81,7 @@ module Faker
95
81
  # Faker::Hipster.sentences(number: 1, supplemental: true) #=> ["Et sustainable optio aesthetic et."]
96
82
  #
97
83
  # @faker.version 1.6.0
98
- def sentences(legacy_number = NOT_GIVEN, legacy_supplemental = NOT_GIVEN, number: 3, supplemental: false)
99
- warn_for_deprecated_arguments do |keywords|
100
- keywords << :number if legacy_number != NOT_GIVEN
101
- keywords << :supplemental if legacy_supplemental != NOT_GIVEN
102
- end
103
-
84
+ def sentences(number: 3, supplemental: false)
104
85
  [].tap do |sentences|
105
86
  1.upto(resolve(number)) do
106
87
  sentences << sentence(word_count: 3, supplemental: supplemental)
@@ -124,15 +105,7 @@ module Faker
124
105
  # Faker::Hipster.paragraph(sentence_count: 2, supplemental: true, random_sentences_to_add: 4) #=> "Deep v gluten-free unde waistcoat aperiam migas voluptas dolorum. Aut drinking illo sustainable sapiente. Direct trade fanny pack kale chips ennui semiotics."
125
106
  #
126
107
  # @faker.version 1.6.0
127
- # rubocop:disable Metrics/ParameterLists
128
- def paragraph(legacy_sentence_count = NOT_GIVEN, legacy_supplemental = NOT_GIVEN, legacy_random_sentences_to_add = NOT_GIVEN, sentence_count: 3, supplemental: false, random_sentences_to_add: 3)
129
- # rubocop:enable Metrics/ParameterLists
130
- warn_for_deprecated_arguments do |keywords|
131
- keywords << :sentence_count if legacy_sentence_count != NOT_GIVEN
132
- keywords << :supplemental if legacy_supplemental != NOT_GIVEN
133
- keywords << :random_sentences_to_add if legacy_random_sentences_to_add != NOT_GIVEN
134
- end
135
-
108
+ def paragraph(sentence_count: 3, supplemental: false, random_sentences_to_add: 3)
136
109
  sentences(number: resolve(sentence_count) + rand(random_sentences_to_add.to_i).to_i, supplemental: supplemental).join(' ')
137
110
  end
138
111
 
@@ -149,12 +122,7 @@ module Faker
149
122
  # Faker::Hipster.paragraphs(number: 1, supplemental: true) #=> ["Quae direct trade pbr&b quo taxidermy autem loko. Umami quas ratione migas cardigan sriracha minima. Tenetur perspiciatis pickled sed eum doloribus truffaut. Excepturi dreamcatcher meditation."]
150
123
  #
151
124
  # @faker.version 1.6.0
152
- def paragraphs(legacy_number = NOT_GIVEN, legacy_supplemental = NOT_GIVEN, number: 3, supplemental: false)
153
- warn_for_deprecated_arguments do |keywords|
154
- keywords << :number if legacy_number != NOT_GIVEN
155
- keywords << :supplemental if legacy_supplemental != NOT_GIVEN
156
- end
157
-
125
+ def paragraphs(number: 3, supplemental: false)
158
126
  [].tap do |paragraphs|
159
127
  1.upto(resolve(number)) do
160
128
  paragraphs << paragraph(sentence_count: 3, supplemental: supplemental)
@@ -174,17 +142,12 @@ module Faker
174
142
  # Faker::Hipster.paragraph_by_chars(characters: 256, supplemental: false) #=> "Hella kogi blog narwhal sartorial selfies mustache schlitz. Bespoke normcore kitsch cred hella fixie. Park aesthetic fixie migas twee. Cliche mustache brunch tumblr fixie godard. Drinking pop-up synth hoodie dreamcatcher typewriter. Kitsch biodiesel green."
175
143
  #
176
144
  # @faker.version 1.6.0
177
- def paragraph_by_chars(legacy_characters = NOT_GIVEN, legacy_supplemental = NOT_GIVEN, characters: 256, supplemental: false)
178
- warn_for_deprecated_arguments do |keywords|
179
- keywords << :characters if legacy_characters != NOT_GIVEN
180
- keywords << :supplemental if legacy_supplemental != NOT_GIVEN
181
- end
182
-
145
+ def paragraph_by_chars(characters: 256, supplemental: false)
183
146
  paragraph = paragraph(sentence_count: 3, supplemental: supplemental)
184
147
 
185
- paragraph += ' ' + paragraph(sentence_count: 3, supplemental: supplemental) while paragraph.length < characters
148
+ paragraph += " #{paragraph(sentence_count: 3, supplemental: supplemental)}" while paragraph.length < characters
186
149
 
187
- paragraph[0...characters - 1] + '.'
150
+ "#{paragraph[0...(characters - 1)]}."
188
151
  end
189
152
  end
190
153
  end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Hobby < Base
5
+ flexible :hobby
6
+
7
+ class << self
8
+ ##
9
+ # Retrieves a typical hobby activity.
10
+ #
11
+ # @return [String]
12
+ #
13
+ # @example
14
+ # Faker::Hobby.activity #=> "Cooking"
15
+ #
16
+ # @faker.version next
17
+ def activity
18
+ fetch('hobby.activity')
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,230 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class HTML < Base
5
+ class << self
6
+ ##
7
+ # Produces a random HTML header format.
8
+ #
9
+ # @return [String]
10
+ #
11
+ # @example
12
+ # Faker::HTML.heading #=> "<h5>Autem</h5>"
13
+ #
14
+ # @faker.version 3.2.1
15
+ def heading
16
+ level = rand(1..6)
17
+ "<h#{level}>#{Faker::Lorem.word.capitalize}</h#{level}>"
18
+ end
19
+
20
+ ##
21
+ # Produces a random HTML paragraph format.
22
+ #
23
+ # @param sentence_count [Integer] The number of sentences in the paragraph.
24
+ # @param supplemental [Boolean] Include supplemental text.
25
+ # @param random_sentences_to_add [Integer] The number of random sentences to add to the paragraph.
26
+ # @param exclude_words [Array<String>] Words to exclude from the generated paragraph.
27
+ # @return [String]
28
+ #
29
+ # @example
30
+ # Faker::HTML.paragraph #=> "<p>Incidunt atque quis</p>"
31
+ #
32
+ # @faker.version 3.2.1
33
+ def paragraph(sentence_count: 3, supplemental: false, random_sentences_to_add: 0, exclude_words: nil)
34
+ "<p>#{Faker::Lorem.paragraph(sentence_count: sentence_count, supplemental: supplemental, random_sentences_to_add: random_sentences_to_add, exclude_words: exclude_words)}</p>"
35
+ end
36
+
37
+ ##
38
+ # Produces a random emphasis formatting on a random word in two HTML paragraphs.
39
+ #
40
+ # @return [String]
41
+ #
42
+ # @example
43
+ # Faker::HTML.emphasis #=> "<em>repellat id impedit</em>"
44
+ #
45
+ # @faker.version 3.2.1
46
+ def emphasis
47
+ "<em>#{Faker::Lorem.paragraph(sentence_count: 1)}</em>"
48
+ end
49
+
50
+ ##
51
+ # Produces a random ordered list in HTML format, with at least one element.
52
+ #
53
+ # @return [String]
54
+ #
55
+ # @example
56
+ # Faker::HTML.ordered_list #=> "<ol>\n<li>Qui reiciendis non consequatur atque.</li>\n<li>Quo doloremque veritatis tempora aut.</li>\n<li>Aspernatur.</li>\n<li>Ea ab.</li>\n<li>Qui.</li>\n<li>Sit pariatur nemo eveniet.</li>\n<li>Molestiae aut.</li>\n<li>Nihil molestias iure placeat.</li>\n<li>Dolore autem quisquam.</li>\n</ol>"
57
+ #
58
+ # @faker.version 3.2.1
59
+ def ordered_list
60
+ number = rand(1..10)
61
+
62
+ items = []
63
+ number.times do
64
+ items << "<li>#{Faker::Lorem.sentence(word_count: 1)}</li>"
65
+ end
66
+
67
+ "<ol>\n#{items.join("\n")}\n</ol>"
68
+ end
69
+
70
+ ##
71
+ # Produces a random unordered list of items between 1 and 10 randomly in HTML format.
72
+ #
73
+ # @return [String]
74
+ #
75
+ # @example
76
+ # Faker::HTML.unordered_list #=> "<ul>\n<li>Voluptatum aliquid tempora molestiae facilis non sed.</li>\n<li>Nostrum omnis iste impedit voluptatum dolor.</li>\n<li>Esse quidem et facere.</li>\n</ul>"
77
+ #
78
+ # @faker.version 3.2.1
79
+ def unordered_list
80
+ number = rand(1..10)
81
+
82
+ items = []
83
+ number.times do
84
+ items << "<li>#{Faker::Lorem.sentence(word_count: 1)}</li>"
85
+ end
86
+
87
+ "<ul>\n#{items.join("\n")}\n</ul>"
88
+ end
89
+
90
+ ##
91
+ # Produces a random code block formatted in HTML.
92
+ #
93
+ # @return [String]
94
+ #
95
+ # @example
96
+ # Faker::HTML.code #=> "<code>Eos quasi qui.</code>"
97
+ #
98
+ # @faker.version 3.2.1
99
+ def code
100
+ "<code>#{Faker::Lorem.sentence(word_count: 1)}</code>"
101
+ end
102
+
103
+ ##
104
+ # Produces a random HTML table.
105
+ #
106
+ # @return [String]
107
+ #
108
+ # @example
109
+ # Faker::HTML.table #=> "<table>\n<thead>\n<th>ad</th>\n<th>similique</th>\n<th>voluptatem</th>\n</thead>\n<tbody>\n<td>corrupti</td>\n<td>est</td>\n<td>rerum</td>\n<td>molestiae</td>\n<td>quidem</td>\n<td>et</td>\n<td>in</td>\n<td>tempora</td>\n<td>at</td>\n<\tbody>\n<tfoot>\n<td>voluptatem</td>\n<td>debitis</td>\n<td>rem</td>\n</tfoot>\n</table>"
110
+ #
111
+ # @faker.version 3.2.1
112
+ def table
113
+ header_row = generate_table_row('th', 3)
114
+ footer_row = generate_table_row('td', 3)
115
+
116
+ body_rows = []
117
+ 3.times do
118
+ row = generate_table_row('td', 3)
119
+ body_rows << row
120
+ end
121
+
122
+ thead = "<thead>\n#{header_row}</thead>"
123
+ tbody = "<tbody>\n#{body_rows.join("\n")}</tbody>"
124
+ tfoot = "<tfoot>\n#{footer_row}</tfoot>"
125
+
126
+ "<table>\n#{thead}\n#{tbody}\n#{tfoot}\n</table>"
127
+ end
128
+
129
+ ##
130
+ # Generates a random <script> tag with the `src` attribute set to a random URL.
131
+ #
132
+ # @return [String]
133
+ #
134
+ # @example
135
+ # Faker::HTML.script #=> "<script src=\"http://gulgowski.name/jordan.weimann.js\"></script>"
136
+ #
137
+ # @faker.version 3.2.1
138
+ def script
139
+ "<script src=\"#{Faker::Internet.url}.js\"></script>"
140
+ end
141
+
142
+ ##
143
+ # Generates a random <link> tag with the `rel` attribute set to "stylesheet" and the `href` attribute set to a random URL.
144
+ #
145
+ # @param rel [String] The rel of the link tag.
146
+ # @return [String]
147
+ #
148
+ # @example
149
+ # Faker::HTML.link #=> "<link rel=\"stylesheet\" href=\"http://fay.io/darryl.barrows.css\">"
150
+ #
151
+ # @faker.version 3.2.1
152
+ def link(rel: 'stylesheet')
153
+ "<link rel=\"#{rel}\" href=\"#{Faker::Internet.url}.css\">"
154
+ end
155
+
156
+ ##
157
+ # Generates HTML content with customizable attributes for any HTML tag.
158
+ #
159
+ # @param tag [String] The HTML tag to generate.
160
+ # @param content [String] The Content of the HTML tag.
161
+ # @param attributes [Hash] The attributes to include in the tag.
162
+ # @return [String]
163
+ #
164
+ # @example
165
+ # Faker::HTML.element(tag: 'div', content: "This is a div with XSS attributes.", attributes: {class: 'xss', onclick: "alert('XSS')"}) #=> "<div class=\"xss\" onclick=\"alert('XSS')\">This is a div with XSS attributes.</div>"
166
+ #
167
+ # @faker.version 3.2.1
168
+ def element(tag: 'div', content: Faker::Lorem.sentence(word_count: 3), attributes: { class: Faker::Lorem.word, onclick: "#{Faker::Lorem.word}()" })
169
+ attribute_string = attributes.map { |key, value| "#{key}=\"#{value}\"" }.join(' ')
170
+ "<#{tag} #{attribute_string}>#{content}</#{tag}>"
171
+ end
172
+
173
+ ##
174
+ # Produces a random method from the methods above, excluding the methods listed in the arguments.
175
+ #
176
+ # @overload random(methods)
177
+ # @param methods [Symbol] Specify which methods to exclude.
178
+ #
179
+ # @return [String]
180
+ #
181
+ # @example
182
+ # Faker::HTML.random #=> returns output from a single method outlined above
183
+ # Faker::HTML.random(exclude: [:table]) #=> returns output from any single method outlined above except for "table"
184
+ # Faker::HTML.random(exclude: [:ordered_list, :unordered_list]) #=> returns output from any single method outlined above except for either ordered_list and unordered_list
185
+ #
186
+ # @faker.version 3.2.1
187
+ def random(exclude: [])
188
+ method_list = available_methods
189
+ exclude.each { |ex| method_list.delete_if { |meth| meth == ex.to_sym } }
190
+ send(method_list[Faker::Config.random.rand(0..(method_list.length - 1))])
191
+ end
192
+
193
+ ##
194
+ # Generates a random HTML content sandwich, starting with a header, followed by paragraphs, and random elements.
195
+ #
196
+ # @param sentences [Integer] The number of sentences in each paragraph.
197
+ # @param repeat [Integer] The number of times to repeat the pattern (header, paragraph, random).
198
+ # @return [String]
199
+ #
200
+ # @example
201
+ # Faker::HTML.sandwich(sentences: 3, repeat: 2) #=> returns a sandwich of HTML content with 2 repetitions, each having a header, paragraph, and random element
202
+ #
203
+ # @faker.version 3.2.1
204
+ def sandwich(sentences: 3, repeat: 1)
205
+ text_block = []
206
+ text_block << heading
207
+ repeat.times do
208
+ text_block << paragraph(sentence_count: sentences)
209
+ text_block << random(exclude: %i[script link])
210
+ end
211
+ text_block.join("\n")
212
+ end
213
+
214
+ private
215
+
216
+ def available_methods
217
+ (HTML.public_methods(false) - Base.methods).sort
218
+ end
219
+
220
+ def generate_table_row(tag, cell_count)
221
+ row = "<tr>\n"
222
+ cell_count.times do
223
+ row += "<#{tag == 'th' ? 'th' : 'td'}>#{Lorem.word}</#{tag == 'th' ? 'th' : 'td'}>\n"
224
+ end
225
+ row += "</tr>\n"
226
+ row
227
+ end
228
+ end
229
+ end
230
+ end