brakeman 6.0.0 → 7.1.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 (655) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES.md +92 -0
  3. data/README.md +6 -3
  4. data/bundle/load.rb +16 -14
  5. data/bundle/ruby/3.2.0/gems/csv-3.3.5/LICENSE.txt +33 -0
  6. data/bundle/ruby/3.2.0/gems/csv-3.3.5/NEWS.md +1009 -0
  7. data/bundle/ruby/3.2.0/gems/csv-3.3.5/README.md +55 -0
  8. data/bundle/ruby/3.2.0/gems/csv-3.3.5/lib/csv/core_ext/array.rb +9 -0
  9. data/bundle/ruby/3.2.0/gems/csv-3.3.5/lib/csv/core_ext/string.rb +9 -0
  10. data/bundle/ruby/3.2.0/gems/csv-3.3.5/lib/csv/fields_converter.rb +96 -0
  11. data/bundle/ruby/3.2.0/gems/csv-3.3.5/lib/csv/input_record_separator.rb +18 -0
  12. data/bundle/ruby/3.2.0/gems/csv-3.3.5/lib/csv/parser.rb +1302 -0
  13. data/bundle/ruby/3.2.0/gems/csv-3.3.5/lib/csv/row.rb +757 -0
  14. data/bundle/ruby/3.2.0/gems/csv-3.3.5/lib/csv/table.rb +1055 -0
  15. data/bundle/ruby/3.2.0/gems/csv-3.3.5/lib/csv/version.rb +6 -0
  16. data/bundle/ruby/3.2.0/gems/csv-3.3.5/lib/csv/writer.rb +209 -0
  17. data/bundle/ruby/3.2.0/gems/csv-3.3.5/lib/csv.rb +3017 -0
  18. data/bundle/ruby/{3.0.0/gems/haml-5.2.2 → 3.2.0/gems/haml-6.3.0}/CHANGELOG.md +168 -4
  19. data/bundle/ruby/{3.0.0/gems/haml-5.2.2 → 3.2.0/gems/haml-6.3.0}/FAQ.md +1 -1
  20. data/bundle/ruby/3.2.0/gems/haml-6.3.0/Gemfile +27 -0
  21. data/bundle/ruby/{3.0.0/gems/haml-5.2.2 → 3.2.0/gems/haml-6.3.0}/MIT-LICENSE +1 -1
  22. data/bundle/ruby/{3.0.0/gems/haml-5.2.2 → 3.2.0/gems/haml-6.3.0}/README.md +22 -34
  23. data/bundle/ruby/{3.0.0/gems/haml-5.2.2 → 3.2.0/gems/haml-6.3.0}/REFERENCE.md +95 -159
  24. data/bundle/ruby/3.2.0/gems/haml-6.3.0/exe/haml +6 -0
  25. data/bundle/ruby/3.2.0/gems/haml-6.3.0/haml.gemspec +43 -0
  26. data/bundle/ruby/3.2.0/gems/haml-6.3.0/lib/haml/ambles.rb +20 -0
  27. data/bundle/ruby/3.2.0/gems/haml-6.3.0/lib/haml/attribute_builder.rb +162 -0
  28. data/bundle/ruby/3.2.0/gems/haml-6.3.0/lib/haml/attribute_compiler.rb +133 -0
  29. data/bundle/ruby/3.2.0/gems/haml-6.3.0/lib/haml/attribute_parser.rb +116 -0
  30. data/bundle/ruby/3.2.0/gems/haml-6.3.0/lib/haml/cli.rb +154 -0
  31. data/bundle/ruby/3.2.0/gems/haml-6.3.0/lib/haml/compiler/children_compiler.rb +155 -0
  32. data/bundle/ruby/3.2.0/gems/haml-6.3.0/lib/haml/compiler/comment_compiler.rb +51 -0
  33. data/bundle/ruby/3.2.0/gems/haml-6.3.0/lib/haml/compiler/doctype_compiler.rb +52 -0
  34. data/bundle/ruby/3.2.0/gems/haml-6.3.0/lib/haml/compiler/script_compiler.rb +114 -0
  35. data/bundle/ruby/3.2.0/gems/haml-6.3.0/lib/haml/compiler/silent_script_compiler.rb +24 -0
  36. data/bundle/ruby/3.2.0/gems/haml-6.3.0/lib/haml/compiler/tag_compiler.rb +76 -0
  37. data/bundle/ruby/3.2.0/gems/haml-6.3.0/lib/haml/compiler.rb +97 -0
  38. data/bundle/ruby/3.2.0/gems/haml-6.3.0/lib/haml/dynamic_merger.rb +67 -0
  39. data/bundle/ruby/3.2.0/gems/haml-6.3.0/lib/haml/engine.rb +59 -0
  40. data/bundle/ruby/{3.0.0/gems/haml-5.2.2 → 3.2.0/gems/haml-6.3.0}/lib/haml/error.rb +5 -4
  41. data/bundle/ruby/3.2.0/gems/haml-6.3.0/lib/haml/escape.rb +13 -0
  42. data/bundle/ruby/3.2.0/gems/haml-6.3.0/lib/haml/escape_any.rb +21 -0
  43. data/bundle/ruby/3.2.0/gems/haml-6.3.0/lib/haml/filters/base.rb +12 -0
  44. data/bundle/ruby/3.2.0/gems/haml-6.3.0/lib/haml/filters/cdata.rb +20 -0
  45. data/bundle/ruby/3.2.0/gems/haml-6.3.0/lib/haml/filters/coffee.rb +17 -0
  46. data/bundle/ruby/3.2.0/gems/haml-6.3.0/lib/haml/filters/css.rb +33 -0
  47. data/bundle/ruby/3.2.0/gems/haml-6.3.0/lib/haml/filters/erb.rb +10 -0
  48. data/bundle/ruby/3.2.0/gems/haml-6.3.0/lib/haml/filters/escaped.rb +22 -0
  49. data/bundle/ruby/3.2.0/gems/haml-6.3.0/lib/haml/filters/javascript.rb +33 -0
  50. data/bundle/ruby/3.2.0/gems/haml-6.3.0/lib/haml/filters/less.rb +20 -0
  51. data/bundle/ruby/3.2.0/gems/haml-6.3.0/lib/haml/filters/markdown.rb +11 -0
  52. data/bundle/ruby/3.2.0/gems/haml-6.3.0/lib/haml/filters/plain.rb +29 -0
  53. data/bundle/ruby/3.2.0/gems/haml-6.3.0/lib/haml/filters/preserve.rb +22 -0
  54. data/bundle/ruby/3.2.0/gems/haml-6.3.0/lib/haml/filters/ruby.rb +10 -0
  55. data/bundle/ruby/3.2.0/gems/haml-6.3.0/lib/haml/filters/sass.rb +15 -0
  56. data/bundle/ruby/3.2.0/gems/haml-6.3.0/lib/haml/filters/scss.rb +15 -0
  57. data/bundle/ruby/3.2.0/gems/haml-6.3.0/lib/haml/filters/text_base.rb +25 -0
  58. data/bundle/ruby/3.2.0/gems/haml-6.3.0/lib/haml/filters/tilt_base.rb +59 -0
  59. data/bundle/ruby/3.2.0/gems/haml-6.3.0/lib/haml/filters.rb +75 -0
  60. data/bundle/ruby/3.2.0/gems/haml-6.3.0/lib/haml/force_escape.rb +29 -0
  61. data/bundle/ruby/3.2.0/gems/haml-6.3.0/lib/haml/helpers.rb +15 -0
  62. data/bundle/ruby/3.2.0/gems/haml-6.3.0/lib/haml/html.rb +22 -0
  63. data/bundle/ruby/3.2.0/gems/haml-6.3.0/lib/haml/identity.rb +13 -0
  64. data/bundle/ruby/3.2.0/gems/haml-6.3.0/lib/haml/object_ref.rb +35 -0
  65. data/bundle/ruby/{3.0.0/gems/haml-5.2.2 → 3.2.0/gems/haml-6.3.0}/lib/haml/parser.rb +158 -23
  66. data/bundle/ruby/3.2.0/gems/haml-6.3.0/lib/haml/rails_helpers.rb +53 -0
  67. data/bundle/ruby/3.2.0/gems/haml-6.3.0/lib/haml/rails_template.rb +62 -0
  68. data/bundle/ruby/3.2.0/gems/haml-6.3.0/lib/haml/railtie.rb +10 -0
  69. data/bundle/ruby/3.2.0/gems/haml-6.3.0/lib/haml/ruby_expression.rb +32 -0
  70. data/bundle/ruby/3.2.0/gems/haml-6.3.0/lib/haml/string_splitter.rb +140 -0
  71. data/bundle/ruby/3.2.0/gems/haml-6.3.0/lib/haml/template.rb +20 -0
  72. data/bundle/ruby/{3.0.0/gems/haml-5.2.2 → 3.2.0/gems/haml-6.3.0}/lib/haml/temple_line_counter.rb +2 -1
  73. data/bundle/ruby/{3.0.0/gems/haml-5.2.2 → 3.2.0/gems/haml-6.3.0}/lib/haml/util.rb +19 -15
  74. data/bundle/ruby/{3.0.0/gems/haml-5.2.2 → 3.2.0/gems/haml-6.3.0}/lib/haml/version.rb +1 -2
  75. data/bundle/ruby/3.2.0/gems/haml-6.3.0/lib/haml/whitespace.rb +8 -0
  76. data/bundle/ruby/3.2.0/gems/haml-6.3.0/lib/haml.rb +13 -0
  77. data/bundle/ruby/{3.0.0/gems/highline-2.1.0 → 3.2.0/gems/highline-3.1.2}/Changelog.md +32 -0
  78. data/bundle/ruby/{3.0.0/gems/highline-2.1.0 → 3.2.0/gems/highline-3.1.2}/Gemfile +2 -0
  79. data/bundle/ruby/{3.0.0/gems/highline-2.1.0 → 3.2.0/gems/highline-3.1.2}/README.md +40 -1
  80. data/bundle/ruby/{3.0.0/gems/highline-2.1.0 → 3.2.0/gems/highline-3.1.2}/highline.gemspec +6 -1
  81. data/bundle/ruby/{3.0.0/gems/highline-2.1.0 → 3.2.0/gems/highline-3.1.2}/lib/highline/io_console_compatible.rb +1 -1
  82. data/bundle/ruby/{3.0.0/gems/highline-2.1.0 → 3.2.0/gems/highline-3.1.2}/lib/highline/list_renderer.rb +2 -2
  83. data/bundle/ruby/{3.0.0/gems/highline-2.1.0 → 3.2.0/gems/highline-3.1.2}/lib/highline/menu.rb +7 -5
  84. data/bundle/ruby/{3.0.0/gems/highline-2.1.0 → 3.2.0/gems/highline-3.1.2}/lib/highline/question/answer_converter.rb +2 -5
  85. data/bundle/ruby/{3.0.0/gems/highline-2.1.0 → 3.2.0/gems/highline-3.1.2}/lib/highline/question.rb +23 -13
  86. data/bundle/ruby/{3.0.0/gems/highline-2.1.0 → 3.2.0/gems/highline-3.1.2}/lib/highline/question_asker.rb +3 -1
  87. data/bundle/ruby/{3.0.0/gems/highline-2.1.0 → 3.2.0/gems/highline-3.1.2}/lib/highline/terminal/io_console.rb +1 -1
  88. data/bundle/ruby/{3.0.0/gems/highline-2.1.0 → 3.2.0/gems/highline-3.1.2}/lib/highline/terminal/unix_stty.rb +6 -4
  89. data/bundle/ruby/{3.0.0/gems/highline-2.1.0 → 3.2.0/gems/highline-3.1.2}/lib/highline/terminal.rb +8 -6
  90. data/bundle/ruby/{3.0.0/gems/highline-2.1.0 → 3.2.0/gems/highline-3.1.2}/lib/highline/version.rb +1 -1
  91. data/bundle/ruby/{3.0.0/gems/highline-2.1.0 → 3.2.0/gems/highline-3.1.2}/lib/highline.rb +42 -16
  92. data/bundle/ruby/3.2.0/gems/parallel-1.27.0/lib/parallel/version.rb +4 -0
  93. data/bundle/ruby/{3.0.0/gems/parallel-1.23.0 → 3.2.0/gems/parallel-1.27.0}/lib/parallel.rb +77 -21
  94. data/bundle/ruby/3.2.0/gems/reline-0.6.1/COPYING +56 -0
  95. data/bundle/ruby/3.2.0/gems/reline-0.6.1/README.md +94 -0
  96. data/bundle/ruby/3.2.0/gems/reline-0.6.1/lib/reline/config.rb +373 -0
  97. data/bundle/ruby/3.2.0/gems/reline-0.6.1/lib/reline/face.rb +199 -0
  98. data/bundle/ruby/3.2.0/gems/reline-0.6.1/lib/reline/history.rb +76 -0
  99. data/bundle/ruby/3.2.0/gems/reline-0.6.1/lib/reline/io/ansi.rb +318 -0
  100. data/bundle/ruby/3.2.0/gems/reline-0.6.1/lib/reline/io/dumb.rb +120 -0
  101. data/bundle/ruby/3.2.0/gems/reline-0.6.1/lib/reline/io/windows.rb +530 -0
  102. data/bundle/ruby/3.2.0/gems/reline-0.6.1/lib/reline/io.rb +55 -0
  103. data/bundle/ruby/3.2.0/gems/reline-0.6.1/lib/reline/key_actor/base.rb +37 -0
  104. data/bundle/ruby/3.2.0/gems/reline-0.6.1/lib/reline/key_actor/composite.rb +17 -0
  105. data/bundle/ruby/3.2.0/gems/reline-0.6.1/lib/reline/key_actor/emacs.rb +517 -0
  106. data/bundle/ruby/3.2.0/gems/reline-0.6.1/lib/reline/key_actor/vi_command.rb +518 -0
  107. data/bundle/ruby/3.2.0/gems/reline-0.6.1/lib/reline/key_actor/vi_insert.rb +517 -0
  108. data/bundle/ruby/3.2.0/gems/reline-0.6.1/lib/reline/key_actor.rb +8 -0
  109. data/bundle/ruby/3.2.0/gems/reline-0.6.1/lib/reline/key_stroke.rb +119 -0
  110. data/bundle/ruby/3.2.0/gems/reline-0.6.1/lib/reline/kill_ring.rb +125 -0
  111. data/bundle/ruby/3.2.0/gems/reline-0.6.1/lib/reline/line_editor.rb +2354 -0
  112. data/bundle/ruby/3.2.0/gems/reline-0.6.1/lib/reline/unicode/east_asian_width.rb +1293 -0
  113. data/bundle/ruby/3.2.0/gems/reline-0.6.1/lib/reline/unicode.rb +415 -0
  114. data/bundle/ruby/3.2.0/gems/reline-0.6.1/lib/reline/version.rb +3 -0
  115. data/bundle/ruby/3.2.0/gems/reline-0.6.1/lib/reline.rb +528 -0
  116. data/bundle/ruby/3.2.0/gems/reline-0.6.1/license_of_rb-readline +25 -0
  117. data/bundle/ruby/3.2.0/gems/rexml-3.4.1/LICENSE.txt +22 -0
  118. data/bundle/ruby/3.2.0/gems/rexml-3.4.1/NEWS.md +699 -0
  119. data/bundle/ruby/{3.0.0/gems/rexml-3.2.5 → 3.2.0/gems/rexml-3.4.1}/README.md +10 -1
  120. data/bundle/ruby/{3.0.0/gems/rexml-3.2.5 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/attribute.rb +17 -11
  121. data/bundle/ruby/{3.0.0/gems/rexml-3.2.5 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/document.rb +6 -2
  122. data/bundle/ruby/{3.0.0/gems/rexml-3.2.5 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/element.rb +19 -34
  123. data/bundle/ruby/{3.0.0/gems/rexml-3.2.5 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/entity.rb +9 -38
  124. data/bundle/ruby/{3.0.0/gems/rexml-3.2.5 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/formatters/pretty.rb +3 -3
  125. data/bundle/ruby/{3.0.0/gems/rexml-3.2.5 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/functions.rb +1 -2
  126. data/bundle/ruby/{3.0.0/gems/rexml-3.2.5 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/namespace.rb +8 -4
  127. data/bundle/ruby/{3.0.0/gems/rexml-3.2.5 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/node.rb +8 -4
  128. data/bundle/ruby/{3.0.0/gems/rexml-3.2.5 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/parseexception.rb +1 -0
  129. data/bundle/ruby/3.2.0/gems/rexml-3.4.1/lib/rexml/parsers/baseparser.rb +887 -0
  130. data/bundle/ruby/{3.0.0/gems/rexml-3.2.5 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/parsers/pullparser.rb +16 -0
  131. data/bundle/ruby/{3.0.0/gems/rexml-3.2.5 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/parsers/sax2parser.rb +16 -19
  132. data/bundle/ruby/{3.0.0/gems/rexml-3.2.5 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/parsers/streamparser.rb +16 -10
  133. data/bundle/ruby/{3.0.0/gems/rexml-3.2.5 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/parsers/treeparser.rb +9 -21
  134. data/bundle/ruby/{3.0.0/gems/rexml-3.2.5 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/parsers/xpathparser.rb +136 -86
  135. data/bundle/ruby/{3.0.0/gems/rexml-3.2.5 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/rexml.rb +3 -1
  136. data/bundle/ruby/3.2.0/gems/rexml-3.4.1/lib/rexml/source.rb +383 -0
  137. data/bundle/ruby/{3.0.0/gems/rexml-3.2.5 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/text.rb +60 -61
  138. data/bundle/ruby/{3.0.0/gems/rexml-3.2.5 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/xpath_parser.rb +7 -3
  139. data/bundle/ruby/{3.0.0/gems/ruby2ruby-2.4.4 → 3.2.0/gems/ruby2ruby-2.5.2}/History.rdoc +28 -0
  140. data/bundle/ruby/{3.0.0/gems/ruby2ruby-2.4.4 → 3.2.0/gems/ruby2ruby-2.5.2}/lib/ruby2ruby.rb +166 -27
  141. data/bundle/ruby/{3.0.0/gems/ruby_parser-3.20.1 → 3.2.0/gems/ruby_parser-3.20.3}/History.rdoc +18 -0
  142. data/bundle/ruby/{3.0.0/gems/ruby_parser-3.20.1 → 3.2.0/gems/ruby_parser-3.20.3}/compare/normalize.rb +1 -0
  143. data/bundle/ruby/{3.0.0/gems/ruby_parser-3.20.1 → 3.2.0/gems/ruby_parser-3.20.3}/lib/ruby20_parser.rb +4220 -4273
  144. data/bundle/ruby/{3.0.0/gems/ruby_parser-3.20.1 → 3.2.0/gems/ruby_parser-3.20.3}/lib/ruby20_parser.y +0 -10
  145. data/bundle/ruby/{3.0.0/gems/ruby_parser-3.20.1 → 3.2.0/gems/ruby_parser-3.20.3}/lib/ruby21_parser.rb +4203 -4238
  146. data/bundle/ruby/{3.0.0/gems/ruby_parser-3.20.1 → 3.2.0/gems/ruby_parser-3.20.3}/lib/ruby21_parser.y +0 -10
  147. data/bundle/ruby/{3.0.0/gems/ruby_parser-3.20.1 → 3.2.0/gems/ruby_parser-3.20.3}/lib/ruby22_parser.rb +4239 -4276
  148. data/bundle/ruby/{3.0.0/gems/ruby_parser-3.20.1 → 3.2.0/gems/ruby_parser-3.20.3}/lib/ruby22_parser.y +0 -10
  149. data/bundle/ruby/{3.0.0/gems/ruby_parser-3.20.1 → 3.2.0/gems/ruby_parser-3.20.3}/lib/ruby23_parser.rb +4235 -4240
  150. data/bundle/ruby/{3.0.0/gems/ruby_parser-3.20.1/lib/ruby24_parser.y → 3.2.0/gems/ruby_parser-3.20.3/lib/ruby23_parser.y} +1 -19
  151. data/bundle/ruby/{3.0.0/gems/ruby_parser-3.20.1 → 3.2.0/gems/ruby_parser-3.20.3}/lib/ruby24_parser.rb +4229 -4284
  152. data/bundle/ruby/{3.0.0/gems/ruby_parser-3.20.1/lib/ruby23_parser.y → 3.2.0/gems/ruby_parser-3.20.3/lib/ruby24_parser.y} +9 -11
  153. data/bundle/ruby/{3.0.0/gems/ruby_parser-3.20.1 → 3.2.0/gems/ruby_parser-3.20.3}/lib/ruby25_parser.rb +4220 -4275
  154. data/bundle/ruby/{3.0.0/gems/ruby_parser-3.20.1 → 3.2.0/gems/ruby_parser-3.20.3}/lib/ruby25_parser.y +0 -10
  155. data/bundle/ruby/{3.0.0/gems/ruby_parser-3.20.1 → 3.2.0/gems/ruby_parser-3.20.3}/lib/ruby26_parser.rb +4221 -4276
  156. data/bundle/ruby/{3.0.0/gems/ruby_parser-3.20.1 → 3.2.0/gems/ruby_parser-3.20.3}/lib/ruby26_parser.y +0 -10
  157. data/bundle/ruby/{3.0.0/gems/ruby_parser-3.20.1 → 3.2.0/gems/ruby_parser-3.20.3}/lib/ruby27_parser.rb +4138 -4207
  158. data/bundle/ruby/{3.0.0/gems/ruby_parser-3.20.1 → 3.2.0/gems/ruby_parser-3.20.3}/lib/ruby27_parser.y +0 -10
  159. data/bundle/ruby/{3.0.0/gems/ruby_parser-3.20.1 → 3.2.0/gems/ruby_parser-3.20.3}/lib/ruby30_parser.rb +5989 -5957
  160. data/bundle/ruby/{3.0.0/gems/ruby_parser-3.20.1 → 3.2.0/gems/ruby_parser-3.20.3}/lib/ruby30_parser.y +95 -72
  161. data/bundle/ruby/{3.0.0/gems/ruby_parser-3.20.1 → 3.2.0/gems/ruby_parser-3.20.3}/lib/ruby31_parser.rb +6157 -6172
  162. data/bundle/ruby/{3.0.0/gems/ruby_parser-3.20.1 → 3.2.0/gems/ruby_parser-3.20.3}/lib/ruby31_parser.y +96 -73
  163. data/bundle/ruby/{3.0.0/gems/ruby_parser-3.20.1 → 3.2.0/gems/ruby_parser-3.20.3}/lib/ruby32_parser.rb +6251 -6314
  164. data/bundle/ruby/{3.0.0/gems/ruby_parser-3.20.1 → 3.2.0/gems/ruby_parser-3.20.3}/lib/ruby32_parser.y +117 -93
  165. data/bundle/ruby/{3.0.0/gems/ruby_parser-3.20.1 → 3.2.0/gems/ruby_parser-3.20.3}/lib/ruby3_parser.yy +132 -73
  166. data/bundle/ruby/{3.0.0/gems/ruby_parser-3.20.1 → 3.2.0/gems/ruby_parser-3.20.3}/lib/ruby_lexer.rb +15 -7
  167. data/bundle/ruby/{3.0.0/gems/ruby_parser-3.20.1 → 3.2.0/gems/ruby_parser-3.20.3}/lib/ruby_lexer.rex.rb +1 -1
  168. data/bundle/ruby/{3.0.0/gems/ruby_parser-3.20.1 → 3.2.0/gems/ruby_parser-3.20.3}/lib/ruby_lexer_strings.rb +2 -2
  169. data/bundle/ruby/{3.0.0/gems/ruby_parser-3.20.1 → 3.2.0/gems/ruby_parser-3.20.3}/lib/ruby_parser.yy +0 -10
  170. data/bundle/ruby/{3.0.0/gems/ruby_parser-3.20.1 → 3.2.0/gems/ruby_parser-3.20.3}/lib/ruby_parser_extras.rb +9 -9
  171. data/bundle/ruby/{3.0.0/gems/ruby_parser-3.20.1 → 3.2.0/gems/ruby_parser-3.20.3}/tools/munge.rb +8 -2
  172. data/bundle/ruby/{3.0.0/gems/ruby_parser-3.20.1 → 3.2.0/gems/ruby_parser-3.20.3}/tools/ripper.rb +14 -12
  173. data/bundle/ruby/{3.0.0/gems/sexp_processor-4.17.0 → 3.2.0/gems/sexp_processor-4.17.3}/History.rdoc +18 -0
  174. data/bundle/ruby/{3.0.0/gems/sexp_processor-4.17.0 → 3.2.0/gems/sexp_processor-4.17.3}/lib/pt_testcase.rb +1 -1
  175. data/bundle/ruby/{3.0.0/gems/sexp_processor-4.17.0 → 3.2.0/gems/sexp_processor-4.17.3}/lib/sexp.rb +1 -1
  176. data/bundle/ruby/{3.0.0/gems/sexp_processor-4.17.0 → 3.2.0/gems/sexp_processor-4.17.3}/lib/sexp_matcher.rb +1 -1
  177. data/bundle/ruby/{3.0.0/gems/sexp_processor-4.17.0 → 3.2.0/gems/sexp_processor-4.17.3}/lib/sexp_processor.rb +1 -1
  178. data/bundle/ruby/{3.0.0/gems/slim-4.1.0 → 3.2.0/gems/slim-5.2.1}/CHANGES +44 -8
  179. data/bundle/ruby/3.2.0/gems/slim-5.2.1/Gemfile +43 -0
  180. data/bundle/ruby/{3.0.0/gems/slim-4.1.0 → 3.2.0/gems/slim-5.2.1}/LICENSE +1 -1
  181. data/bundle/ruby/{3.0.0/gems/slim-4.1.0 → 3.2.0/gems/slim-5.2.1}/README.jp.md +28 -41
  182. data/bundle/ruby/{3.0.0/gems/slim-4.1.0 → 3.2.0/gems/slim-5.2.1}/README.md +66 -43
  183. data/bundle/ruby/{3.0.0/gems/slim-4.1.0 → 3.2.0/gems/slim-5.2.1}/lib/slim/code_attributes.rb +2 -1
  184. data/bundle/ruby/{3.0.0/gems/slim-4.1.0 → 3.2.0/gems/slim-5.2.1}/lib/slim/command.rb +2 -8
  185. data/bundle/ruby/{3.0.0/gems/slim-4.1.0 → 3.2.0/gems/slim-5.2.1}/lib/slim/controls.rb +1 -0
  186. data/bundle/ruby/{3.0.0/gems/slim-4.1.0 → 3.2.0/gems/slim-5.2.1}/lib/slim/do_inserter.rb +4 -3
  187. data/bundle/ruby/{3.0.0/gems/slim-4.1.0 → 3.2.0/gems/slim-5.2.1}/lib/slim/embedded.rb +17 -17
  188. data/bundle/ruby/{3.0.0/gems/slim-4.1.0 → 3.2.0/gems/slim-5.2.1}/lib/slim/end_inserter.rb +3 -2
  189. data/bundle/ruby/{3.0.0/gems/slim-4.1.0 → 3.2.0/gems/slim-5.2.1}/lib/slim/engine.rb +3 -0
  190. data/bundle/ruby/{3.0.0/gems/slim-4.1.0 → 3.2.0/gems/slim-5.2.1}/lib/slim/erb_converter.rb +1 -0
  191. data/bundle/ruby/{3.0.0/gems/slim-4.1.0 → 3.2.0/gems/slim-5.2.1}/lib/slim/filter.rb +1 -0
  192. data/bundle/ruby/{3.0.0/gems/slim-4.1.0 → 3.2.0/gems/slim-5.2.1}/lib/slim/grammar.rb +1 -0
  193. data/bundle/ruby/{3.0.0/gems/slim-4.1.0 → 3.2.0/gems/slim-5.2.1}/lib/slim/include.rb +1 -0
  194. data/bundle/ruby/{3.0.0/gems/slim-4.1.0 → 3.2.0/gems/slim-5.2.1}/lib/slim/interpolation.rb +1 -0
  195. data/bundle/ruby/{3.0.0/gems/slim-4.1.0 → 3.2.0/gems/slim-5.2.1}/lib/slim/logic_less/context.rb +6 -7
  196. data/bundle/ruby/{3.0.0/gems/slim-4.1.0 → 3.2.0/gems/slim-5.2.1}/lib/slim/logic_less/filter.rb +1 -0
  197. data/bundle/ruby/{3.0.0/gems/slim-4.1.0 → 3.2.0/gems/slim-5.2.1}/lib/slim/logic_less.rb +1 -0
  198. data/bundle/ruby/{3.0.0/gems/slim-4.1.0 → 3.2.0/gems/slim-5.2.1}/lib/slim/parser.rb +26 -39
  199. data/bundle/ruby/3.2.0/gems/slim-5.2.1/lib/slim/railtie.rb +19 -0
  200. data/bundle/ruby/{3.0.0/gems/slim-4.1.0 → 3.2.0/gems/slim-5.2.1}/lib/slim/smart/escaper.rb +1 -1
  201. data/bundle/ruby/{3.0.0/gems/slim-4.1.0 → 3.2.0/gems/slim-5.2.1}/lib/slim/smart/filter.rb +3 -2
  202. data/bundle/ruby/{3.0.0/gems/slim-4.1.0 → 3.2.0/gems/slim-5.2.1}/lib/slim/smart/parser.rb +4 -3
  203. data/bundle/ruby/{3.0.0/gems/slim-4.1.0 → 3.2.0/gems/slim-5.2.1}/lib/slim/smart.rb +1 -0
  204. data/bundle/ruby/{3.0.0/gems/slim-4.1.0 → 3.2.0/gems/slim-5.2.1}/lib/slim/splat/builder.rb +16 -8
  205. data/bundle/ruby/{3.0.0/gems/slim-4.1.0 → 3.2.0/gems/slim-5.2.1}/lib/slim/splat/filter.rb +6 -4
  206. data/bundle/ruby/3.2.0/gems/slim-5.2.1/lib/slim/template.rb +6 -0
  207. data/bundle/ruby/{3.0.0/gems/slim-4.1.0 → 3.2.0/gems/slim-5.2.1}/lib/slim/translator.rb +4 -3
  208. data/bundle/ruby/{3.0.0/gems/slim-4.1.0 → 3.2.0/gems/slim-5.2.1}/lib/slim/version.rb +2 -1
  209. data/bundle/ruby/{3.0.0/gems/slim-4.1.0 → 3.2.0/gems/slim-5.2.1}/lib/slim.rb +2 -0
  210. data/bundle/ruby/{3.0.0/gems/slim-4.1.0 → 3.2.0/gems/slim-5.2.1}/slim.gemspec +14 -5
  211. data/bundle/ruby/{3.0.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/CHANGES +39 -1
  212. data/bundle/ruby/3.2.0/gems/temple-0.10.3/Gemfile +2 -0
  213. data/bundle/ruby/{3.0.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/README.md +1 -1
  214. data/bundle/ruby/{3.0.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/engine.rb +1 -0
  215. data/bundle/ruby/{3.0.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/erb/engine.rb +3 -0
  216. data/bundle/ruby/{3.0.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/erb/parser.rb +2 -1
  217. data/bundle/ruby/{3.0.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/erb/template.rb +1 -0
  218. data/bundle/ruby/{3.0.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/erb/trimming.rb +1 -0
  219. data/bundle/ruby/{3.0.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/exceptions.rb +1 -0
  220. data/bundle/ruby/{3.0.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/filter.rb +1 -0
  221. data/bundle/ruby/3.2.0/gems/temple-0.10.3/lib/temple/filters/ambles.rb +22 -0
  222. data/bundle/ruby/{3.0.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/filters/code_merger.rb +1 -0
  223. data/bundle/ruby/{3.0.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/filters/control_flow.rb +1 -0
  224. data/bundle/ruby/{3.0.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/filters/dynamic_inliner.rb +2 -1
  225. data/bundle/ruby/3.2.0/gems/temple-0.10.3/lib/temple/filters/dynamic_merger.rb +69 -0
  226. data/bundle/ruby/{3.0.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/filters/encoding.rb +1 -0
  227. data/bundle/ruby/{3.0.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/filters/eraser.rb +1 -0
  228. data/bundle/ruby/{3.0.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/filters/escapable.rb +1 -0
  229. data/bundle/ruby/{3.0.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/filters/multi_flattener.rb +1 -0
  230. data/bundle/ruby/{3.0.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/filters/remove_bom.rb +1 -0
  231. data/bundle/ruby/{3.0.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/filters/static_analyzer.rb +1 -0
  232. data/bundle/ruby/{3.0.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/filters/static_merger.rb +1 -0
  233. data/bundle/ruby/{3.0.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/filters/string_splitter.rb +13 -1
  234. data/bundle/ruby/{3.0.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/filters/validator.rb +1 -0
  235. data/bundle/ruby/{3.0.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/generator.rb +5 -2
  236. data/bundle/ruby/{3.0.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/generators/array.rb +1 -0
  237. data/bundle/ruby/{3.0.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/generators/array_buffer.rb +1 -0
  238. data/bundle/ruby/{3.0.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/generators/erb.rb +1 -0
  239. data/bundle/ruby/{3.0.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/generators/rails_output_buffer.rb +4 -4
  240. data/bundle/ruby/{3.0.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/generators/string_buffer.rb +2 -1
  241. data/bundle/ruby/{3.0.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/grammar.rb +1 -0
  242. data/bundle/ruby/{3.0.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/html/attribute_merger.rb +1 -0
  243. data/bundle/ruby/{3.0.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/html/attribute_remover.rb +1 -0
  244. data/bundle/ruby/{3.0.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/html/attribute_sorter.rb +1 -0
  245. data/bundle/ruby/{3.0.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/html/dispatcher.rb +1 -0
  246. data/bundle/ruby/{3.0.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/html/fast.rb +1 -0
  247. data/bundle/ruby/{3.0.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/html/filter.rb +1 -0
  248. data/bundle/ruby/{3.0.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/html/pretty.rb +1 -0
  249. data/bundle/ruby/{3.0.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/html/safe.rb +1 -0
  250. data/bundle/ruby/{3.0.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/map.rb +1 -0
  251. data/bundle/ruby/{3.0.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/mixins/dispatcher.rb +1 -0
  252. data/bundle/ruby/{3.0.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/mixins/engine_dsl.rb +1 -0
  253. data/bundle/ruby/{3.0.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/mixins/grammar_dsl.rb +4 -2
  254. data/bundle/ruby/{3.0.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/mixins/options.rb +1 -0
  255. data/bundle/ruby/{3.0.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/mixins/template.rb +1 -0
  256. data/bundle/ruby/{3.0.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/parser.rb +1 -0
  257. data/bundle/ruby/{3.0.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/static_analyzer.rb +1 -0
  258. data/bundle/ruby/{3.0.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/templates/rails.rb +7 -2
  259. data/bundle/ruby/{3.0.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/templates/tilt.rb +2 -9
  260. data/bundle/ruby/{3.0.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/templates.rb +1 -0
  261. data/bundle/ruby/{3.0.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/utils.rb +5 -15
  262. data/bundle/ruby/3.2.0/gems/temple-0.10.3/lib/temple/version.rb +4 -0
  263. data/bundle/ruby/{3.0.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple.rb +3 -0
  264. data/bundle/ruby/{3.0.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/temple.gemspec +4 -6
  265. data/bundle/ruby/3.2.0/gems/terminal-table-4.0.0/History.rdoc +149 -0
  266. data/bundle/ruby/3.2.0/gems/terminal-table-4.0.0/README.md +417 -0
  267. data/bundle/ruby/{3.0.0/gems/terminal-table-1.8.0 → 3.2.0/gems/terminal-table-4.0.0}/lib/terminal-table/cell.rb +9 -9
  268. data/bundle/ruby/{3.0.0/gems/terminal-table-1.8.0 → 3.2.0/gems/terminal-table-4.0.0}/lib/terminal-table/row.rb +18 -4
  269. data/bundle/ruby/3.2.0/gems/terminal-table-4.0.0/lib/terminal-table/separator.rb +66 -0
  270. data/bundle/ruby/3.2.0/gems/terminal-table-4.0.0/lib/terminal-table/style.rb +284 -0
  271. data/bundle/ruby/{3.0.0/gems/terminal-table-1.8.0 → 3.2.0/gems/terminal-table-4.0.0}/lib/terminal-table/table.rb +49 -18
  272. data/bundle/ruby/3.2.0/gems/terminal-table-4.0.0/lib/terminal-table/util.rb +13 -0
  273. data/bundle/ruby/{3.0.0/gems/terminal-table-1.8.0 → 3.2.0/gems/terminal-table-4.0.0}/lib/terminal-table/version.rb +1 -1
  274. data/bundle/ruby/{3.0.0/gems/terminal-table-1.8.0 → 3.2.0/gems/terminal-table-4.0.0}/lib/terminal-table.rb +2 -2
  275. data/bundle/ruby/{3.0.0/gems/terminal-table-1.8.0 → 3.2.0/gems/terminal-table-4.0.0}/terminal-table.gemspec +3 -4
  276. data/bundle/ruby/{3.0.0/gems/tilt-2.0.11 → 3.2.0/gems/tilt-2.6.1}/COPYING +1 -0
  277. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/_emacs_org.rb +2 -0
  278. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/_handlebars.rb +2 -0
  279. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/_jbuilder.rb +2 -0
  280. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/_org.rb +2 -0
  281. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/asciidoc.rb +15 -0
  282. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/babel.rb +8 -0
  283. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/builder.rb +42 -0
  284. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/cli.rb +134 -0
  285. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/coffee.rb +39 -0
  286. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/commonmarker.rb +95 -0
  287. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/creole.rb +16 -0
  288. data/bundle/ruby/{3.0.0/gems/tilt-2.0.11 → 3.2.0/gems/tilt-2.6.1}/lib/tilt/csv.rb +6 -18
  289. data/bundle/ruby/{3.0.0/gems/tilt-2.0.11 → 3.2.0/gems/tilt-2.6.1}/lib/tilt/erb.rb +23 -21
  290. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/erubi.rb +55 -0
  291. data/bundle/ruby/{3.0.0/gems/tilt-2.0.11 → 3.2.0/gems/tilt-2.6.1}/lib/tilt/etanni.rb +5 -4
  292. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/haml.rb +94 -0
  293. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/kramdown.rb +13 -0
  294. data/bundle/ruby/{3.0.0/gems/tilt-2.0.11 → 3.2.0/gems/tilt-2.6.1}/lib/tilt/liquid.rb +10 -17
  295. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/livescript.rb +11 -0
  296. data/bundle/ruby/{3.0.0/gems/tilt-2.0.11 → 3.2.0/gems/tilt-2.6.1}/lib/tilt/mapping.rb +228 -109
  297. data/bundle/ruby/{3.0.0/gems/tilt-2.0.11 → 3.2.0/gems/tilt-2.6.1}/lib/tilt/markaby.rb +5 -7
  298. data/bundle/ruby/{3.0.0/gems/tilt-2.0.11 → 3.2.0/gems/tilt-2.6.1}/lib/tilt/nokogiri.rb +11 -10
  299. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/pandoc.rb +39 -0
  300. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/pipeline.rb +19 -0
  301. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/plain.rb +5 -0
  302. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/prawn.rb +28 -0
  303. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/radius.rb +41 -0
  304. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/rdiscount.rb +23 -0
  305. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/rdoc.rb +11 -0
  306. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/redcarpet.rb +31 -0
  307. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/redcloth.rb +13 -0
  308. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/rst-pandoc.rb +10 -0
  309. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/sass.rb +78 -0
  310. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/slim.rb +5 -0
  311. data/bundle/ruby/{3.0.0/gems/tilt-2.0.11 → 3.2.0/gems/tilt-2.6.1}/lib/tilt/string.rb +9 -3
  312. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/template.rb +611 -0
  313. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/typescript.rb +19 -0
  314. data/bundle/ruby/{3.0.0/gems/tilt-2.0.11 → 3.2.0/gems/tilt-2.6.1}/lib/tilt/yajl.rb +5 -11
  315. data/bundle/ruby/{3.0.0/gems/tilt-2.0.11 → 3.2.0/gems/tilt-2.6.1}/lib/tilt.rb +68 -43
  316. data/bundle/ruby/3.2.0/gems/unicode-display_width-3.1.4/CHANGELOG.md +291 -0
  317. data/bundle/ruby/{3.0.0/gems/unicode-display_width-1.8.0 → 3.2.0/gems/unicode-display_width-3.1.4}/MIT-LICENSE.txt +1 -1
  318. data/bundle/ruby/3.2.0/gems/unicode-display_width-3.1.4/README.md +194 -0
  319. data/bundle/ruby/3.2.0/gems/unicode-display_width-3.1.4/data/display_width.marshal.gz +0 -0
  320. data/bundle/ruby/3.2.0/gems/unicode-display_width-3.1.4/lib/unicode/display_width/constants.rb +10 -0
  321. data/bundle/ruby/3.2.0/gems/unicode-display_width-3.1.4/lib/unicode/display_width/emoji_support.rb +52 -0
  322. data/bundle/ruby/3.2.0/gems/unicode-display_width-3.1.4/lib/unicode/display_width/index.rb +34 -0
  323. data/bundle/ruby/3.2.0/gems/unicode-display_width-3.1.4/lib/unicode/display_width/no_string_ext.rb +8 -0
  324. data/bundle/ruby/3.2.0/gems/unicode-display_width-3.1.4/lib/unicode/display_width/reline_ext.rb +14 -0
  325. data/bundle/ruby/3.2.0/gems/unicode-display_width-3.1.4/lib/unicode/display_width/string_ext.rb +9 -0
  326. data/bundle/ruby/3.2.0/gems/unicode-display_width-3.1.4/lib/unicode/display_width.rb +247 -0
  327. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/CHANGELOG.md +191 -0
  328. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/CODE_OF_CONDUCT.md +74 -0
  329. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/Gemfile +7 -0
  330. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/Gemfile.lock +33 -0
  331. data/bundle/ruby/{3.0.0/gems/safe_yaml-1.0.5/LICENSE.txt → 3.2.0/gems/unicode-emoji-4.0.4/MIT-LICENSE.txt} +1 -3
  332. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/README.md +205 -0
  333. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/data/emoji.marshal.gz +0 -0
  334. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/data/generate_constants.rb +344 -0
  335. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/constants.rb +49 -0
  336. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex.rb +8 -0
  337. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_basic.rb +8 -0
  338. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_emoji_keycap.rb +8 -0
  339. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_include_mqe.rb +8 -0
  340. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_include_mqe_uqe.rb +8 -0
  341. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_include_text.rb +8 -0
  342. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_picto.rb +8 -0
  343. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_picto_no_emoji.rb +8 -0
  344. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_possible.rb +8 -0
  345. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_prop_component.rb +8 -0
  346. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_prop_emoji.rb +8 -0
  347. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_prop_modifier.rb +8 -0
  348. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_prop_modifier_base.rb +8 -0
  349. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_prop_presentation.rb +8 -0
  350. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_text.rb +8 -0
  351. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_text_presentation.rb +8 -0
  352. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_valid.rb +8 -0
  353. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_valid_include_text.rb +8 -0
  354. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_well_formed.rb +8 -0
  355. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_well_formed_include_text.rb +8 -0
  356. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex.rb +8 -0
  357. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_basic.rb +8 -0
  358. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_emoji_keycap.rb +8 -0
  359. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_include_mqe.rb +8 -0
  360. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_include_mqe_uqe.rb +8 -0
  361. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_include_text.rb +8 -0
  362. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_picto.rb +8 -0
  363. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_picto_no_emoji.rb +8 -0
  364. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_possible.rb +8 -0
  365. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_prop_component.rb +8 -0
  366. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_prop_emoji.rb +8 -0
  367. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_prop_modifier.rb +8 -0
  368. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_prop_modifier_base.rb +8 -0
  369. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_prop_presentation.rb +8 -0
  370. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_text.rb +8 -0
  371. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_text_presentation.rb +8 -0
  372. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_valid.rb +8 -0
  373. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_valid_include_text.rb +8 -0
  374. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_well_formed.rb +8 -0
  375. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_well_formed_include_text.rb +8 -0
  376. data/bundle/ruby/{3.0.0/gems/unicode-display_width-1.8.0/lib/unicode/display_width → 3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji}/index.rb +5 -3
  377. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/lazy_constants.rb +56 -0
  378. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/list.rb +13 -0
  379. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji.rb +111 -0
  380. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/unicode-emoji.gemspec +22 -0
  381. data/lib/brakeman/app_tree.rb +50 -13
  382. data/lib/brakeman/checks/check_deserialize.rb +4 -1
  383. data/lib/brakeman/checks/check_eol_rails.rb +7 -0
  384. data/lib/brakeman/checks/check_eol_ruby.rb +2 -0
  385. data/lib/brakeman/checks/check_evaluation.rb +45 -8
  386. data/lib/brakeman/checks/check_execute.rb +28 -0
  387. data/lib/brakeman/checks/check_model_attr_accessible.rb +1 -0
  388. data/lib/brakeman/checks/check_ransack.rb +53 -0
  389. data/lib/brakeman/checks/check_render.rb +6 -1
  390. data/lib/brakeman/checks/check_session_settings.rb +2 -3
  391. data/lib/brakeman/checks/check_sql.rb +1 -1
  392. data/lib/brakeman/checks/check_unscoped_find.rb +1 -1
  393. data/lib/brakeman/checks/check_weak_rsa_key.rb +1 -1
  394. data/lib/brakeman/commandline.rb +5 -0
  395. data/lib/brakeman/file_parser.rb +35 -2
  396. data/lib/brakeman/messages.rb +1 -1
  397. data/lib/brakeman/options.rb +49 -4
  398. data/lib/brakeman/parsers/erubis_patch.rb +11 -0
  399. data/lib/brakeman/parsers/haml6_embedded.rb +23 -0
  400. data/lib/brakeman/parsers/rails2_erubis.rb +3 -0
  401. data/lib/brakeman/parsers/rails2_xss_plugin_erubis.rb +4 -0
  402. data/lib/brakeman/parsers/rails3_erubis.rb +5 -1
  403. data/lib/brakeman/parsers/slim_embedded.rb +2 -0
  404. data/lib/brakeman/parsers/template_parser.rb +32 -7
  405. data/lib/brakeman/processor.rb +2 -0
  406. data/lib/brakeman/processors/alias_processor.rb +51 -21
  407. data/lib/brakeman/processors/base_processor.rb +2 -0
  408. data/lib/brakeman/processors/haml6_template_processor.rb +92 -0
  409. data/lib/brakeman/processors/haml_template_processor.rb +7 -1
  410. data/lib/brakeman/processors/lib/file_type_detector.rb +9 -7
  411. data/lib/brakeman/processors/lib/module_helper.rb +31 -1
  412. data/lib/brakeman/processors/lib/render_helper.rb +38 -1
  413. data/lib/brakeman/processors/library_processor.rb +6 -0
  414. data/lib/brakeman/processors/template_processor.rb +1 -1
  415. data/lib/brakeman/report/ignore/config.rb +0 -1
  416. data/lib/brakeman/report/pager.rb +1 -1
  417. data/lib/brakeman/report/report_html.rb +1 -1
  418. data/lib/brakeman/report/report_junit.rb +4 -57
  419. data/lib/brakeman/report/report_markdown.rb +1 -1
  420. data/lib/brakeman/report/report_sarif.rb +122 -2
  421. data/lib/brakeman/report/report_table.rb +2 -2
  422. data/lib/brakeman/report/report_tabs.rb +0 -1
  423. data/lib/brakeman/report/report_text.rb +8 -1
  424. data/lib/brakeman/report/templates/header.html.erb +7 -2
  425. data/lib/brakeman/report/templates/ignored_warnings.html.erb +3 -3
  426. data/lib/brakeman/rescanner.rb +40 -390
  427. data/lib/brakeman/scanner.rb +181 -86
  428. data/lib/brakeman/tracker/config.rb +22 -8
  429. data/lib/brakeman/tracker/controller.rb +14 -10
  430. data/lib/brakeman/tracker/file_cache.rb +83 -0
  431. data/lib/brakeman/tracker.rb +26 -3
  432. data/lib/brakeman/util.rb +1 -3
  433. data/lib/brakeman/version.rb +1 -1
  434. data/lib/brakeman/warning.rb +1 -1
  435. data/lib/brakeman/warning_codes.rb +1 -0
  436. data/lib/brakeman.rb +27 -5
  437. data/lib/ruby_parser/bm_sexp.rb +5 -1
  438. metadata +509 -406
  439. data/bundle/ruby/3.0.0/gems/haml-5.2.2/Gemfile +0 -16
  440. data/bundle/ruby/3.0.0/gems/haml-5.2.2/TODO +0 -24
  441. data/bundle/ruby/3.0.0/gems/haml-5.2.2/haml.gemspec +0 -45
  442. data/bundle/ruby/3.0.0/gems/haml-5.2.2/lib/haml/attribute_builder.rb +0 -219
  443. data/bundle/ruby/3.0.0/gems/haml-5.2.2/lib/haml/attribute_compiler.rb +0 -237
  444. data/bundle/ruby/3.0.0/gems/haml-5.2.2/lib/haml/attribute_parser.rb +0 -150
  445. data/bundle/ruby/3.0.0/gems/haml-5.2.2/lib/haml/buffer.rb +0 -182
  446. data/bundle/ruby/3.0.0/gems/haml-5.2.2/lib/haml/compiler.rb +0 -330
  447. data/bundle/ruby/3.0.0/gems/haml-5.2.2/lib/haml/engine.rb +0 -238
  448. data/bundle/ruby/3.0.0/gems/haml-5.2.2/lib/haml/escapable.rb +0 -77
  449. data/bundle/ruby/3.0.0/gems/haml-5.2.2/lib/haml/exec.rb +0 -347
  450. data/bundle/ruby/3.0.0/gems/haml-5.2.2/lib/haml/filters.rb +0 -399
  451. data/bundle/ruby/3.0.0/gems/haml-5.2.2/lib/haml/generator.rb +0 -42
  452. data/bundle/ruby/3.0.0/gems/haml-5.2.2/lib/haml/helpers/action_view_extensions.rb +0 -60
  453. data/bundle/ruby/3.0.0/gems/haml-5.2.2/lib/haml/helpers/action_view_mods.rb +0 -132
  454. data/bundle/ruby/3.0.0/gems/haml-5.2.2/lib/haml/helpers/action_view_xss_mods.rb +0 -60
  455. data/bundle/ruby/3.0.0/gems/haml-5.2.2/lib/haml/helpers/safe_erubi_template.rb +0 -20
  456. data/bundle/ruby/3.0.0/gems/haml-5.2.2/lib/haml/helpers/safe_erubis_template.rb +0 -33
  457. data/bundle/ruby/3.0.0/gems/haml-5.2.2/lib/haml/helpers/xss_mods.rb +0 -114
  458. data/bundle/ruby/3.0.0/gems/haml-5.2.2/lib/haml/helpers.rb +0 -709
  459. data/bundle/ruby/3.0.0/gems/haml-5.2.2/lib/haml/options.rb +0 -273
  460. data/bundle/ruby/3.0.0/gems/haml-5.2.2/lib/haml/plugin.rb +0 -54
  461. data/bundle/ruby/3.0.0/gems/haml-5.2.2/lib/haml/railtie.rb +0 -53
  462. data/bundle/ruby/3.0.0/gems/haml-5.2.2/lib/haml/sass_rails_filter.rb +0 -47
  463. data/bundle/ruby/3.0.0/gems/haml-5.2.2/lib/haml/template/options.rb +0 -27
  464. data/bundle/ruby/3.0.0/gems/haml-5.2.2/lib/haml/template.rb +0 -39
  465. data/bundle/ruby/3.0.0/gems/haml-5.2.2/lib/haml/temple_engine.rb +0 -124
  466. data/bundle/ruby/3.0.0/gems/haml-5.2.2/lib/haml.rb +0 -25
  467. data/bundle/ruby/3.0.0/gems/haml-5.2.2/yard/default/fulldoc/html/css/common.sass +0 -15
  468. data/bundle/ruby/3.0.0/gems/haml-5.2.2/yard/default/layout/html/footer.erb +0 -12
  469. data/bundle/ruby/3.0.0/gems/parallel-1.23.0/lib/parallel/version.rb +0 -4
  470. data/bundle/ruby/3.0.0/gems/rexml-3.2.5/NEWS.md +0 -178
  471. data/bundle/ruby/3.0.0/gems/rexml-3.2.5/lib/rexml/parsers/baseparser.rb +0 -694
  472. data/bundle/ruby/3.0.0/gems/rexml-3.2.5/lib/rexml/source.rb +0 -298
  473. data/bundle/ruby/3.0.0/gems/safe_yaml-1.0.5/CHANGES.md +0 -154
  474. data/bundle/ruby/3.0.0/gems/safe_yaml-1.0.5/Gemfile +0 -11
  475. data/bundle/ruby/3.0.0/gems/safe_yaml-1.0.5/README.md +0 -191
  476. data/bundle/ruby/3.0.0/gems/safe_yaml-1.0.5/bundle_install_all_ruby_versions.sh +0 -11
  477. data/bundle/ruby/3.0.0/gems/safe_yaml-1.0.5/lib/safe_yaml/deep.rb +0 -34
  478. data/bundle/ruby/3.0.0/gems/safe_yaml-1.0.5/lib/safe_yaml/libyaml_checker.rb +0 -36
  479. data/bundle/ruby/3.0.0/gems/safe_yaml-1.0.5/lib/safe_yaml/load.rb +0 -181
  480. data/bundle/ruby/3.0.0/gems/safe_yaml-1.0.5/lib/safe_yaml/parse/date.rb +0 -37
  481. data/bundle/ruby/3.0.0/gems/safe_yaml-1.0.5/lib/safe_yaml/parse/hexadecimal.rb +0 -12
  482. data/bundle/ruby/3.0.0/gems/safe_yaml-1.0.5/lib/safe_yaml/parse/sexagesimal.rb +0 -26
  483. data/bundle/ruby/3.0.0/gems/safe_yaml-1.0.5/lib/safe_yaml/psych_handler.rb +0 -99
  484. data/bundle/ruby/3.0.0/gems/safe_yaml-1.0.5/lib/safe_yaml/psych_resolver.rb +0 -52
  485. data/bundle/ruby/3.0.0/gems/safe_yaml-1.0.5/lib/safe_yaml/resolver.rb +0 -94
  486. data/bundle/ruby/3.0.0/gems/safe_yaml-1.0.5/lib/safe_yaml/safe_to_ruby_visitor.rb +0 -29
  487. data/bundle/ruby/3.0.0/gems/safe_yaml-1.0.5/lib/safe_yaml/store.rb +0 -39
  488. data/bundle/ruby/3.0.0/gems/safe_yaml-1.0.5/lib/safe_yaml/syck_hack.rb +0 -36
  489. data/bundle/ruby/3.0.0/gems/safe_yaml-1.0.5/lib/safe_yaml/syck_node_monkeypatch.rb +0 -43
  490. data/bundle/ruby/3.0.0/gems/safe_yaml-1.0.5/lib/safe_yaml/syck_resolver.rb +0 -38
  491. data/bundle/ruby/3.0.0/gems/safe_yaml-1.0.5/lib/safe_yaml/transform/to_boolean.rb +0 -21
  492. data/bundle/ruby/3.0.0/gems/safe_yaml-1.0.5/lib/safe_yaml/transform/to_date.rb +0 -13
  493. data/bundle/ruby/3.0.0/gems/safe_yaml-1.0.5/lib/safe_yaml/transform/to_float.rb +0 -33
  494. data/bundle/ruby/3.0.0/gems/safe_yaml-1.0.5/lib/safe_yaml/transform/to_integer.rb +0 -26
  495. data/bundle/ruby/3.0.0/gems/safe_yaml-1.0.5/lib/safe_yaml/transform/to_nil.rb +0 -18
  496. data/bundle/ruby/3.0.0/gems/safe_yaml-1.0.5/lib/safe_yaml/transform/to_symbol.rb +0 -17
  497. data/bundle/ruby/3.0.0/gems/safe_yaml-1.0.5/lib/safe_yaml/transform/transformation_map.rb +0 -47
  498. data/bundle/ruby/3.0.0/gems/safe_yaml-1.0.5/lib/safe_yaml/transform.rb +0 -41
  499. data/bundle/ruby/3.0.0/gems/safe_yaml-1.0.5/lib/safe_yaml/version.rb +0 -3
  500. data/bundle/ruby/3.0.0/gems/safe_yaml-1.0.5/lib/safe_yaml.rb +0 -94
  501. data/bundle/ruby/3.0.0/gems/safe_yaml-1.0.5/run_specs_all_ruby_versions.sh +0 -38
  502. data/bundle/ruby/3.0.0/gems/safe_yaml-1.0.5/safe_yaml.gemspec +0 -19
  503. data/bundle/ruby/3.0.0/gems/slim-4.1.0/Gemfile +0 -70
  504. data/bundle/ruby/3.0.0/gems/slim-4.1.0/lib/slim/template.rb +0 -19
  505. data/bundle/ruby/3.0.0/gems/temple-0.8.2/Gemfile +0 -3
  506. data/bundle/ruby/3.0.0/gems/temple-0.8.2/lib/temple/version.rb +0 -3
  507. data/bundle/ruby/3.0.0/gems/terminal-table-1.8.0/History.rdoc +0 -85
  508. data/bundle/ruby/3.0.0/gems/terminal-table-1.8.0/README.rdoc +0 -247
  509. data/bundle/ruby/3.0.0/gems/terminal-table-1.8.0/lib/terminal-table/separator.rb +0 -14
  510. data/bundle/ruby/3.0.0/gems/terminal-table-1.8.0/lib/terminal-table/style.rb +0 -79
  511. data/bundle/ruby/3.0.0/gems/tilt-2.0.11/lib/tilt/asciidoc.rb +0 -27
  512. data/bundle/ruby/3.0.0/gems/tilt-2.0.11/lib/tilt/babel.rb +0 -16
  513. data/bundle/ruby/3.0.0/gems/tilt-2.0.11/lib/tilt/bluecloth.rb +0 -24
  514. data/bundle/ruby/3.0.0/gems/tilt-2.0.11/lib/tilt/builder.rb +0 -37
  515. data/bundle/ruby/3.0.0/gems/tilt-2.0.11/lib/tilt/coffee.rb +0 -58
  516. data/bundle/ruby/3.0.0/gems/tilt-2.0.11/lib/tilt/commonmarker.rb +0 -88
  517. data/bundle/ruby/3.0.0/gems/tilt-2.0.11/lib/tilt/creole.rb +0 -25
  518. data/bundle/ruby/3.0.0/gems/tilt-2.0.11/lib/tilt/dummy.rb +0 -3
  519. data/bundle/ruby/3.0.0/gems/tilt-2.0.11/lib/tilt/erubi.rb +0 -32
  520. data/bundle/ruby/3.0.0/gems/tilt-2.0.11/lib/tilt/erubis.rb +0 -43
  521. data/bundle/ruby/3.0.0/gems/tilt-2.0.11/lib/tilt/haml.rb +0 -86
  522. data/bundle/ruby/3.0.0/gems/tilt-2.0.11/lib/tilt/kramdown.rb +0 -25
  523. data/bundle/ruby/3.0.0/gems/tilt-2.0.11/lib/tilt/less.rb +0 -30
  524. data/bundle/ruby/3.0.0/gems/tilt-2.0.11/lib/tilt/livescript.rb +0 -23
  525. data/bundle/ruby/3.0.0/gems/tilt-2.0.11/lib/tilt/maruku.rb +0 -22
  526. data/bundle/ruby/3.0.0/gems/tilt-2.0.11/lib/tilt/pandoc.rb +0 -57
  527. data/bundle/ruby/3.0.0/gems/tilt-2.0.11/lib/tilt/plain.rb +0 -16
  528. data/bundle/ruby/3.0.0/gems/tilt-2.0.11/lib/tilt/prawn.rb +0 -43
  529. data/bundle/ruby/3.0.0/gems/tilt-2.0.11/lib/tilt/radius.rb +0 -48
  530. data/bundle/ruby/3.0.0/gems/tilt-2.0.11/lib/tilt/rdiscount.rb +0 -39
  531. data/bundle/ruby/3.0.0/gems/tilt-2.0.11/lib/tilt/rdoc.rb +0 -40
  532. data/bundle/ruby/3.0.0/gems/tilt-2.0.11/lib/tilt/redcarpet.rb +0 -86
  533. data/bundle/ruby/3.0.0/gems/tilt-2.0.11/lib/tilt/redcloth.rb +0 -23
  534. data/bundle/ruby/3.0.0/gems/tilt-2.0.11/lib/tilt/rst-pandoc.rb +0 -23
  535. data/bundle/ruby/3.0.0/gems/tilt-2.0.11/lib/tilt/sass.rb +0 -78
  536. data/bundle/ruby/3.0.0/gems/tilt-2.0.11/lib/tilt/sigil.rb +0 -34
  537. data/bundle/ruby/3.0.0/gems/tilt-2.0.11/lib/tilt/template.rb +0 -308
  538. data/bundle/ruby/3.0.0/gems/tilt-2.0.11/lib/tilt/typescript.rb +0 -26
  539. data/bundle/ruby/3.0.0/gems/tilt-2.0.11/lib/tilt/wikicloth.rb +0 -22
  540. data/bundle/ruby/3.0.0/gems/unicode-display_width-1.8.0/CHANGELOG.md +0 -137
  541. data/bundle/ruby/3.0.0/gems/unicode-display_width-1.8.0/README.md +0 -124
  542. data/bundle/ruby/3.0.0/gems/unicode-display_width-1.8.0/data/display_width.marshal.gz +0 -0
  543. data/bundle/ruby/3.0.0/gems/unicode-display_width-1.8.0/lib/unicode/display_width/constants.rb +0 -8
  544. data/bundle/ruby/3.0.0/gems/unicode-display_width-1.8.0/lib/unicode/display_width/no_string_ext.rb +0 -7
  545. data/bundle/ruby/3.0.0/gems/unicode-display_width-1.8.0/lib/unicode/display_width/string_ext.rb +0 -17
  546. data/bundle/ruby/3.0.0/gems/unicode-display_width-1.8.0/lib/unicode/display_width.rb +0 -51
  547. /data/bundle/ruby/{3.0.0 → 3.2.0}/gems/erubis-2.7.0/CHANGES.txt +0 -0
  548. /data/bundle/ruby/{3.0.0 → 3.2.0}/gems/erubis-2.7.0/MIT-LICENSE +0 -0
  549. /data/bundle/ruby/{3.0.0 → 3.2.0}/gems/erubis-2.7.0/README.txt +0 -0
  550. /data/bundle/ruby/{3.0.0 → 3.2.0}/gems/erubis-2.7.0/contrib/erubis +0 -0
  551. /data/bundle/ruby/{3.0.0 → 3.2.0}/gems/erubis-2.7.0/contrib/erubis-run.rb +0 -0
  552. /data/bundle/ruby/{3.0.0 → 3.2.0}/gems/erubis-2.7.0/contrib/inline-require +0 -0
  553. /data/bundle/ruby/{3.0.0 → 3.2.0}/gems/erubis-2.7.0/lib/erubis/context.rb +0 -0
  554. /data/bundle/ruby/{3.0.0 → 3.2.0}/gems/erubis-2.7.0/lib/erubis/converter.rb +0 -0
  555. /data/bundle/ruby/{3.0.0 → 3.2.0}/gems/erubis-2.7.0/lib/erubis/engine/ec.rb +0 -0
  556. /data/bundle/ruby/{3.0.0 → 3.2.0}/gems/erubis-2.7.0/lib/erubis/engine/ecpp.rb +0 -0
  557. /data/bundle/ruby/{3.0.0 → 3.2.0}/gems/erubis-2.7.0/lib/erubis/engine/ejava.rb +0 -0
  558. /data/bundle/ruby/{3.0.0 → 3.2.0}/gems/erubis-2.7.0/lib/erubis/engine/ejavascript.rb +0 -0
  559. /data/bundle/ruby/{3.0.0 → 3.2.0}/gems/erubis-2.7.0/lib/erubis/engine/enhanced.rb +0 -0
  560. /data/bundle/ruby/{3.0.0 → 3.2.0}/gems/erubis-2.7.0/lib/erubis/engine/eperl.rb +0 -0
  561. /data/bundle/ruby/{3.0.0 → 3.2.0}/gems/erubis-2.7.0/lib/erubis/engine/ephp.rb +0 -0
  562. /data/bundle/ruby/{3.0.0 → 3.2.0}/gems/erubis-2.7.0/lib/erubis/engine/eruby.rb +0 -0
  563. /data/bundle/ruby/{3.0.0 → 3.2.0}/gems/erubis-2.7.0/lib/erubis/engine/escheme.rb +0 -0
  564. /data/bundle/ruby/{3.0.0 → 3.2.0}/gems/erubis-2.7.0/lib/erubis/engine/optimized.rb +0 -0
  565. /data/bundle/ruby/{3.0.0 → 3.2.0}/gems/erubis-2.7.0/lib/erubis/engine.rb +0 -0
  566. /data/bundle/ruby/{3.0.0 → 3.2.0}/gems/erubis-2.7.0/lib/erubis/enhancer.rb +0 -0
  567. /data/bundle/ruby/{3.0.0 → 3.2.0}/gems/erubis-2.7.0/lib/erubis/error.rb +0 -0
  568. /data/bundle/ruby/{3.0.0 → 3.2.0}/gems/erubis-2.7.0/lib/erubis/evaluator.rb +0 -0
  569. /data/bundle/ruby/{3.0.0 → 3.2.0}/gems/erubis-2.7.0/lib/erubis/generator.rb +0 -0
  570. /data/bundle/ruby/{3.0.0 → 3.2.0}/gems/erubis-2.7.0/lib/erubis/helper.rb +0 -0
  571. /data/bundle/ruby/{3.0.0 → 3.2.0}/gems/erubis-2.7.0/lib/erubis/helpers/rails_form_helper.rb +0 -0
  572. /data/bundle/ruby/{3.0.0 → 3.2.0}/gems/erubis-2.7.0/lib/erubis/helpers/rails_helper.rb +0 -0
  573. /data/bundle/ruby/{3.0.0 → 3.2.0}/gems/erubis-2.7.0/lib/erubis/local-setting.rb +0 -0
  574. /data/bundle/ruby/{3.0.0 → 3.2.0}/gems/erubis-2.7.0/lib/erubis/main.rb +0 -0
  575. /data/bundle/ruby/{3.0.0 → 3.2.0}/gems/erubis-2.7.0/lib/erubis/preprocessing.rb +0 -0
  576. /data/bundle/ruby/{3.0.0 → 3.2.0}/gems/erubis-2.7.0/lib/erubis/tiny.rb +0 -0
  577. /data/bundle/ruby/{3.0.0 → 3.2.0}/gems/erubis-2.7.0/lib/erubis/util.rb +0 -0
  578. /data/bundle/ruby/{3.0.0 → 3.2.0}/gems/erubis-2.7.0/lib/erubis.rb +0 -0
  579. /data/bundle/ruby/{3.0.0 → 3.2.0}/gems/erubis-2.7.0/setup.rb +0 -0
  580. /data/bundle/ruby/{3.0.0/gems/highline-2.1.0 → 3.2.0/gems/highline-3.1.2}/AUTHORS +0 -0
  581. /data/bundle/ruby/{3.0.0/gems/highline-2.1.0 → 3.2.0/gems/highline-3.1.2}/COPYING +0 -0
  582. /data/bundle/ruby/{3.0.0/gems/highline-2.1.0 → 3.2.0/gems/highline-3.1.2}/LICENSE +0 -0
  583. /data/bundle/ruby/{3.0.0/gems/highline-2.1.0 → 3.2.0/gems/highline-3.1.2}/TODO +0 -0
  584. /data/bundle/ruby/{3.0.0/gems/highline-2.1.0 → 3.2.0/gems/highline-3.1.2}/lib/highline/builtin_styles.rb +0 -0
  585. /data/bundle/ruby/{3.0.0/gems/highline-2.1.0 → 3.2.0/gems/highline-3.1.2}/lib/highline/color_scheme.rb +0 -0
  586. /data/bundle/ruby/{3.0.0/gems/highline-2.1.0 → 3.2.0/gems/highline-3.1.2}/lib/highline/compatibility.rb +0 -0
  587. /data/bundle/ruby/{3.0.0/gems/highline-2.1.0 → 3.2.0/gems/highline-3.1.2}/lib/highline/custom_errors.rb +0 -0
  588. /data/bundle/ruby/{3.0.0/gems/highline-2.1.0 → 3.2.0/gems/highline-3.1.2}/lib/highline/import.rb +0 -0
  589. /data/bundle/ruby/{3.0.0/gems/highline-2.1.0 → 3.2.0/gems/highline-3.1.2}/lib/highline/list.rb +0 -0
  590. /data/bundle/ruby/{3.0.0/gems/highline-2.1.0 → 3.2.0/gems/highline-3.1.2}/lib/highline/menu/item.rb +0 -0
  591. /data/bundle/ruby/{3.0.0/gems/highline-2.1.0 → 3.2.0/gems/highline-3.1.2}/lib/highline/paginator.rb +0 -0
  592. /data/bundle/ruby/{3.0.0/gems/highline-2.1.0 → 3.2.0/gems/highline-3.1.2}/lib/highline/simulate.rb +0 -0
  593. /data/bundle/ruby/{3.0.0/gems/highline-2.1.0 → 3.2.0/gems/highline-3.1.2}/lib/highline/statement.rb +0 -0
  594. /data/bundle/ruby/{3.0.0/gems/highline-2.1.0 → 3.2.0/gems/highline-3.1.2}/lib/highline/string.rb +0 -0
  595. /data/bundle/ruby/{3.0.0/gems/highline-2.1.0 → 3.2.0/gems/highline-3.1.2}/lib/highline/string_extensions.rb +0 -0
  596. /data/bundle/ruby/{3.0.0/gems/highline-2.1.0 → 3.2.0/gems/highline-3.1.2}/lib/highline/style.rb +0 -0
  597. /data/bundle/ruby/{3.0.0/gems/highline-2.1.0 → 3.2.0/gems/highline-3.1.2}/lib/highline/template_renderer.rb +0 -0
  598. /data/bundle/ruby/{3.0.0/gems/highline-2.1.0 → 3.2.0/gems/highline-3.1.2}/lib/highline/terminal/ncurses.rb +0 -0
  599. /data/bundle/ruby/{3.0.0/gems/highline-2.1.0 → 3.2.0/gems/highline-3.1.2}/lib/highline/wrapper.rb +0 -0
  600. /data/bundle/ruby/{3.0.0/gems/parallel-1.23.0 → 3.2.0/gems/parallel-1.27.0}/MIT-LICENSE.txt +0 -0
  601. /data/bundle/ruby/{3.0.0/gems/rexml-3.2.5/LICENSE.txt → 3.2.0/gems/reline-0.6.1/BSDL} +0 -0
  602. /data/bundle/ruby/{3.0.0/gems/rexml-3.2.5 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/attlistdecl.rb +0 -0
  603. /data/bundle/ruby/{3.0.0/gems/rexml-3.2.5 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/cdata.rb +0 -0
  604. /data/bundle/ruby/{3.0.0/gems/rexml-3.2.5 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/child.rb +0 -0
  605. /data/bundle/ruby/{3.0.0/gems/rexml-3.2.5 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/comment.rb +0 -0
  606. /data/bundle/ruby/{3.0.0/gems/rexml-3.2.5 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/doctype.rb +0 -0
  607. /data/bundle/ruby/{3.0.0/gems/rexml-3.2.5 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/dtd/attlistdecl.rb +0 -0
  608. /data/bundle/ruby/{3.0.0/gems/rexml-3.2.5 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/dtd/dtd.rb +0 -0
  609. /data/bundle/ruby/{3.0.0/gems/rexml-3.2.5 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/dtd/elementdecl.rb +0 -0
  610. /data/bundle/ruby/{3.0.0/gems/rexml-3.2.5 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/dtd/entitydecl.rb +0 -0
  611. /data/bundle/ruby/{3.0.0/gems/rexml-3.2.5 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/dtd/notationdecl.rb +0 -0
  612. /data/bundle/ruby/{3.0.0/gems/rexml-3.2.5 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/encoding.rb +0 -0
  613. /data/bundle/ruby/{3.0.0/gems/rexml-3.2.5 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/formatters/default.rb +0 -0
  614. /data/bundle/ruby/{3.0.0/gems/rexml-3.2.5 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/formatters/transitive.rb +0 -0
  615. /data/bundle/ruby/{3.0.0/gems/rexml-3.2.5 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/instruction.rb +0 -0
  616. /data/bundle/ruby/{3.0.0/gems/rexml-3.2.5 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/light/node.rb +0 -0
  617. /data/bundle/ruby/{3.0.0/gems/rexml-3.2.5 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/output.rb +0 -0
  618. /data/bundle/ruby/{3.0.0/gems/rexml-3.2.5 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/parent.rb +0 -0
  619. /data/bundle/ruby/{3.0.0/gems/rexml-3.2.5 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/parsers/lightparser.rb +0 -0
  620. /data/bundle/ruby/{3.0.0/gems/rexml-3.2.5 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/parsers/ultralightparser.rb +0 -0
  621. /data/bundle/ruby/{3.0.0/gems/rexml-3.2.5 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/quickpath.rb +0 -0
  622. /data/bundle/ruby/{3.0.0/gems/rexml-3.2.5 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/sax2listener.rb +0 -0
  623. /data/bundle/ruby/{3.0.0/gems/rexml-3.2.5 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/security.rb +0 -0
  624. /data/bundle/ruby/{3.0.0/gems/rexml-3.2.5 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/streamlistener.rb +0 -0
  625. /data/bundle/ruby/{3.0.0/gems/rexml-3.2.5 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/undefinednamespaceexception.rb +0 -0
  626. /data/bundle/ruby/{3.0.0/gems/rexml-3.2.5 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/validation/relaxng.rb +0 -0
  627. /data/bundle/ruby/{3.0.0/gems/rexml-3.2.5 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/validation/validation.rb +0 -0
  628. /data/bundle/ruby/{3.0.0/gems/rexml-3.2.5 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/validation/validationexception.rb +0 -0
  629. /data/bundle/ruby/{3.0.0/gems/rexml-3.2.5 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/xmldecl.rb +0 -0
  630. /data/bundle/ruby/{3.0.0/gems/rexml-3.2.5 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/xmltokens.rb +0 -0
  631. /data/bundle/ruby/{3.0.0/gems/rexml-3.2.5 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/xpath.rb +0 -0
  632. /data/bundle/ruby/{3.0.0/gems/rexml-3.2.5 → 3.2.0/gems/rexml-3.4.1}/lib/rexml.rb +0 -0
  633. /data/bundle/ruby/{3.0.0/gems/ruby2ruby-2.4.4 → 3.2.0/gems/ruby2ruby-2.5.2}/Manifest.txt +0 -0
  634. /data/bundle/ruby/{3.0.0/gems/ruby2ruby-2.4.4 → 3.2.0/gems/ruby2ruby-2.5.2}/README.rdoc +0 -0
  635. /data/bundle/ruby/{3.0.0/gems/ruby_parser-3.20.1 → 3.2.0/gems/ruby_parser-3.20.3}/Manifest.txt +0 -0
  636. /data/bundle/ruby/{3.0.0/gems/ruby_parser-3.20.1 → 3.2.0/gems/ruby_parser-3.20.3}/README.rdoc +0 -0
  637. /data/bundle/ruby/{3.0.0/gems/ruby_parser-3.20.1 → 3.2.0/gems/ruby_parser-3.20.3}/debugging.md +0 -0
  638. /data/bundle/ruby/{3.0.0/gems/ruby_parser-3.20.1 → 3.2.0/gems/ruby_parser-3.20.3}/gauntlet.md +0 -0
  639. /data/bundle/ruby/{3.0.0/gems/ruby_parser-3.20.1 → 3.2.0/gems/ruby_parser-3.20.3}/lib/rp_extensions.rb +0 -0
  640. /data/bundle/ruby/{3.0.0/gems/ruby_parser-3.20.1 → 3.2.0/gems/ruby_parser-3.20.3}/lib/rp_stringscanner.rb +0 -0
  641. /data/bundle/ruby/{3.0.0/gems/ruby_parser-3.20.1 → 3.2.0/gems/ruby_parser-3.20.3}/lib/ruby_lexer.rex +0 -0
  642. /data/bundle/ruby/{3.0.0/gems/ruby_parser-3.20.1 → 3.2.0/gems/ruby_parser-3.20.3}/lib/ruby_parser.rb +0 -0
  643. /data/bundle/ruby/{3.0.0/gems/sexp_processor-4.17.0 → 3.2.0/gems/sexp_processor-4.17.3}/Manifest.txt +0 -0
  644. /data/bundle/ruby/{3.0.0/gems/sexp_processor-4.17.0 → 3.2.0/gems/sexp_processor-4.17.3}/README.rdoc +0 -0
  645. /data/bundle/ruby/{3.0.0/gems/sexp_processor-4.17.0 → 3.2.0/gems/sexp_processor-4.17.3}/lib/composite_sexp_processor.rb +0 -0
  646. /data/bundle/ruby/{3.0.0/gems/sexp_processor-4.17.0 → 3.2.0/gems/sexp_processor-4.17.3}/lib/strict_sexp.rb +0 -0
  647. /data/bundle/ruby/{3.0.0/gems/sexp_processor-4.17.0 → 3.2.0/gems/sexp_processor-4.17.3}/lib/unique.rb +0 -0
  648. /data/bundle/ruby/{3.0.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/EXPRESSIONS.md +0 -0
  649. /data/bundle/ruby/{3.0.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/LICENSE +0 -0
  650. /data/bundle/ruby/{3.0.0/gems/terminal-table-1.8.0 → 3.2.0/gems/terminal-table-4.0.0}/Gemfile +0 -0
  651. /data/bundle/ruby/{3.0.0/gems/terminal-table-1.8.0 → 3.2.0/gems/terminal-table-4.0.0}/LICENSE.txt +0 -0
  652. /data/bundle/ruby/{3.0.0/gems/terminal-table-1.8.0 → 3.2.0/gems/terminal-table-4.0.0}/Manifest +0 -0
  653. /data/bundle/ruby/{3.0.0/gems/terminal-table-1.8.0 → 3.2.0/gems/terminal-table-4.0.0}/Todo.rdoc +0 -0
  654. /data/bundle/ruby/{3.0.0/gems/terminal-table-1.8.0 → 3.2.0/gems/terminal-table-4.0.0}/lib/terminal-table/import.rb +0 -0
  655. /data/bundle/ruby/{3.0.0/gems/terminal-table-1.8.0 → 3.2.0/gems/terminal-table-4.0.0}/lib/terminal-table/table_helper.rb +0 -0
@@ -7,7 +7,19 @@ module Brakeman
7
7
  class FileParser
8
8
  attr_reader :file_list, :errors
9
9
 
10
- def initialize app_tree, timeout, parallel = true
10
+ def initialize app_tree, timeout, parallel = true, use_prism = false
11
+ @use_prism = use_prism
12
+
13
+ if @use_prism
14
+ begin
15
+ require 'prism'
16
+ Brakeman.debug '[Notice] Using Prism parser'
17
+ rescue LoadError => e
18
+ Brakeman.debug "[Notice] Asked to use Prism, but failed to load: #{e}"
19
+ @use_prism = false
20
+ end
21
+ end
22
+
11
23
  @app_tree = app_tree
12
24
  @timeout = timeout
13
25
  @file_list = []
@@ -73,8 +85,29 @@ module Brakeman
73
85
  path = path.relative
74
86
  end
75
87
 
88
+ Brakeman.debug "Parsing #{path}"
89
+
90
+ if @use_prism
91
+ begin
92
+ parse_with_prism input, path
93
+ rescue => e
94
+ Brakeman.debug "Prism failed to parse #{path}: #{e}"
95
+
96
+ parse_with_ruby_parser input, path
97
+ end
98
+ else
99
+ parse_with_ruby_parser input, path
100
+ end
101
+ end
102
+
103
+ private
104
+
105
+ def parse_with_prism input, path
106
+ Prism::Translation::RubyParser.parse(input, path)
107
+ end
108
+
109
+ def parse_with_ruby_parser input, path
76
110
  begin
77
- Brakeman.debug "Parsing #{path}"
78
111
  RubyParser.new.parse input, path, @timeout
79
112
  rescue Racc::ParseError => e
80
113
  raise e.exception(e.message + "\nCould not parse #{path}")
@@ -86,7 +86,7 @@ class Brakeman::Messages::Message
86
86
  end
87
87
 
88
88
  def to_html
89
- require 'cgi'
89
+ require 'cgi/escape'
90
90
 
91
91
  output = @parts.map(&:to_html).join
92
92
 
@@ -71,6 +71,10 @@ module Brakeman::Options
71
71
  options[:ensure_ignore_notes] = true
72
72
  end
73
73
 
74
+ opts.on "--ensure-no-obsolete-ignore-entries", "Fail when an obsolete ignore entry is found" do
75
+ options[:ensure_no_obsolete_ignore_entries] = true
76
+ end
77
+
74
78
  opts.on "-3", "--rails3", "Force Rails 3 mode" do
75
79
  options[:rails3] = true
76
80
  end
@@ -101,6 +105,15 @@ module Brakeman::Options
101
105
  options[:rails7] = true
102
106
  end
103
107
 
108
+ opts.on "-8", "--rails8", "Force Rails 8 mode" do
109
+ options[:rails3] = true
110
+ options[:rails4] = true
111
+ options[:rails5] = true
112
+ options[:rails6] = true
113
+ options[:rails7] = true
114
+ options[:rails8] = true
115
+ end
116
+
104
117
  opts.separator ""
105
118
  opts.separator "Scanning options:"
106
119
 
@@ -150,6 +163,22 @@ module Brakeman::Options
150
163
  options[:parser_timeout] = timeout
151
164
  end
152
165
 
166
+ opts.on "--[no-]prism", "Use the Prism parser" do |use_prism|
167
+ if use_prism
168
+ min_prism_version = '1.0.0'
169
+
170
+ begin
171
+ gem 'prism', ">=#{min_prism_version}"
172
+ require 'prism'
173
+ rescue Gem::MissingSpecVersionError, Gem::MissingSpecError, Gem::LoadError => e
174
+ $stderr.puts "Please install `prism` version #{min_prism_version} or newer:"
175
+ raise e
176
+ end
177
+ end
178
+
179
+ options[:use_prism] = use_prism
180
+ end
181
+
153
182
  opts.on "-r", "--report-direct", "Only report direct use of untrusted data" do |option|
154
183
  options[:check_arguments] = !option
155
184
  end
@@ -197,12 +226,20 @@ module Brakeman::Options
197
226
  options[:engine_paths].merge paths
198
227
  end
199
228
 
229
+ opts.on '--[no-]follow-symlinks', 'Follow symbolic links for directions' do |follow_symlinks|
230
+ options[:follow_symlinks] = follow_symlinks
231
+ end
232
+
233
+ opts.on '--gemfile GEMFILE', 'Specify Gemfile to scan' do |gemfile|
234
+ options[:gemfile] = gemfile
235
+ end
236
+
200
237
  opts.on "-E", "--enable Check1,Check2,etc", Array, "Enable the specified checks" do |checks|
201
238
  checks.map! do |check|
202
239
  if check.start_with? "Check"
203
240
  check
204
241
  else
205
- "Check" << check
242
+ "Check#{check}"
206
243
  end
207
244
  end
208
245
 
@@ -213,7 +250,7 @@ module Brakeman::Options
213
250
  opts.on "-t", "--test Check1,Check2,etc", Array, "Only run the specified checks" do |checks|
214
251
  checks.each_with_index do |s, index|
215
252
  if s[0,5] != "Check"
216
- checks[index] = "Check" << s
253
+ checks[index] = "Check#{s}"
217
254
  end
218
255
  end
219
256
 
@@ -224,7 +261,7 @@ module Brakeman::Options
224
261
  opts.on "-x", "--except Check1,Check2,etc", Array, "Skip the specified checks" do |skip|
225
262
  skip.each do |s|
226
263
  if s[0,5] != "Check"
227
- s = "Check" << s
264
+ s = "Check#{s}"
228
265
  end
229
266
 
230
267
  options[:skip_checks] ||= Set.new
@@ -244,13 +281,17 @@ module Brakeman::Options
244
281
  options[:debug] = true
245
282
  end
246
283
 
284
+ opts.on "--timing", "Measure time for scan steps" do
285
+ options[:show_timing] = true
286
+ end
287
+
247
288
  opts.on "-f",
248
289
  "--format TYPE",
249
290
  [:pdf, :text, :html, :csv, :tabs, :json, :markdown, :codeclimate, :cc, :plain, :table, :junit, :sarif, :sonar, :github],
250
291
  "Specify output formats. Default is text" do |type|
251
292
 
252
293
  type = "s" if type == :text
253
- options[:output_format] = ("to_" << type.to_s).to_sym
294
+ options[:output_format] = :"to_#{type}"
254
295
  end
255
296
 
256
297
  opts.on "--css-file CSSFile", "Specify CSS to use for HTML output" do |file|
@@ -265,6 +306,10 @@ module Brakeman::Options
265
306
  options[:interactive_ignore] = true
266
307
  end
267
308
 
309
+ opts.on "--show-ignored", "Show files that are usually ignored by the ignore configuration file" do
310
+ options[:show_ignored] = true
311
+ end
312
+
268
313
  opts.on "-l", "--[no-]combine-locations", "Combine warning locations (Default)" do |combine|
269
314
  options[:combine_locations] = combine
270
315
  end
@@ -0,0 +1,11 @@
1
+ module Brakeman::ErubisPatch
2
+ # Simple patch to make `erubis` compatible with frozen string literals
3
+ def convert(input)
4
+ codebuf = +"" # Modified line, the rest is identitical
5
+ @preamble.nil? ? add_preamble(codebuf) : (@preamble && (codebuf << @preamble))
6
+ convert_input(codebuf, input)
7
+ @postamble.nil? ? add_postamble(codebuf) : (@postamble && (codebuf << @postamble))
8
+ @_proc = nil # clear cached proc object
9
+ return codebuf # or codebuf.join()
10
+ end
11
+ end
@@ -0,0 +1,23 @@
1
+ [:Coffee, :CoffeeScript, :Markdown, :Sass].each do |name|
2
+ klass = Module.const_get("Haml::Filters::#{name}")
3
+
4
+ klass.define_method(:compile) do |node|
5
+ temple = [:multi]
6
+ temple << [:static, "<script>\n"]
7
+ temple << compile_with_tilt(node)
8
+ temple << [:static, "</script>"]
9
+ temple
10
+ end
11
+
12
+ klass.define_method(:compile_with_tilt) do |node|
13
+ # From Haml
14
+ text = ::Haml::Util.unescape_interpolation(node.value[:text]).gsub(/(\\+)n/) do |s|
15
+ escapes = $1.size
16
+ next s if escapes % 2 == 0
17
+ "#{'\\' * (escapes - 1)}\n"
18
+ end
19
+ text.prepend("\n").sub!(/\n"\z/, '"')
20
+
21
+ [:dynamic, "BrakemanFilter.render(#{text})"]
22
+ end
23
+ end
@@ -1,6 +1,9 @@
1
1
  Brakeman.load_brakeman_dependency 'erubis'
2
2
 
3
+ require 'brakeman/parsers/erubis_patch'
4
+
3
5
  #Erubis processor which ignores any output which is plain text.
4
6
  class Brakeman::ScannerErubis < Erubis::Eruby
5
7
  include Erubis::NoTextEnhancer
8
+ include Brakeman::ErubisPatch
6
9
  end
@@ -1,7 +1,11 @@
1
1
  Brakeman.load_brakeman_dependency 'erubis'
2
2
 
3
+ require 'brakeman/parsers/erubis_patch'
4
+
3
5
  #This is from the rails_xss plugin for Rails 2
4
6
  class Brakeman::Rails2XSSPluginErubis < ::Erubis::Eruby
7
+ include Brakeman::ErubisPatch
8
+
5
9
  def add_preamble(src)
6
10
  #src << "@output_buffer = ActiveSupport::SafeBuffer.new;"
7
11
  end
@@ -1,11 +1,15 @@
1
1
  Brakeman.load_brakeman_dependency 'erubis'
2
2
 
3
+ require 'brakeman/parsers/erubis_patch'
4
+
3
5
  # This is from Rails 5 version of the Erubis handler
4
6
  # https://github.com/rails/rails/blob/ec608107801b1e505db03ba76bae4a326a5804ca/actionview/lib/action_view/template/handlers/erb.rb#L7-L73
5
7
  class Brakeman::Rails3Erubis < ::Erubis::Eruby
8
+ include Brakeman::ErubisPatch
6
9
 
7
10
  def add_preamble(src)
8
11
  @newline_pending = 0
12
+ src << "_this_is_to_make_yields_syntactally_correct {"
9
13
  src << "@output_buffer = output_buffer || ActionView::OutputBuffer.new;"
10
14
  end
11
15
 
@@ -62,7 +66,7 @@ class Brakeman::Rails3Erubis < ::Erubis::Eruby
62
66
 
63
67
  def add_postamble(src)
64
68
  flush_newline_if_pending(src)
65
- src << '@output_buffer.to_s'
69
+ src << '@output_buffer.to_s; }'
66
70
  end
67
71
 
68
72
  def flush_newline_if_pending(src)
@@ -2,6 +2,7 @@
2
2
  module Slim
3
3
  class Embedded
4
4
  class TiltEngine
5
+ alias_method :on_slim_embedded, :on_slim_embedded # silence redefined method warning
5
6
  def on_slim_embedded(engine, body, attrs)
6
7
  # Override this method to avoid Slim trying to load sass/scss and failing
7
8
  case engine
@@ -22,6 +23,7 @@ module Slim
22
23
  class SassEngine
23
24
  protected
24
25
 
26
+ alias_method :tilt_render, :tilt_render # silence redefined method warning
25
27
  def tilt_render(tilt_engine, tilt_options, text)
26
28
  [:dynamic,
27
29
  "BrakemanFilter.render(#{text.inspect}, #{self.class})"]
@@ -24,6 +24,7 @@ module Brakeman
24
24
  type = :erubis if erubis?
25
25
  parse_erb path, text
26
26
  when :haml
27
+ type = :haml6 if haml6?
27
28
  parse_haml path, text
28
29
  when :slim
29
30
  parse_slim path, text
@@ -74,19 +75,43 @@ module Brakeman
74
75
  end
75
76
 
76
77
  def parse_haml path, text
77
- Brakeman.load_brakeman_dependency 'haml'
78
- require_relative 'haml_embedded'
78
+ if haml6?
79
+ require_relative 'haml6_embedded'
80
+
81
+ Haml::Template.new(filename: path.relative,
82
+ :escape_html => tracker.config.escape_html?,
83
+ generator: Temple::Generators::RailsOutputBuffer,
84
+ use_html_safe: true,
85
+ buffer_class: 'ActionView::OutputBuffer',
86
+ disable_capture: true,
87
+ ) { text }.precompiled_template
88
+ else
89
+ require_relative 'haml_embedded'
79
90
 
80
- Haml::Engine.new(text,
81
- :filename => path,
82
- :escape_html => tracker.config.escape_html?,
83
- :escape_filter_interpolations => tracker.config.escape_filter_interpolations?
84
- ).precompiled.gsub(/([^\\])\\n/, '\1')
91
+ Haml::Engine.new(text,
92
+ :filename => path,
93
+ :escape_html => tracker.config.escape_html?,
94
+ :escape_filter_interpolations => tracker.config.escape_filter_interpolations?
95
+ ).precompiled.gsub(/([^\\])\\n/, '\1')
96
+ end
85
97
  rescue Haml::Error => e
86
98
  tracker.error e, ["While compiling HAML in #{path}"] << e.backtrace
87
99
  nil
88
100
  end
89
101
 
102
+ def haml6?
103
+ return @haml6 unless @haml6.nil?
104
+
105
+ Brakeman.load_brakeman_dependency 'haml'
106
+ major_version = Haml::VERSION.split('.').first.to_i
107
+
108
+ if major_version >= 6
109
+ @haml6 = true
110
+ else
111
+ @haml6 = false
112
+ end
113
+ end
114
+
90
115
  def parse_slim path, text
91
116
  Brakeman.load_brakeman_dependency 'slim'
92
117
 
@@ -63,6 +63,8 @@ module Brakeman
63
63
  result = ErbTemplateProcessor.new(@tracker, name, called_from, file_name).process src
64
64
  when :haml
65
65
  result = HamlTemplateProcessor.new(@tracker, name, called_from, file_name).process src
66
+ when :haml6
67
+ result = Haml6TemplateProcessor.new(@tracker, name, called_from, file_name).process src
66
68
  when :erubis
67
69
  result = ErubisTemplateProcessor.new(@tracker, name, called_from, file_name).process src
68
70
  when :slim
@@ -32,6 +32,7 @@ class Brakeman::AliasProcessor < Brakeman::SexpProcessor
32
32
  @or_depth_limit = (tracker && tracker.options[:branch_limit]) || 5 #arbitrary default
33
33
  @meth_env = nil
34
34
  @current_file = current_file
35
+ @mass_limit = (tracker && tracker.options[:mass_limit]) || 1000 # arbitrary default
35
36
  set_env_defaults
36
37
  end
37
38
 
@@ -82,8 +83,12 @@ class Brakeman::AliasProcessor < Brakeman::SexpProcessor
82
83
  def replace exp, int = 0
83
84
  return exp if int > 3
84
85
 
85
- if replacement = env[exp] and not duplicate? replacement
86
- replace(replacement.deep_clone(exp.line), int + 1)
86
+ if replacement = env[exp]
87
+ if not duplicate? replacement and replacement.mass < @mass_limit
88
+ replace(replacement.deep_clone(exp.line), int + 1)
89
+ else
90
+ exp
91
+ end
87
92
  elsif tracker and replacement = tracker.constant_lookup(exp) and not duplicate? replacement
88
93
  replace(replacement.deep_clone(exp.line), int + 1)
89
94
  else
@@ -92,6 +97,7 @@ class Brakeman::AliasProcessor < Brakeman::SexpProcessor
92
97
  end
93
98
 
94
99
  def process_bracket_call exp
100
+ # TODO: What is even happening in this method?
95
101
  r = replace(exp)
96
102
 
97
103
  if r != exp
@@ -122,7 +128,7 @@ class Brakeman::AliasProcessor < Brakeman::SexpProcessor
122
128
  return r
123
129
  end
124
130
  else
125
- t = nil
131
+ t = exp.target # put it back?
126
132
  end
127
133
 
128
134
  if hash? t
@@ -237,6 +243,7 @@ class Brakeman::AliasProcessor < Brakeman::SexpProcessor
237
243
  exp = math_op(method, target, first_arg, exp)
238
244
  end
239
245
  when :[]
246
+ # TODO: This might never be used because of process_bracket_call above
240
247
  if array? target
241
248
  exp = process_array_access(target, exp.args, exp)
242
249
  elsif hash? target
@@ -263,7 +270,7 @@ class Brakeman::AliasProcessor < Brakeman::SexpProcessor
263
270
  end
264
271
  when :<<
265
272
  if string? target and string? first_arg
266
- target.value << first_arg.value
273
+ target.value += first_arg.value
267
274
  env[target_var] = target
268
275
  return target
269
276
  elsif string? target and string_interp? first_arg
@@ -271,8 +278,9 @@ class Brakeman::AliasProcessor < Brakeman::SexpProcessor
271
278
  env[target_var] = exp
272
279
  elsif string? first_arg and string_interp? target
273
280
  if string? target.last
274
- target.last.value << first_arg.value
281
+ target.last.value += first_arg.value
275
282
  elsif target.last.is_a? String
283
+ # TODO Use target.last += ?
276
284
  target.last << first_arg.value
277
285
  else
278
286
  target << first_arg
@@ -368,7 +376,7 @@ class Brakeman::AliasProcessor < Brakeman::SexpProcessor
368
376
  result << join_item(array.last, nil)
369
377
 
370
378
  # Combine the strings at the beginning because that's what RubyParser does
371
- combined_first = ""
379
+ combined_first = +""
372
380
  result.each do |e|
373
381
  if string? e
374
382
  combined_first << e.value
@@ -529,8 +537,7 @@ class Brakeman::AliasProcessor < Brakeman::SexpProcessor
529
537
 
530
538
  #Process a method definition on self.
531
539
  def process_defs exp
532
- env.scope do
533
- set_env_defaults
540
+ meth_env do
534
541
  exp.body = process_all! exp.body
535
542
  end
536
543
  exp
@@ -661,8 +668,10 @@ class Brakeman::AliasProcessor < Brakeman::SexpProcessor
661
668
  exp[2] = exp[2][1]
662
669
  end
663
670
 
664
- unless array? exp[1] and array? exp[2] and exp[1].length == exp[2].length
665
- return process_default(exp)
671
+ unless array? exp[1] and array? exp[2]
672
+ # Already processed RHS, don't do it again
673
+ # https://github.com/presidentbeef/brakeman/issues/1877
674
+ return exp
666
675
  end
667
676
 
668
677
  vars = exp[1].dup
@@ -674,21 +683,42 @@ class Brakeman::AliasProcessor < Brakeman::SexpProcessor
674
683
  # Call each assignment as if it is normal
675
684
  vars.each_with_index do |var, i|
676
685
  val = vals[i]
677
- if val
686
+ next unless val # TODO: Break if there are no vals left?
678
687
 
679
- # This happens with nested destructuring like
680
- # x, (a, b) = blah
681
- if node_type? var, :masgn
682
- # Need to add value to masgn exp
683
- m = var.dup
684
- m[2] = s(:to_ary, val)
688
+ # This happens with nested destructuring like
689
+ # x, (a, b) = blah
690
+ if node_type? var, :masgn
691
+ # Need to add value to masgn exp
692
+ m = var.dup
693
+ m[2] = s(:to_ary, val)
685
694
 
686
- process_masgn m
695
+ process_masgn m
696
+ elsif node_type? var, :splat
697
+ # Assign the rest of the values to the variable:
698
+ #
699
+ # a, *b = 1, 2, 3
700
+ #
701
+ # b == [2, 3]
702
+
703
+
704
+ assign = var[1].dup # var is s(:splat, s(:lasgn, :b))
705
+
706
+ if i == vars.length - 1 # Last variable being assigned, slurp up the rest
707
+ assign.rhs = s(:array, *vals[i..]) # val is the "rest" of the values
687
708
  else
688
- assign = var.dup
689
- assign.rhs = val
690
- process assign
709
+ # Calculate how many values to assign based on how many variables
710
+ # there are.
711
+ #
712
+ # If there are more values than variables, the splat gets an empty array.
713
+
714
+ assign.rhs = s(:array, *vals[i, (vals.length - vars.length + 1)]).line(vals.line)
691
715
  end
716
+
717
+ process assign
718
+ else
719
+ assign = var.dup
720
+ assign.rhs = val
721
+ process assign
692
722
  end
693
723
  end
694
724
 
@@ -205,6 +205,7 @@ class Brakeman::BaseProcessor < Brakeman::SexpProcessor
205
205
  rest = process rest
206
206
  result = Sexp.new(:render, render_type, value, rest)
207
207
  result.line(exp.line)
208
+
208
209
  result
209
210
  end
210
211
 
@@ -240,6 +241,7 @@ class Brakeman::BaseProcessor < Brakeman::SexpProcessor
240
241
  elsif first_arg.nil?
241
242
  type = :default
242
243
  elsif not hash? first_arg
244
+ # Maybe do partial if in view?
243
245
  type = :action
244
246
  value = first_arg
245
247
  end
@@ -0,0 +1,92 @@
1
+ require 'brakeman/processors/haml_template_processor'
2
+
3
+ class Brakeman::Haml6TemplateProcessor < Brakeman::HamlTemplateProcessor
4
+
5
+ OUTPUT_BUFFER = s(:ivar, :@output_buffer)
6
+ HAML_UTILS = s(:colon2, s(:colon3, :Haml), :Util)
7
+ HAML_UTILS2 = s(:colon2, s(:const, :Haml), :Util)
8
+ # @output_buffer = output_buffer || ActionView::OutputBuffer.new
9
+ AV_SAFE_BUFFER = s(:or, s(:call, nil, :output_buffer), s(:call, s(:colon2, s(:const, :ActionView), :OutputBuffer), :new))
10
+ EMBEDDED_FILTER = s(:const, :BrakemanFilter)
11
+
12
+ def initialize(*)
13
+ super
14
+
15
+ # Because of how Haml 6 handles line breaks -
16
+ # we have to track where _haml_compiler variables are assigned.
17
+ # then change the line number of where they are output to where
18
+ # they are assigned.
19
+ #
20
+ # Like this:
21
+ #
22
+ # ; _haml_compiler1 = (params[:x];
23
+ # ; ); @output_buffer.safe_concat((((::Haml::Util.escape_html_safe((_haml_compiler1))).to_s).to_s));
24
+ #
25
+ # `_haml_compiler1` is output a line after it's assigned,
26
+ # but the assignment matches the "real" line where it is output in the template.
27
+ @compiler_assigns = {}
28
+ end
29
+
30
+ # @output_buffer.safe_concat
31
+ def buffer_append? exp
32
+ call? exp and
33
+ output_buffer? exp.target and
34
+ exp.method == :safe_concat
35
+ end
36
+
37
+ def process_lasgn exp
38
+ if exp.lhs.match?(/_haml_compiler\d+/)
39
+ @compiler_assigns[exp.lhs] = exp.rhs
40
+ ignore
41
+ else
42
+ exp
43
+ end
44
+ end
45
+
46
+ def process_lvar exp
47
+ if exp.value.match?(/_haml_compiler\d+/)
48
+ exp = @compiler_assigns[exp.value] || exp
49
+ end
50
+
51
+ exp
52
+ end
53
+
54
+ def is_escaped? exp
55
+ return unless call? exp
56
+
57
+ html_escaped? exp or
58
+ javascript_escaped? exp
59
+ end
60
+
61
+ def javascript_escaped? call
62
+ # TODO: Adding here to match existing behavior for HAML,
63
+ # but really this is not safe and needs to be revisited
64
+ call.method == :j or
65
+ call.method == :escape_javascript
66
+ end
67
+
68
+ def html_escaped? call
69
+ (call.target == HAML_UTILS or call.target == HAML_UTILS2) and
70
+ (call.method == :escape_html or call.method == :escape_html_safe)
71
+ end
72
+
73
+ def output_buffer? exp
74
+ exp == OUTPUT_BUFFER or
75
+ exp == AV_SAFE_BUFFER
76
+ end
77
+
78
+ def normalize_output arg
79
+ arg = super(arg)
80
+
81
+ if embedded_filter? arg
82
+ super(arg.first_arg)
83
+ else
84
+ arg
85
+ end
86
+ end
87
+
88
+ # Handle our "fake" embedded filters
89
+ def embedded_filter? arg
90
+ call? arg and arg.method == :render and arg.target == EMBEDDED_FILTER
91
+ end
92
+ end
@@ -84,6 +84,12 @@ class Brakeman::HamlTemplateProcessor < Brakeman::TemplateProcessor
84
84
  :escape_once_without_haml_xss
85
85
  ]
86
86
 
87
+ def is_escaped? exp
88
+ return unless call? exp
89
+
90
+ haml_helpers? exp.target and ESCAPE_METHODS.include? exp.method
91
+ end
92
+
87
93
  def get_pushed_value exp, default = :output
88
94
  return exp unless sexp? exp
89
95
 
@@ -113,7 +119,7 @@ class Brakeman::HamlTemplateProcessor < Brakeman::TemplateProcessor
113
119
  when :call
114
120
  if exp.method == :to_s or exp.method == :strip
115
121
  get_pushed_value(exp.target, default)
116
- elsif haml_helpers? exp.target and ESCAPE_METHODS.include? exp.method
122
+ elsif is_escaped? exp
117
123
  get_pushed_value(exp.first_arg, :escaped_output)
118
124
  elsif @javascript and (exp.method == :j or exp.method == :escape_javascript) # TODO: Remove - this is not safe
119
125
  get_pushed_value(exp.first_arg, :escaped_output)
@@ -13,7 +13,7 @@ module Brakeman
13
13
  @file_type = guess_from_path(file.path.relative)
14
14
  end
15
15
 
16
- @file_type || :libs
16
+ @file_type || :lib
17
17
  end
18
18
 
19
19
  MODEL_CLASSES = [
@@ -26,10 +26,10 @@ module Brakeman
26
26
  parent = class_name(exp.parent_name)
27
27
 
28
28
  if name.match(/Controller$/)
29
- @file_type = :controllers
29
+ @file_type = :controller
30
30
  return exp
31
31
  elsif MODEL_CLASSES.include? parent
32
- @file_type = :models
32
+ @file_type = :model
33
33
  return exp
34
34
  end
35
35
 
@@ -39,19 +39,21 @@ module Brakeman
39
39
  def guess_from_path path
40
40
  case
41
41
  when path.include?('app/models')
42
- :models
42
+ :model
43
43
  when path.include?('app/controllers')
44
- :controllers
44
+ :controller
45
45
  when path.include?('config/initializers')
46
- :initializers
46
+ :initializer
47
47
  when path.include?('lib/')
48
- :libs
48
+ :lib
49
49
  when path.match?(%r{config/environments/(?!production\.rb)$})
50
50
  :skip
51
51
  when path.match?(%r{environments/production\.rb$})
52
52
  :skip
53
53
  when path.match?(%r{application\.rb$})
54
54
  :skip
55
+ when path.match?(%r{config/routes\.rb$})
56
+ :skip
55
57
  end
56
58
  end
57
59