brakeman 7.1.0 → 7.1.2

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 (347) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES.md +22 -1
  3. data/README.md +3 -3
  4. data/bundle/load.rb +8 -8
  5. data/bundle/ruby/3.2.0/gems/{haml-6.3.0 → haml-6.4.0}/CHANGELOG.md +13 -1
  6. data/bundle/ruby/3.2.0/gems/{haml-6.3.0 → haml-6.4.0}/Gemfile +7 -0
  7. data/bundle/ruby/3.2.0/gems/{haml-6.3.0 → haml-6.4.0}/README.md +1 -0
  8. data/bundle/ruby/3.2.0/gems/{haml-6.3.0 → haml-6.4.0}/REFERENCE.md +9 -16
  9. data/bundle/ruby/3.2.0/gems/{haml-6.3.0 → haml-6.4.0}/haml.gemspec +2 -0
  10. data/bundle/ruby/3.2.0/gems/{haml-6.3.0 → haml-6.4.0}/lib/haml/attribute_builder.rb +2 -2
  11. data/bundle/ruby/3.2.0/gems/{haml-6.3.0 → haml-6.4.0}/lib/haml/attribute_compiler.rb +1 -1
  12. data/bundle/ruby/3.2.0/gems/{haml-6.3.0 → haml-6.4.0}/lib/haml/filters/plain.rb +1 -1
  13. data/bundle/ruby/3.2.0/gems/{haml-6.3.0 → haml-6.4.0}/lib/haml/filters/ruby.rb +1 -1
  14. data/bundle/ruby/3.2.0/gems/{haml-6.3.0 → haml-6.4.0}/lib/haml/parser.rb +1 -1
  15. data/bundle/ruby/3.2.0/gems/{haml-6.3.0 → haml-6.4.0}/lib/haml/rails_template.rb +2 -2
  16. data/bundle/ruby/3.2.0/gems/{haml-6.3.0 → haml-6.4.0}/lib/haml/version.rb +1 -1
  17. data/bundle/ruby/3.2.0/gems/{reline-0.6.1 → reline-0.6.3}/lib/reline/config.rb +5 -0
  18. data/bundle/ruby/3.2.0/gems/{reline-0.6.1 → reline-0.6.3}/lib/reline/io/ansi.rb +7 -15
  19. data/bundle/ruby/3.2.0/gems/{reline-0.6.1 → reline-0.6.3}/lib/reline/io.rb +2 -2
  20. data/bundle/ruby/3.2.0/gems/{reline-0.6.1 → reline-0.6.3}/lib/reline/key_actor/emacs.rb +2 -2
  21. data/bundle/ruby/3.2.0/gems/{reline-0.6.1 → reline-0.6.3}/lib/reline/line_editor.rb +46 -44
  22. data/bundle/ruby/3.2.0/gems/{reline-0.6.1 → reline-0.6.3}/lib/reline/unicode/east_asian_width.rb +7 -8
  23. data/bundle/ruby/3.2.0/gems/{reline-0.6.1 → reline-0.6.3}/lib/reline/unicode.rb +22 -16
  24. data/bundle/ruby/3.2.0/gems/reline-0.6.3/lib/reline/version.rb +3 -0
  25. data/bundle/ruby/3.2.0/gems/{reline-0.6.1 → reline-0.6.3}/lib/reline.rb +2 -3
  26. data/bundle/ruby/3.2.0/gems/{rexml-3.4.1 → rexml-3.4.4}/NEWS.md +145 -1
  27. data/bundle/ruby/3.2.0/gems/{rexml-3.4.1 → rexml-3.4.4}/lib/rexml/attribute.rb +7 -8
  28. data/bundle/ruby/3.2.0/gems/{rexml-3.4.1 → rexml-3.4.4}/lib/rexml/cdata.rb +1 -1
  29. data/bundle/ruby/3.2.0/gems/{rexml-3.4.1 → rexml-3.4.4}/lib/rexml/child.rb +2 -3
  30. data/bundle/ruby/3.2.0/gems/{rexml-3.4.1 → rexml-3.4.4}/lib/rexml/comment.rb +1 -1
  31. data/bundle/ruby/3.2.0/gems/{rexml-3.4.1 → rexml-3.4.4}/lib/rexml/doctype.rb +3 -8
  32. data/bundle/ruby/3.2.0/gems/{rexml-3.4.1 → rexml-3.4.4}/lib/rexml/document.rb +21 -5
  33. data/bundle/ruby/3.2.0/gems/{rexml-3.4.1 → rexml-3.4.4}/lib/rexml/element.rb +53 -59
  34. data/bundle/ruby/3.2.0/gems/{rexml-3.4.1 → rexml-3.4.4}/lib/rexml/encoding.rb +3 -6
  35. data/bundle/ruby/3.2.0/gems/{rexml-3.4.1 → rexml-3.4.4}/lib/rexml/functions.rb +3 -3
  36. data/bundle/ruby/3.2.0/gems/{rexml-3.4.1 → rexml-3.4.4}/lib/rexml/instruction.rb +1 -1
  37. data/bundle/ruby/3.2.0/gems/{rexml-3.4.1 → rexml-3.4.4}/lib/rexml/namespace.rb +4 -4
  38. data/bundle/ruby/3.2.0/gems/{rexml-3.4.1 → rexml-3.4.4}/lib/rexml/node.rb +2 -2
  39. data/bundle/ruby/3.2.0/gems/{rexml-3.4.1 → rexml-3.4.4}/lib/rexml/parsers/baseparser.rb +143 -81
  40. data/bundle/ruby/3.2.0/gems/{rexml-3.4.1 → rexml-3.4.4}/lib/rexml/parsers/xpathparser.rb +4 -4
  41. data/bundle/ruby/3.2.0/gems/{rexml-3.4.1 → rexml-3.4.4}/lib/rexml/quickpath.rb +19 -18
  42. data/bundle/ruby/3.2.0/gems/{rexml-3.4.1 → rexml-3.4.4}/lib/rexml/rexml.rb +1 -1
  43. data/bundle/ruby/3.2.0/gems/{rexml-3.4.1 → rexml-3.4.4}/lib/rexml/security.rb +2 -2
  44. data/bundle/ruby/3.2.0/gems/{rexml-3.4.1 → rexml-3.4.4}/lib/rexml/source.rb +7 -2
  45. data/bundle/ruby/3.2.0/gems/{rexml-3.4.1 → rexml-3.4.4}/lib/rexml/text.rb +14 -17
  46. data/bundle/ruby/3.2.0/gems/{rexml-3.4.1 → rexml-3.4.4}/lib/rexml/validation/relaxng.rb +27 -26
  47. data/bundle/ruby/3.2.0/gems/{rexml-3.4.1 → rexml-3.4.4}/lib/rexml/validation/validation.rb +8 -8
  48. data/bundle/ruby/3.2.0/gems/{rexml-3.4.1 → rexml-3.4.4}/lib/rexml/xpath.rb +2 -13
  49. data/bundle/ruby/3.2.0/gems/{rexml-3.4.1 → rexml-3.4.4}/lib/rexml/xpath_parser.rb +44 -42
  50. data/bundle/ruby/3.2.0/gems/{ruby_parser-3.20.3 → ruby_parser-3.22.0}/History.rdoc +67 -0
  51. data/bundle/ruby/3.2.0/gems/ruby_parser-3.22.0/Manifest.txt +39 -0
  52. data/bundle/ruby/3.2.0/gems/{ruby_parser-3.20.3 → ruby_parser-3.22.0}/README.rdoc +15 -3
  53. data/bundle/ruby/3.2.0/gems/{ruby_parser-3.20.3 → ruby_parser-3.22.0}/compare/normalize.rb +19 -3
  54. data/bundle/ruby/3.2.0/gems/{ruby_parser-3.20.3 → ruby_parser-3.22.0}/gauntlet.md +35 -5
  55. data/bundle/ruby/3.2.0/gems/{ruby_parser-3.20.3 → ruby_parser-3.22.0}/lib/ruby_lexer.rb +9 -18
  56. data/bundle/ruby/3.2.0/gems/{ruby_parser-3.20.3 → ruby_parser-3.22.0}/lib/ruby_lexer.rex.rb +1 -2
  57. data/bundle/ruby/3.2.0/gems/{ruby_parser-3.20.3 → ruby_parser-3.22.0}/lib/ruby_parser.rb +18 -14
  58. data/bundle/ruby/3.2.0/gems/{ruby_parser-3.20.3/lib/ruby_parser.yy → ruby_parser-3.22.0/lib/ruby_parser2.yy} +15 -22
  59. data/bundle/ruby/3.2.0/gems/{ruby_parser-3.20.3/lib/ruby20_parser.rb → ruby_parser-3.22.0/lib/ruby_parser20.rb} +19 -22
  60. data/bundle/ruby/3.2.0/gems/{ruby_parser-3.20.3/lib/ruby21_parser.rb → ruby_parser-3.22.0/lib/ruby_parser21.rb} +19 -22
  61. data/bundle/ruby/3.2.0/gems/{ruby_parser-3.20.3/lib/ruby22_parser.rb → ruby_parser-3.22.0/lib/ruby_parser22.rb} +19 -22
  62. data/bundle/ruby/3.2.0/gems/{ruby_parser-3.20.3/lib/ruby23_parser.rb → ruby_parser-3.22.0/lib/ruby_parser23.rb} +19 -22
  63. data/bundle/ruby/3.2.0/gems/{ruby_parser-3.20.3/lib/ruby24_parser.rb → ruby_parser-3.22.0/lib/ruby_parser24.rb} +19 -22
  64. data/bundle/ruby/3.2.0/gems/{ruby_parser-3.20.3/lib/ruby25_parser.rb → ruby_parser-3.22.0/lib/ruby_parser25.rb} +19 -22
  65. data/bundle/ruby/3.2.0/gems/{ruby_parser-3.20.3/lib/ruby26_parser.rb → ruby_parser-3.22.0/lib/ruby_parser26.rb} +19 -22
  66. data/bundle/ruby/3.2.0/gems/{ruby_parser-3.20.3/lib/ruby27_parser.rb → ruby_parser-3.22.0/lib/ruby_parser27.rb} +21 -24
  67. data/bundle/ruby/3.2.0/gems/{ruby_parser-3.20.3/lib/ruby3_parser.yy → ruby_parser-3.22.0/lib/ruby_parser3.yy} +214 -79
  68. data/bundle/ruby/3.2.0/gems/{ruby_parser-3.20.3/lib/ruby30_parser.rb → ruby_parser-3.22.0/lib/ruby_parser30.rb} +3339 -3351
  69. data/bundle/ruby/3.2.0/gems/{ruby_parser-3.20.3/lib/ruby31_parser.rb → ruby_parser-3.22.0/lib/ruby_parser31.rb} +3772 -3808
  70. data/bundle/ruby/3.2.0/gems/ruby_parser-3.22.0/lib/ruby_parser32.rb +13565 -0
  71. data/bundle/ruby/3.2.0/gems/ruby_parser-3.22.0/lib/ruby_parser33.rb +13653 -0
  72. data/bundle/ruby/3.2.0/gems/ruby_parser-3.22.0/lib/ruby_parser34.rb +13653 -0
  73. data/bundle/ruby/3.2.0/gems/{ruby_parser-3.20.3 → ruby_parser-3.22.0}/lib/ruby_parser_extras.rb +109 -60
  74. data/bundle/ruby/3.2.0/gems/{sexp_processor-4.17.3 → sexp_processor-4.17.5}/History.rdoc +14 -0
  75. data/bundle/ruby/3.2.0/gems/{sexp_processor-4.17.3 → sexp_processor-4.17.5}/lib/pt_testcase.rb +1 -1
  76. data/bundle/ruby/3.2.0/gems/{sexp_processor-4.17.3 → sexp_processor-4.17.5}/lib/sexp_processor.rb +1 -1
  77. data/bundle/ruby/3.2.0/gems/{temple-0.10.3 → temple-0.10.4}/CHANGES +4 -0
  78. data/bundle/ruby/3.2.0/gems/{temple-0.10.3 → temple-0.10.4}/lib/temple/filters/encoding.rb +1 -1
  79. data/bundle/ruby/3.2.0/gems/{temple-0.10.3 → temple-0.10.4}/lib/temple/version.rb +1 -1
  80. data/bundle/ruby/3.2.0/gems/{unicode-display_width-3.1.4 → unicode-display_width-3.2.0}/CHANGELOG.md +8 -0
  81. data/bundle/ruby/3.2.0/gems/{unicode-display_width-3.1.4 → unicode-display_width-3.2.0}/README.md +5 -5
  82. data/bundle/ruby/3.2.0/gems/unicode-display_width-3.2.0/data/display_width.marshal.gz +0 -0
  83. data/bundle/ruby/3.2.0/gems/{unicode-display_width-3.1.4 → unicode-display_width-3.2.0}/lib/unicode/display_width/constants.rb +2 -2
  84. data/bundle/ruby/3.2.0/gems/{unicode-display_width-3.1.4 → unicode-display_width-3.2.0}/lib/unicode/display_width/emoji_support.rb +5 -2
  85. data/bundle/ruby/3.2.0/gems/{unicode-emoji-4.0.4 → unicode-emoji-4.2.0}/CHANGELOG.md +11 -0
  86. data/bundle/ruby/3.2.0/gems/{unicode-emoji-4.0.4 → unicode-emoji-4.2.0}/Gemfile +2 -0
  87. data/bundle/ruby/3.2.0/gems/{unicode-emoji-4.0.4 → unicode-emoji-4.2.0}/Gemfile.lock +5 -1
  88. data/bundle/ruby/3.2.0/gems/{unicode-emoji-4.0.4 → unicode-emoji-4.2.0}/README.md +4 -4
  89. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.2.0/data/emoji.marshal.gz +0 -0
  90. data/bundle/ruby/3.2.0/gems/{unicode-emoji-4.0.4 → unicode-emoji-4.2.0}/lib/unicode/emoji/constants.rb +4 -3
  91. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.2.0/lib/unicode/emoji/generated/regex.rb +8 -0
  92. data/bundle/ruby/3.2.0/gems/{unicode-emoji-4.0.4 → unicode-emoji-4.2.0}/lib/unicode/emoji/generated/regex_basic.rb +1 -1
  93. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.2.0/lib/unicode/emoji/generated/regex_include_mqe.rb +8 -0
  94. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.2.0/lib/unicode/emoji/generated/regex_include_mqe_uqe.rb +8 -0
  95. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.2.0/lib/unicode/emoji/generated/regex_include_text.rb +8 -0
  96. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.2.0/lib/unicode/emoji/generated/regex_picto.rb +8 -0
  97. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.2.0/lib/unicode/emoji/generated/regex_picto_no_emoji.rb +8 -0
  98. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.2.0/lib/unicode/emoji/generated/regex_possible.rb +8 -0
  99. data/bundle/ruby/3.2.0/gems/{unicode-emoji-4.0.4 → unicode-emoji-4.2.0}/lib/unicode/emoji/generated/regex_prop_emoji.rb +1 -1
  100. data/bundle/ruby/3.2.0/gems/{unicode-emoji-4.0.4 → unicode-emoji-4.2.0}/lib/unicode/emoji/generated/regex_prop_presentation.rb +1 -1
  101. data/bundle/ruby/3.2.0/gems/{unicode-emoji-4.0.4 → unicode-emoji-4.2.0}/lib/unicode/emoji/generated/regex_text.rb +1 -1
  102. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.2.0/lib/unicode/emoji/generated/regex_valid.rb +8 -0
  103. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.2.0/lib/unicode/emoji/generated/regex_valid_include_text.rb +8 -0
  104. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.2.0/lib/unicode/emoji/generated/regex_well_formed.rb +8 -0
  105. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.2.0/lib/unicode/emoji/generated/regex_well_formed_include_text.rb +8 -0
  106. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.2.0/lib/unicode/emoji/generated_native/regex.rb +8 -0
  107. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.2.0/lib/unicode/emoji/generated_native/regex_include_mqe.rb +8 -0
  108. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.2.0/lib/unicode/emoji/generated_native/regex_include_mqe_uqe.rb +8 -0
  109. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.2.0/lib/unicode/emoji/generated_native/regex_include_text.rb +8 -0
  110. data/bundle/ruby/3.2.0/gems/{unicode-emoji-4.0.4 → unicode-emoji-4.2.0}/unicode-emoji.gemspec +1 -1
  111. data/lib/brakeman/app_tree.rb +40 -5
  112. data/lib/brakeman/checks/base_check.rb +5 -2
  113. data/lib/brakeman/checks/check_render.rb +5 -0
  114. data/lib/brakeman/checks/check_sql.rb +13 -4
  115. data/lib/brakeman/file_path.rb +4 -0
  116. data/lib/brakeman/processors/alias_processor.rb +9 -0
  117. data/lib/brakeman/processors/haml_template_processor.rb +10 -1
  118. data/lib/brakeman/processors/lib/rails2_config_processor.rb +1 -1
  119. data/lib/brakeman/processors/lib/rails3_config_processor.rb +1 -1
  120. data/lib/brakeman/report/pager.rb +1 -1
  121. data/lib/brakeman/report/templates/header.html.erb +1 -1
  122. data/lib/brakeman/version.rb +1 -1
  123. data/lib/ruby_parser/bm_sexp.rb +14 -0
  124. metadata +301 -310
  125. data/bundle/ruby/3.2.0/gems/reline-0.6.1/lib/reline/version.rb +0 -3
  126. data/bundle/ruby/3.2.0/gems/ruby_parser-3.20.3/Manifest.txt +0 -48
  127. data/bundle/ruby/3.2.0/gems/ruby_parser-3.20.3/lib/ruby20_parser.y +0 -2707
  128. data/bundle/ruby/3.2.0/gems/ruby_parser-3.20.3/lib/ruby21_parser.y +0 -2724
  129. data/bundle/ruby/3.2.0/gems/ruby_parser-3.20.3/lib/ruby22_parser.y +0 -2735
  130. data/bundle/ruby/3.2.0/gems/ruby_parser-3.20.3/lib/ruby23_parser.y +0 -2737
  131. data/bundle/ruby/3.2.0/gems/ruby_parser-3.20.3/lib/ruby24_parser.y +0 -2745
  132. data/bundle/ruby/3.2.0/gems/ruby_parser-3.20.3/lib/ruby25_parser.y +0 -2745
  133. data/bundle/ruby/3.2.0/gems/ruby_parser-3.20.3/lib/ruby26_parser.y +0 -2760
  134. data/bundle/ruby/3.2.0/gems/ruby_parser-3.20.3/lib/ruby27_parser.y +0 -3360
  135. data/bundle/ruby/3.2.0/gems/ruby_parser-3.20.3/lib/ruby30_parser.y +0 -3508
  136. data/bundle/ruby/3.2.0/gems/ruby_parser-3.20.3/lib/ruby31_parser.y +0 -3542
  137. data/bundle/ruby/3.2.0/gems/ruby_parser-3.20.3/lib/ruby32_parser.rb +0 -13601
  138. data/bundle/ruby/3.2.0/gems/ruby_parser-3.20.3/lib/ruby32_parser.y +0 -3543
  139. data/bundle/ruby/3.2.0/gems/unicode-display_width-3.1.4/data/display_width.marshal.gz +0 -0
  140. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/data/emoji.marshal.gz +0 -0
  141. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex.rb +0 -8
  142. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_include_mqe.rb +0 -8
  143. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_include_mqe_uqe.rb +0 -8
  144. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_include_text.rb +0 -8
  145. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_picto.rb +0 -8
  146. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_picto_no_emoji.rb +0 -8
  147. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_possible.rb +0 -8
  148. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_valid.rb +0 -8
  149. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_valid_include_text.rb +0 -8
  150. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_well_formed.rb +0 -8
  151. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_well_formed_include_text.rb +0 -8
  152. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex.rb +0 -8
  153. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_include_mqe.rb +0 -8
  154. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_include_mqe_uqe.rb +0 -8
  155. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_include_text.rb +0 -8
  156. /data/bundle/ruby/3.2.0/gems/{haml-6.3.0 → haml-6.4.0}/FAQ.md +0 -0
  157. /data/bundle/ruby/3.2.0/gems/{haml-6.3.0 → haml-6.4.0}/MIT-LICENSE +0 -0
  158. /data/bundle/ruby/3.2.0/gems/{haml-6.3.0 → haml-6.4.0}/exe/haml +0 -0
  159. /data/bundle/ruby/3.2.0/gems/{haml-6.3.0 → haml-6.4.0}/lib/haml/ambles.rb +0 -0
  160. /data/bundle/ruby/3.2.0/gems/{haml-6.3.0 → haml-6.4.0}/lib/haml/attribute_parser.rb +0 -0
  161. /data/bundle/ruby/3.2.0/gems/{haml-6.3.0 → haml-6.4.0}/lib/haml/cli.rb +0 -0
  162. /data/bundle/ruby/3.2.0/gems/{haml-6.3.0 → haml-6.4.0}/lib/haml/compiler/children_compiler.rb +0 -0
  163. /data/bundle/ruby/3.2.0/gems/{haml-6.3.0 → haml-6.4.0}/lib/haml/compiler/comment_compiler.rb +0 -0
  164. /data/bundle/ruby/3.2.0/gems/{haml-6.3.0 → haml-6.4.0}/lib/haml/compiler/doctype_compiler.rb +0 -0
  165. /data/bundle/ruby/3.2.0/gems/{haml-6.3.0 → haml-6.4.0}/lib/haml/compiler/script_compiler.rb +0 -0
  166. /data/bundle/ruby/3.2.0/gems/{haml-6.3.0 → haml-6.4.0}/lib/haml/compiler/silent_script_compiler.rb +0 -0
  167. /data/bundle/ruby/3.2.0/gems/{haml-6.3.0 → haml-6.4.0}/lib/haml/compiler/tag_compiler.rb +0 -0
  168. /data/bundle/ruby/3.2.0/gems/{haml-6.3.0 → haml-6.4.0}/lib/haml/compiler.rb +0 -0
  169. /data/bundle/ruby/3.2.0/gems/{haml-6.3.0 → haml-6.4.0}/lib/haml/dynamic_merger.rb +0 -0
  170. /data/bundle/ruby/3.2.0/gems/{haml-6.3.0 → haml-6.4.0}/lib/haml/engine.rb +0 -0
  171. /data/bundle/ruby/3.2.0/gems/{haml-6.3.0 → haml-6.4.0}/lib/haml/error.rb +0 -0
  172. /data/bundle/ruby/3.2.0/gems/{haml-6.3.0 → haml-6.4.0}/lib/haml/escape.rb +0 -0
  173. /data/bundle/ruby/3.2.0/gems/{haml-6.3.0 → haml-6.4.0}/lib/haml/escape_any.rb +0 -0
  174. /data/bundle/ruby/3.2.0/gems/{haml-6.3.0 → haml-6.4.0}/lib/haml/filters/base.rb +0 -0
  175. /data/bundle/ruby/3.2.0/gems/{haml-6.3.0 → haml-6.4.0}/lib/haml/filters/cdata.rb +0 -0
  176. /data/bundle/ruby/3.2.0/gems/{haml-6.3.0 → haml-6.4.0}/lib/haml/filters/coffee.rb +0 -0
  177. /data/bundle/ruby/3.2.0/gems/{haml-6.3.0 → haml-6.4.0}/lib/haml/filters/css.rb +0 -0
  178. /data/bundle/ruby/3.2.0/gems/{haml-6.3.0 → haml-6.4.0}/lib/haml/filters/erb.rb +0 -0
  179. /data/bundle/ruby/3.2.0/gems/{haml-6.3.0 → haml-6.4.0}/lib/haml/filters/escaped.rb +0 -0
  180. /data/bundle/ruby/3.2.0/gems/{haml-6.3.0 → haml-6.4.0}/lib/haml/filters/javascript.rb +0 -0
  181. /data/bundle/ruby/3.2.0/gems/{haml-6.3.0 → haml-6.4.0}/lib/haml/filters/less.rb +0 -0
  182. /data/bundle/ruby/3.2.0/gems/{haml-6.3.0 → haml-6.4.0}/lib/haml/filters/markdown.rb +0 -0
  183. /data/bundle/ruby/3.2.0/gems/{haml-6.3.0 → haml-6.4.0}/lib/haml/filters/preserve.rb +0 -0
  184. /data/bundle/ruby/3.2.0/gems/{haml-6.3.0 → haml-6.4.0}/lib/haml/filters/sass.rb +0 -0
  185. /data/bundle/ruby/3.2.0/gems/{haml-6.3.0 → haml-6.4.0}/lib/haml/filters/scss.rb +0 -0
  186. /data/bundle/ruby/3.2.0/gems/{haml-6.3.0 → haml-6.4.0}/lib/haml/filters/text_base.rb +0 -0
  187. /data/bundle/ruby/3.2.0/gems/{haml-6.3.0 → haml-6.4.0}/lib/haml/filters/tilt_base.rb +0 -0
  188. /data/bundle/ruby/3.2.0/gems/{haml-6.3.0 → haml-6.4.0}/lib/haml/filters.rb +0 -0
  189. /data/bundle/ruby/3.2.0/gems/{haml-6.3.0 → haml-6.4.0}/lib/haml/force_escape.rb +0 -0
  190. /data/bundle/ruby/3.2.0/gems/{haml-6.3.0 → haml-6.4.0}/lib/haml/helpers.rb +0 -0
  191. /data/bundle/ruby/3.2.0/gems/{haml-6.3.0 → haml-6.4.0}/lib/haml/html.rb +0 -0
  192. /data/bundle/ruby/3.2.0/gems/{haml-6.3.0 → haml-6.4.0}/lib/haml/identity.rb +0 -0
  193. /data/bundle/ruby/3.2.0/gems/{haml-6.3.0 → haml-6.4.0}/lib/haml/object_ref.rb +0 -0
  194. /data/bundle/ruby/3.2.0/gems/{haml-6.3.0 → haml-6.4.0}/lib/haml/rails_helpers.rb +0 -0
  195. /data/bundle/ruby/3.2.0/gems/{haml-6.3.0 → haml-6.4.0}/lib/haml/railtie.rb +0 -0
  196. /data/bundle/ruby/3.2.0/gems/{haml-6.3.0 → haml-6.4.0}/lib/haml/ruby_expression.rb +0 -0
  197. /data/bundle/ruby/3.2.0/gems/{haml-6.3.0 → haml-6.4.0}/lib/haml/string_splitter.rb +0 -0
  198. /data/bundle/ruby/3.2.0/gems/{haml-6.3.0 → haml-6.4.0}/lib/haml/template.rb +0 -0
  199. /data/bundle/ruby/3.2.0/gems/{haml-6.3.0 → haml-6.4.0}/lib/haml/temple_line_counter.rb +0 -0
  200. /data/bundle/ruby/3.2.0/gems/{haml-6.3.0 → haml-6.4.0}/lib/haml/util.rb +0 -0
  201. /data/bundle/ruby/3.2.0/gems/{haml-6.3.0 → haml-6.4.0}/lib/haml/whitespace.rb +0 -0
  202. /data/bundle/ruby/3.2.0/gems/{haml-6.3.0 → haml-6.4.0}/lib/haml.rb +0 -0
  203. /data/bundle/ruby/3.2.0/gems/{reline-0.6.1 → reline-0.6.3}/BSDL +0 -0
  204. /data/bundle/ruby/3.2.0/gems/{reline-0.6.1 → reline-0.6.3}/COPYING +0 -0
  205. /data/bundle/ruby/3.2.0/gems/{reline-0.6.1 → reline-0.6.3}/README.md +0 -0
  206. /data/bundle/ruby/3.2.0/gems/{reline-0.6.1 → reline-0.6.3}/lib/reline/face.rb +0 -0
  207. /data/bundle/ruby/3.2.0/gems/{reline-0.6.1 → reline-0.6.3}/lib/reline/history.rb +0 -0
  208. /data/bundle/ruby/3.2.0/gems/{reline-0.6.1 → reline-0.6.3}/lib/reline/io/dumb.rb +0 -0
  209. /data/bundle/ruby/3.2.0/gems/{reline-0.6.1 → reline-0.6.3}/lib/reline/io/windows.rb +0 -0
  210. /data/bundle/ruby/3.2.0/gems/{reline-0.6.1 → reline-0.6.3}/lib/reline/key_actor/base.rb +0 -0
  211. /data/bundle/ruby/3.2.0/gems/{reline-0.6.1 → reline-0.6.3}/lib/reline/key_actor/composite.rb +0 -0
  212. /data/bundle/ruby/3.2.0/gems/{reline-0.6.1 → reline-0.6.3}/lib/reline/key_actor/vi_command.rb +0 -0
  213. /data/bundle/ruby/3.2.0/gems/{reline-0.6.1 → reline-0.6.3}/lib/reline/key_actor/vi_insert.rb +0 -0
  214. /data/bundle/ruby/3.2.0/gems/{reline-0.6.1 → reline-0.6.3}/lib/reline/key_actor.rb +0 -0
  215. /data/bundle/ruby/3.2.0/gems/{reline-0.6.1 → reline-0.6.3}/lib/reline/key_stroke.rb +0 -0
  216. /data/bundle/ruby/3.2.0/gems/{reline-0.6.1 → reline-0.6.3}/lib/reline/kill_ring.rb +0 -0
  217. /data/bundle/ruby/3.2.0/gems/{reline-0.6.1 → reline-0.6.3}/license_of_rb-readline +0 -0
  218. /data/bundle/ruby/3.2.0/gems/{rexml-3.4.1 → rexml-3.4.4}/LICENSE.txt +0 -0
  219. /data/bundle/ruby/3.2.0/gems/{rexml-3.4.1 → rexml-3.4.4}/README.md +0 -0
  220. /data/bundle/ruby/3.2.0/gems/{rexml-3.4.1 → rexml-3.4.4}/lib/rexml/attlistdecl.rb +0 -0
  221. /data/bundle/ruby/3.2.0/gems/{rexml-3.4.1 → rexml-3.4.4}/lib/rexml/dtd/attlistdecl.rb +0 -0
  222. /data/bundle/ruby/3.2.0/gems/{rexml-3.4.1 → rexml-3.4.4}/lib/rexml/dtd/dtd.rb +0 -0
  223. /data/bundle/ruby/3.2.0/gems/{rexml-3.4.1 → rexml-3.4.4}/lib/rexml/dtd/elementdecl.rb +0 -0
  224. /data/bundle/ruby/3.2.0/gems/{rexml-3.4.1 → rexml-3.4.4}/lib/rexml/dtd/entitydecl.rb +0 -0
  225. /data/bundle/ruby/3.2.0/gems/{rexml-3.4.1 → rexml-3.4.4}/lib/rexml/dtd/notationdecl.rb +0 -0
  226. /data/bundle/ruby/3.2.0/gems/{rexml-3.4.1 → rexml-3.4.4}/lib/rexml/entity.rb +0 -0
  227. /data/bundle/ruby/3.2.0/gems/{rexml-3.4.1 → rexml-3.4.4}/lib/rexml/formatters/default.rb +0 -0
  228. /data/bundle/ruby/3.2.0/gems/{rexml-3.4.1 → rexml-3.4.4}/lib/rexml/formatters/pretty.rb +0 -0
  229. /data/bundle/ruby/3.2.0/gems/{rexml-3.4.1 → rexml-3.4.4}/lib/rexml/formatters/transitive.rb +0 -0
  230. /data/bundle/ruby/3.2.0/gems/{rexml-3.4.1 → rexml-3.4.4}/lib/rexml/light/node.rb +0 -0
  231. /data/bundle/ruby/3.2.0/gems/{rexml-3.4.1 → rexml-3.4.4}/lib/rexml/output.rb +0 -0
  232. /data/bundle/ruby/3.2.0/gems/{rexml-3.4.1 → rexml-3.4.4}/lib/rexml/parent.rb +0 -0
  233. /data/bundle/ruby/3.2.0/gems/{rexml-3.4.1 → rexml-3.4.4}/lib/rexml/parseexception.rb +0 -0
  234. /data/bundle/ruby/3.2.0/gems/{rexml-3.4.1 → rexml-3.4.4}/lib/rexml/parsers/lightparser.rb +0 -0
  235. /data/bundle/ruby/3.2.0/gems/{rexml-3.4.1 → rexml-3.4.4}/lib/rexml/parsers/pullparser.rb +0 -0
  236. /data/bundle/ruby/3.2.0/gems/{rexml-3.4.1 → rexml-3.4.4}/lib/rexml/parsers/sax2parser.rb +0 -0
  237. /data/bundle/ruby/3.2.0/gems/{rexml-3.4.1 → rexml-3.4.4}/lib/rexml/parsers/streamparser.rb +0 -0
  238. /data/bundle/ruby/3.2.0/gems/{rexml-3.4.1 → rexml-3.4.4}/lib/rexml/parsers/treeparser.rb +0 -0
  239. /data/bundle/ruby/3.2.0/gems/{rexml-3.4.1 → rexml-3.4.4}/lib/rexml/parsers/ultralightparser.rb +0 -0
  240. /data/bundle/ruby/3.2.0/gems/{rexml-3.4.1 → rexml-3.4.4}/lib/rexml/sax2listener.rb +0 -0
  241. /data/bundle/ruby/3.2.0/gems/{rexml-3.4.1 → rexml-3.4.4}/lib/rexml/streamlistener.rb +0 -0
  242. /data/bundle/ruby/3.2.0/gems/{rexml-3.4.1 → rexml-3.4.4}/lib/rexml/undefinednamespaceexception.rb +0 -0
  243. /data/bundle/ruby/3.2.0/gems/{rexml-3.4.1 → rexml-3.4.4}/lib/rexml/validation/validationexception.rb +0 -0
  244. /data/bundle/ruby/3.2.0/gems/{rexml-3.4.1 → rexml-3.4.4}/lib/rexml/xmldecl.rb +0 -0
  245. /data/bundle/ruby/3.2.0/gems/{rexml-3.4.1 → rexml-3.4.4}/lib/rexml/xmltokens.rb +0 -0
  246. /data/bundle/ruby/3.2.0/gems/{rexml-3.4.1 → rexml-3.4.4}/lib/rexml.rb +0 -0
  247. /data/bundle/ruby/3.2.0/gems/{ruby_parser-3.20.3 → ruby_parser-3.22.0}/debugging.md +0 -0
  248. /data/bundle/ruby/3.2.0/gems/{ruby_parser-3.20.3 → ruby_parser-3.22.0}/lib/rp_extensions.rb +0 -0
  249. /data/bundle/ruby/3.2.0/gems/{ruby_parser-3.20.3 → ruby_parser-3.22.0}/lib/rp_stringscanner.rb +0 -0
  250. /data/bundle/ruby/3.2.0/gems/{ruby_parser-3.20.3 → ruby_parser-3.22.0}/lib/ruby_lexer.rex +0 -0
  251. /data/bundle/ruby/3.2.0/gems/{ruby_parser-3.20.3 → ruby_parser-3.22.0}/lib/ruby_lexer_strings.rb +0 -0
  252. /data/bundle/ruby/3.2.0/gems/{ruby_parser-3.20.3 → ruby_parser-3.22.0}/tools/munge.rb +0 -0
  253. /data/bundle/ruby/3.2.0/gems/{ruby_parser-3.20.3 → ruby_parser-3.22.0}/tools/ripper.rb +0 -0
  254. /data/bundle/ruby/3.2.0/gems/{sexp_processor-4.17.3 → sexp_processor-4.17.5}/Manifest.txt +0 -0
  255. /data/bundle/ruby/3.2.0/gems/{sexp_processor-4.17.3 → sexp_processor-4.17.5}/README.rdoc +0 -0
  256. /data/bundle/ruby/3.2.0/gems/{sexp_processor-4.17.3 → sexp_processor-4.17.5}/lib/composite_sexp_processor.rb +0 -0
  257. /data/bundle/ruby/3.2.0/gems/{sexp_processor-4.17.3 → sexp_processor-4.17.5}/lib/sexp.rb +0 -0
  258. /data/bundle/ruby/3.2.0/gems/{sexp_processor-4.17.3 → sexp_processor-4.17.5}/lib/sexp_matcher.rb +0 -0
  259. /data/bundle/ruby/3.2.0/gems/{sexp_processor-4.17.3 → sexp_processor-4.17.5}/lib/strict_sexp.rb +0 -0
  260. /data/bundle/ruby/3.2.0/gems/{sexp_processor-4.17.3 → sexp_processor-4.17.5}/lib/unique.rb +0 -0
  261. /data/bundle/ruby/3.2.0/gems/{temple-0.10.3 → temple-0.10.4}/EXPRESSIONS.md +0 -0
  262. /data/bundle/ruby/3.2.0/gems/{temple-0.10.3 → temple-0.10.4}/Gemfile +0 -0
  263. /data/bundle/ruby/3.2.0/gems/{temple-0.10.3 → temple-0.10.4}/LICENSE +0 -0
  264. /data/bundle/ruby/3.2.0/gems/{temple-0.10.3 → temple-0.10.4}/README.md +0 -0
  265. /data/bundle/ruby/3.2.0/gems/{temple-0.10.3 → temple-0.10.4}/lib/temple/engine.rb +0 -0
  266. /data/bundle/ruby/3.2.0/gems/{temple-0.10.3 → temple-0.10.4}/lib/temple/erb/engine.rb +0 -0
  267. /data/bundle/ruby/3.2.0/gems/{temple-0.10.3 → temple-0.10.4}/lib/temple/erb/parser.rb +0 -0
  268. /data/bundle/ruby/3.2.0/gems/{temple-0.10.3 → temple-0.10.4}/lib/temple/erb/template.rb +0 -0
  269. /data/bundle/ruby/3.2.0/gems/{temple-0.10.3 → temple-0.10.4}/lib/temple/erb/trimming.rb +0 -0
  270. /data/bundle/ruby/3.2.0/gems/{temple-0.10.3 → temple-0.10.4}/lib/temple/exceptions.rb +0 -0
  271. /data/bundle/ruby/3.2.0/gems/{temple-0.10.3 → temple-0.10.4}/lib/temple/filter.rb +0 -0
  272. /data/bundle/ruby/3.2.0/gems/{temple-0.10.3 → temple-0.10.4}/lib/temple/filters/ambles.rb +0 -0
  273. /data/bundle/ruby/3.2.0/gems/{temple-0.10.3 → temple-0.10.4}/lib/temple/filters/code_merger.rb +0 -0
  274. /data/bundle/ruby/3.2.0/gems/{temple-0.10.3 → temple-0.10.4}/lib/temple/filters/control_flow.rb +0 -0
  275. /data/bundle/ruby/3.2.0/gems/{temple-0.10.3 → temple-0.10.4}/lib/temple/filters/dynamic_inliner.rb +0 -0
  276. /data/bundle/ruby/3.2.0/gems/{temple-0.10.3 → temple-0.10.4}/lib/temple/filters/dynamic_merger.rb +0 -0
  277. /data/bundle/ruby/3.2.0/gems/{temple-0.10.3 → temple-0.10.4}/lib/temple/filters/eraser.rb +0 -0
  278. /data/bundle/ruby/3.2.0/gems/{temple-0.10.3 → temple-0.10.4}/lib/temple/filters/escapable.rb +0 -0
  279. /data/bundle/ruby/3.2.0/gems/{temple-0.10.3 → temple-0.10.4}/lib/temple/filters/multi_flattener.rb +0 -0
  280. /data/bundle/ruby/3.2.0/gems/{temple-0.10.3 → temple-0.10.4}/lib/temple/filters/remove_bom.rb +0 -0
  281. /data/bundle/ruby/3.2.0/gems/{temple-0.10.3 → temple-0.10.4}/lib/temple/filters/static_analyzer.rb +0 -0
  282. /data/bundle/ruby/3.2.0/gems/{temple-0.10.3 → temple-0.10.4}/lib/temple/filters/static_merger.rb +0 -0
  283. /data/bundle/ruby/3.2.0/gems/{temple-0.10.3 → temple-0.10.4}/lib/temple/filters/string_splitter.rb +0 -0
  284. /data/bundle/ruby/3.2.0/gems/{temple-0.10.3 → temple-0.10.4}/lib/temple/filters/validator.rb +0 -0
  285. /data/bundle/ruby/3.2.0/gems/{temple-0.10.3 → temple-0.10.4}/lib/temple/generator.rb +0 -0
  286. /data/bundle/ruby/3.2.0/gems/{temple-0.10.3 → temple-0.10.4}/lib/temple/generators/array.rb +0 -0
  287. /data/bundle/ruby/3.2.0/gems/{temple-0.10.3 → temple-0.10.4}/lib/temple/generators/array_buffer.rb +0 -0
  288. /data/bundle/ruby/3.2.0/gems/{temple-0.10.3 → temple-0.10.4}/lib/temple/generators/erb.rb +0 -0
  289. /data/bundle/ruby/3.2.0/gems/{temple-0.10.3 → temple-0.10.4}/lib/temple/generators/rails_output_buffer.rb +0 -0
  290. /data/bundle/ruby/3.2.0/gems/{temple-0.10.3 → temple-0.10.4}/lib/temple/generators/string_buffer.rb +0 -0
  291. /data/bundle/ruby/3.2.0/gems/{temple-0.10.3 → temple-0.10.4}/lib/temple/grammar.rb +0 -0
  292. /data/bundle/ruby/3.2.0/gems/{temple-0.10.3 → temple-0.10.4}/lib/temple/html/attribute_merger.rb +0 -0
  293. /data/bundle/ruby/3.2.0/gems/{temple-0.10.3 → temple-0.10.4}/lib/temple/html/attribute_remover.rb +0 -0
  294. /data/bundle/ruby/3.2.0/gems/{temple-0.10.3 → temple-0.10.4}/lib/temple/html/attribute_sorter.rb +0 -0
  295. /data/bundle/ruby/3.2.0/gems/{temple-0.10.3 → temple-0.10.4}/lib/temple/html/dispatcher.rb +0 -0
  296. /data/bundle/ruby/3.2.0/gems/{temple-0.10.3 → temple-0.10.4}/lib/temple/html/fast.rb +0 -0
  297. /data/bundle/ruby/3.2.0/gems/{temple-0.10.3 → temple-0.10.4}/lib/temple/html/filter.rb +0 -0
  298. /data/bundle/ruby/3.2.0/gems/{temple-0.10.3 → temple-0.10.4}/lib/temple/html/pretty.rb +0 -0
  299. /data/bundle/ruby/3.2.0/gems/{temple-0.10.3 → temple-0.10.4}/lib/temple/html/safe.rb +0 -0
  300. /data/bundle/ruby/3.2.0/gems/{temple-0.10.3 → temple-0.10.4}/lib/temple/map.rb +0 -0
  301. /data/bundle/ruby/3.2.0/gems/{temple-0.10.3 → temple-0.10.4}/lib/temple/mixins/dispatcher.rb +0 -0
  302. /data/bundle/ruby/3.2.0/gems/{temple-0.10.3 → temple-0.10.4}/lib/temple/mixins/engine_dsl.rb +0 -0
  303. /data/bundle/ruby/3.2.0/gems/{temple-0.10.3 → temple-0.10.4}/lib/temple/mixins/grammar_dsl.rb +0 -0
  304. /data/bundle/ruby/3.2.0/gems/{temple-0.10.3 → temple-0.10.4}/lib/temple/mixins/options.rb +0 -0
  305. /data/bundle/ruby/3.2.0/gems/{temple-0.10.3 → temple-0.10.4}/lib/temple/mixins/template.rb +0 -0
  306. /data/bundle/ruby/3.2.0/gems/{temple-0.10.3 → temple-0.10.4}/lib/temple/parser.rb +0 -0
  307. /data/bundle/ruby/3.2.0/gems/{temple-0.10.3 → temple-0.10.4}/lib/temple/static_analyzer.rb +0 -0
  308. /data/bundle/ruby/3.2.0/gems/{temple-0.10.3 → temple-0.10.4}/lib/temple/templates/rails.rb +0 -0
  309. /data/bundle/ruby/3.2.0/gems/{temple-0.10.3 → temple-0.10.4}/lib/temple/templates/tilt.rb +0 -0
  310. /data/bundle/ruby/3.2.0/gems/{temple-0.10.3 → temple-0.10.4}/lib/temple/templates.rb +0 -0
  311. /data/bundle/ruby/3.2.0/gems/{temple-0.10.3 → temple-0.10.4}/lib/temple/utils.rb +0 -0
  312. /data/bundle/ruby/3.2.0/gems/{temple-0.10.3 → temple-0.10.4}/lib/temple.rb +0 -0
  313. /data/bundle/ruby/3.2.0/gems/{temple-0.10.3 → temple-0.10.4}/temple.gemspec +0 -0
  314. /data/bundle/ruby/3.2.0/gems/{unicode-display_width-3.1.4 → unicode-display_width-3.2.0}/MIT-LICENSE.txt +0 -0
  315. /data/bundle/ruby/3.2.0/gems/{unicode-display_width-3.1.4 → unicode-display_width-3.2.0}/lib/unicode/display_width/index.rb +0 -0
  316. /data/bundle/ruby/3.2.0/gems/{unicode-display_width-3.1.4 → unicode-display_width-3.2.0}/lib/unicode/display_width/no_string_ext.rb +0 -0
  317. /data/bundle/ruby/3.2.0/gems/{unicode-display_width-3.1.4 → unicode-display_width-3.2.0}/lib/unicode/display_width/reline_ext.rb +0 -0
  318. /data/bundle/ruby/3.2.0/gems/{unicode-display_width-3.1.4 → unicode-display_width-3.2.0}/lib/unicode/display_width/string_ext.rb +0 -0
  319. /data/bundle/ruby/3.2.0/gems/{unicode-display_width-3.1.4 → unicode-display_width-3.2.0}/lib/unicode/display_width.rb +0 -0
  320. /data/bundle/ruby/3.2.0/gems/{unicode-emoji-4.0.4 → unicode-emoji-4.2.0}/CODE_OF_CONDUCT.md +0 -0
  321. /data/bundle/ruby/3.2.0/gems/{unicode-emoji-4.0.4 → unicode-emoji-4.2.0}/MIT-LICENSE.txt +0 -0
  322. /data/bundle/ruby/3.2.0/gems/{unicode-emoji-4.0.4 → unicode-emoji-4.2.0}/data/generate_constants.rb +0 -0
  323. /data/bundle/ruby/3.2.0/gems/{unicode-emoji-4.0.4 → unicode-emoji-4.2.0}/lib/unicode/emoji/generated/regex_emoji_keycap.rb +0 -0
  324. /data/bundle/ruby/3.2.0/gems/{unicode-emoji-4.0.4 → unicode-emoji-4.2.0}/lib/unicode/emoji/generated/regex_prop_component.rb +0 -0
  325. /data/bundle/ruby/3.2.0/gems/{unicode-emoji-4.0.4 → unicode-emoji-4.2.0}/lib/unicode/emoji/generated/regex_prop_modifier.rb +0 -0
  326. /data/bundle/ruby/3.2.0/gems/{unicode-emoji-4.0.4 → unicode-emoji-4.2.0}/lib/unicode/emoji/generated/regex_prop_modifier_base.rb +0 -0
  327. /data/bundle/ruby/3.2.0/gems/{unicode-emoji-4.0.4 → unicode-emoji-4.2.0}/lib/unicode/emoji/generated/regex_text_presentation.rb +0 -0
  328. /data/bundle/ruby/3.2.0/gems/{unicode-emoji-4.0.4 → unicode-emoji-4.2.0}/lib/unicode/emoji/generated_native/regex_basic.rb +0 -0
  329. /data/bundle/ruby/3.2.0/gems/{unicode-emoji-4.0.4 → unicode-emoji-4.2.0}/lib/unicode/emoji/generated_native/regex_emoji_keycap.rb +0 -0
  330. /data/bundle/ruby/3.2.0/gems/{unicode-emoji-4.0.4 → unicode-emoji-4.2.0}/lib/unicode/emoji/generated_native/regex_picto.rb +0 -0
  331. /data/bundle/ruby/3.2.0/gems/{unicode-emoji-4.0.4 → unicode-emoji-4.2.0}/lib/unicode/emoji/generated_native/regex_picto_no_emoji.rb +0 -0
  332. /data/bundle/ruby/3.2.0/gems/{unicode-emoji-4.0.4 → unicode-emoji-4.2.0}/lib/unicode/emoji/generated_native/regex_possible.rb +0 -0
  333. /data/bundle/ruby/3.2.0/gems/{unicode-emoji-4.0.4 → unicode-emoji-4.2.0}/lib/unicode/emoji/generated_native/regex_prop_component.rb +0 -0
  334. /data/bundle/ruby/3.2.0/gems/{unicode-emoji-4.0.4 → unicode-emoji-4.2.0}/lib/unicode/emoji/generated_native/regex_prop_emoji.rb +0 -0
  335. /data/bundle/ruby/3.2.0/gems/{unicode-emoji-4.0.4 → unicode-emoji-4.2.0}/lib/unicode/emoji/generated_native/regex_prop_modifier.rb +0 -0
  336. /data/bundle/ruby/3.2.0/gems/{unicode-emoji-4.0.4 → unicode-emoji-4.2.0}/lib/unicode/emoji/generated_native/regex_prop_modifier_base.rb +0 -0
  337. /data/bundle/ruby/3.2.0/gems/{unicode-emoji-4.0.4 → unicode-emoji-4.2.0}/lib/unicode/emoji/generated_native/regex_prop_presentation.rb +0 -0
  338. /data/bundle/ruby/3.2.0/gems/{unicode-emoji-4.0.4 → unicode-emoji-4.2.0}/lib/unicode/emoji/generated_native/regex_text.rb +0 -0
  339. /data/bundle/ruby/3.2.0/gems/{unicode-emoji-4.0.4 → unicode-emoji-4.2.0}/lib/unicode/emoji/generated_native/regex_text_presentation.rb +0 -0
  340. /data/bundle/ruby/3.2.0/gems/{unicode-emoji-4.0.4 → unicode-emoji-4.2.0}/lib/unicode/emoji/generated_native/regex_valid.rb +0 -0
  341. /data/bundle/ruby/3.2.0/gems/{unicode-emoji-4.0.4 → unicode-emoji-4.2.0}/lib/unicode/emoji/generated_native/regex_valid_include_text.rb +0 -0
  342. /data/bundle/ruby/3.2.0/gems/{unicode-emoji-4.0.4 → unicode-emoji-4.2.0}/lib/unicode/emoji/generated_native/regex_well_formed.rb +0 -0
  343. /data/bundle/ruby/3.2.0/gems/{unicode-emoji-4.0.4 → unicode-emoji-4.2.0}/lib/unicode/emoji/generated_native/regex_well_formed_include_text.rb +0 -0
  344. /data/bundle/ruby/3.2.0/gems/{unicode-emoji-4.0.4 → unicode-emoji-4.2.0}/lib/unicode/emoji/index.rb +0 -0
  345. /data/bundle/ruby/3.2.0/gems/{unicode-emoji-4.0.4 → unicode-emoji-4.2.0}/lib/unicode/emoji/lazy_constants.rb +0 -0
  346. /data/bundle/ruby/3.2.0/gems/{unicode-emoji-4.0.4 → unicode-emoji-4.2.0}/lib/unicode/emoji/list.rb +0 -0
  347. /data/bundle/ruby/3.2.0/gems/{unicode-emoji-4.0.4 → unicode-emoji-4.2.0}/lib/unicode/emoji.rb +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c51f9be0abe3095685d6aa282d7aef3286701cb7410693a611211c55c65490a9
4
- data.tar.gz: 35e9864b9bb02ee1c546ca0492d64a907d8fc407a78380494c9c7fa106b8ed2f
3
+ metadata.gz: 49ebce7c5b36fd14e30b08390083b297cafca5d188f7b57a50b872c466958479
4
+ data.tar.gz: 6c71f882538ebef7c9802018793032fe10213be7537b9f88465e1390babc12bb
5
5
  SHA512:
6
- metadata.gz: d0bdf041b55f8183bb5eb332a42b8a843930ba0b80070fcd77769bba44e1243d8341694158a2b445748b7363cece61d2489eb1f3db2cd9eb0aeeb703109c67d8
7
- data.tar.gz: ff2f4631ffb5c5429f66a3945583c5d0e9fbb520d4f4d06a7a6c242e8ead51801e19bc1d7ecb339d52a7586228510e9268f952bdb729ea99dff147064140328d
6
+ metadata.gz: c24948824de7bbbb8242acf97bf21c12306e25540cde8510cb292a041573b05309b7db5973caa78e0acda30868d82361e75f6bf1f0c4d8129065b773d4a98917
7
+ data.tar.gz: e312665bc3680ce63f8b9c416bbf77966b8aba5d9666533252e9b4e8540353a01b49261d21281455a601e7becd3f5bbf068cf8b81edad862d910d7479a6f24c6
data/CHANGES.md CHANGED
@@ -1,3 +1,24 @@
1
+ # 7.1.2 - 2025-12-25
2
+
3
+ * Update `ruby_parser` to remove version restriction (Chedli Bourguiba)
4
+ * Raise minimum required Ruby to 3.2.0
5
+ * Use Minitest 6.0
6
+ * Reduce SQL injection false positives from `count` calls
7
+ * Ignore more Haml attribute builder methods
8
+
9
+ # 7.1.1 - 2025-11-03
10
+
11
+ * Fix false positive when calling `with_content` on ViewComponents (Peer Allan)
12
+ * Word wrap text output in pager
13
+ * Consider Tempfile.create.path as safe input (Ali Ismayilov)
14
+ * Exclude directories before searching for files
15
+ * Check each side of `or` SQL arguments
16
+ * Ignore attribute builder in Haml 6
17
+ * Add `FilePath#to_path` for Ruby 3.5 compatibility (S-H-GAMELINKS)
18
+ * Fix SQL injection check for calculate method (Rohan Sharma)
19
+ * Fix missing `td` in HTML report (John Hawthorn)
20
+ * Check for unsafe SQL when two arguments are passed to AR methods (Patrick Brinich-Langlois)
21
+
1
22
  # 7.1.0 - 2025-07-18
2
23
 
3
24
  * Add EOL dates for Rails 8.0 and Ruby 3.4
@@ -7,7 +28,7 @@
7
28
  * Improve ignored warnings layout in HTML report (Sebastien Savater)
8
29
  * Update JUnit report for CircleCI (Philippe Bernery)
9
30
  * Only load escape functionality from cgi library (Earlopain)
10
- * Add `--ensure-no-obsolete-config-entries` option (viralpraxis)
31
+ * Add `--ensure-no-obsolete-ignore-entries` option (viralpraxis)
11
32
 
12
33
  # 7.0.2 - 2025-04-04
13
34
 
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  [![Brakeman Logo](http://brakemanscanner.org/images/logo_medium.png)](http://brakemanscanner.org/)
2
2
 
3
3
  [![Build Status](https://circleci.com/gh/presidentbeef/brakeman.svg?style=svg)](https://circleci.com/gh/presidentbeef/brakeman)
4
- [![Test Coverage](https://api.codeclimate.com/v1/badges/1b08a5c74695cb0d11ec/test_coverage)](https://codeclimate.com/github/presidentbeef/brakeman/test_coverage)
4
+ [![Code Coverage](https://qlty.sh/gh/presidentbeef/projects/brakeman/coverage.svg)](https://qlty.sh/gh/presidentbeef/projects/brakeman)
5
5
 
6
6
  # Brakeman
7
7
 
@@ -65,7 +65,7 @@ Outside of Rails root (note that the output file is relative to path/to/rails/ap
65
65
 
66
66
  Brakeman should work with any version of Rails from 2.3.x to 8.x.
67
67
 
68
- Brakeman can analyze code written with Ruby 2.0 syntax and newer, but requires at least Ruby 3.0.0 to run.
68
+ Brakeman can analyze code written with Ruby 2.0 syntax and newer, but requires at least Ruby 3.2.0 to run.
69
69
 
70
70
  # Basic Options
71
71
 
@@ -75,7 +75,7 @@ To specify an output file for the results:
75
75
 
76
76
  brakeman -o output_file
77
77
 
78
- The output format is determined by the file extension or by using the `-f` option. Current options are: `text`, `html`, `tabs`, `json`, `junit`, `markdown`, `csv`, `codeclimate`, and `sonar`.
78
+ The output format is determined by the file extension or by using the `-f` option. Current options are: `text`, `html`, `tabs`, `json`, `junit`, `markdown`, `csv`, `codeclimate`, `github` and `sonar`.
79
79
 
80
80
  Multiple output files can be specified:
81
81
 
data/bundle/load.rb CHANGED
@@ -1,17 +1,17 @@
1
1
  path = File.expand_path('../..', __FILE__)
2
2
  $:.unshift "#{path}/bundle/ruby/3.2.0/gems/csv-3.3.5/lib"
3
3
  $:.unshift "#{path}/bundle/ruby/3.2.0/gems/erubis-2.7.0/lib"
4
- $:.unshift "#{path}/bundle/ruby/3.2.0/gems/haml-6.3.0/lib"
4
+ $:.unshift "#{path}/bundle/ruby/3.2.0/gems/haml-6.4.0/lib"
5
5
  $:.unshift "#{path}/bundle/ruby/3.2.0/gems/highline-3.1.2/lib"
6
6
  $:.unshift "#{path}/bundle/ruby/3.2.0/gems/parallel-1.27.0/lib"
7
- $:.unshift "#{path}/bundle/ruby/3.2.0/gems/reline-0.6.1/lib"
8
- $:.unshift "#{path}/bundle/ruby/3.2.0/gems/rexml-3.4.1/lib"
7
+ $:.unshift "#{path}/bundle/ruby/3.2.0/gems/reline-0.6.3/lib"
8
+ $:.unshift "#{path}/bundle/ruby/3.2.0/gems/rexml-3.4.4/lib"
9
9
  $:.unshift "#{path}/bundle/ruby/3.2.0/gems/ruby2ruby-2.5.2/lib"
10
- $:.unshift "#{path}/bundle/ruby/3.2.0/gems/ruby_parser-3.20.3/lib"
11
- $:.unshift "#{path}/bundle/ruby/3.2.0/gems/sexp_processor-4.17.3/lib"
10
+ $:.unshift "#{path}/bundle/ruby/3.2.0/gems/ruby_parser-3.22.0/lib"
11
+ $:.unshift "#{path}/bundle/ruby/3.2.0/gems/sexp_processor-4.17.5/lib"
12
12
  $:.unshift "#{path}/bundle/ruby/3.2.0/gems/slim-5.2.1/lib"
13
- $:.unshift "#{path}/bundle/ruby/3.2.0/gems/temple-0.10.3/lib"
13
+ $:.unshift "#{path}/bundle/ruby/3.2.0/gems/temple-0.10.4/lib"
14
14
  $:.unshift "#{path}/bundle/ruby/3.2.0/gems/terminal-table-4.0.0/lib"
15
15
  $:.unshift "#{path}/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib"
16
- $:.unshift "#{path}/bundle/ruby/3.2.0/gems/unicode-display_width-3.1.4/lib"
17
- $:.unshift "#{path}/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib"
16
+ $:.unshift "#{path}/bundle/ruby/3.2.0/gems/unicode-display_width-3.2.0/lib"
17
+ $:.unshift "#{path}/bundle/ruby/3.2.0/gems/unicode-emoji-4.2.0/lib"
@@ -1,5 +1,18 @@
1
1
  # Haml Changelog
2
2
 
3
+ ## 6.4.0
4
+
5
+ * Authorize characters in attribute name for vuejs https://github.com/haml/haml/pull/1172
6
+ * Compile new-style attributes statically https://github.com/haml/haml/pull/1165
7
+ * Remove newlines from template annotation comments https://github.com/haml/haml/pull/1186
8
+ * Fix line numbers within a :ruby filter https://github.com/haml/haml/pull/1166
9
+ * Fix .class + nested class array bug https://github.com/haml/haml/pull/1191
10
+
11
+ ## 6.3.1
12
+
13
+ * Optimize string transformation using `String#tr` https://github.com/haml/haml/pull/1168
14
+ * Provide a Changelog link on rubygems.org https://github.com/haml/haml/pull/1157
15
+
3
16
  ## 6.3.0
4
17
 
5
18
  * Remove `Haml::RailsTemplate#default_format` that was added in v6.1.3 for Turbo [#1152](https://github.com/haml/haml/issues/1152), [#1154](https://github.com/haml/haml/issues/1154) ([discussion](https://github.com/haml/haml/pull/1144#issuecomment-1755088572))
@@ -8,7 +21,6 @@
8
21
  ## 6.2.5
9
22
 
10
23
  * Deprecate `Haml::RailsTemplate#default_format` that was added in v6.1.3 for Turbo ([discussion](https://github.com/haml/haml/pull/1144#issuecomment-1755088572))
11
- * See [the reference](https://github.com/haml/haml/blob/v6.2.5/REFERENCE.md#turbo) for suggested alternatives.
12
24
 
13
25
  ## 6.2.4
14
26
 
@@ -25,3 +25,10 @@ end
25
25
  if RUBY_VERSION < '2.6'
26
26
  gem 'rake-compiler', '< 1.2.4'
27
27
  end
28
+
29
+ # Temporary workaround to ensure Ruby 2.5 and 2.6 can pass tests with Rails 6.1
30
+ # Reference: https://github.com/rails/rails/issues/54260
31
+ # TODO: Remove this workaround when dropping support for Rails versions below 7.1
32
+ if RUBY_VERSION < '2.7'
33
+ gem 'concurrent-ruby', '< 1.3.5'
34
+ end
@@ -4,6 +4,7 @@
4
4
  [![test](https://github.com/haml/haml/actions/workflows/test.yml/badge.svg)](https://github.com/haml/haml/actions/workflows/test.yml)
5
5
  [![Code Climate](https://codeclimate.com/github/haml/haml/badges/gpa.svg)](https://codeclimate.com/github/haml/haml)
6
6
  [![Inline docs](https://inch-ci.org/github/haml/haml.svg)](https://inch-ci.org/github/haml/haml)
7
+ [![Discord Server](https://dcbadge.limes.pink/api/server/https://discord.gg/G8dEAwvV2Y)](https://discord.gg/G8dEAwvV2Y)
7
8
 
8
9
  Haml is a templating engine for HTML. It's designed to make it both easier and
9
10
  more pleasant to write HTML documents, by eliminating redundancy, reflecting the
@@ -105,7 +105,7 @@ set :haml, { escape_html: false }
105
105
  ```
106
106
 
107
107
  Finally, you can also set them by passing an options hash to `Haml::Engine.new` or `Haml::Template.new`.
108
- For the complete list of available options, please see `Haml::Engine`.
108
+ For the complete list of available options, please see [`Haml::Engine`](https://github.com/haml/haml/blob/main/lib/haml/engine.rb).
109
109
 
110
110
  ## Plain Text
111
111
 
@@ -320,7 +320,7 @@ or using `true` and `false`:
320
320
  %input(selected=true)
321
321
 
322
322
  This feature works only for attributes that are included in
323
- [`Haml::AttributeBuilder::BOOLEAN_ATTRIBUTES`](https://github.com/haml/haml/blob/main/lib/haml/attribute_builder.rb#L5),
323
+ [`Haml::BOOLEAN_ATTRIBUTES`](https://github.com/haml/haml/blob/main/lib/haml/attribute_compiler.rb#L8),
324
324
  as well as `data-` and `aria-` attributes.
325
325
 
326
326
  %input{'data-hidden' => false}
@@ -360,13 +360,6 @@ will render as:
360
360
 
361
361
  <a data-author-id='123' data-category='7' href='/posts'>Posts By Author</a>
362
362
 
363
- Notice that the underscore in `author_id` was replaced with a hyphen. If you wish
364
- to suppress this behavior, you can set Haml's
365
- {Haml::Options#hyphenate_data_attrs `:hyphenate_data_attrs` option} to `false`,
366
- and the output will be rendered as:
367
-
368
- <a data-author_id='123' data-category='7' href='/posts'>Posts By Author</a>
369
-
370
363
  This expansion of hashes is recursive – any value of the child hash that is
371
364
  itself a hash will create an attribute for each entry, with the attribute name
372
365
  prefixed with all ancestor keys. For example:
@@ -568,7 +561,7 @@ prefix for both the id and class attributes. For example:
568
561
  # file: app/controllers/users_controller.rb
569
562
 
570
563
  def show
571
- @user = CrazyUser.find(15)
564
+ @user = FriendlyUser.find(15)
572
565
  end
573
566
 
574
567
  -# file: app/views/users/show.haml
@@ -579,7 +572,7 @@ prefix for both the id and class attributes. For example:
579
572
 
580
573
  is compiled to:
581
574
 
582
- <div class='greeting_crazy_user' id='greeting_crazy_user_15'>
575
+ <div class='greeting_friendly_user' id='greeting_friendly_user_15'>
583
576
  <bar class='fixnum' id='fixnum_581' />
584
577
  Hello!
585
578
  </div>
@@ -587,11 +580,11 @@ is compiled to:
587
580
  If you require that the class be something other than the underscored object's
588
581
  class, you can implement the `haml_object_ref` method on the object.
589
582
 
590
- # file: app/models/crazy_user.rb
583
+ # file: app/models/friendly_user.rb
591
584
 
592
- class CrazyUser < ActiveRecord::Base
585
+ class FriendlyUser < ActiveRecord::Base
593
586
  def haml_object_ref
594
- "a_crazy_user"
587
+ "a_friendly_user"
595
588
  end
596
589
  end
597
590
 
@@ -602,7 +595,7 @@ class, you can implement the `haml_object_ref` method on the object.
602
595
 
603
596
  is compiled to:
604
597
 
605
- <div class='a_crazy_user' id='a_crazy_user_15'>
598
+ <div class='a_friendly_user' id='a_friendly_user_15'>
606
599
  Hello!
607
600
  </div>
608
601
 
@@ -1298,7 +1291,7 @@ Blocks of literal text can be preserved using the [`:preserve` filter](#preserve
1298
1291
 
1299
1292
  ## Turbo
1300
1293
 
1301
- For people using Turbo-rails and Haml 6+ need to either:
1294
+ For people using Turbo-rails need to either:
1302
1295
  * follow the naming convention with the html format (ie. ensure any `.haml` files end `.html.haml`), or
1303
1296
  * add a monkey patch as follows:
1304
1297
 
@@ -21,6 +21,8 @@ Gem::Specification.new do |spec|
21
21
 
22
22
  spec.metadata = { 'rubygems_mfa_required' => 'true' }
23
23
 
24
+ spec.metadata["changelog_uri"] = spec.homepage + "/blob/main/CHANGELOG.md"
25
+
24
26
  spec.required_ruby_version = '>= 2.1.0'
25
27
 
26
28
  spec.add_dependency 'temple', '>= 0.8.2'
@@ -54,7 +54,7 @@ module Haml::AttributeBuilder
54
54
  when value.is_a?(String)
55
55
  classes += value.split(' ')
56
56
  when value.is_a?(Array)
57
- classes += value.select { |v| v }
57
+ classes += value.flatten.select { |v| v }
58
58
  when value
59
59
  classes << value.to_s
60
60
  end
@@ -105,7 +105,7 @@ module Haml::AttributeBuilder
105
105
  if k.nil?
106
106
  flattened[key] = v
107
107
  else
108
- flattened["#{key}-#{k.to_s.gsub(/_/, '-')}"] = v
108
+ flattened["#{key}-#{k.to_s.tr('_', '-')}"] = v
109
109
  end
110
110
  end
111
111
  else
@@ -98,7 +98,7 @@ module Haml
98
98
  def compile_boolean!(temple, key, values)
99
99
  exp = literal_for(values.last)
100
100
 
101
- if Temple::StaticAnalyzer.static?(exp)
101
+ if values.last.first == :static || Temple::StaticAnalyzer.static?(exp)
102
102
  value = eval(exp)
103
103
  case value
104
104
  when true then temple << [:html, :attr, key, @format == :xhtml ? [:static, key] : [:multi]]
@@ -7,7 +7,7 @@ module Haml
7
7
  def compile(node)
8
8
  text = node.value[:text]
9
9
  text = text.rstrip unless ::Haml::Util.contains_interpolation?(text) # for compatibility
10
- [:multi, *compile_plain(text)]
10
+ [:multi, [:newline], *compile_plain(text)]
11
11
  end
12
12
 
13
13
  private
@@ -3,7 +3,7 @@ module Haml
3
3
  class Filters
4
4
  class Ruby < Base
5
5
  def compile(node)
6
- [:code, node.value[:text]]
6
+ [:multi, [:newline], [:code, node.value[:text]]]
7
7
  end
8
8
  end
9
9
  end
@@ -749,7 +749,7 @@ module Haml
749
749
  end
750
750
 
751
751
  def parse_new_attribute(scanner)
752
- unless (name = scanner.scan(/[-:\w]+/))
752
+ unless (name = scanner.scan(/[-:@#\w\.]+/))
753
753
  return if scanner.scan(/\)/)
754
754
  return false
755
755
  end
@@ -40,8 +40,8 @@ module Haml
40
40
 
41
41
  if ActionView::Base.try(:annotate_rendered_view_with_filenames) && template.format == :html
42
42
  options = options.merge(
43
- preamble: "<!-- BEGIN #{template.short_identifier} -->\n",
44
- postamble: "<!-- END #{template.short_identifier} -->\n",
43
+ preamble: "<!-- BEGIN #{template.short_identifier} -->",
44
+ postamble: "<!-- END #{template.short_identifier} -->",
45
45
  )
46
46
  end
47
47
 
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module Haml
3
- VERSION = '6.3.0'
3
+ VERSION = '6.4.0'
4
4
  end
@@ -177,6 +177,11 @@ class Reline::Config
177
177
  if_stack = []
178
178
 
179
179
  lines.each_with_index do |line, no|
180
+ # Even after encoding conversion, we need to verify the encoding is valid
181
+ # as some invalid byte sequences might pass through the conversion.
182
+ unless line.valid_encoding?
183
+ raise InvalidInputrc, "#{file}:#{no + 1}: can't be converted to the locale #{Reline.encoding_system_needs.name}"
184
+ end
180
185
  next if line.match(/\A\s*#/)
181
186
 
182
187
  no += 1
@@ -124,6 +124,10 @@ class Reline::ANSI < Reline::IO
124
124
  Reline.core.line_editor.handle_signal
125
125
  end
126
126
  c = @input.getbyte
127
+
128
+ # When "Escape non-ASCII Input with Control-V" is enabled in macOS Terminal.app,
129
+ # all non-ascii bytes are automatically escaped with `C-v`.
130
+ # "\xE3\x81\x82" (U+3042) becomes "\x16\xE3\x16\x81\x16\x82".
127
131
  (c == 0x16 && @input.tty? && @input.raw(min: 0, time: 0, &:getbyte)) || c
128
132
  rescue Errno::EIO
129
133
  # Maybe the I/O has been closed.
@@ -163,31 +167,20 @@ class Reline::ANSI < Reline::IO
163
167
  @buf.unshift(c)
164
168
  end
165
169
 
166
- def retrieve_keybuffer
167
- begin
168
- return unless @input.wait_readable(0.001)
169
- str = @input.read_nonblock(1024)
170
- str.bytes.each do |c|
171
- @buf.push(c)
172
- end
173
- rescue EOFError
174
- end
175
- end
176
-
177
170
  def get_screen_size
178
171
  s = @input.winsize
179
172
  return s if s[0] > 0 && s[1] > 0
180
173
  s = [ENV["LINES"].to_i, ENV["COLUMNS"].to_i]
181
174
  return s if s[0] > 0 && s[1] > 0
182
175
  [24, 80]
183
- rescue Errno::ENOTTY, Errno::ENODEV
176
+ rescue SystemCallError
184
177
  [24, 80]
185
178
  end
186
179
 
187
180
  def set_screen_size(rows, columns)
188
181
  @input.winsize = [rows, columns]
189
182
  self
190
- rescue Errno::ENOTTY, Errno::ENODEV
183
+ rescue SystemCallError
191
184
  self
192
185
  end
193
186
 
@@ -295,7 +288,7 @@ class Reline::ANSI < Reline::IO
295
288
  # Signal.trap may raise an ArgumentError if the platform doesn't support the signal.
296
289
  end
297
290
 
298
- def read_single_char(keyseq_timeout)
291
+ def read_single_char(timeout_second)
299
292
  # Disable intr to read `C-c` `C-z` `C-\` for quoted insert
300
293
  @input.raw(intr: false) do
301
294
  super
@@ -305,7 +298,6 @@ class Reline::ANSI < Reline::IO
305
298
  def prep
306
299
  # Enable bracketed paste
307
300
  write "\e[?2004h" if Reline.core.config.enable_bracketed_paste && both_tty?
308
- retrieve_keybuffer
309
301
  nil
310
302
  end
311
303
 
@@ -37,10 +37,10 @@ module Reline
37
37
  end
38
38
 
39
39
  # Read a single encoding valid character from the input.
40
- def read_single_char(keyseq_timeout)
40
+ def read_single_char(timeout_second)
41
41
  buffer = String.new(encoding: Encoding::ASCII_8BIT)
42
42
  loop do
43
- timeout = buffer.empty? ? Float::INFINITY : keyseq_timeout
43
+ timeout = buffer.empty? ? Float::INFINITY : timeout_second
44
44
  c = getc(timeout)
45
45
  return unless c
46
46
 
@@ -377,11 +377,11 @@ module Reline::KeyActor
377
377
  # 187 M-;
378
378
  nil,
379
379
  # 188 M-<
380
- nil,
380
+ :beginning_of_history,
381
381
  # 189 M-=
382
382
  nil,
383
383
  # 190 M->
384
- nil,
384
+ :end_of_history,
385
385
  # 191 M-?
386
386
  nil,
387
387
  # 192 M-@
@@ -470,14 +470,6 @@ class Reline::LineEditor
470
470
  end
471
471
  end
472
472
 
473
- def print_nomultiline_prompt
474
- Reline::IOGate.disable_auto_linewrap(true) if Reline::IOGate.win?
475
- # Readline's test `TestRelineAsReadline#test_readline` requires first output to be prompt, not cursor reset escape sequence.
476
- Reline::IOGate.write Reline::Unicode.strip_non_printing_start_end(@prompt) if @prompt && !@is_multiline
477
- ensure
478
- Reline::IOGate.disable_auto_linewrap(false) if Reline::IOGate.win?
479
- end
480
-
481
473
  def render
482
474
  wrapped_cursor_x, wrapped_cursor_y = wrapped_cursor_position
483
475
  new_lines = wrapped_prompt_and_input_lines.flatten(1)[screen_scroll_top, screen_height].map do |prompt, line|
@@ -956,7 +948,7 @@ class Reline::LineEditor
956
948
 
957
949
  def wrap_method_call(method_symbol, key, with_operator)
958
950
  if @waiting_proc
959
- @waiting_proc.call(key)
951
+ @waiting_proc.call(key, method_symbol)
960
952
  return
961
953
  end
962
954
 
@@ -1442,21 +1434,24 @@ class Reline::LineEditor
1442
1434
  end
1443
1435
  alias_method :end_of_line, :ed_move_to_end
1444
1436
 
1445
- private def generate_searcher(search_key)
1437
+ private def generate_searcher(direction)
1446
1438
  search_word = String.new(encoding: encoding)
1447
1439
  hit_pointer = nil
1448
- lambda do |key|
1440
+ lambda do |key, key_symbol|
1449
1441
  search_again = false
1450
- case key
1451
- when "\C-h", "\C-?"
1442
+ case key_symbol
1443
+ when :em_delete_prev_char, :backward_delete_char
1452
1444
  grapheme_clusters = search_word.grapheme_clusters
1453
1445
  if grapheme_clusters.size > 0
1454
1446
  grapheme_clusters.pop
1455
1447
  search_word = grapheme_clusters.join
1456
1448
  end
1457
- when "\C-r", "\C-s"
1458
- search_again = true if search_key == key
1459
- search_key = key
1449
+ when :reverse_search_history, :vi_search_prev
1450
+ search_again = direction == :reverse
1451
+ direction = :reverse
1452
+ when :forward_search_history, :vi_search_next
1453
+ search_again = direction == :forward
1454
+ direction = :forward
1460
1455
  else
1461
1456
  search_word << key
1462
1457
  end
@@ -1470,11 +1465,11 @@ class Reline::LineEditor
1470
1465
  search_word = Reline.last_incremental_search
1471
1466
  end
1472
1467
  if @history_pointer
1473
- case search_key
1474
- when "\C-r"
1468
+ case direction
1469
+ when :reverse
1475
1470
  history_pointer_base = 0
1476
1471
  history = Reline::HISTORY[0..(@history_pointer - 1)]
1477
- when "\C-s"
1472
+ when :forward
1478
1473
  history_pointer_base = @history_pointer + 1
1479
1474
  history = Reline::HISTORY[(@history_pointer + 1)..-1]
1480
1475
  end
@@ -1483,11 +1478,11 @@ class Reline::LineEditor
1483
1478
  history = Reline::HISTORY
1484
1479
  end
1485
1480
  elsif @history_pointer
1486
- case search_key
1487
- when "\C-r"
1481
+ case direction
1482
+ when :reverse
1488
1483
  history_pointer_base = 0
1489
1484
  history = Reline::HISTORY[0..@history_pointer]
1490
- when "\C-s"
1485
+ when :forward
1491
1486
  history_pointer_base = @history_pointer
1492
1487
  history = Reline::HISTORY[@history_pointer..-1]
1493
1488
  end
@@ -1495,12 +1490,12 @@ class Reline::LineEditor
1495
1490
  history_pointer_base = 0
1496
1491
  history = Reline::HISTORY
1497
1492
  end
1498
- case search_key
1499
- when "\C-r"
1493
+ case direction
1494
+ when :reverse
1500
1495
  hit_index = history.rindex { |item|
1501
1496
  item.include?(search_word)
1502
1497
  }
1503
- when "\C-s"
1498
+ when :forward
1504
1499
  hit_index = history.index { |item|
1505
1500
  item.include?(search_word)
1506
1501
  }
@@ -1510,31 +1505,28 @@ class Reline::LineEditor
1510
1505
  hit = Reline::HISTORY[hit_pointer]
1511
1506
  end
1512
1507
  end
1513
- case search_key
1514
- when "\C-r"
1515
- prompt_name = 'reverse-i-search'
1516
- when "\C-s"
1517
- prompt_name = 'i-search'
1518
- end
1508
+ prompt_name = direction == :forward ? 'i-search' : 'reverse-i-search'
1519
1509
  prompt_name = "failed #{prompt_name}" unless hit
1520
1510
  [search_word, prompt_name, hit_pointer]
1521
1511
  end
1522
1512
  end
1523
1513
 
1524
- private def incremental_search_history(key)
1514
+ private def incremental_search_history(direction)
1525
1515
  backup = @buffer_of_lines.dup, @line_index, @byte_pointer, @history_pointer, @line_backup_in_history
1526
- searcher = generate_searcher(key)
1527
- @searching_prompt = "(reverse-i-search)`': "
1516
+ searcher = generate_searcher(direction)
1517
+ prompt_name = direction == :forward ? 'i-search' : 'reverse-i-search'
1518
+ @searching_prompt = "(#{prompt_name})`': "
1528
1519
  termination_keys = ["\C-j"]
1529
1520
  termination_keys.concat(@config.isearch_terminators.chars) if @config.isearch_terminators
1530
- @waiting_proc = ->(k) {
1521
+ accept_key_syms = [:em_delete_prev_char, :backward_delete_char, :vi_search_prev, :vi_search_next, :reverse_search_history, :forward_search_history]
1522
+ @waiting_proc = ->(k, key_symbol) {
1531
1523
  if k == "\C-g"
1532
1524
  # cancel search and restore buffer
1533
1525
  @buffer_of_lines, @line_index, @byte_pointer, @history_pointer, @line_backup_in_history = backup
1534
1526
  @searching_prompt = nil
1535
1527
  @waiting_proc = nil
1536
- elsif !termination_keys.include?(k) && (k.match?(/[[:print:]]/) || k == "\C-h" || k == "\C-?" || k == "\C-r" || k == "\C-s")
1537
- search_word, prompt_name, hit_pointer = searcher.call(k)
1528
+ elsif !termination_keys.include?(k) && (k.match?(/[[:print:]]/) || accept_key_syms.include?(key_symbol))
1529
+ search_word, prompt_name, hit_pointer = searcher.call(k, key_symbol)
1538
1530
  Reline.last_incremental_search = search_word
1539
1531
  @searching_prompt = "(%s)`%s'" % [prompt_name, search_word]
1540
1532
  @searching_prompt += ': ' unless @is_multiline
@@ -1549,12 +1541,12 @@ class Reline::LineEditor
1549
1541
  end
1550
1542
 
1551
1543
  private def vi_search_prev(key)
1552
- incremental_search_history(key)
1544
+ incremental_search_history(:reverse)
1553
1545
  end
1554
1546
  alias_method :reverse_search_history, :vi_search_prev
1555
1547
 
1556
1548
  private def vi_search_next(key)
1557
- incremental_search_history(key)
1549
+ incremental_search_history(:forward)
1558
1550
  end
1559
1551
  alias_method :forward_search_history, :vi_search_next
1560
1552
 
@@ -1654,6 +1646,16 @@ class Reline::LineEditor
1654
1646
  end
1655
1647
  alias_method :next_history, :ed_next_history
1656
1648
 
1649
+ private def ed_beginning_of_history(key)
1650
+ move_history(0, line: :end, cursor: :end)
1651
+ end
1652
+ alias_method :beginning_of_history, :ed_beginning_of_history
1653
+
1654
+ private def ed_end_of_history(key)
1655
+ move_history(Reline::HISTORY.size, line: :end, cursor: :end)
1656
+ end
1657
+ alias_method :end_of_history, :ed_end_of_history
1658
+
1657
1659
  private def ed_newline(key)
1658
1660
  process_insert(force: true)
1659
1661
  if @is_multiline
@@ -2180,7 +2182,7 @@ class Reline::LineEditor
2180
2182
  end
2181
2183
 
2182
2184
  private def vi_replace_char(key, arg: 1)
2183
- @waiting_proc = ->(k) {
2185
+ @waiting_proc = ->(k, _sym) {
2184
2186
  if arg == 1
2185
2187
  byte_size = Reline::Unicode.get_next_mbchar_size(current_line, @byte_pointer)
2186
2188
  before = current_line.byteslice(0, @byte_pointer)
@@ -2204,11 +2206,11 @@ class Reline::LineEditor
2204
2206
  end
2205
2207
 
2206
2208
  private def vi_next_char(key, arg: 1, inclusive: false)
2207
- @waiting_proc = ->(key_for_proc) { search_next_char(key_for_proc, arg, inclusive: inclusive) }
2209
+ @waiting_proc = ->(key_for_proc, _sym) { search_next_char(key_for_proc, arg, inclusive: inclusive) }
2208
2210
  end
2209
2211
 
2210
2212
  private def vi_to_next_char(key, arg: 1, inclusive: false)
2211
- @waiting_proc = ->(key_for_proc) { search_next_char(key_for_proc, arg, need_prev_char: true, inclusive: inclusive) }
2213
+ @waiting_proc = ->(key_for_proc, _sym) { search_next_char(key_for_proc, arg, need_prev_char: true, inclusive: inclusive) }
2212
2214
  end
2213
2215
 
2214
2216
  private def search_next_char(key, arg, need_prev_char: false, inclusive: false)
@@ -2251,11 +2253,11 @@ class Reline::LineEditor
2251
2253
  end
2252
2254
 
2253
2255
  private def vi_prev_char(key, arg: 1)
2254
- @waiting_proc = ->(key_for_proc) { search_prev_char(key_for_proc, arg) }
2256
+ @waiting_proc = ->(key_for_proc, _sym) { search_prev_char(key_for_proc, arg) }
2255
2257
  end
2256
2258
 
2257
2259
  private def vi_to_prev_char(key, arg: 1)
2258
- @waiting_proc = ->(key_for_proc) { search_prev_char(key_for_proc, arg, true) }
2260
+ @waiting_proc = ->(key_for_proc, _sym) { search_prev_char(key_for_proc, arg, true) }
2259
2261
  end
2260
2262
 
2261
2263
  private def search_prev_char(key, arg, need_next_char = false)