brakeman 6.1.2 → 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 (617) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES.md +65 -0
  3. data/README.md +6 -3
  4. data/bundle/load.rb +16 -13
  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.3.0/gems/haml-5.2.2 → 3.2.0/gems/haml-6.3.0}/CHANGELOG.md +168 -4
  19. data/bundle/ruby/{3.3.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.3.0/gems/haml-5.2.2 → 3.2.0/gems/haml-6.3.0}/MIT-LICENSE +1 -1
  22. data/bundle/ruby/{3.3.0/gems/haml-5.2.2 → 3.2.0/gems/haml-6.3.0}/README.md +22 -34
  23. data/bundle/ruby/{3.3.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.3.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.3.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.3.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.3.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.3.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.3.0/gems/highline-3.0.1 → 3.2.0/gems/highline-3.1.2}/Changelog.md +14 -0
  78. data/bundle/ruby/{3.3.0/gems/highline-3.0.1 → 3.2.0/gems/highline-3.1.2}/Gemfile +2 -0
  79. data/bundle/ruby/{3.3.0/gems/highline-3.0.1 → 3.2.0/gems/highline-3.1.2}/README.md +3 -0
  80. data/bundle/ruby/{3.3.0/gems/highline-3.0.1 → 3.2.0/gems/highline-3.1.2}/highline.gemspec +4 -1
  81. data/bundle/ruby/{3.3.0/gems/highline-3.0.1 → 3.2.0/gems/highline-3.1.2}/lib/highline/list_renderer.rb +2 -2
  82. data/bundle/ruby/{3.3.0/gems/highline-3.0.1 → 3.2.0/gems/highline-3.1.2}/lib/highline/menu.rb +7 -5
  83. data/bundle/ruby/{3.3.0/gems/highline-3.0.1 → 3.2.0/gems/highline-3.1.2}/lib/highline/terminal.rb +2 -2
  84. data/bundle/ruby/{3.3.0/gems/highline-3.0.1 → 3.2.0/gems/highline-3.1.2}/lib/highline/version.rb +1 -1
  85. data/bundle/ruby/{3.3.0/gems/highline-3.0.1 → 3.2.0/gems/highline-3.1.2}/lib/highline.rb +26 -13
  86. data/bundle/ruby/3.2.0/gems/parallel-1.27.0/lib/parallel/version.rb +4 -0
  87. data/bundle/ruby/{3.3.0/gems/parallel-1.24.0 → 3.2.0/gems/parallel-1.27.0}/lib/parallel.rb +52 -20
  88. data/bundle/ruby/3.2.0/gems/reline-0.6.1/COPYING +56 -0
  89. data/bundle/ruby/3.2.0/gems/reline-0.6.1/README.md +94 -0
  90. data/bundle/ruby/3.2.0/gems/reline-0.6.1/lib/reline/config.rb +373 -0
  91. data/bundle/ruby/3.2.0/gems/reline-0.6.1/lib/reline/face.rb +199 -0
  92. data/bundle/ruby/3.2.0/gems/reline-0.6.1/lib/reline/history.rb +76 -0
  93. data/bundle/ruby/3.2.0/gems/reline-0.6.1/lib/reline/io/ansi.rb +318 -0
  94. data/bundle/ruby/3.2.0/gems/reline-0.6.1/lib/reline/io/dumb.rb +120 -0
  95. data/bundle/ruby/3.2.0/gems/reline-0.6.1/lib/reline/io/windows.rb +530 -0
  96. data/bundle/ruby/3.2.0/gems/reline-0.6.1/lib/reline/io.rb +55 -0
  97. data/bundle/ruby/3.2.0/gems/reline-0.6.1/lib/reline/key_actor/base.rb +37 -0
  98. data/bundle/ruby/3.2.0/gems/reline-0.6.1/lib/reline/key_actor/composite.rb +17 -0
  99. data/bundle/ruby/3.2.0/gems/reline-0.6.1/lib/reline/key_actor/emacs.rb +517 -0
  100. data/bundle/ruby/3.2.0/gems/reline-0.6.1/lib/reline/key_actor/vi_command.rb +518 -0
  101. data/bundle/ruby/3.2.0/gems/reline-0.6.1/lib/reline/key_actor/vi_insert.rb +517 -0
  102. data/bundle/ruby/3.2.0/gems/reline-0.6.1/lib/reline/key_actor.rb +8 -0
  103. data/bundle/ruby/3.2.0/gems/reline-0.6.1/lib/reline/key_stroke.rb +119 -0
  104. data/bundle/ruby/3.2.0/gems/reline-0.6.1/lib/reline/kill_ring.rb +125 -0
  105. data/bundle/ruby/3.2.0/gems/reline-0.6.1/lib/reline/line_editor.rb +2354 -0
  106. data/bundle/ruby/3.2.0/gems/reline-0.6.1/lib/reline/unicode/east_asian_width.rb +1293 -0
  107. data/bundle/ruby/3.2.0/gems/reline-0.6.1/lib/reline/unicode.rb +415 -0
  108. data/bundle/ruby/3.2.0/gems/reline-0.6.1/lib/reline/version.rb +3 -0
  109. data/bundle/ruby/3.2.0/gems/reline-0.6.1/lib/reline.rb +528 -0
  110. data/bundle/ruby/3.2.0/gems/reline-0.6.1/license_of_rb-readline +25 -0
  111. data/bundle/ruby/3.2.0/gems/rexml-3.4.1/LICENSE.txt +22 -0
  112. data/bundle/ruby/3.2.0/gems/rexml-3.4.1/NEWS.md +699 -0
  113. data/bundle/ruby/{3.3.0/gems/rexml-3.2.6 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/attribute.rb +3 -2
  114. data/bundle/ruby/{3.3.0/gems/rexml-3.2.6 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/document.rb +5 -1
  115. data/bundle/ruby/{3.3.0/gems/rexml-3.2.6 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/element.rb +16 -31
  116. data/bundle/ruby/{3.3.0/gems/rexml-3.2.6 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/entity.rb +9 -48
  117. data/bundle/ruby/{3.3.0/gems/rexml-3.2.6 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/formatters/pretty.rb +1 -1
  118. data/bundle/ruby/{3.3.0/gems/rexml-3.2.6 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/functions.rb +1 -2
  119. data/bundle/ruby/{3.3.0/gems/rexml-3.2.6 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/node.rb +8 -4
  120. data/bundle/ruby/{3.3.0/gems/rexml-3.2.6 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/parseexception.rb +1 -0
  121. data/bundle/ruby/3.2.0/gems/rexml-3.4.1/lib/rexml/parsers/baseparser.rb +887 -0
  122. data/bundle/ruby/{3.3.0/gems/rexml-3.2.6 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/parsers/pullparser.rb +16 -0
  123. data/bundle/ruby/{3.3.0/gems/rexml-3.2.6 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/parsers/sax2parser.rb +16 -19
  124. data/bundle/ruby/{3.3.0/gems/rexml-3.2.6 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/parsers/streamparser.rb +16 -10
  125. data/bundle/ruby/{3.3.0/gems/rexml-3.2.6 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/parsers/treeparser.rb +9 -21
  126. data/bundle/ruby/{3.3.0/gems/rexml-3.2.6 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/rexml.rb +1 -1
  127. data/bundle/ruby/3.2.0/gems/rexml-3.4.1/lib/rexml/source.rb +383 -0
  128. data/bundle/ruby/{3.3.0/gems/rexml-3.2.6 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/text.rb +54 -57
  129. data/bundle/ruby/{3.3.0/gems/rexml-3.2.6 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/xpath_parser.rb +7 -3
  130. data/bundle/ruby/{3.3.0/gems/ruby2ruby-2.4.4 → 3.2.0/gems/ruby2ruby-2.5.2}/History.rdoc +28 -0
  131. data/bundle/ruby/{3.3.0/gems/ruby2ruby-2.4.4 → 3.2.0/gems/ruby2ruby-2.5.2}/lib/ruby2ruby.rb +166 -27
  132. data/bundle/ruby/{3.3.0/gems/sexp_processor-4.17.1 → 3.2.0/gems/sexp_processor-4.17.3}/History.rdoc +12 -0
  133. data/bundle/ruby/{3.3.0/gems/sexp_processor-4.17.1 → 3.2.0/gems/sexp_processor-4.17.3}/lib/sexp.rb +1 -1
  134. data/bundle/ruby/{3.3.0/gems/sexp_processor-4.17.1 → 3.2.0/gems/sexp_processor-4.17.3}/lib/sexp_matcher.rb +1 -1
  135. data/bundle/ruby/{3.3.0/gems/sexp_processor-4.17.1 → 3.2.0/gems/sexp_processor-4.17.3}/lib/sexp_processor.rb +1 -1
  136. data/bundle/ruby/{3.3.0/gems/slim-4.1.0 → 3.2.0/gems/slim-5.2.1}/CHANGES +44 -8
  137. data/bundle/ruby/3.2.0/gems/slim-5.2.1/Gemfile +43 -0
  138. data/bundle/ruby/{3.3.0/gems/slim-4.1.0 → 3.2.0/gems/slim-5.2.1}/LICENSE +1 -1
  139. data/bundle/ruby/{3.3.0/gems/slim-4.1.0 → 3.2.0/gems/slim-5.2.1}/README.jp.md +28 -41
  140. data/bundle/ruby/{3.3.0/gems/slim-4.1.0 → 3.2.0/gems/slim-5.2.1}/README.md +66 -43
  141. data/bundle/ruby/{3.3.0/gems/slim-4.1.0 → 3.2.0/gems/slim-5.2.1}/lib/slim/code_attributes.rb +2 -1
  142. data/bundle/ruby/{3.3.0/gems/slim-4.1.0 → 3.2.0/gems/slim-5.2.1}/lib/slim/command.rb +2 -8
  143. data/bundle/ruby/{3.3.0/gems/slim-4.1.0 → 3.2.0/gems/slim-5.2.1}/lib/slim/controls.rb +1 -0
  144. data/bundle/ruby/{3.3.0/gems/slim-4.1.0 → 3.2.0/gems/slim-5.2.1}/lib/slim/do_inserter.rb +4 -3
  145. data/bundle/ruby/{3.3.0/gems/slim-4.1.0 → 3.2.0/gems/slim-5.2.1}/lib/slim/embedded.rb +17 -17
  146. data/bundle/ruby/{3.3.0/gems/slim-4.1.0 → 3.2.0/gems/slim-5.2.1}/lib/slim/end_inserter.rb +3 -2
  147. data/bundle/ruby/{3.3.0/gems/slim-4.1.0 → 3.2.0/gems/slim-5.2.1}/lib/slim/engine.rb +3 -0
  148. data/bundle/ruby/{3.3.0/gems/slim-4.1.0 → 3.2.0/gems/slim-5.2.1}/lib/slim/erb_converter.rb +1 -0
  149. data/bundle/ruby/{3.3.0/gems/slim-4.1.0 → 3.2.0/gems/slim-5.2.1}/lib/slim/filter.rb +1 -0
  150. data/bundle/ruby/{3.3.0/gems/slim-4.1.0 → 3.2.0/gems/slim-5.2.1}/lib/slim/grammar.rb +1 -0
  151. data/bundle/ruby/{3.3.0/gems/slim-4.1.0 → 3.2.0/gems/slim-5.2.1}/lib/slim/include.rb +1 -0
  152. data/bundle/ruby/{3.3.0/gems/slim-4.1.0 → 3.2.0/gems/slim-5.2.1}/lib/slim/interpolation.rb +1 -0
  153. data/bundle/ruby/{3.3.0/gems/slim-4.1.0 → 3.2.0/gems/slim-5.2.1}/lib/slim/logic_less/context.rb +6 -7
  154. data/bundle/ruby/{3.3.0/gems/slim-4.1.0 → 3.2.0/gems/slim-5.2.1}/lib/slim/logic_less/filter.rb +1 -0
  155. data/bundle/ruby/{3.3.0/gems/slim-4.1.0 → 3.2.0/gems/slim-5.2.1}/lib/slim/logic_less.rb +1 -0
  156. data/bundle/ruby/{3.3.0/gems/slim-4.1.0 → 3.2.0/gems/slim-5.2.1}/lib/slim/parser.rb +26 -39
  157. data/bundle/ruby/3.2.0/gems/slim-5.2.1/lib/slim/railtie.rb +19 -0
  158. data/bundle/ruby/{3.3.0/gems/slim-4.1.0 → 3.2.0/gems/slim-5.2.1}/lib/slim/smart/escaper.rb +1 -1
  159. data/bundle/ruby/{3.3.0/gems/slim-4.1.0 → 3.2.0/gems/slim-5.2.1}/lib/slim/smart/filter.rb +3 -2
  160. data/bundle/ruby/{3.3.0/gems/slim-4.1.0 → 3.2.0/gems/slim-5.2.1}/lib/slim/smart/parser.rb +4 -3
  161. data/bundle/ruby/{3.3.0/gems/slim-4.1.0 → 3.2.0/gems/slim-5.2.1}/lib/slim/smart.rb +1 -0
  162. data/bundle/ruby/{3.3.0/gems/slim-4.1.0 → 3.2.0/gems/slim-5.2.1}/lib/slim/splat/builder.rb +16 -8
  163. data/bundle/ruby/{3.3.0/gems/slim-4.1.0 → 3.2.0/gems/slim-5.2.1}/lib/slim/splat/filter.rb +6 -4
  164. data/bundle/ruby/3.2.0/gems/slim-5.2.1/lib/slim/template.rb +6 -0
  165. data/bundle/ruby/{3.3.0/gems/slim-4.1.0 → 3.2.0/gems/slim-5.2.1}/lib/slim/translator.rb +4 -3
  166. data/bundle/ruby/{3.3.0/gems/slim-4.1.0 → 3.2.0/gems/slim-5.2.1}/lib/slim/version.rb +2 -1
  167. data/bundle/ruby/{3.3.0/gems/slim-4.1.0 → 3.2.0/gems/slim-5.2.1}/lib/slim.rb +2 -0
  168. data/bundle/ruby/{3.3.0/gems/slim-4.1.0 → 3.2.0/gems/slim-5.2.1}/slim.gemspec +14 -5
  169. data/bundle/ruby/{3.3.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/CHANGES +39 -1
  170. data/bundle/ruby/3.2.0/gems/temple-0.10.3/Gemfile +2 -0
  171. data/bundle/ruby/{3.3.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/README.md +1 -1
  172. data/bundle/ruby/{3.3.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/engine.rb +1 -0
  173. data/bundle/ruby/{3.3.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/erb/engine.rb +3 -0
  174. data/bundle/ruby/{3.3.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/erb/parser.rb +2 -1
  175. data/bundle/ruby/{3.3.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/erb/template.rb +1 -0
  176. data/bundle/ruby/{3.3.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/erb/trimming.rb +1 -0
  177. data/bundle/ruby/{3.3.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/exceptions.rb +1 -0
  178. data/bundle/ruby/{3.3.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/filter.rb +1 -0
  179. data/bundle/ruby/3.2.0/gems/temple-0.10.3/lib/temple/filters/ambles.rb +22 -0
  180. data/bundle/ruby/{3.3.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/filters/code_merger.rb +1 -0
  181. data/bundle/ruby/{3.3.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/filters/control_flow.rb +1 -0
  182. data/bundle/ruby/{3.3.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/filters/dynamic_inliner.rb +2 -1
  183. data/bundle/ruby/3.2.0/gems/temple-0.10.3/lib/temple/filters/dynamic_merger.rb +69 -0
  184. data/bundle/ruby/{3.3.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/filters/encoding.rb +1 -0
  185. data/bundle/ruby/{3.3.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/filters/eraser.rb +1 -0
  186. data/bundle/ruby/{3.3.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/filters/escapable.rb +1 -0
  187. data/bundle/ruby/{3.3.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/filters/multi_flattener.rb +1 -0
  188. data/bundle/ruby/{3.3.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/filters/remove_bom.rb +1 -0
  189. data/bundle/ruby/{3.3.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/filters/static_analyzer.rb +1 -0
  190. data/bundle/ruby/{3.3.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/filters/static_merger.rb +1 -0
  191. data/bundle/ruby/{3.3.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/filters/string_splitter.rb +13 -1
  192. data/bundle/ruby/{3.3.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/filters/validator.rb +1 -0
  193. data/bundle/ruby/{3.3.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/generator.rb +5 -2
  194. data/bundle/ruby/{3.3.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/generators/array.rb +1 -0
  195. data/bundle/ruby/{3.3.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/generators/array_buffer.rb +1 -0
  196. data/bundle/ruby/{3.3.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/generators/erb.rb +1 -0
  197. data/bundle/ruby/{3.3.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/generators/rails_output_buffer.rb +4 -4
  198. data/bundle/ruby/{3.3.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/generators/string_buffer.rb +2 -1
  199. data/bundle/ruby/{3.3.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/grammar.rb +1 -0
  200. data/bundle/ruby/{3.3.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/html/attribute_merger.rb +1 -0
  201. data/bundle/ruby/{3.3.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/html/attribute_remover.rb +1 -0
  202. data/bundle/ruby/{3.3.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/html/attribute_sorter.rb +1 -0
  203. data/bundle/ruby/{3.3.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/html/dispatcher.rb +1 -0
  204. data/bundle/ruby/{3.3.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/html/fast.rb +1 -0
  205. data/bundle/ruby/{3.3.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/html/filter.rb +1 -0
  206. data/bundle/ruby/{3.3.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/html/pretty.rb +1 -0
  207. data/bundle/ruby/{3.3.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/html/safe.rb +1 -0
  208. data/bundle/ruby/{3.3.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/map.rb +1 -0
  209. data/bundle/ruby/{3.3.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/mixins/dispatcher.rb +1 -0
  210. data/bundle/ruby/{3.3.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/mixins/engine_dsl.rb +1 -0
  211. data/bundle/ruby/{3.3.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/mixins/grammar_dsl.rb +4 -2
  212. data/bundle/ruby/{3.3.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/mixins/options.rb +1 -0
  213. data/bundle/ruby/{3.3.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/mixins/template.rb +1 -0
  214. data/bundle/ruby/{3.3.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/parser.rb +1 -0
  215. data/bundle/ruby/{3.3.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/static_analyzer.rb +1 -0
  216. data/bundle/ruby/{3.3.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/templates/rails.rb +7 -2
  217. data/bundle/ruby/{3.3.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/templates/tilt.rb +2 -9
  218. data/bundle/ruby/{3.3.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/templates.rb +1 -0
  219. data/bundle/ruby/{3.3.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple/utils.rb +5 -15
  220. data/bundle/ruby/3.2.0/gems/temple-0.10.3/lib/temple/version.rb +4 -0
  221. data/bundle/ruby/{3.3.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/lib/temple.rb +3 -0
  222. data/bundle/ruby/{3.3.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/temple.gemspec +4 -6
  223. data/bundle/ruby/3.2.0/gems/terminal-table-4.0.0/History.rdoc +149 -0
  224. data/bundle/ruby/3.2.0/gems/terminal-table-4.0.0/README.md +417 -0
  225. data/bundle/ruby/{3.3.0/gems/terminal-table-1.8.0 → 3.2.0/gems/terminal-table-4.0.0}/lib/terminal-table/cell.rb +9 -9
  226. data/bundle/ruby/{3.3.0/gems/terminal-table-1.8.0 → 3.2.0/gems/terminal-table-4.0.0}/lib/terminal-table/row.rb +18 -4
  227. data/bundle/ruby/3.2.0/gems/terminal-table-4.0.0/lib/terminal-table/separator.rb +66 -0
  228. data/bundle/ruby/3.2.0/gems/terminal-table-4.0.0/lib/terminal-table/style.rb +284 -0
  229. data/bundle/ruby/{3.3.0/gems/terminal-table-1.8.0 → 3.2.0/gems/terminal-table-4.0.0}/lib/terminal-table/table.rb +49 -18
  230. data/bundle/ruby/3.2.0/gems/terminal-table-4.0.0/lib/terminal-table/util.rb +13 -0
  231. data/bundle/ruby/{3.3.0/gems/terminal-table-1.8.0 → 3.2.0/gems/terminal-table-4.0.0}/lib/terminal-table/version.rb +1 -1
  232. data/bundle/ruby/{3.3.0/gems/terminal-table-1.8.0 → 3.2.0/gems/terminal-table-4.0.0}/lib/terminal-table.rb +2 -2
  233. data/bundle/ruby/{3.3.0/gems/terminal-table-1.8.0 → 3.2.0/gems/terminal-table-4.0.0}/terminal-table.gemspec +3 -4
  234. data/bundle/ruby/{3.3.0/gems/tilt-2.0.11 → 3.2.0/gems/tilt-2.6.1}/COPYING +1 -0
  235. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/_emacs_org.rb +2 -0
  236. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/_handlebars.rb +2 -0
  237. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/_jbuilder.rb +2 -0
  238. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/_org.rb +2 -0
  239. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/asciidoc.rb +15 -0
  240. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/babel.rb +8 -0
  241. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/builder.rb +42 -0
  242. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/cli.rb +134 -0
  243. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/coffee.rb +39 -0
  244. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/commonmarker.rb +95 -0
  245. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/creole.rb +16 -0
  246. data/bundle/ruby/{3.3.0/gems/tilt-2.0.11 → 3.2.0/gems/tilt-2.6.1}/lib/tilt/csv.rb +6 -18
  247. data/bundle/ruby/{3.3.0/gems/tilt-2.0.11 → 3.2.0/gems/tilt-2.6.1}/lib/tilt/erb.rb +23 -21
  248. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/erubi.rb +55 -0
  249. data/bundle/ruby/{3.3.0/gems/tilt-2.0.11 → 3.2.0/gems/tilt-2.6.1}/lib/tilt/etanni.rb +5 -4
  250. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/haml.rb +94 -0
  251. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/kramdown.rb +13 -0
  252. data/bundle/ruby/{3.3.0/gems/tilt-2.0.11 → 3.2.0/gems/tilt-2.6.1}/lib/tilt/liquid.rb +10 -17
  253. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/livescript.rb +11 -0
  254. data/bundle/ruby/{3.3.0/gems/tilt-2.0.11 → 3.2.0/gems/tilt-2.6.1}/lib/tilt/mapping.rb +228 -109
  255. data/bundle/ruby/{3.3.0/gems/tilt-2.0.11 → 3.2.0/gems/tilt-2.6.1}/lib/tilt/markaby.rb +5 -7
  256. data/bundle/ruby/{3.3.0/gems/tilt-2.0.11 → 3.2.0/gems/tilt-2.6.1}/lib/tilt/nokogiri.rb +11 -10
  257. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/pandoc.rb +39 -0
  258. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/pipeline.rb +19 -0
  259. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/plain.rb +5 -0
  260. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/prawn.rb +28 -0
  261. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/radius.rb +41 -0
  262. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/rdiscount.rb +23 -0
  263. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/rdoc.rb +11 -0
  264. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/redcarpet.rb +31 -0
  265. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/redcloth.rb +13 -0
  266. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/rst-pandoc.rb +10 -0
  267. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/sass.rb +78 -0
  268. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/slim.rb +5 -0
  269. data/bundle/ruby/{3.3.0/gems/tilt-2.0.11 → 3.2.0/gems/tilt-2.6.1}/lib/tilt/string.rb +9 -3
  270. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/template.rb +611 -0
  271. data/bundle/ruby/3.2.0/gems/tilt-2.6.1/lib/tilt/typescript.rb +19 -0
  272. data/bundle/ruby/{3.3.0/gems/tilt-2.0.11 → 3.2.0/gems/tilt-2.6.1}/lib/tilt/yajl.rb +5 -11
  273. data/bundle/ruby/{3.3.0/gems/tilt-2.0.11 → 3.2.0/gems/tilt-2.6.1}/lib/tilt.rb +68 -43
  274. data/bundle/ruby/3.2.0/gems/unicode-display_width-3.1.4/CHANGELOG.md +291 -0
  275. data/bundle/ruby/{3.3.0/gems/unicode-display_width-1.8.0 → 3.2.0/gems/unicode-display_width-3.1.4}/MIT-LICENSE.txt +1 -1
  276. data/bundle/ruby/3.2.0/gems/unicode-display_width-3.1.4/README.md +194 -0
  277. data/bundle/ruby/3.2.0/gems/unicode-display_width-3.1.4/data/display_width.marshal.gz +0 -0
  278. data/bundle/ruby/3.2.0/gems/unicode-display_width-3.1.4/lib/unicode/display_width/constants.rb +10 -0
  279. data/bundle/ruby/3.2.0/gems/unicode-display_width-3.1.4/lib/unicode/display_width/emoji_support.rb +52 -0
  280. data/bundle/ruby/3.2.0/gems/unicode-display_width-3.1.4/lib/unicode/display_width/index.rb +34 -0
  281. data/bundle/ruby/3.2.0/gems/unicode-display_width-3.1.4/lib/unicode/display_width/no_string_ext.rb +8 -0
  282. data/bundle/ruby/3.2.0/gems/unicode-display_width-3.1.4/lib/unicode/display_width/reline_ext.rb +14 -0
  283. data/bundle/ruby/3.2.0/gems/unicode-display_width-3.1.4/lib/unicode/display_width/string_ext.rb +9 -0
  284. data/bundle/ruby/3.2.0/gems/unicode-display_width-3.1.4/lib/unicode/display_width.rb +247 -0
  285. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/CHANGELOG.md +191 -0
  286. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/CODE_OF_CONDUCT.md +74 -0
  287. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/Gemfile +7 -0
  288. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/Gemfile.lock +33 -0
  289. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/MIT-LICENSE.txt +20 -0
  290. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/README.md +205 -0
  291. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/data/emoji.marshal.gz +0 -0
  292. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/data/generate_constants.rb +344 -0
  293. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/constants.rb +49 -0
  294. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex.rb +8 -0
  295. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_basic.rb +8 -0
  296. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_emoji_keycap.rb +8 -0
  297. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_include_mqe.rb +8 -0
  298. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_include_mqe_uqe.rb +8 -0
  299. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_include_text.rb +8 -0
  300. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_picto.rb +8 -0
  301. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_picto_no_emoji.rb +8 -0
  302. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_possible.rb +8 -0
  303. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_prop_component.rb +8 -0
  304. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_prop_emoji.rb +8 -0
  305. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_prop_modifier.rb +8 -0
  306. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_prop_modifier_base.rb +8 -0
  307. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_prop_presentation.rb +8 -0
  308. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_text.rb +8 -0
  309. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_text_presentation.rb +8 -0
  310. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_valid.rb +8 -0
  311. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_valid_include_text.rb +8 -0
  312. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_well_formed.rb +8 -0
  313. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_well_formed_include_text.rb +8 -0
  314. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex.rb +8 -0
  315. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_basic.rb +8 -0
  316. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_emoji_keycap.rb +8 -0
  317. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_include_mqe.rb +8 -0
  318. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_include_mqe_uqe.rb +8 -0
  319. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_include_text.rb +8 -0
  320. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_picto.rb +8 -0
  321. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_picto_no_emoji.rb +8 -0
  322. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_possible.rb +8 -0
  323. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_prop_component.rb +8 -0
  324. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_prop_emoji.rb +8 -0
  325. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_prop_modifier.rb +8 -0
  326. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_prop_modifier_base.rb +8 -0
  327. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_prop_presentation.rb +8 -0
  328. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_text.rb +8 -0
  329. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_text_presentation.rb +8 -0
  330. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_valid.rb +8 -0
  331. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_valid_include_text.rb +8 -0
  332. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_well_formed.rb +8 -0
  333. 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
  334. data/bundle/ruby/{3.3.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
  335. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/lazy_constants.rb +56 -0
  336. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/list.rb +13 -0
  337. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji.rb +111 -0
  338. data/bundle/ruby/3.2.0/gems/unicode-emoji-4.0.4/unicode-emoji.gemspec +22 -0
  339. data/lib/brakeman/app_tree.rb +50 -13
  340. data/lib/brakeman/checks/check_deserialize.rb +4 -1
  341. data/lib/brakeman/checks/check_eol_rails.rb +7 -0
  342. data/lib/brakeman/checks/check_eol_ruby.rb +1 -0
  343. data/lib/brakeman/checks/check_evaluation.rb +45 -8
  344. data/lib/brakeman/checks/check_execute.rb +28 -0
  345. data/lib/brakeman/checks/check_model_attr_accessible.rb +1 -0
  346. data/lib/brakeman/checks/check_session_settings.rb +1 -1
  347. data/lib/brakeman/checks/check_unscoped_find.rb +1 -1
  348. data/lib/brakeman/checks/check_weak_rsa_key.rb +1 -1
  349. data/lib/brakeman/commandline.rb +5 -0
  350. data/lib/brakeman/file_parser.rb +35 -2
  351. data/lib/brakeman/messages.rb +1 -1
  352. data/lib/brakeman/options.rb +45 -4
  353. data/lib/brakeman/parsers/erubis_patch.rb +11 -0
  354. data/lib/brakeman/parsers/haml6_embedded.rb +23 -0
  355. data/lib/brakeman/parsers/rails2_erubis.rb +3 -0
  356. data/lib/brakeman/parsers/rails2_xss_plugin_erubis.rb +4 -0
  357. data/lib/brakeman/parsers/rails3_erubis.rb +5 -1
  358. data/lib/brakeman/parsers/slim_embedded.rb +2 -0
  359. data/lib/brakeman/parsers/template_parser.rb +32 -7
  360. data/lib/brakeman/processor.rb +2 -0
  361. data/lib/brakeman/processors/alias_processor.rb +43 -17
  362. data/lib/brakeman/processors/base_processor.rb +2 -0
  363. data/lib/brakeman/processors/haml6_template_processor.rb +92 -0
  364. data/lib/brakeman/processors/haml_template_processor.rb +7 -1
  365. data/lib/brakeman/processors/lib/file_type_detector.rb +9 -7
  366. data/lib/brakeman/processors/lib/render_helper.rb +38 -1
  367. data/lib/brakeman/processors/template_processor.rb +1 -1
  368. data/lib/brakeman/report/ignore/config.rb +0 -1
  369. data/lib/brakeman/report/report_html.rb +1 -1
  370. data/lib/brakeman/report/report_junit.rb +4 -57
  371. data/lib/brakeman/report/report_markdown.rb +1 -1
  372. data/lib/brakeman/report/report_sarif.rb +122 -2
  373. data/lib/brakeman/report/report_table.rb +2 -2
  374. data/lib/brakeman/report/report_tabs.rb +0 -1
  375. data/lib/brakeman/report/report_text.rb +8 -1
  376. data/lib/brakeman/report/templates/header.html.erb +7 -2
  377. data/lib/brakeman/report/templates/ignored_warnings.html.erb +3 -3
  378. data/lib/brakeman/rescanner.rb +40 -390
  379. data/lib/brakeman/scanner.rb +86 -53
  380. data/lib/brakeman/tracker/config.rb +9 -1
  381. data/lib/brakeman/tracker/file_cache.rb +83 -0
  382. data/lib/brakeman/tracker.rb +25 -2
  383. data/lib/brakeman/util.rb +1 -3
  384. data/lib/brakeman/version.rb +1 -1
  385. data/lib/brakeman/warning.rb +1 -1
  386. data/lib/brakeman.rb +25 -2
  387. data/lib/ruby_parser/bm_sexp.rb +5 -1
  388. metadata +493 -374
  389. data/bundle/ruby/3.3.0/gems/haml-5.2.2/Gemfile +0 -16
  390. data/bundle/ruby/3.3.0/gems/haml-5.2.2/TODO +0 -24
  391. data/bundle/ruby/3.3.0/gems/haml-5.2.2/haml.gemspec +0 -45
  392. data/bundle/ruby/3.3.0/gems/haml-5.2.2/lib/haml/attribute_builder.rb +0 -219
  393. data/bundle/ruby/3.3.0/gems/haml-5.2.2/lib/haml/attribute_compiler.rb +0 -237
  394. data/bundle/ruby/3.3.0/gems/haml-5.2.2/lib/haml/attribute_parser.rb +0 -150
  395. data/bundle/ruby/3.3.0/gems/haml-5.2.2/lib/haml/buffer.rb +0 -182
  396. data/bundle/ruby/3.3.0/gems/haml-5.2.2/lib/haml/compiler.rb +0 -330
  397. data/bundle/ruby/3.3.0/gems/haml-5.2.2/lib/haml/engine.rb +0 -238
  398. data/bundle/ruby/3.3.0/gems/haml-5.2.2/lib/haml/escapable.rb +0 -77
  399. data/bundle/ruby/3.3.0/gems/haml-5.2.2/lib/haml/exec.rb +0 -347
  400. data/bundle/ruby/3.3.0/gems/haml-5.2.2/lib/haml/filters.rb +0 -399
  401. data/bundle/ruby/3.3.0/gems/haml-5.2.2/lib/haml/generator.rb +0 -42
  402. data/bundle/ruby/3.3.0/gems/haml-5.2.2/lib/haml/helpers/action_view_extensions.rb +0 -60
  403. data/bundle/ruby/3.3.0/gems/haml-5.2.2/lib/haml/helpers/action_view_mods.rb +0 -132
  404. data/bundle/ruby/3.3.0/gems/haml-5.2.2/lib/haml/helpers/action_view_xss_mods.rb +0 -60
  405. data/bundle/ruby/3.3.0/gems/haml-5.2.2/lib/haml/helpers/safe_erubi_template.rb +0 -20
  406. data/bundle/ruby/3.3.0/gems/haml-5.2.2/lib/haml/helpers/safe_erubis_template.rb +0 -33
  407. data/bundle/ruby/3.3.0/gems/haml-5.2.2/lib/haml/helpers/xss_mods.rb +0 -114
  408. data/bundle/ruby/3.3.0/gems/haml-5.2.2/lib/haml/helpers.rb +0 -709
  409. data/bundle/ruby/3.3.0/gems/haml-5.2.2/lib/haml/options.rb +0 -273
  410. data/bundle/ruby/3.3.0/gems/haml-5.2.2/lib/haml/plugin.rb +0 -54
  411. data/bundle/ruby/3.3.0/gems/haml-5.2.2/lib/haml/railtie.rb +0 -53
  412. data/bundle/ruby/3.3.0/gems/haml-5.2.2/lib/haml/sass_rails_filter.rb +0 -47
  413. data/bundle/ruby/3.3.0/gems/haml-5.2.2/lib/haml/template/options.rb +0 -27
  414. data/bundle/ruby/3.3.0/gems/haml-5.2.2/lib/haml/template.rb +0 -39
  415. data/bundle/ruby/3.3.0/gems/haml-5.2.2/lib/haml/temple_engine.rb +0 -124
  416. data/bundle/ruby/3.3.0/gems/haml-5.2.2/lib/haml.rb +0 -25
  417. data/bundle/ruby/3.3.0/gems/haml-5.2.2/yard/default/fulldoc/html/css/common.sass +0 -15
  418. data/bundle/ruby/3.3.0/gems/haml-5.2.2/yard/default/layout/html/footer.erb +0 -12
  419. data/bundle/ruby/3.3.0/gems/parallel-1.24.0/lib/parallel/version.rb +0 -4
  420. data/bundle/ruby/3.3.0/gems/rexml-3.2.6/NEWS.md +0 -276
  421. data/bundle/ruby/3.3.0/gems/rexml-3.2.6/lib/rexml/parsers/baseparser.rb +0 -694
  422. data/bundle/ruby/3.3.0/gems/rexml-3.2.6/lib/rexml/source.rb +0 -298
  423. data/bundle/ruby/3.3.0/gems/slim-4.1.0/Gemfile +0 -70
  424. data/bundle/ruby/3.3.0/gems/slim-4.1.0/lib/slim/template.rb +0 -19
  425. data/bundle/ruby/3.3.0/gems/temple-0.8.2/Gemfile +0 -3
  426. data/bundle/ruby/3.3.0/gems/temple-0.8.2/lib/temple/version.rb +0 -3
  427. data/bundle/ruby/3.3.0/gems/terminal-table-1.8.0/History.rdoc +0 -85
  428. data/bundle/ruby/3.3.0/gems/terminal-table-1.8.0/README.rdoc +0 -247
  429. data/bundle/ruby/3.3.0/gems/terminal-table-1.8.0/lib/terminal-table/separator.rb +0 -14
  430. data/bundle/ruby/3.3.0/gems/terminal-table-1.8.0/lib/terminal-table/style.rb +0 -79
  431. data/bundle/ruby/3.3.0/gems/tilt-2.0.11/lib/tilt/asciidoc.rb +0 -27
  432. data/bundle/ruby/3.3.0/gems/tilt-2.0.11/lib/tilt/babel.rb +0 -16
  433. data/bundle/ruby/3.3.0/gems/tilt-2.0.11/lib/tilt/bluecloth.rb +0 -24
  434. data/bundle/ruby/3.3.0/gems/tilt-2.0.11/lib/tilt/builder.rb +0 -37
  435. data/bundle/ruby/3.3.0/gems/tilt-2.0.11/lib/tilt/coffee.rb +0 -58
  436. data/bundle/ruby/3.3.0/gems/tilt-2.0.11/lib/tilt/commonmarker.rb +0 -88
  437. data/bundle/ruby/3.3.0/gems/tilt-2.0.11/lib/tilt/creole.rb +0 -25
  438. data/bundle/ruby/3.3.0/gems/tilt-2.0.11/lib/tilt/dummy.rb +0 -3
  439. data/bundle/ruby/3.3.0/gems/tilt-2.0.11/lib/tilt/erubi.rb +0 -32
  440. data/bundle/ruby/3.3.0/gems/tilt-2.0.11/lib/tilt/erubis.rb +0 -43
  441. data/bundle/ruby/3.3.0/gems/tilt-2.0.11/lib/tilt/haml.rb +0 -86
  442. data/bundle/ruby/3.3.0/gems/tilt-2.0.11/lib/tilt/kramdown.rb +0 -25
  443. data/bundle/ruby/3.3.0/gems/tilt-2.0.11/lib/tilt/less.rb +0 -30
  444. data/bundle/ruby/3.3.0/gems/tilt-2.0.11/lib/tilt/livescript.rb +0 -23
  445. data/bundle/ruby/3.3.0/gems/tilt-2.0.11/lib/tilt/maruku.rb +0 -22
  446. data/bundle/ruby/3.3.0/gems/tilt-2.0.11/lib/tilt/pandoc.rb +0 -57
  447. data/bundle/ruby/3.3.0/gems/tilt-2.0.11/lib/tilt/plain.rb +0 -16
  448. data/bundle/ruby/3.3.0/gems/tilt-2.0.11/lib/tilt/prawn.rb +0 -43
  449. data/bundle/ruby/3.3.0/gems/tilt-2.0.11/lib/tilt/radius.rb +0 -48
  450. data/bundle/ruby/3.3.0/gems/tilt-2.0.11/lib/tilt/rdiscount.rb +0 -39
  451. data/bundle/ruby/3.3.0/gems/tilt-2.0.11/lib/tilt/rdoc.rb +0 -40
  452. data/bundle/ruby/3.3.0/gems/tilt-2.0.11/lib/tilt/redcarpet.rb +0 -86
  453. data/bundle/ruby/3.3.0/gems/tilt-2.0.11/lib/tilt/redcloth.rb +0 -23
  454. data/bundle/ruby/3.3.0/gems/tilt-2.0.11/lib/tilt/rst-pandoc.rb +0 -23
  455. data/bundle/ruby/3.3.0/gems/tilt-2.0.11/lib/tilt/sass.rb +0 -78
  456. data/bundle/ruby/3.3.0/gems/tilt-2.0.11/lib/tilt/sigil.rb +0 -34
  457. data/bundle/ruby/3.3.0/gems/tilt-2.0.11/lib/tilt/template.rb +0 -308
  458. data/bundle/ruby/3.3.0/gems/tilt-2.0.11/lib/tilt/typescript.rb +0 -26
  459. data/bundle/ruby/3.3.0/gems/tilt-2.0.11/lib/tilt/wikicloth.rb +0 -22
  460. data/bundle/ruby/3.3.0/gems/unicode-display_width-1.8.0/CHANGELOG.md +0 -137
  461. data/bundle/ruby/3.3.0/gems/unicode-display_width-1.8.0/README.md +0 -124
  462. data/bundle/ruby/3.3.0/gems/unicode-display_width-1.8.0/data/display_width.marshal.gz +0 -0
  463. data/bundle/ruby/3.3.0/gems/unicode-display_width-1.8.0/lib/unicode/display_width/constants.rb +0 -8
  464. data/bundle/ruby/3.3.0/gems/unicode-display_width-1.8.0/lib/unicode/display_width/no_string_ext.rb +0 -7
  465. data/bundle/ruby/3.3.0/gems/unicode-display_width-1.8.0/lib/unicode/display_width/string_ext.rb +0 -17
  466. data/bundle/ruby/3.3.0/gems/unicode-display_width-1.8.0/lib/unicode/display_width.rb +0 -51
  467. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/erubis-2.7.0/CHANGES.txt +0 -0
  468. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/erubis-2.7.0/MIT-LICENSE +0 -0
  469. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/erubis-2.7.0/README.txt +0 -0
  470. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/erubis-2.7.0/contrib/erubis +0 -0
  471. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/erubis-2.7.0/contrib/erubis-run.rb +0 -0
  472. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/erubis-2.7.0/contrib/inline-require +0 -0
  473. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/erubis-2.7.0/lib/erubis/context.rb +0 -0
  474. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/erubis-2.7.0/lib/erubis/converter.rb +0 -0
  475. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/erubis-2.7.0/lib/erubis/engine/ec.rb +0 -0
  476. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/erubis-2.7.0/lib/erubis/engine/ecpp.rb +0 -0
  477. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/erubis-2.7.0/lib/erubis/engine/ejava.rb +0 -0
  478. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/erubis-2.7.0/lib/erubis/engine/ejavascript.rb +0 -0
  479. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/erubis-2.7.0/lib/erubis/engine/enhanced.rb +0 -0
  480. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/erubis-2.7.0/lib/erubis/engine/eperl.rb +0 -0
  481. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/erubis-2.7.0/lib/erubis/engine/ephp.rb +0 -0
  482. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/erubis-2.7.0/lib/erubis/engine/eruby.rb +0 -0
  483. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/erubis-2.7.0/lib/erubis/engine/escheme.rb +0 -0
  484. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/erubis-2.7.0/lib/erubis/engine/optimized.rb +0 -0
  485. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/erubis-2.7.0/lib/erubis/engine.rb +0 -0
  486. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/erubis-2.7.0/lib/erubis/enhancer.rb +0 -0
  487. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/erubis-2.7.0/lib/erubis/error.rb +0 -0
  488. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/erubis-2.7.0/lib/erubis/evaluator.rb +0 -0
  489. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/erubis-2.7.0/lib/erubis/generator.rb +0 -0
  490. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/erubis-2.7.0/lib/erubis/helper.rb +0 -0
  491. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/erubis-2.7.0/lib/erubis/helpers/rails_form_helper.rb +0 -0
  492. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/erubis-2.7.0/lib/erubis/helpers/rails_helper.rb +0 -0
  493. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/erubis-2.7.0/lib/erubis/local-setting.rb +0 -0
  494. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/erubis-2.7.0/lib/erubis/main.rb +0 -0
  495. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/erubis-2.7.0/lib/erubis/preprocessing.rb +0 -0
  496. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/erubis-2.7.0/lib/erubis/tiny.rb +0 -0
  497. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/erubis-2.7.0/lib/erubis/util.rb +0 -0
  498. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/erubis-2.7.0/lib/erubis.rb +0 -0
  499. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/erubis-2.7.0/setup.rb +0 -0
  500. /data/bundle/ruby/{3.3.0/gems/highline-3.0.1 → 3.2.0/gems/highline-3.1.2}/AUTHORS +0 -0
  501. /data/bundle/ruby/{3.3.0/gems/highline-3.0.1 → 3.2.0/gems/highline-3.1.2}/COPYING +0 -0
  502. /data/bundle/ruby/{3.3.0/gems/highline-3.0.1 → 3.2.0/gems/highline-3.1.2}/LICENSE +0 -0
  503. /data/bundle/ruby/{3.3.0/gems/highline-3.0.1 → 3.2.0/gems/highline-3.1.2}/TODO +0 -0
  504. /data/bundle/ruby/{3.3.0/gems/highline-3.0.1 → 3.2.0/gems/highline-3.1.2}/lib/highline/builtin_styles.rb +0 -0
  505. /data/bundle/ruby/{3.3.0/gems/highline-3.0.1 → 3.2.0/gems/highline-3.1.2}/lib/highline/color_scheme.rb +0 -0
  506. /data/bundle/ruby/{3.3.0/gems/highline-3.0.1 → 3.2.0/gems/highline-3.1.2}/lib/highline/compatibility.rb +0 -0
  507. /data/bundle/ruby/{3.3.0/gems/highline-3.0.1 → 3.2.0/gems/highline-3.1.2}/lib/highline/custom_errors.rb +0 -0
  508. /data/bundle/ruby/{3.3.0/gems/highline-3.0.1 → 3.2.0/gems/highline-3.1.2}/lib/highline/import.rb +0 -0
  509. /data/bundle/ruby/{3.3.0/gems/highline-3.0.1 → 3.2.0/gems/highline-3.1.2}/lib/highline/io_console_compatible.rb +0 -0
  510. /data/bundle/ruby/{3.3.0/gems/highline-3.0.1 → 3.2.0/gems/highline-3.1.2}/lib/highline/list.rb +0 -0
  511. /data/bundle/ruby/{3.3.0/gems/highline-3.0.1 → 3.2.0/gems/highline-3.1.2}/lib/highline/menu/item.rb +0 -0
  512. /data/bundle/ruby/{3.3.0/gems/highline-3.0.1 → 3.2.0/gems/highline-3.1.2}/lib/highline/paginator.rb +0 -0
  513. /data/bundle/ruby/{3.3.0/gems/highline-3.0.1 → 3.2.0/gems/highline-3.1.2}/lib/highline/question/answer_converter.rb +0 -0
  514. /data/bundle/ruby/{3.3.0/gems/highline-3.0.1 → 3.2.0/gems/highline-3.1.2}/lib/highline/question.rb +0 -0
  515. /data/bundle/ruby/{3.3.0/gems/highline-3.0.1 → 3.2.0/gems/highline-3.1.2}/lib/highline/question_asker.rb +0 -0
  516. /data/bundle/ruby/{3.3.0/gems/highline-3.0.1 → 3.2.0/gems/highline-3.1.2}/lib/highline/simulate.rb +0 -0
  517. /data/bundle/ruby/{3.3.0/gems/highline-3.0.1 → 3.2.0/gems/highline-3.1.2}/lib/highline/statement.rb +0 -0
  518. /data/bundle/ruby/{3.3.0/gems/highline-3.0.1 → 3.2.0/gems/highline-3.1.2}/lib/highline/string.rb +0 -0
  519. /data/bundle/ruby/{3.3.0/gems/highline-3.0.1 → 3.2.0/gems/highline-3.1.2}/lib/highline/string_extensions.rb +0 -0
  520. /data/bundle/ruby/{3.3.0/gems/highline-3.0.1 → 3.2.0/gems/highline-3.1.2}/lib/highline/style.rb +0 -0
  521. /data/bundle/ruby/{3.3.0/gems/highline-3.0.1 → 3.2.0/gems/highline-3.1.2}/lib/highline/template_renderer.rb +0 -0
  522. /data/bundle/ruby/{3.3.0/gems/highline-3.0.1 → 3.2.0/gems/highline-3.1.2}/lib/highline/terminal/io_console.rb +0 -0
  523. /data/bundle/ruby/{3.3.0/gems/highline-3.0.1 → 3.2.0/gems/highline-3.1.2}/lib/highline/terminal/ncurses.rb +0 -0
  524. /data/bundle/ruby/{3.3.0/gems/highline-3.0.1 → 3.2.0/gems/highline-3.1.2}/lib/highline/terminal/unix_stty.rb +0 -0
  525. /data/bundle/ruby/{3.3.0/gems/highline-3.0.1 → 3.2.0/gems/highline-3.1.2}/lib/highline/wrapper.rb +0 -0
  526. /data/bundle/ruby/{3.3.0/gems/parallel-1.24.0 → 3.2.0/gems/parallel-1.27.0}/MIT-LICENSE.txt +0 -0
  527. /data/bundle/ruby/{3.3.0/gems/rexml-3.2.6/LICENSE.txt → 3.2.0/gems/reline-0.6.1/BSDL} +0 -0
  528. /data/bundle/ruby/{3.3.0/gems/rexml-3.2.6 → 3.2.0/gems/rexml-3.4.1}/README.md +0 -0
  529. /data/bundle/ruby/{3.3.0/gems/rexml-3.2.6 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/attlistdecl.rb +0 -0
  530. /data/bundle/ruby/{3.3.0/gems/rexml-3.2.6 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/cdata.rb +0 -0
  531. /data/bundle/ruby/{3.3.0/gems/rexml-3.2.6 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/child.rb +0 -0
  532. /data/bundle/ruby/{3.3.0/gems/rexml-3.2.6 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/comment.rb +0 -0
  533. /data/bundle/ruby/{3.3.0/gems/rexml-3.2.6 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/doctype.rb +0 -0
  534. /data/bundle/ruby/{3.3.0/gems/rexml-3.2.6 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/dtd/attlistdecl.rb +0 -0
  535. /data/bundle/ruby/{3.3.0/gems/rexml-3.2.6 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/dtd/dtd.rb +0 -0
  536. /data/bundle/ruby/{3.3.0/gems/rexml-3.2.6 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/dtd/elementdecl.rb +0 -0
  537. /data/bundle/ruby/{3.3.0/gems/rexml-3.2.6 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/dtd/entitydecl.rb +0 -0
  538. /data/bundle/ruby/{3.3.0/gems/rexml-3.2.6 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/dtd/notationdecl.rb +0 -0
  539. /data/bundle/ruby/{3.3.0/gems/rexml-3.2.6 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/encoding.rb +0 -0
  540. /data/bundle/ruby/{3.3.0/gems/rexml-3.2.6 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/formatters/default.rb +0 -0
  541. /data/bundle/ruby/{3.3.0/gems/rexml-3.2.6 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/formatters/transitive.rb +0 -0
  542. /data/bundle/ruby/{3.3.0/gems/rexml-3.2.6 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/instruction.rb +0 -0
  543. /data/bundle/ruby/{3.3.0/gems/rexml-3.2.6 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/light/node.rb +0 -0
  544. /data/bundle/ruby/{3.3.0/gems/rexml-3.2.6 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/namespace.rb +0 -0
  545. /data/bundle/ruby/{3.3.0/gems/rexml-3.2.6 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/output.rb +0 -0
  546. /data/bundle/ruby/{3.3.0/gems/rexml-3.2.6 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/parent.rb +0 -0
  547. /data/bundle/ruby/{3.3.0/gems/rexml-3.2.6 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/parsers/lightparser.rb +0 -0
  548. /data/bundle/ruby/{3.3.0/gems/rexml-3.2.6 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/parsers/ultralightparser.rb +0 -0
  549. /data/bundle/ruby/{3.3.0/gems/rexml-3.2.6 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/parsers/xpathparser.rb +0 -0
  550. /data/bundle/ruby/{3.3.0/gems/rexml-3.2.6 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/quickpath.rb +0 -0
  551. /data/bundle/ruby/{3.3.0/gems/rexml-3.2.6 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/sax2listener.rb +0 -0
  552. /data/bundle/ruby/{3.3.0/gems/rexml-3.2.6 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/security.rb +0 -0
  553. /data/bundle/ruby/{3.3.0/gems/rexml-3.2.6 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/streamlistener.rb +0 -0
  554. /data/bundle/ruby/{3.3.0/gems/rexml-3.2.6 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/undefinednamespaceexception.rb +0 -0
  555. /data/bundle/ruby/{3.3.0/gems/rexml-3.2.6 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/validation/relaxng.rb +0 -0
  556. /data/bundle/ruby/{3.3.0/gems/rexml-3.2.6 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/validation/validation.rb +0 -0
  557. /data/bundle/ruby/{3.3.0/gems/rexml-3.2.6 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/validation/validationexception.rb +0 -0
  558. /data/bundle/ruby/{3.3.0/gems/rexml-3.2.6 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/xmldecl.rb +0 -0
  559. /data/bundle/ruby/{3.3.0/gems/rexml-3.2.6 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/xmltokens.rb +0 -0
  560. /data/bundle/ruby/{3.3.0/gems/rexml-3.2.6 → 3.2.0/gems/rexml-3.4.1}/lib/rexml/xpath.rb +0 -0
  561. /data/bundle/ruby/{3.3.0/gems/rexml-3.2.6 → 3.2.0/gems/rexml-3.4.1}/lib/rexml.rb +0 -0
  562. /data/bundle/ruby/{3.3.0/gems/ruby2ruby-2.4.4 → 3.2.0/gems/ruby2ruby-2.5.2}/Manifest.txt +0 -0
  563. /data/bundle/ruby/{3.3.0/gems/ruby2ruby-2.4.4 → 3.2.0/gems/ruby2ruby-2.5.2}/README.rdoc +0 -0
  564. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/ruby_parser-3.20.3/History.rdoc +0 -0
  565. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/ruby_parser-3.20.3/Manifest.txt +0 -0
  566. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/ruby_parser-3.20.3/README.rdoc +0 -0
  567. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/ruby_parser-3.20.3/compare/normalize.rb +0 -0
  568. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/ruby_parser-3.20.3/debugging.md +0 -0
  569. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/ruby_parser-3.20.3/gauntlet.md +0 -0
  570. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/ruby_parser-3.20.3/lib/rp_extensions.rb +0 -0
  571. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/ruby_parser-3.20.3/lib/rp_stringscanner.rb +0 -0
  572. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/ruby_parser-3.20.3/lib/ruby20_parser.rb +0 -0
  573. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/ruby_parser-3.20.3/lib/ruby20_parser.y +0 -0
  574. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/ruby_parser-3.20.3/lib/ruby21_parser.rb +0 -0
  575. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/ruby_parser-3.20.3/lib/ruby21_parser.y +0 -0
  576. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/ruby_parser-3.20.3/lib/ruby22_parser.rb +0 -0
  577. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/ruby_parser-3.20.3/lib/ruby22_parser.y +0 -0
  578. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/ruby_parser-3.20.3/lib/ruby23_parser.rb +0 -0
  579. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/ruby_parser-3.20.3/lib/ruby23_parser.y +0 -0
  580. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/ruby_parser-3.20.3/lib/ruby24_parser.rb +0 -0
  581. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/ruby_parser-3.20.3/lib/ruby24_parser.y +0 -0
  582. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/ruby_parser-3.20.3/lib/ruby25_parser.rb +0 -0
  583. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/ruby_parser-3.20.3/lib/ruby25_parser.y +0 -0
  584. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/ruby_parser-3.20.3/lib/ruby26_parser.rb +0 -0
  585. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/ruby_parser-3.20.3/lib/ruby26_parser.y +0 -0
  586. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/ruby_parser-3.20.3/lib/ruby27_parser.rb +0 -0
  587. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/ruby_parser-3.20.3/lib/ruby27_parser.y +0 -0
  588. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/ruby_parser-3.20.3/lib/ruby30_parser.rb +0 -0
  589. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/ruby_parser-3.20.3/lib/ruby30_parser.y +0 -0
  590. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/ruby_parser-3.20.3/lib/ruby31_parser.rb +0 -0
  591. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/ruby_parser-3.20.3/lib/ruby31_parser.y +0 -0
  592. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/ruby_parser-3.20.3/lib/ruby32_parser.rb +0 -0
  593. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/ruby_parser-3.20.3/lib/ruby32_parser.y +0 -0
  594. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/ruby_parser-3.20.3/lib/ruby3_parser.yy +0 -0
  595. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/ruby_parser-3.20.3/lib/ruby_lexer.rb +0 -0
  596. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/ruby_parser-3.20.3/lib/ruby_lexer.rex +0 -0
  597. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/ruby_parser-3.20.3/lib/ruby_lexer.rex.rb +0 -0
  598. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/ruby_parser-3.20.3/lib/ruby_lexer_strings.rb +0 -0
  599. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/ruby_parser-3.20.3/lib/ruby_parser.rb +0 -0
  600. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/ruby_parser-3.20.3/lib/ruby_parser.yy +0 -0
  601. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/ruby_parser-3.20.3/lib/ruby_parser_extras.rb +0 -0
  602. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/ruby_parser-3.20.3/tools/munge.rb +0 -0
  603. /data/bundle/ruby/{3.3.0 → 3.2.0}/gems/ruby_parser-3.20.3/tools/ripper.rb +0 -0
  604. /data/bundle/ruby/{3.3.0/gems/sexp_processor-4.17.1 → 3.2.0/gems/sexp_processor-4.17.3}/Manifest.txt +0 -0
  605. /data/bundle/ruby/{3.3.0/gems/sexp_processor-4.17.1 → 3.2.0/gems/sexp_processor-4.17.3}/README.rdoc +0 -0
  606. /data/bundle/ruby/{3.3.0/gems/sexp_processor-4.17.1 → 3.2.0/gems/sexp_processor-4.17.3}/lib/composite_sexp_processor.rb +0 -0
  607. /data/bundle/ruby/{3.3.0/gems/sexp_processor-4.17.1 → 3.2.0/gems/sexp_processor-4.17.3}/lib/pt_testcase.rb +0 -0
  608. /data/bundle/ruby/{3.3.0/gems/sexp_processor-4.17.1 → 3.2.0/gems/sexp_processor-4.17.3}/lib/strict_sexp.rb +0 -0
  609. /data/bundle/ruby/{3.3.0/gems/sexp_processor-4.17.1 → 3.2.0/gems/sexp_processor-4.17.3}/lib/unique.rb +0 -0
  610. /data/bundle/ruby/{3.3.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/EXPRESSIONS.md +0 -0
  611. /data/bundle/ruby/{3.3.0/gems/temple-0.8.2 → 3.2.0/gems/temple-0.10.3}/LICENSE +0 -0
  612. /data/bundle/ruby/{3.3.0/gems/terminal-table-1.8.0 → 3.2.0/gems/terminal-table-4.0.0}/Gemfile +0 -0
  613. /data/bundle/ruby/{3.3.0/gems/terminal-table-1.8.0 → 3.2.0/gems/terminal-table-4.0.0}/LICENSE.txt +0 -0
  614. /data/bundle/ruby/{3.3.0/gems/terminal-table-1.8.0 → 3.2.0/gems/terminal-table-4.0.0}/Manifest +0 -0
  615. /data/bundle/ruby/{3.3.0/gems/terminal-table-1.8.0 → 3.2.0/gems/terminal-table-4.0.0}/Todo.rdoc +0 -0
  616. /data/bundle/ruby/{3.3.0/gems/terminal-table-1.8.0 → 3.2.0/gems/terminal-table-4.0.0}/lib/terminal-table/import.rb +0 -0
  617. /data/bundle/ruby/{3.3.0/gems/terminal-table-1.8.0 → 3.2.0/gems/terminal-table-4.0.0}/lib/terminal-table/table_helper.rb +0 -0
@@ -0,0 +1,8 @@
1
+ # This file was generated by a script, please do not edit it by hand.
2
+ # See `$ rake generate_constants` and data/generate_constants.rb for more info.
3
+
4
+ module Unicode
5
+ module Emoji
6
+ REGEX_WELL_FORMED = /(?:(?:(?:(?:\p{EBase}\p{EMod}|(?:[\p{Emoji}&&\P{EPres}]️|\p{EPres}(?!︎)️?)|\p{Emoji})‍)+(?:\p{EBase}\p{EMod}|(?:[\p{Emoji}&&\P{EPres}]️|\p{EPres}(?!︎)️?)|\p{Emoji}))|(?:(?:(?!\p{EComp})(?:[\p{Emoji}&&\P{EPres}]️|\p{EPres}(?!︎)️?)|\p{EBase}\p{EMod})[󠀰-󠀹󠁡-󠁺]{1,30}󠁿)|\p{RI}{2}|(?:[\#\*0-9]️⃣|\p{EBase}\p{EMod}|(?!\p{EComp})(?:[\p{Emoji}&&\P{EPres}]️|\p{EPres}(?!︎)️?))|[🏻-🏿🦰-🦳])/
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ # This file was generated by a script, please do not edit it by hand.
2
+ # See `$ rake generate_constants` and data/generate_constants.rb for more info.
3
+
4
+ module Unicode
5
+ module Emoji
6
+ REGEX_WELL_FORMED_INCLUDE_TEXT = /(?:(?:(?:(?:\p{EBase}\p{EMod}|(?:[\p{Emoji}&&\P{EPres}]️|\p{EPres}(?!︎)️?)|\p{Emoji})‍)+(?:\p{EBase}\p{EMod}|(?:[\p{Emoji}&&\P{EPres}]️|\p{EPres}(?!︎)️?)|\p{Emoji}))|(?:(?:(?!\p{EComp})(?:[\p{Emoji}&&\P{EPres}]️|\p{EPres}(?!︎)️?)|\p{EBase}\p{EMod})[󠀰-󠀹󠁡-󠁺]{1,30}󠁿)|\p{RI}{2}|(?:[\#\*0-9]️⃣|\p{EBase}\p{EMod}|(?!\p{EComp})(?:[\p{Emoji}&&\P{EPres}]️|\p{EPres}(?!︎)️?))|[🏻-🏿🦰-🦳]|(?:(?!\p{EComp})(?:[\p{Emoji}&&\P{EPres}](?!(?:\p{EMod}|️))︎?|\p{EPres}︎)|[\#\*0-9]⃣))/
7
+ end
8
+ end
@@ -1,8 +1,10 @@
1
- require 'zlib'
2
- require_relative 'constants'
1
+ # frozen_string_literal: true
2
+
3
+ require "zlib"
4
+ require_relative "constants"
3
5
 
4
6
  module Unicode
5
- module DisplayWidth
7
+ module Emoji
6
8
  File.open(INDEX_FILENAME, "rb") do |file|
7
9
  serialized_data = Zlib::GzipReader.new(file).read
8
10
  serialized_data.force_encoding Encoding::BINARY
@@ -0,0 +1,56 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Unicode
4
+ module Emoji
5
+ # The current list of codepoints with the "Emoji" property
6
+ # Same characters as \p{Emoji}
7
+ # (Emoji version of this gem might be more recent than Ruby's Emoji version)
8
+ EMOJI_CHAR = INDEX[:PROPERTIES].select{ |ord, props| props.include?(:E) }.keys.freeze
9
+
10
+ # The current list of codepoints with the "Emoji_Presentation" property
11
+ # Same characters as \p{Emoji Presentation} or \p{EPres}
12
+ # (Emoji version of this gem might be more recent than Ruby's Emoji version)
13
+ EMOJI_PRESENTATION = INDEX[:PROPERTIES].select{ |ord, props| props.include?(:P) }.keys.freeze
14
+
15
+ # The current list of codepoints with the "Emoji" property that lack the "Emoji Presentation" property
16
+ TEXT_PRESENTATION = INDEX[:PROPERTIES].select{ |ord, props| props.include?(:E) && !props.include?(:P) }.keys.freeze
17
+
18
+ # The current list of codepoints with the "Emoji_Component" property
19
+ # Same characters as \p{Emoji Component} or \p{EComp}
20
+ # (Emoji version of this gem might be more recent than Ruby's Emoji version)
21
+ EMOJI_COMPONENT = INDEX[:PROPERTIES].select{ |ord, props| props.include?(:C) }.keys.freeze
22
+
23
+ # The current list of codepoints with the "Emoji_Modifier_Base" property
24
+ # Same characters as \p{Emoji Modifier Base} or \p{EBase}
25
+ # (Emoji version of this gem might be more recent than Ruby's Emoji version)
26
+ EMOJI_MODIFIER_BASES = INDEX[:PROPERTIES].select{ |ord, props| props.include?(:B) }.keys.freeze
27
+
28
+ # The current list of codepoints with the "Emoji_Modifier" property
29
+ # Same characters as \p{Emoji Modifier} or \p{EMod}
30
+ # (Emoji version of this gem might be more recent than Ruby's Emoji version)
31
+ EMOJI_MODIFIERS = INDEX[:PROPERTIES].select{ |ord, props| props.include?(:M) }.keys.freeze
32
+
33
+ # The current list of codepoints with the "Extended_Pictographic" property
34
+ # Same characters as \p{Extended Pictographic} or \p{ExtPict}
35
+ # (Emoji version of this gem might be more recent than Ruby's Emoji version)
36
+ EXTENDED_PICTOGRAPHIC = INDEX[:PROPERTIES].select{ |ord, props| props.include?(:X) }.keys.freeze
37
+
38
+ # The current list of codepoints with the "Extended_Pictographic" property that don't have the "Emoji" property
39
+ EXTENDED_PICTOGRAPHIC_NO_EMOJI= INDEX[:PROPERTIES].select{ |ord, props| props.include?(:X) && !props.include?(:E) }.keys.freeze
40
+
41
+ # The list of characters that can be used as base for keycap sequences
42
+ EMOJI_KEYCAPS = INDEX[:KEYCAPS].freeze
43
+
44
+ # The list of valid regions
45
+ VALID_REGION_FLAGS = INDEX[:FLAGS].freeze
46
+
47
+ # The list of valid subdivisions in regex character class syntax
48
+ VALID_SUBDIVISIONS = INDEX[:SD].map{_1.sub(/(.)~(.)/, '[\1-\2]') }
49
+
50
+ # The list RGI tag sequence flags
51
+ RECOMMENDED_SUBDIVISION_FLAGS = INDEX[:TAGS].freeze
52
+
53
+ # The list of fully-qualified RGI Emoji ZWJ sequences
54
+ RECOMMENDED_ZWJ_SEQUENCES = INDEX[:ZWJ].freeze
55
+ end
56
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Unicode
4
+ module Emoji
5
+ # Contains an ordered and group list of all currently recommended Emoji (RGI/FQE)
6
+ LIST = INDEX[:LIST].freeze.each_value(&:freeze)
7
+
8
+ # Sometimes, categories change, we issue a warning in these cases
9
+ LIST_REMOVED_KEYS = [
10
+ "Smileys & People",
11
+ ].freeze
12
+ end
13
+ end
@@ -0,0 +1,111 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "emoji/constants"
4
+
5
+ module Unicode
6
+ module Emoji
7
+ autoload :INDEX, File.expand_path('emoji/index', __dir__)
8
+
9
+ %w[
10
+ EMOJI_CHAR
11
+ EMOJI_PRESENTATION
12
+ TEXT_PRESENTATION
13
+ EMOJI_COMPONENT
14
+ EMOJI_MODIFIER_BASES
15
+ EMOJI_MODIFIERS
16
+ EXTENDED_PICTOGRAPHIC
17
+ EXTENDED_PICTOGRAPHIC_NO_EMOJI
18
+ EMOJI_KEYCAPS
19
+ VALID_REGION_FLAGS
20
+ VALID_SUBDIVISIONS
21
+ RECOMMENDED_SUBDIVISION_FLAGS
22
+ RECOMMENDED_ZWJ_SEQUENCES
23
+ ].each do |const_name|
24
+ autoload const_name, File.expand_path('emoji/lazy_constants', __dir__)
25
+ end
26
+
27
+ %w[
28
+ LIST
29
+ LIST_REMOVED_KEYS
30
+ ].each do |const_name|
31
+ autoload const_name, File.expand_path('emoji/list', __dir__)
32
+ end
33
+
34
+ generated_constants_dirpath = File.expand_path(
35
+ EMOJI_VERSION == RbConfig::CONFIG["UNICODE_EMOJI_VERSION"] ? "emoji/generated_native/" : "emoji/generated/",
36
+ __dir__
37
+ )
38
+
39
+ %w[
40
+ REGEX
41
+ REGEX_INCLUDE_TEXT
42
+ REGEX_INCLUDE_MQE
43
+ REGEX_INCLUDE_MQE_UQE
44
+ REGEX_VALID
45
+ REGEX_VALID_INCLUDE_TEXT
46
+ REGEX_WELL_FORMED
47
+ REGEX_WELL_FORMED_INCLUDE_TEXT
48
+ REGEX_POSSIBLE
49
+ REGEX_BASIC
50
+ REGEX_TEXT
51
+ REGEX_TEXT_PRESENTATION
52
+ REGEX_PROP_EMOJI
53
+ REGEX_PROP_MODIFIER
54
+ REGEX_PROP_MODIFIER_BASE
55
+ REGEX_PROP_COMPONENT
56
+ REGEX_PROP_PRESENTATION
57
+ REGEX_PICTO
58
+ REGEX_PICTO_NO_EMOJI
59
+ REGEX_EMOJI_KEYCAP
60
+ ].each do |const_name|
61
+ autoload const_name, File.join(generated_constants_dirpath, const_name.downcase)
62
+ end
63
+
64
+ # Return Emoji properties of character as an Array or nil
65
+ # See PROPERTY_NAMES constant for possible properties
66
+ #
67
+ # Source: see https://www.unicode.org/Public/16.0.0/ucd/emoji/emoji-data.txt
68
+ def self.properties(char)
69
+ ord = get_codepoint_value(char)
70
+ props = INDEX[:PROPERTIES][ord]
71
+
72
+ if props
73
+ props.map{ |prop| PROPERTY_NAMES[prop] }
74
+ else
75
+ # nothing
76
+ end
77
+ end
78
+
79
+ # Returns ordered list of Emoji, categorized in a three-level deep Hash structure
80
+ def self.list(key = nil, sub_key = nil)
81
+ return LIST unless key || sub_key
82
+ if LIST_REMOVED_KEYS.include?(key)
83
+ $stderr.puts "Warning(unicode-emoji): The category of #{key} does not exist anymore"
84
+ end
85
+ LIST.dig(*[key, sub_key].compact)
86
+ end
87
+
88
+ def self.get_codepoint_value(char)
89
+ ord = nil
90
+
91
+ if char.valid_encoding?
92
+ ord = char.ord
93
+ elsif char.encoding.name == "UTF-8"
94
+ begin
95
+ ord = char.unpack("U*")[0]
96
+ rescue ArgumentError
97
+ end
98
+ end
99
+
100
+ if ord
101
+ ord
102
+ else
103
+ raise(ArgumentError, "Unicode::Emoji must be given a valid string")
104
+ end
105
+ end
106
+
107
+ class << self
108
+ private :get_codepoint_value
109
+ end
110
+ end
111
+ end
@@ -0,0 +1,22 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ require File.dirname(__FILE__) + "/lib/unicode/emoji/constants"
4
+
5
+ Gem::Specification.new do |gem|
6
+ gem.name = "unicode-emoji"
7
+ gem.version = Unicode::Emoji::VERSION
8
+ gem.summary = "Emoji data and regex"
9
+ gem.description = "[Emoji #{Unicode::Emoji::EMOJI_VERSION}] Provides Unicode Emoji data and regexes, incorporating the latest Unicode and Emoji standards. Includes a categorized list of recommended Emoji."
10
+ gem.authors = ["Jan Lelis"]
11
+ gem.email = ["hi@ruby.consulting"]
12
+ gem.homepage = "https://github.com/janlelis/unicode-emoji"
13
+ gem.license = "MIT"
14
+
15
+ gem.files = Dir["{**/}{.*,*}"].select{ |path| File.file?(path) && path !~ /^pkg/ && path !~ /spec\/data\/[^.]/ }
16
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
+ gem.require_paths = ["lib"]
19
+ gem.metadata = { "rubygems_mfa_required" => "true" }
20
+
21
+ gem.required_ruby_version = ">= 2.5", "< 4.0"
22
+ end
@@ -22,6 +22,8 @@ module Brakeman
22
22
  init_options[:additional_libs_path] = options[:additional_libs_path]
23
23
  init_options[:engine_paths] = options[:engine_paths]
24
24
  init_options[:skip_vendor] = options[:skip_vendor]
25
+ init_options[:follow_symlinks] = options[:follow_symlinks]
26
+
25
27
  new(root, init_options)
26
28
  end
27
29
 
@@ -50,7 +52,7 @@ module Brakeman
50
52
  "#{Regexp.escape f}\\z"
51
53
  end
52
54
  end
53
- Regexp.new("(?:" << path_regexes.join("|") << ")")
55
+ Regexp.new("(?:#{path_regexes.join("|")})")
54
56
  end
55
57
  private_class_method(:regex_for_paths)
56
58
 
@@ -64,6 +66,7 @@ module Brakeman
64
66
  @absolute_engine_paths = @engine_paths.select { |path| path.start_with?(File::SEPARATOR) }
65
67
  @relative_engine_paths = @engine_paths - @absolute_engine_paths
66
68
  @skip_vendor = init_options[:skip_vendor]
69
+ @follow_symlinks = init_options[:follow_symlinks]
67
70
  @gemspec = nil
68
71
  @root_search_pattern = nil
69
72
  end
@@ -142,6 +145,17 @@ module Brakeman
142
145
  end
143
146
  end
144
147
 
148
+
149
+ # Call this to be able to marshall the AppTree
150
+ def marshallable
151
+ @initializer_paths = @initializer_paths.to_a
152
+ @controller_paths = @controller_paths.to_a
153
+ @template_paths = @template_paths.to_a
154
+ @lib_files = @file_paths.to_a
155
+
156
+ self
157
+ end
158
+
145
159
  private
146
160
 
147
161
  def find_helper_paths
@@ -157,20 +171,43 @@ module Brakeman
157
171
  end
158
172
 
159
173
  def find_paths(directory, extensions = ".rb")
160
- select_files(glob_files(directory, "*", extensions).sort)
174
+ select_files(glob_files(directory, "*", extensions))
161
175
  end
162
176
 
163
177
  def glob_files(directory, name, extensions = ".rb")
164
- pattern = "#{root_search_pattern}#{directory}/**/#{name}#{extensions}"
178
+ if @follow_symlinks
179
+ root_directory = "#{root_search_pattern}#{directory}"
180
+ patterns = ["#{root_directory}/**/#{name}#{extensions}"]
181
+
182
+ Dir.glob("#{root_directory}/**/*", File::FNM_DOTMATCH).each do |path|
183
+ if File.symlink?(path) && File.directory?(path)
184
+ symlink_target = File.readlink(path)
185
+ if Pathname.new(symlink_target).relative?
186
+ symlink_target = File.join(File.dirname(path), symlink_target)
187
+ end
188
+ patterns << "#{search_pattern(symlink_target)}/**/#{name}#{extensions}"
189
+ end
190
+ end
165
191
 
166
- Dir.glob(pattern)
192
+ files = patterns.flat_map { |pattern| Dir.glob(pattern) }
193
+ files.uniq.lazy
194
+ else
195
+ pattern = "#{root_search_pattern}#{directory}/**/#{name}#{extensions}"
196
+ Dir.glob(pattern).lazy
197
+ end
167
198
  end
168
199
 
169
200
  def select_files(paths)
170
201
  paths = select_only_files(paths)
171
202
  paths = reject_skipped_files(paths)
172
203
  paths = convert_to_file_paths(paths)
173
- reject_global_excludes(paths)
204
+ paths = reject_global_excludes(paths)
205
+ paths = reject_directories(paths)
206
+ paths
207
+ end
208
+
209
+ def reject_directories(paths)
210
+ paths.reject { |path| File.directory?(path) }
174
211
  end
175
212
 
176
213
  def select_only_files(paths)
@@ -189,15 +226,14 @@ module Brakeman
189
226
  end
190
227
  end
191
228
 
192
- EXCLUDED_PATHS = %w[
193
- /generators/
229
+ EXCLUDED_PATHS = regex_for_paths %w[
230
+ generators/
194
231
  lib/tasks/
195
232
  lib/templates/
196
233
  db/
197
234
  spec/
198
235
  test/
199
236
  tmp/
200
- log/
201
237
  ]
202
238
 
203
239
  def reject_global_excludes(paths)
@@ -207,9 +243,7 @@ module Brakeman
207
243
  if @skip_vendor and relative_path.include? 'vendor/' and !in_engine_paths?(path) and !in_add_libs_paths?(path)
208
244
  true
209
245
  else
210
- EXCLUDED_PATHS.any? do |excluded|
211
- relative_path.include? excluded
212
- end
246
+ match_path EXCLUDED_PATHS, path
213
247
  end
214
248
  end
215
249
  end
@@ -237,13 +271,16 @@ module Brakeman
237
271
 
238
272
  def root_search_pattern
239
273
  return @root_search_pattern if @root_search_pattern
274
+ @root_search_pattern = search_pattern(@root)
275
+ end
240
276
 
277
+ def search_pattern(root_dir)
241
278
  abs = @absolute_engine_paths.to_a.map { |path| path.gsub(/#{File::SEPARATOR}+$/, '') }
242
279
  rel = @relative_engine_paths.to_a.map { |path| path.gsub(/#{File::SEPARATOR}+$/, '') }
243
280
 
244
- roots = ([@root] + abs).join(",")
281
+ roots = ([root_dir] + abs).join(",")
245
282
  rel_engines = (rel + [""]).join("/,")
246
- @root_search_pattern = "{#{roots}}/{#{rel_engines}}"
283
+ "{#{roots}}/{#{rel_engines}}"
247
284
  end
248
285
 
249
286
  def prioritize_concerns paths
@@ -76,10 +76,13 @@ class Brakeman::CheckDeserialize < Brakeman::BaseCheck
76
76
  confidence = :high
77
77
  elsif input = include_user_input?(arg)
78
78
  confidence = :medium
79
+ elsif target == :Marshal
80
+ confidence = :low
81
+ message = msg("Use of ", msg_code("#{target}.#{method}"), " may be dangerous")
79
82
  end
80
83
 
81
84
  if confidence
82
- message = msg(msg_code("#{target}.#{method}"), " called with ", msg_input(input))
85
+ message ||= msg(msg_code("#{target}.#{method}"), " called with ", msg_input(input))
83
86
 
84
87
  warn :result => result,
85
88
  :warning_type => "Remote Code Execution",
@@ -11,6 +11,8 @@ class Brakeman::CheckEOLRails < Brakeman::EOLCheck
11
11
  check_eol_version :rails, RAILS_EOL_DATES
12
12
  end
13
13
 
14
+ # https://rubyonrails.org/maintenance
15
+ # https://endoflife.date/rails
14
16
  RAILS_EOL_DATES = {
15
17
  ['2.0.0', '2.3.99'] => Date.new(2013, 6, 25),
16
18
  ['3.0.0', '3.2.99'] => Date.new(2016, 6, 30),
@@ -19,5 +21,10 @@ class Brakeman::CheckEOLRails < Brakeman::EOLCheck
19
21
  ['5.1.0', '5.1.99'] => Date.new(2019, 8, 25),
20
22
  ['5.2.0', '5.2.99'] => Date.new(2022, 6, 1),
21
23
  ['6.0.0', '6.0.99'] => Date.new(2023, 6, 1),
24
+ ['6.1.0', '6.1.99'] => Date.new(2024, 10, 1),
25
+ ['7.0.0', '7.0.99'] => Date.new(2025, 4, 1),
26
+ ['7.1.0', '7.1.99'] => Date.new(2025, 10, 1),
27
+ ['7.2.0', '7.2.99'] => Date.new(2026, 8, 9),
28
+ ['8.0.0', '8.0.99'] => Date.new(2026, 10, 7),
22
29
  }
23
30
  end
@@ -25,5 +25,6 @@ class Brakeman::CheckEOLRuby < Brakeman::EOLCheck
25
25
  ['3.1.0', '3.1.99'] => Date.new(2025, 3, 31),
26
26
  ['3.2.0', '3.2.99'] => Date.new(2026, 3, 31),
27
27
  ['3.3.0', '3.3.99'] => Date.new(2027, 3, 31),
28
+ ['3.4.0', '3.4.99'] => Date.new(2028, 3, 31),
28
29
  }
29
30
  end
@@ -22,14 +22,51 @@ class Brakeman::CheckEvaluation < Brakeman::BaseCheck
22
22
  def process_result result
23
23
  return unless original? result
24
24
 
25
- if input = include_user_input?(result[:call].arglist)
26
- warn :result => result,
27
- :warning_type => "Dangerous Eval",
28
- :warning_code => :code_eval,
29
- :message => "User input in eval",
30
- :user_input => input,
31
- :confidence => :high,
32
- :cwe_id => [913, 95]
25
+ first_arg = result[:call].first_arg
26
+
27
+ unless safe_value? first_arg
28
+ if input = include_user_input?(first_arg)
29
+ confidence = :high
30
+ message = msg(msg_input(input), " evaluated as code")
31
+ elsif string_evaluation? first_arg
32
+ confidence = :low
33
+ message = "Dynamic string evaluated as code"
34
+ elsif result[:call].method == :eval
35
+ confidence = :low
36
+ message = "Dynamic code evaluation"
37
+ end
38
+
39
+ if confidence
40
+ warn :result => result,
41
+ :warning_type => "Dangerous Eval",
42
+ :warning_code => :code_eval,
43
+ :message => message,
44
+ :user_input => input,
45
+ :confidence => confidence,
46
+ :cwe_id => [913, 95]
47
+ end
48
+ end
49
+ end
50
+
51
+ def string_evaluation? exp
52
+ string_interp? exp or
53
+ (call? exp and string? exp.target)
54
+ end
55
+
56
+ def safe_value? exp
57
+ return true unless sexp? exp
58
+
59
+ case exp.sexp_type
60
+ when :dstr
61
+ exp.all? { |e| safe_value? e}
62
+ when :evstr
63
+ safe_value? exp.value
64
+ when :str, :lit
65
+ true
66
+ when :call
67
+ always_safe_method? exp.method
68
+ else
69
+ false
33
70
  end
34
71
  end
35
72
  end
@@ -53,6 +53,7 @@ class Brakeman::CheckExecute < Brakeman::BaseCheck
53
53
  call = result[:call]
54
54
  args = call.arglist
55
55
  first_arg = call.first_arg
56
+ failure = nil
56
57
 
57
58
  case call.method
58
59
  when :popen
@@ -71,6 +72,33 @@ class Brakeman::CheckExecute < Brakeman::BaseCheck
71
72
  dangerous_interp?(first_arg[3]) ||
72
73
  dangerous_string_building?(first_arg[3])
73
74
  end
75
+ when :pipeline, :pipline_r, :pipeline_rw, :pipeline_w, :pipeline_start
76
+ # Since these pipeline commands pipe together several commands,
77
+ # need to check each argument. If it's an array, check first argument
78
+ # (the command) and also check for `bash -c`. Otherwise check the argument
79
+ # as a unit.
80
+
81
+ args.each do |arg|
82
+ next unless sexp? arg
83
+
84
+ if array?(arg)
85
+ # Check first element of array
86
+ failure = include_user_input?(arg[1]) ||
87
+ dangerous_interp?(arg[1]) ||
88
+ dangerous_string_building?(arg[1])
89
+
90
+ # Check for ['bash', '-c', user_input]
91
+ if dash_c_shell_command?(arg[1], arg[2])
92
+ failure = include_user_input?(arg[3]) ||
93
+ dangerous_interp?(arg[3]) ||
94
+ dangerous_string_building?(arg[3])
95
+ end
96
+ else
97
+ failure = include_user_input?(arg)
98
+ end
99
+
100
+ break if failure
101
+ end
74
102
  when :system, :exec
75
103
  # Normally, if we're in a `system` or `exec` call, we only are worried
76
104
  # about shell injection when there's a single argument, because comma-
@@ -33,6 +33,7 @@ class Brakeman::CheckModelAttrAccessible < Brakeman::BaseCheck
33
33
  :confidence => confidence,
34
34
  :code => Sexp.new(:lit, attribute),
35
35
  :cwe_id => [915]
36
+
36
37
  break # Prevent from matching single attr multiple times
37
38
  end
38
39
  end
@@ -118,7 +118,7 @@ class Brakeman::CheckSessionSettings < Brakeman::BaseCheck
118
118
  yaml = secrets_file.read
119
119
  require 'yaml'
120
120
  begin
121
- secrets = YAML.safe_load yaml
121
+ secrets = YAML.safe_load yaml, aliases: true
122
122
  rescue Psych::SyntaxError, RuntimeError => e
123
123
  Brakeman.notify "[Notice] #{self.class}: Unable to parse `#{secrets_file}`"
124
124
  Brakeman.debug "Failed to parse #{secrets_file}: #{e.inspect}"
@@ -24,7 +24,7 @@ class Brakeman::CheckUnscopedFind < Brakeman::BaseCheck
24
24
  process_result call
25
25
  end
26
26
 
27
- tracker.find_call(:method => :find_by, :targets => associated_model_names).each do |result|
27
+ tracker.find_call(:methods => [:find_by, :find_by!], :targets => associated_model_names).each do |result|
28
28
  arg = result[:call].first_arg
29
29
 
30
30
  if hash? arg and hash_access(arg, :id)
@@ -87,7 +87,7 @@ class Brakeman::CheckWeakRSAKey < Brakeman::BaseCheck
87
87
 
88
88
  if string? padding_arg
89
89
  padding_arg = padding_arg.deep_clone(padding_arg.line)
90
- padding_arg.value.downcase!
90
+ padding_arg.value = padding_arg.value.downcase
91
91
  end
92
92
 
93
93
  case padding_arg
@@ -145,6 +145,11 @@ module Brakeman
145
145
  quit Brakeman::Errors_Found_Exit_Code
146
146
  end
147
147
 
148
+ if tracker.options[:ensure_no_obsolete_ignore_entries] && tracker.unused_fingerprints.any?
149
+ warn '[Error] Obsolete ignore entries were found, exiting with an error code.'
150
+ quit Brakeman::Obsolete_Ignore_Entries_Exit_Code
151
+ end
152
+
148
153
  if ensure_ignore_notes_failed
149
154
  quit Brakeman::Empty_Ignore_Note_Exit_Code
150
155
  end
@@ -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