brakeman 4.7.2 → 4.9.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (400) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES.md +46 -0
  3. data/README.md +12 -4
  4. data/bundle/load.rb +13 -13
  5. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/erubis-2.7.0/CHANGES.txt +0 -0
  6. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/erubis-2.7.0/MIT-LICENSE +0 -0
  7. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/erubis-2.7.0/README.txt +0 -0
  8. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/erubis-2.7.0/contrib/erubis +0 -0
  9. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/erubis-2.7.0/contrib/erubis-run.rb +0 -0
  10. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/erubis-2.7.0/contrib/inline-require +0 -0
  11. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/erubis-2.7.0/lib/erubis.rb +0 -0
  12. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/erubis-2.7.0/lib/erubis/context.rb +0 -0
  13. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/erubis-2.7.0/lib/erubis/converter.rb +0 -0
  14. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/erubis-2.7.0/lib/erubis/engine.rb +0 -0
  15. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/erubis-2.7.0/lib/erubis/engine/ec.rb +0 -0
  16. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/erubis-2.7.0/lib/erubis/engine/ecpp.rb +0 -0
  17. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/erubis-2.7.0/lib/erubis/engine/ejava.rb +0 -0
  18. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/erubis-2.7.0/lib/erubis/engine/ejavascript.rb +0 -0
  19. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/erubis-2.7.0/lib/erubis/engine/enhanced.rb +0 -0
  20. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/erubis-2.7.0/lib/erubis/engine/eperl.rb +0 -0
  21. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/erubis-2.7.0/lib/erubis/engine/ephp.rb +0 -0
  22. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/erubis-2.7.0/lib/erubis/engine/eruby.rb +0 -0
  23. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/erubis-2.7.0/lib/erubis/engine/escheme.rb +0 -0
  24. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/erubis-2.7.0/lib/erubis/engine/optimized.rb +0 -0
  25. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/erubis-2.7.0/lib/erubis/enhancer.rb +0 -0
  26. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/erubis-2.7.0/lib/erubis/error.rb +0 -0
  27. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/erubis-2.7.0/lib/erubis/evaluator.rb +0 -0
  28. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/erubis-2.7.0/lib/erubis/generator.rb +0 -0
  29. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/erubis-2.7.0/lib/erubis/helper.rb +0 -0
  30. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/erubis-2.7.0/lib/erubis/helpers/rails_form_helper.rb +0 -0
  31. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/erubis-2.7.0/lib/erubis/helpers/rails_helper.rb +0 -0
  32. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/erubis-2.7.0/lib/erubis/local-setting.rb +0 -0
  33. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/erubis-2.7.0/lib/erubis/main.rb +0 -0
  34. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/erubis-2.7.0/lib/erubis/preprocessing.rb +0 -0
  35. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/erubis-2.7.0/lib/erubis/tiny.rb +0 -0
  36. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/erubis-2.7.0/lib/erubis/util.rb +0 -0
  37. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/erubis-2.7.0/setup.rb +0 -0
  38. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/haml-5.1.2/CHANGELOG.md +0 -0
  39. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/haml-5.1.2/FAQ.md +0 -0
  40. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/haml-5.1.2/Gemfile +0 -0
  41. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/haml-5.1.2/MIT-LICENSE +0 -0
  42. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/haml-5.1.2/README.md +0 -0
  43. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/haml-5.1.2/REFERENCE.md +0 -0
  44. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/haml-5.1.2/TODO +0 -0
  45. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/haml-5.1.2/haml.gemspec +0 -0
  46. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/haml-5.1.2/lib/haml.rb +0 -0
  47. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/haml-5.1.2/lib/haml/attribute_builder.rb +0 -0
  48. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/haml-5.1.2/lib/haml/attribute_compiler.rb +0 -0
  49. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/haml-5.1.2/lib/haml/attribute_parser.rb +0 -0
  50. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/haml-5.1.2/lib/haml/buffer.rb +0 -0
  51. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/haml-5.1.2/lib/haml/compiler.rb +0 -0
  52. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/haml-5.1.2/lib/haml/engine.rb +0 -0
  53. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/haml-5.1.2/lib/haml/error.rb +0 -0
  54. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/haml-5.1.2/lib/haml/escapable.rb +0 -0
  55. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/haml-5.1.2/lib/haml/exec.rb +0 -0
  56. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/haml-5.1.2/lib/haml/filters.rb +0 -0
  57. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/haml-5.1.2/lib/haml/generator.rb +0 -0
  58. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/haml-5.1.2/lib/haml/helpers.rb +0 -0
  59. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/haml-5.1.2/lib/haml/helpers/action_view_extensions.rb +0 -0
  60. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/haml-5.1.2/lib/haml/helpers/action_view_mods.rb +0 -0
  61. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/haml-5.1.2/lib/haml/helpers/action_view_xss_mods.rb +0 -0
  62. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/haml-5.1.2/lib/haml/helpers/safe_erubi_template.rb +0 -0
  63. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/haml-5.1.2/lib/haml/helpers/safe_erubis_template.rb +0 -0
  64. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/haml-5.1.2/lib/haml/helpers/xss_mods.rb +0 -0
  65. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/haml-5.1.2/lib/haml/options.rb +0 -0
  66. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/haml-5.1.2/lib/haml/parser.rb +0 -0
  67. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/haml-5.1.2/lib/haml/plugin.rb +0 -0
  68. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/haml-5.1.2/lib/haml/railtie.rb +0 -0
  69. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/haml-5.1.2/lib/haml/sass_rails_filter.rb +0 -0
  70. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/haml-5.1.2/lib/haml/template.rb +0 -0
  71. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/haml-5.1.2/lib/haml/template/options.rb +0 -0
  72. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/haml-5.1.2/lib/haml/temple_engine.rb +0 -0
  73. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/haml-5.1.2/lib/haml/temple_line_counter.rb +0 -0
  74. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/haml-5.1.2/lib/haml/util.rb +0 -0
  75. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/haml-5.1.2/lib/haml/version.rb +0 -0
  76. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/haml-5.1.2/yard/default/fulldoc/html/css/common.sass +0 -0
  77. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/haml-5.1.2/yard/default/layout/html/footer.erb +0 -0
  78. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/highline-2.0.3/AUTHORS +0 -0
  79. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/highline-2.0.3/COPYING +0 -0
  80. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/highline-2.0.3/Changelog.md +0 -0
  81. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/highline-2.0.3/Gemfile +0 -0
  82. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/highline-2.0.3/LICENSE +0 -0
  83. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/highline-2.0.3/README.md +0 -0
  84. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/highline-2.0.3/TODO +0 -0
  85. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/highline-2.0.3/appveyor.yml +0 -0
  86. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/highline-2.0.3/highline.gemspec +0 -0
  87. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/highline-2.0.3/lib/highline.rb +0 -0
  88. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/highline-2.0.3/lib/highline/builtin_styles.rb +0 -0
  89. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/highline-2.0.3/lib/highline/color_scheme.rb +0 -0
  90. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/highline-2.0.3/lib/highline/compatibility.rb +0 -0
  91. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/highline-2.0.3/lib/highline/custom_errors.rb +0 -0
  92. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/highline-2.0.3/lib/highline/import.rb +0 -0
  93. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/highline-2.0.3/lib/highline/io_console_compatible.rb +0 -0
  94. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/highline-2.0.3/lib/highline/list.rb +0 -0
  95. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/highline-2.0.3/lib/highline/list_renderer.rb +0 -0
  96. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/highline-2.0.3/lib/highline/menu.rb +0 -0
  97. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/highline-2.0.3/lib/highline/menu/item.rb +0 -0
  98. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/highline-2.0.3/lib/highline/paginator.rb +0 -0
  99. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/highline-2.0.3/lib/highline/question.rb +0 -0
  100. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/highline-2.0.3/lib/highline/question/answer_converter.rb +0 -0
  101. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/highline-2.0.3/lib/highline/question_asker.rb +0 -0
  102. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/highline-2.0.3/lib/highline/simulate.rb +0 -0
  103. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/highline-2.0.3/lib/highline/statement.rb +0 -0
  104. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/highline-2.0.3/lib/highline/string.rb +0 -0
  105. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/highline-2.0.3/lib/highline/string_extensions.rb +0 -0
  106. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/highline-2.0.3/lib/highline/style.rb +0 -0
  107. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/highline-2.0.3/lib/highline/template_renderer.rb +0 -0
  108. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/highline-2.0.3/lib/highline/terminal.rb +0 -0
  109. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/highline-2.0.3/lib/highline/terminal/io_console.rb +0 -0
  110. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/highline-2.0.3/lib/highline/terminal/ncurses.rb +0 -0
  111. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/highline-2.0.3/lib/highline/terminal/unix_stty.rb +0 -0
  112. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/highline-2.0.3/lib/highline/version.rb +0 -0
  113. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/highline-2.0.3/lib/highline/wrapper.rb +0 -0
  114. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/ruby2ruby-2.4.4/History.rdoc +0 -0
  115. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/ruby2ruby-2.4.4/Manifest.txt +0 -0
  116. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/ruby2ruby-2.4.4/README.rdoc +0 -0
  117. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/ruby2ruby-2.4.4/lib/ruby2ruby.rb +0 -0
  118. data/bundle/ruby/{2.6.0/gems/ruby_parser-3.14.1 → 2.7.0/gems/ruby_parser-3.15.0}/History.rdoc +41 -0
  119. data/bundle/ruby/{2.6.0/gems/ruby_parser-3.14.1 → 2.7.0/gems/ruby_parser-3.15.0}/Manifest.txt +2 -0
  120. data/bundle/ruby/{2.6.0/gems/ruby_parser-3.14.1 → 2.7.0/gems/ruby_parser-3.15.0}/README.rdoc +0 -0
  121. data/bundle/ruby/{2.6.0/gems/ruby_parser-3.14.1 → 2.7.0/gems/ruby_parser-3.15.0}/compare/normalize.rb +43 -3
  122. data/bundle/ruby/2.7.0/gems/ruby_parser-3.15.0/debugging.md +57 -0
  123. data/bundle/ruby/{2.6.0/gems/ruby_parser-3.14.1 → 2.7.0/gems/ruby_parser-3.15.0}/lib/rp_extensions.rb +0 -0
  124. data/bundle/ruby/{2.6.0/gems/ruby_parser-3.14.1 → 2.7.0/gems/ruby_parser-3.15.0}/lib/rp_stringscanner.rb +0 -0
  125. data/bundle/ruby/2.7.0/gems/ruby_parser-3.15.0/lib/ruby20_parser.rb +7062 -0
  126. data/bundle/ruby/{2.6.0/gems/ruby_parser-3.14.1 → 2.7.0/gems/ruby_parser-3.15.0}/lib/ruby20_parser.y +93 -63
  127. data/bundle/ruby/2.7.0/gems/ruby_parser-3.15.0/lib/ruby21_parser.rb +7140 -0
  128. data/bundle/ruby/{2.6.0/gems/ruby_parser-3.14.1 → 2.7.0/gems/ruby_parser-3.15.0}/lib/ruby21_parser.y +93 -63
  129. data/bundle/ruby/2.7.0/gems/ruby_parser-3.15.0/lib/ruby22_parser.rb +7160 -0
  130. data/bundle/ruby/{2.6.0/gems/ruby_parser-3.14.1 → 2.7.0/gems/ruby_parser-3.15.0}/lib/ruby22_parser.y +93 -63
  131. data/bundle/ruby/2.7.0/gems/ruby_parser-3.15.0/lib/ruby23_parser.rb +7175 -0
  132. data/bundle/ruby/{2.6.0/gems/ruby_parser-3.14.1 → 2.7.0/gems/ruby_parser-3.15.0}/lib/ruby23_parser.y +93 -63
  133. data/bundle/ruby/2.7.0/gems/ruby_parser-3.15.0/lib/ruby24_parser.rb +7204 -0
  134. data/bundle/ruby/{2.6.0/gems/ruby_parser-3.14.1 → 2.7.0/gems/ruby_parser-3.15.0}/lib/ruby24_parser.y +93 -63
  135. data/bundle/ruby/2.7.0/gems/ruby_parser-3.15.0/lib/ruby25_parser.rb +7204 -0
  136. data/bundle/ruby/{2.6.0/gems/ruby_parser-3.14.1 → 2.7.0/gems/ruby_parser-3.15.0}/lib/ruby25_parser.y +93 -63
  137. data/bundle/ruby/2.7.0/gems/ruby_parser-3.15.0/lib/ruby26_parser.rb +7224 -0
  138. data/bundle/ruby/{2.6.0/gems/ruby_parser-3.14.1 → 2.7.0/gems/ruby_parser-3.15.0}/lib/ruby26_parser.y +93 -63
  139. data/bundle/ruby/2.7.0/gems/ruby_parser-3.15.0/lib/ruby27_parser.rb +7224 -0
  140. data/bundle/ruby/2.7.0/gems/ruby_parser-3.15.0/lib/ruby27_parser.y +2657 -0
  141. data/bundle/ruby/{2.6.0/gems/ruby_parser-3.14.1 → 2.7.0/gems/ruby_parser-3.15.0}/lib/ruby_lexer.rb +72 -40
  142. data/bundle/ruby/{2.6.0/gems/ruby_parser-3.14.1 → 2.7.0/gems/ruby_parser-3.15.0}/lib/ruby_lexer.rex +5 -6
  143. data/bundle/ruby/{2.6.0/gems/ruby_parser-3.14.1 → 2.7.0/gems/ruby_parser-3.15.0}/lib/ruby_lexer.rex.rb +6 -8
  144. data/bundle/ruby/{2.6.0/gems/ruby_parser-3.14.1 → 2.7.0/gems/ruby_parser-3.15.0}/lib/ruby_parser.rb +2 -0
  145. data/bundle/ruby/{2.6.0/gems/ruby_parser-3.14.1 → 2.7.0/gems/ruby_parser-3.15.0}/lib/ruby_parser.yy +95 -63
  146. data/bundle/ruby/{2.6.0/gems/ruby_parser-3.14.1 → 2.7.0/gems/ruby_parser-3.15.0}/lib/ruby_parser_extras.rb +49 -22
  147. data/bundle/ruby/{2.6.0/gems/ruby_parser-3.14.1 → 2.7.0/gems/ruby_parser-3.15.0}/tools/munge.rb +9 -4
  148. data/bundle/ruby/{2.6.0/gems/ruby_parser-3.14.1 → 2.7.0/gems/ruby_parser-3.15.0}/tools/ripper.rb +0 -0
  149. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/ruby_parser-legacy-1.0.0/History.rdoc +0 -0
  150. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/ruby_parser-legacy-1.0.0/Manifest.txt +0 -0
  151. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/ruby_parser-legacy-1.0.0/README.rdoc +0 -0
  152. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/ruby_parser-legacy-1.0.0/lib/ruby_parser/legacy.rb +0 -0
  153. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/ruby_parser-legacy-1.0.0/lib/ruby_parser/legacy/ruby18_parser.rb +0 -0
  154. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/ruby_parser-legacy-1.0.0/lib/ruby_parser/legacy/ruby18_parser.y +0 -0
  155. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/ruby_parser-legacy-1.0.0/lib/ruby_parser/legacy/ruby19_parser.rb +0 -0
  156. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/ruby_parser-legacy-1.0.0/lib/ruby_parser/legacy/ruby19_parser.y +0 -0
  157. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/ruby_parser-legacy-1.0.0/lib/ruby_parser/legacy/ruby_lexer.rb +0 -0
  158. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/ruby_parser-legacy-1.0.0/lib/ruby_parser/legacy/ruby_lexer.rex +0 -0
  159. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/ruby_parser-legacy-1.0.0/lib/ruby_parser/legacy/ruby_lexer.rex.rb +0 -0
  160. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/ruby_parser-legacy-1.0.0/lib/ruby_parser/legacy/ruby_parser.rb +0 -0
  161. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/ruby_parser-legacy-1.0.0/lib/ruby_parser/legacy/ruby_parser_extras.rb +0 -0
  162. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/safe_yaml-1.0.5/CHANGES.md +0 -0
  163. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/safe_yaml-1.0.5/Gemfile +0 -0
  164. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/safe_yaml-1.0.5/LICENSE.txt +0 -0
  165. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/safe_yaml-1.0.5/README.md +0 -0
  166. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/safe_yaml-1.0.5/bundle_install_all_ruby_versions.sh +0 -0
  167. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/safe_yaml-1.0.5/lib/safe_yaml.rb +0 -0
  168. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/safe_yaml-1.0.5/lib/safe_yaml/deep.rb +0 -0
  169. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/safe_yaml-1.0.5/lib/safe_yaml/libyaml_checker.rb +0 -0
  170. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/safe_yaml-1.0.5/lib/safe_yaml/load.rb +0 -0
  171. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/safe_yaml-1.0.5/lib/safe_yaml/parse/date.rb +0 -0
  172. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/safe_yaml-1.0.5/lib/safe_yaml/parse/hexadecimal.rb +0 -0
  173. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/safe_yaml-1.0.5/lib/safe_yaml/parse/sexagesimal.rb +0 -0
  174. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/safe_yaml-1.0.5/lib/safe_yaml/psych_handler.rb +0 -0
  175. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/safe_yaml-1.0.5/lib/safe_yaml/psych_resolver.rb +0 -0
  176. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/safe_yaml-1.0.5/lib/safe_yaml/resolver.rb +0 -0
  177. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/safe_yaml-1.0.5/lib/safe_yaml/safe_to_ruby_visitor.rb +0 -0
  178. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/safe_yaml-1.0.5/lib/safe_yaml/store.rb +0 -0
  179. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/safe_yaml-1.0.5/lib/safe_yaml/syck_hack.rb +0 -0
  180. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/safe_yaml-1.0.5/lib/safe_yaml/syck_node_monkeypatch.rb +0 -0
  181. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/safe_yaml-1.0.5/lib/safe_yaml/syck_resolver.rb +0 -0
  182. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/safe_yaml-1.0.5/lib/safe_yaml/transform.rb +0 -0
  183. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/safe_yaml-1.0.5/lib/safe_yaml/transform/to_boolean.rb +0 -0
  184. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/safe_yaml-1.0.5/lib/safe_yaml/transform/to_date.rb +0 -0
  185. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/safe_yaml-1.0.5/lib/safe_yaml/transform/to_float.rb +0 -0
  186. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/safe_yaml-1.0.5/lib/safe_yaml/transform/to_integer.rb +0 -0
  187. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/safe_yaml-1.0.5/lib/safe_yaml/transform/to_nil.rb +0 -0
  188. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/safe_yaml-1.0.5/lib/safe_yaml/transform/to_symbol.rb +0 -0
  189. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/safe_yaml-1.0.5/lib/safe_yaml/transform/transformation_map.rb +0 -0
  190. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/safe_yaml-1.0.5/lib/safe_yaml/version.rb +0 -0
  191. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/safe_yaml-1.0.5/run_specs_all_ruby_versions.sh +0 -0
  192. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/safe_yaml-1.0.5/safe_yaml.gemspec +0 -0
  193. data/bundle/ruby/{2.6.0/gems/sexp_processor-4.13.0 → 2.7.0/gems/sexp_processor-4.15.1}/History.rdoc +28 -0
  194. data/bundle/ruby/{2.6.0/gems/sexp_processor-4.13.0 → 2.7.0/gems/sexp_processor-4.15.1}/Manifest.txt +0 -0
  195. data/bundle/ruby/{2.6.0/gems/sexp_processor-4.13.0 → 2.7.0/gems/sexp_processor-4.15.1}/README.rdoc +0 -0
  196. data/bundle/ruby/{2.6.0/gems/sexp_processor-4.13.0 → 2.7.0/gems/sexp_processor-4.15.1}/lib/composite_sexp_processor.rb +0 -0
  197. data/bundle/ruby/{2.6.0/gems/sexp_processor-4.13.0 → 2.7.0/gems/sexp_processor-4.15.1}/lib/pt_testcase.rb +2 -2
  198. data/bundle/ruby/{2.6.0/gems/sexp_processor-4.13.0 → 2.7.0/gems/sexp_processor-4.15.1}/lib/sexp.rb +0 -0
  199. data/bundle/ruby/{2.6.0/gems/sexp_processor-4.13.0 → 2.7.0/gems/sexp_processor-4.15.1}/lib/sexp_matcher.rb +44 -7
  200. data/bundle/ruby/{2.6.0/gems/sexp_processor-4.13.0 → 2.7.0/gems/sexp_processor-4.15.1}/lib/sexp_processor.rb +1 -1
  201. data/bundle/ruby/{2.6.0/gems/sexp_processor-4.13.0 → 2.7.0/gems/sexp_processor-4.15.1}/lib/strict_sexp.rb +0 -0
  202. data/bundle/ruby/{2.6.0/gems/sexp_processor-4.13.0 → 2.7.0/gems/sexp_processor-4.15.1}/lib/unique.rb +0 -0
  203. data/bundle/ruby/{2.6.0/gems/slim-4.0.1 → 2.7.0/gems/slim-4.1.0}/CHANGES +4 -0
  204. data/bundle/ruby/{2.6.0/gems/slim-4.0.1 → 2.7.0/gems/slim-4.1.0}/Gemfile +12 -13
  205. data/bundle/ruby/{2.6.0/gems/slim-4.0.1 → 2.7.0/gems/slim-4.1.0}/LICENSE +0 -0
  206. data/bundle/ruby/{2.6.0/gems/slim-4.0.1 → 2.7.0/gems/slim-4.1.0}/README.jp.md +0 -0
  207. data/bundle/ruby/{2.6.0/gems/slim-4.0.1 → 2.7.0/gems/slim-4.1.0}/README.md +0 -0
  208. data/bundle/ruby/{2.6.0/gems/slim-4.0.1 → 2.7.0/gems/slim-4.1.0}/lib/slim.rb +0 -0
  209. data/bundle/ruby/{2.6.0/gems/slim-4.0.1 → 2.7.0/gems/slim-4.1.0}/lib/slim/code_attributes.rb +0 -0
  210. data/bundle/ruby/{2.6.0/gems/slim-4.0.1 → 2.7.0/gems/slim-4.1.0}/lib/slim/command.rb +13 -13
  211. data/bundle/ruby/{2.6.0/gems/slim-4.0.1 → 2.7.0/gems/slim-4.1.0}/lib/slim/controls.rb +0 -0
  212. data/bundle/ruby/{2.6.0/gems/slim-4.0.1 → 2.7.0/gems/slim-4.1.0}/lib/slim/do_inserter.rb +0 -0
  213. data/bundle/ruby/{2.6.0/gems/slim-4.0.1 → 2.7.0/gems/slim-4.1.0}/lib/slim/embedded.rb +0 -0
  214. data/bundle/ruby/{2.6.0/gems/slim-4.0.1 → 2.7.0/gems/slim-4.1.0}/lib/slim/end_inserter.rb +0 -0
  215. data/bundle/ruby/{2.6.0/gems/slim-4.0.1 → 2.7.0/gems/slim-4.1.0}/lib/slim/engine.rb +0 -0
  216. data/bundle/ruby/{2.6.0/gems/slim-4.0.1 → 2.7.0/gems/slim-4.1.0}/lib/slim/erb_converter.rb +0 -0
  217. data/bundle/ruby/{2.6.0/gems/slim-4.0.1 → 2.7.0/gems/slim-4.1.0}/lib/slim/filter.rb +0 -0
  218. data/bundle/ruby/{2.6.0/gems/slim-4.0.1 → 2.7.0/gems/slim-4.1.0}/lib/slim/grammar.rb +0 -0
  219. data/bundle/ruby/{2.6.0/gems/slim-4.0.1 → 2.7.0/gems/slim-4.1.0}/lib/slim/include.rb +0 -0
  220. data/bundle/ruby/{2.6.0/gems/slim-4.0.1 → 2.7.0/gems/slim-4.1.0}/lib/slim/interpolation.rb +0 -0
  221. data/bundle/ruby/{2.6.0/gems/slim-4.0.1 → 2.7.0/gems/slim-4.1.0}/lib/slim/logic_less.rb +0 -0
  222. data/bundle/ruby/{2.6.0/gems/slim-4.0.1 → 2.7.0/gems/slim-4.1.0}/lib/slim/logic_less/context.rb +0 -0
  223. data/bundle/ruby/{2.6.0/gems/slim-4.0.1 → 2.7.0/gems/slim-4.1.0}/lib/slim/logic_less/filter.rb +0 -0
  224. data/bundle/ruby/{2.6.0/gems/slim-4.0.1 → 2.7.0/gems/slim-4.1.0}/lib/slim/parser.rb +1 -1
  225. data/bundle/ruby/{2.6.0/gems/slim-4.0.1 → 2.7.0/gems/slim-4.1.0}/lib/slim/smart.rb +0 -0
  226. data/bundle/ruby/{2.6.0/gems/slim-4.0.1 → 2.7.0/gems/slim-4.1.0}/lib/slim/smart/escaper.rb +0 -0
  227. data/bundle/ruby/{2.6.0/gems/slim-4.0.1 → 2.7.0/gems/slim-4.1.0}/lib/slim/smart/filter.rb +0 -0
  228. data/bundle/ruby/{2.6.0/gems/slim-4.0.1 → 2.7.0/gems/slim-4.1.0}/lib/slim/smart/parser.rb +0 -0
  229. data/bundle/ruby/{2.6.0/gems/slim-4.0.1 → 2.7.0/gems/slim-4.1.0}/lib/slim/splat/builder.rb +0 -0
  230. data/bundle/ruby/{2.6.0/gems/slim-4.0.1 → 2.7.0/gems/slim-4.1.0}/lib/slim/splat/filter.rb +0 -0
  231. data/bundle/ruby/{2.6.0/gems/slim-4.0.1 → 2.7.0/gems/slim-4.1.0}/lib/slim/template.rb +0 -0
  232. data/bundle/ruby/{2.6.0/gems/slim-4.0.1 → 2.7.0/gems/slim-4.1.0}/lib/slim/translator.rb +0 -0
  233. data/bundle/ruby/{2.6.0/gems/slim-4.0.1 → 2.7.0/gems/slim-4.1.0}/lib/slim/version.rb +1 -1
  234. data/bundle/ruby/{2.6.0/gems/slim-4.0.1 → 2.7.0/gems/slim-4.1.0}/slim.gemspec +0 -0
  235. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/temple-0.8.2/CHANGES +0 -0
  236. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/temple-0.8.2/EXPRESSIONS.md +0 -0
  237. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/temple-0.8.2/Gemfile +0 -0
  238. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/temple-0.8.2/LICENSE +0 -0
  239. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/temple-0.8.2/README.md +0 -0
  240. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/temple-0.8.2/lib/temple.rb +0 -0
  241. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/temple-0.8.2/lib/temple/engine.rb +0 -0
  242. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/temple-0.8.2/lib/temple/erb/engine.rb +0 -0
  243. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/temple-0.8.2/lib/temple/erb/parser.rb +0 -0
  244. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/temple-0.8.2/lib/temple/erb/template.rb +0 -0
  245. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/temple-0.8.2/lib/temple/erb/trimming.rb +0 -0
  246. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/temple-0.8.2/lib/temple/exceptions.rb +0 -0
  247. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/temple-0.8.2/lib/temple/filter.rb +0 -0
  248. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/temple-0.8.2/lib/temple/filters/code_merger.rb +0 -0
  249. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/temple-0.8.2/lib/temple/filters/control_flow.rb +0 -0
  250. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/temple-0.8.2/lib/temple/filters/dynamic_inliner.rb +0 -0
  251. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/temple-0.8.2/lib/temple/filters/encoding.rb +0 -0
  252. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/temple-0.8.2/lib/temple/filters/eraser.rb +0 -0
  253. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/temple-0.8.2/lib/temple/filters/escapable.rb +0 -0
  254. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/temple-0.8.2/lib/temple/filters/multi_flattener.rb +0 -0
  255. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/temple-0.8.2/lib/temple/filters/remove_bom.rb +0 -0
  256. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/temple-0.8.2/lib/temple/filters/static_analyzer.rb +0 -0
  257. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/temple-0.8.2/lib/temple/filters/static_merger.rb +0 -0
  258. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/temple-0.8.2/lib/temple/filters/string_splitter.rb +0 -0
  259. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/temple-0.8.2/lib/temple/filters/validator.rb +0 -0
  260. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/temple-0.8.2/lib/temple/generator.rb +0 -0
  261. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/temple-0.8.2/lib/temple/generators/array.rb +0 -0
  262. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/temple-0.8.2/lib/temple/generators/array_buffer.rb +0 -0
  263. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/temple-0.8.2/lib/temple/generators/erb.rb +0 -0
  264. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/temple-0.8.2/lib/temple/generators/rails_output_buffer.rb +0 -0
  265. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/temple-0.8.2/lib/temple/generators/string_buffer.rb +0 -0
  266. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/temple-0.8.2/lib/temple/grammar.rb +0 -0
  267. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/temple-0.8.2/lib/temple/html/attribute_merger.rb +0 -0
  268. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/temple-0.8.2/lib/temple/html/attribute_remover.rb +0 -0
  269. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/temple-0.8.2/lib/temple/html/attribute_sorter.rb +0 -0
  270. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/temple-0.8.2/lib/temple/html/dispatcher.rb +0 -0
  271. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/temple-0.8.2/lib/temple/html/fast.rb +0 -0
  272. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/temple-0.8.2/lib/temple/html/filter.rb +0 -0
  273. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/temple-0.8.2/lib/temple/html/pretty.rb +0 -0
  274. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/temple-0.8.2/lib/temple/html/safe.rb +0 -0
  275. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/temple-0.8.2/lib/temple/map.rb +0 -0
  276. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/temple-0.8.2/lib/temple/mixins/dispatcher.rb +0 -0
  277. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/temple-0.8.2/lib/temple/mixins/engine_dsl.rb +0 -0
  278. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/temple-0.8.2/lib/temple/mixins/grammar_dsl.rb +0 -0
  279. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/temple-0.8.2/lib/temple/mixins/options.rb +0 -0
  280. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/temple-0.8.2/lib/temple/mixins/template.rb +0 -0
  281. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/temple-0.8.2/lib/temple/parser.rb +0 -0
  282. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/temple-0.8.2/lib/temple/static_analyzer.rb +0 -0
  283. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/temple-0.8.2/lib/temple/templates.rb +0 -0
  284. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/temple-0.8.2/lib/temple/templates/rails.rb +0 -0
  285. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/temple-0.8.2/lib/temple/templates/tilt.rb +0 -0
  286. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/temple-0.8.2/lib/temple/utils.rb +0 -0
  287. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/temple-0.8.2/lib/temple/version.rb +0 -0
  288. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/temple-0.8.2/temple.gemspec +0 -0
  289. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/terminal-table-1.8.0/Gemfile +0 -0
  290. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/terminal-table-1.8.0/History.rdoc +0 -0
  291. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/terminal-table-1.8.0/LICENSE.txt +0 -0
  292. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/terminal-table-1.8.0/Manifest +0 -0
  293. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/terminal-table-1.8.0/README.rdoc +0 -0
  294. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/terminal-table-1.8.0/Todo.rdoc +0 -0
  295. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/terminal-table-1.8.0/lib/terminal-table.rb +0 -0
  296. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/terminal-table-1.8.0/lib/terminal-table/cell.rb +0 -0
  297. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/terminal-table-1.8.0/lib/terminal-table/import.rb +0 -0
  298. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/terminal-table-1.8.0/lib/terminal-table/row.rb +0 -0
  299. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/terminal-table-1.8.0/lib/terminal-table/separator.rb +0 -0
  300. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/terminal-table-1.8.0/lib/terminal-table/style.rb +0 -0
  301. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/terminal-table-1.8.0/lib/terminal-table/table.rb +0 -0
  302. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/terminal-table-1.8.0/lib/terminal-table/table_helper.rb +0 -0
  303. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/terminal-table-1.8.0/lib/terminal-table/version.rb +0 -0
  304. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/terminal-table-1.8.0/terminal-table.gemspec +0 -0
  305. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/tilt-2.0.10/COPYING +0 -0
  306. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/tilt-2.0.10/lib/tilt.rb +0 -0
  307. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/tilt-2.0.10/lib/tilt/asciidoc.rb +0 -0
  308. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/tilt-2.0.10/lib/tilt/babel.rb +0 -0
  309. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/tilt-2.0.10/lib/tilt/bluecloth.rb +0 -0
  310. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/tilt-2.0.10/lib/tilt/builder.rb +0 -0
  311. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/tilt-2.0.10/lib/tilt/coffee.rb +0 -0
  312. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/tilt-2.0.10/lib/tilt/commonmarker.rb +0 -0
  313. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/tilt-2.0.10/lib/tilt/creole.rb +0 -0
  314. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/tilt-2.0.10/lib/tilt/csv.rb +0 -0
  315. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/tilt-2.0.10/lib/tilt/dummy.rb +0 -0
  316. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/tilt-2.0.10/lib/tilt/erb.rb +0 -0
  317. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/tilt-2.0.10/lib/tilt/erubi.rb +0 -0
  318. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/tilt-2.0.10/lib/tilt/erubis.rb +0 -0
  319. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/tilt-2.0.10/lib/tilt/etanni.rb +0 -0
  320. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/tilt-2.0.10/lib/tilt/haml.rb +0 -0
  321. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/tilt-2.0.10/lib/tilt/kramdown.rb +0 -0
  322. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/tilt-2.0.10/lib/tilt/less.rb +0 -0
  323. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/tilt-2.0.10/lib/tilt/liquid.rb +0 -0
  324. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/tilt-2.0.10/lib/tilt/livescript.rb +0 -0
  325. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/tilt-2.0.10/lib/tilt/mapping.rb +0 -0
  326. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/tilt-2.0.10/lib/tilt/markaby.rb +0 -0
  327. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/tilt-2.0.10/lib/tilt/maruku.rb +0 -0
  328. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/tilt-2.0.10/lib/tilt/nokogiri.rb +0 -0
  329. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/tilt-2.0.10/lib/tilt/pandoc.rb +0 -0
  330. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/tilt-2.0.10/lib/tilt/plain.rb +0 -0
  331. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/tilt-2.0.10/lib/tilt/prawn.rb +0 -0
  332. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/tilt-2.0.10/lib/tilt/radius.rb +0 -0
  333. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/tilt-2.0.10/lib/tilt/rdiscount.rb +0 -0
  334. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/tilt-2.0.10/lib/tilt/rdoc.rb +0 -0
  335. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/tilt-2.0.10/lib/tilt/redcarpet.rb +0 -0
  336. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/tilt-2.0.10/lib/tilt/redcloth.rb +0 -0
  337. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/tilt-2.0.10/lib/tilt/rst-pandoc.rb +0 -0
  338. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/tilt-2.0.10/lib/tilt/sass.rb +0 -0
  339. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/tilt-2.0.10/lib/tilt/sigil.rb +0 -0
  340. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/tilt-2.0.10/lib/tilt/string.rb +0 -0
  341. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/tilt-2.0.10/lib/tilt/template.rb +0 -0
  342. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/tilt-2.0.10/lib/tilt/typescript.rb +0 -0
  343. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/tilt-2.0.10/lib/tilt/wikicloth.rb +0 -0
  344. data/bundle/ruby/{2.6.0 → 2.7.0}/gems/tilt-2.0.10/lib/tilt/yajl.rb +0 -0
  345. data/bundle/ruby/{2.6.0/gems/unicode-display_width-1.6.0 → 2.7.0/gems/unicode-display_width-1.7.0}/CHANGELOG.md +8 -0
  346. data/bundle/ruby/{2.6.0/gems/unicode-display_width-1.6.0 → 2.7.0/gems/unicode-display_width-1.7.0}/MIT-LICENSE.txt +1 -1
  347. data/bundle/ruby/{2.6.0/gems/unicode-display_width-1.6.0 → 2.7.0/gems/unicode-display_width-1.7.0}/README.md +3 -3
  348. data/bundle/ruby/2.7.0/gems/unicode-display_width-1.7.0/data/display_width.marshal.gz +0 -0
  349. data/bundle/ruby/{2.6.0/gems/unicode-display_width-1.6.0 → 2.7.0/gems/unicode-display_width-1.7.0}/lib/unicode/display_width.rb +1 -1
  350. data/bundle/ruby/{2.6.0/gems/unicode-display_width-1.6.0 → 2.7.0/gems/unicode-display_width-1.7.0}/lib/unicode/display_width/constants.rb +2 -2
  351. data/bundle/ruby/{2.6.0/gems/unicode-display_width-1.6.0 → 2.7.0/gems/unicode-display_width-1.7.0}/lib/unicode/display_width/index.rb +0 -0
  352. data/bundle/ruby/{2.6.0/gems/unicode-display_width-1.6.0 → 2.7.0/gems/unicode-display_width-1.7.0}/lib/unicode/display_width/no_string_ext.rb +0 -0
  353. data/bundle/ruby/{2.6.0/gems/unicode-display_width-1.6.0 → 2.7.0/gems/unicode-display_width-1.7.0}/lib/unicode/display_width/string_ext.rb +0 -0
  354. data/lib/brakeman.rb +20 -0
  355. data/lib/brakeman/checks/base_check.rb +13 -10
  356. data/lib/brakeman/checks/check_basic_auth.rb +2 -0
  357. data/lib/brakeman/checks/check_content_tag.rb +1 -2
  358. data/lib/brakeman/checks/check_csrf_token_forgery_cve.rb +28 -0
  359. data/lib/brakeman/checks/check_deserialize.rb +21 -1
  360. data/lib/brakeman/checks/check_execute.rb +40 -5
  361. data/lib/brakeman/checks/check_json_entity_escape.rb +38 -0
  362. data/lib/brakeman/checks/check_link_to.rb +1 -1
  363. data/lib/brakeman/checks/check_link_to_href.rb +1 -3
  364. data/lib/brakeman/checks/check_mass_assignment.rb +33 -3
  365. data/lib/brakeman/checks/check_model_attr_accessible.rb +1 -1
  366. data/lib/brakeman/checks/check_model_attributes.rb +1 -1
  367. data/lib/brakeman/checks/check_page_caching_cve.rb +37 -0
  368. data/lib/brakeman/checks/check_permit_attributes.rb +1 -1
  369. data/lib/brakeman/checks/check_skip_before_filter.rb +4 -4
  370. data/lib/brakeman/checks/check_sql.rb +1 -12
  371. data/lib/brakeman/checks/check_template_injection.rb +32 -0
  372. data/lib/brakeman/commandline.rb +25 -1
  373. data/lib/brakeman/differ.rb +0 -5
  374. data/lib/brakeman/options.rb +21 -1
  375. data/lib/brakeman/processors/alias_processor.rb +2 -3
  376. data/lib/brakeman/processors/lib/call_conversion_helper.rb +1 -1
  377. data/lib/brakeman/processors/lib/find_all_calls.rb +30 -14
  378. data/lib/brakeman/processors/lib/render_helper.rb +3 -1
  379. data/lib/brakeman/report.rb +4 -1
  380. data/lib/brakeman/report/ignore/config.rb +10 -2
  381. data/lib/brakeman/report/report_junit.rb +104 -0
  382. data/lib/brakeman/report/report_markdown.rb +0 -1
  383. data/lib/brakeman/report/report_text.rb +37 -16
  384. data/lib/brakeman/scanner.rb +4 -1
  385. data/lib/brakeman/tracker.rb +3 -1
  386. data/lib/brakeman/tracker/config.rb +7 -4
  387. data/lib/brakeman/tracker/constants.rb +8 -7
  388. data/lib/brakeman/util.rb +16 -0
  389. data/lib/brakeman/version.rb +1 -1
  390. data/lib/brakeman/warning_codes.rb +7 -0
  391. metadata +357 -350
  392. data/bundle/ruby/2.6.0/gems/ruby_parser-3.14.1/debugging.md +0 -18
  393. data/bundle/ruby/2.6.0/gems/ruby_parser-3.14.1/lib/ruby20_parser.rb +0 -7045
  394. data/bundle/ruby/2.6.0/gems/ruby_parser-3.14.1/lib/ruby21_parser.rb +0 -7116
  395. data/bundle/ruby/2.6.0/gems/ruby_parser-3.14.1/lib/ruby22_parser.rb +0 -7149
  396. data/bundle/ruby/2.6.0/gems/ruby_parser-3.14.1/lib/ruby23_parser.rb +0 -7166
  397. data/bundle/ruby/2.6.0/gems/ruby_parser-3.14.1/lib/ruby24_parser.rb +0 -7178
  398. data/bundle/ruby/2.6.0/gems/ruby_parser-3.14.1/lib/ruby25_parser.rb +0 -7178
  399. data/bundle/ruby/2.6.0/gems/ruby_parser-3.14.1/lib/ruby26_parser.rb +0 -7198
  400. data/bundle/ruby/2.6.0/gems/unicode-display_width-1.6.0/data/display_width.marshal.gz +0 -0
@@ -25,12 +25,6 @@ class RubyLexer
25
25
 
26
26
  HAS_ENC = "".respond_to? :encoding
27
27
 
28
- IDENT_CHAR = if HAS_ENC then
29
- /[\w\u0080-\u{10ffff}]/u
30
- else
31
- /[\w\x80-\xFF]/n
32
- end
33
-
34
28
  TOKENS = {
35
29
  "!" => :tBANG,
36
30
  "!=" => :tNEQ,
@@ -162,7 +156,7 @@ class RubyLexer
162
156
  indent = func =~ STR_FUNC_INDENT ? "[ \t]*" : nil
163
157
  expand = func =~ STR_FUNC_EXPAND
164
158
  eol = last_line && last_line.end_with?("\r\n") ? "\r\n" : "\n"
165
- eos_re = /#{indent}#{Regexp.escape eos}(#{eol}|\z)/
159
+ eos_re = /#{indent}#{Regexp.escape eos}(\r*\n|\z)/
166
160
  err_msg = "can't match #{eos_re.inspect} anywhere in "
167
161
 
168
162
  rb_compile_error err_msg if end_of_stream?
@@ -177,10 +171,15 @@ class RubyLexer
177
171
 
178
172
  if expand then
179
173
  case
180
- when scan(/#[$@]/) then
181
- ss.pos -= 1 # FIX omg stupid
174
+ when scan(/#(?=\$(-.|[a-zA-Z_0-9~\*\$\?!@\/\\;,\.=:<>\"\&\`\'+]))/) then
175
+ # TODO: !ISASCII
176
+ # ?! see parser_peek_variable_name
177
+ return :tSTRING_DVAR, matched
178
+ when scan(/#(?=\@\@?[a-zA-Z_])/) then
179
+ # TODO: !ISASCII
182
180
  return :tSTRING_DVAR, matched
183
181
  when scan(/#[{]/) then
182
+ self.command_start = true
184
183
  return :tSTRING_DBEG, matched
185
184
  when scan(/#/) then
186
185
  string_buffer << "#"
@@ -320,6 +319,11 @@ class RubyLexer
320
319
  lpar_beg && lpar_beg == paren_nest
321
320
  end
322
321
 
322
+ def is_local_id id
323
+ # maybe just make this false for now
324
+ self.parser.env[id.to_sym] == :lvar # HACK: this isn't remotely right
325
+ end
326
+
323
327
  def lvar_defined? id
324
328
  # TODO: (dyna_in_block? && dvar_defined?(id)) || local_id?(id)
325
329
  self.parser.env[id.to_sym] == :lvar
@@ -338,9 +342,9 @@ class RubyLexer
338
342
 
339
343
  if scan(/[a-z0-9]{1,2}/i) then # Long-hand (e.g. %Q{}).
340
344
  rb_compile_error "unknown type of %string" if ss.matched_size == 2
341
- c, beg, short_hand = matched, ss.getch, false
345
+ c, beg, short_hand = matched, getch, false
342
346
  else # Short-hand (e.g. %{, %., %!, etc)
343
- c, beg, short_hand = "Q", ss.getch, true
347
+ c, beg, short_hand = "Q", getch, true
344
348
  end
345
349
 
346
350
  if end_of_stream? or c == RubyLexer::EOF or beg == RubyLexer::EOF then
@@ -457,7 +461,7 @@ class RubyLexer
457
461
  if text =~ check then
458
462
  content.gsub(ESC) { unescape $1 }
459
463
  else
460
- content.gsub(/\\\\/, "\\").gsub(/\\'/, "'")
464
+ content.gsub(/\\\\/, "\\").gsub(/\\\'/, "'")
461
465
  end
462
466
  end
463
467
 
@@ -495,16 +499,19 @@ class RubyLexer
495
499
  end
496
500
 
497
501
  def process_brace_close text
498
- # matching compare/parse23.y:8561
499
- cond.lexpop
500
- cmdarg.lexpop
501
-
502
502
  case matched
503
503
  when "}" then
504
504
  self.brace_nest -= 1
505
- self.lex_state = ruby24minus? ? EXPR_ENDARG : EXPR_END
506
-
507
505
  return :tSTRING_DEND, matched if brace_nest < 0
506
+ end
507
+
508
+ # matching compare/parse26.y:8099
509
+ cond.pop
510
+ cmdarg.pop
511
+
512
+ case matched
513
+ when "}" then
514
+ self.lex_state = ruby24minus? ? EXPR_ENDARG : EXPR_END
508
515
  return :tRCURLY, matched
509
516
  when "]" then
510
517
  self.paren_nest -= 1
@@ -605,7 +612,7 @@ class RubyLexer
605
612
  end
606
613
 
607
614
  def process_label text
608
- symbol = possibly_escape_string text, /^"/
615
+ symbol = possibly_escape_string text, /^\"/
609
616
 
610
617
  result EXPR_LAB, :tLABEL, [symbol, self.lineno]
611
618
  end
@@ -619,7 +626,7 @@ class RubyLexer
619
626
  text = text[0..-2]
620
627
  end
621
628
 
622
- result EXPR_END, :tSTRING, text[1..-2].gsub(/\\\\/, "\\").gsub(/\\'/, "'")
629
+ result EXPR_END, :tSTRING, text[1..-2].gsub(/\\\\/, "\\").gsub(/\\\'/, "\'")
623
630
  end
624
631
 
625
632
  def process_lchevron text
@@ -791,12 +798,22 @@ class RubyLexer
791
798
  c = if scan(/\\/) then
792
799
  self.read_escape
793
800
  else
794
- ss.getch
801
+ getch
795
802
  end
796
803
 
797
804
  result EXPR_END, :tSTRING, c
798
805
  end
799
806
 
807
+ def process_simple_string text
808
+ replacement = text[1..-2].gsub(ESC) {
809
+ unescape($1).b.force_encoding Encoding::UTF_8
810
+ }
811
+
812
+ replacement = replacement.b unless replacement.valid_encoding?
813
+
814
+ result EXPR_END, :tSTRING, replacement
815
+ end
816
+
800
817
  def process_slash text
801
818
  if is_beg? then
802
819
  string STR_REGEXP
@@ -870,16 +887,16 @@ class RubyLexer
870
887
 
871
888
  if [:tSTRING_END, :tREGEXP_END, :tLABEL_END].include? token_type then
872
889
  self.lex_strterm = nil
873
- self.lex_state = (token_type == :tLABEL_END) ? EXPR_PAR : EXPR_END|EXPR_ENDARG
890
+ self.lex_state = (token_type == :tLABEL_END) ? EXPR_PAR : EXPR_LIT
874
891
  end
875
892
 
876
893
  return token
877
894
  end
878
895
 
879
896
  def process_symbol text
880
- symbol = possibly_escape_string text, /^:"/
897
+ symbol = possibly_escape_string text, /^:\"/ # stupid emacs
881
898
 
882
- result EXPR_END|EXPR_ENDARG, :tSYMBOL, symbol
899
+ result EXPR_LIT, :tSYMBOL, symbol
883
900
  end
884
901
 
885
902
  def process_token text
@@ -928,6 +945,8 @@ class RubyLexer
928
945
  EXPR_END
929
946
  end
930
947
 
948
+ tok_id = :tIDENTIFIER if tok_id == :tCONSTANT && is_local_id(token)
949
+
931
950
  if last_state !~ EXPR_DOT|EXPR_FNAME and
932
951
  (tok_id == :tIDENTIFIER) and # not EXPR_FNAME, not attrasgn
933
952
  lvar_defined?(token) then
@@ -951,18 +970,16 @@ class RubyLexer
951
970
  self.command_start = true if lex_state =~ EXPR_BEG
952
971
 
953
972
  case
954
- when keyword.id0 == :kDO then
973
+ when keyword.id0 == :kDO then # parse26.y line 7591
955
974
  case
956
975
  when lambda_beginning? then
957
976
  self.lpar_beg = nil # lambda_beginning? == FALSE in the body of "-> do ... end"
958
- self.paren_nest -= 1
977
+ self.paren_nest -= 1 # TODO: question this?
959
978
  result lex_state, :kDO_LAMBDA, value
960
979
  when cond.is_in_state then
961
980
  result lex_state, :kDO_COND, value
962
981
  when cmdarg.is_in_state && state != EXPR_CMDARG then
963
982
  result lex_state, :kDO_BLOCK, value
964
- when state =~ EXPR_BEG|EXPR_ENDARG then
965
- result lex_state, :kDO_BLOCK, value
966
983
  else
967
984
  result lex_state, :kDO, value
968
985
  end
@@ -979,9 +996,9 @@ class RubyLexer
979
996
  ss.unscan # put back "_"
980
997
 
981
998
  if beginning_of_line? && scan(/\__END__(\r?\n|\Z)/) then
982
- return [RubyLexer::EOF, RubyLexer::EOF]
983
- elsif scan(/\_\w*/) then
984
- return process_token matched
999
+ [RubyLexer::EOF, RubyLexer::EOF]
1000
+ elsif scan(/#{IDENT_CHAR}+/) then
1001
+ process_token matched
985
1002
  end
986
1003
  end
987
1004
 
@@ -1018,7 +1035,7 @@ class RubyLexer
1018
1035
  when scan(/x([0-9a-fA-F]{1,2})/) then # hex constant
1019
1036
  # TODO: force encode everything to UTF-8?
1020
1037
  ss[1].to_i(16).chr.force_encoding Encoding::UTF_8
1021
- when check(/M-\\[\\MCc]/) then
1038
+ when check(/M-\\./) then
1022
1039
  scan(/M-\\/) # eat it
1023
1040
  c = self.read_escape
1024
1041
  c[0] = (c[0].ord | 0x80).chr
@@ -1032,6 +1049,11 @@ class RubyLexer
1032
1049
  c = self.read_escape
1033
1050
  c[0] = (c[0].ord & 0x9f).chr
1034
1051
  c
1052
+ when check(/(C-|c)\\(?!u|\\)/) then
1053
+ scan(/(C-|c)\\/) # eat it
1054
+ c = read_escape
1055
+ c[0] = (c[0].ord & 0x9f).chr
1056
+ c
1035
1057
  when scan(/C-\?|c\?/) then
1036
1058
  127.chr
1037
1059
  when scan(/(C-|c)(.)/) then
@@ -1040,17 +1062,25 @@ class RubyLexer
1040
1062
  c
1041
1063
  when scan(/^[89]/i) then # bad octal or hex... MRI ignores them :(
1042
1064
  matched
1043
- when scan(/u([0-9a-fA-F]{4}|\{[0-9a-fA-F]{2,6}\})/) then
1044
- [ss[1].delete("{}").to_i(16)].pack("U")
1045
- when scan(/u([0-9a-fA-F]{1,3})/) then
1065
+ when scan(/u(\h{4})/) then
1066
+ [ss[1].to_i(16)].pack("U")
1067
+ when scan(/u(\h{1,3})/) then
1046
1068
  rb_compile_error "Invalid escape character syntax"
1069
+ when scan(/u\{(\h+(?:\s+\h+)*)\}/) then
1070
+ ss[1].split.map { |s| s.to_i(16) }.pack("U*")
1047
1071
  when scan(/[McCx0-9]/) || end_of_stream? then
1048
1072
  rb_compile_error("Invalid escape character syntax")
1049
1073
  else
1050
- ss.getch
1074
+ getch
1051
1075
  end.dup
1052
1076
  end
1053
1077
 
1078
+ def getch
1079
+ c = ss.getch
1080
+ c = ss.getch if c == "\r" && ss.peek(1) == "\n"
1081
+ c
1082
+ end
1083
+
1054
1084
  def regx_options # TODO: rewrite / remove
1055
1085
  good, bad = [], []
1056
1086
 
@@ -1274,10 +1304,12 @@ class RubyLexer
1274
1304
  s
1275
1305
  when /^[McCx0-9]/ then
1276
1306
  rb_compile_error("Invalid escape character syntax")
1277
- when /u([0-9a-fA-F]{4}|\{[0-9a-fA-F]{2,6}\})/ then
1307
+ when /u(\h{4})/ then
1278
1308
  [$1.delete("{}").to_i(16)].pack("U")
1279
- when /u([0-9a-fA-F]{1,3})/ then
1309
+ when /u(\h{1,3})/ then
1280
1310
  rb_compile_error("Invalid escape character syntax")
1311
+ when /u\{(\h+(?:\s+\h+)*)\}/ then
1312
+ $1.split.map { |s| s.to_i(16) }.pack("U*")
1281
1313
  else
1282
1314
  s
1283
1315
  end
@@ -1355,11 +1387,11 @@ class RubyLexer
1355
1387
  # extra fake lex_state names to make things a bit cleaner
1356
1388
 
1357
1389
  EXPR_LAB = EXPR_ARG|EXPR_LABELED
1358
- EXPR_NUM = EXPR_END|EXPR_ENDARG
1390
+ EXPR_LIT = EXPR_END|EXPR_ENDARG
1359
1391
  EXPR_PAR = EXPR_BEG|EXPR_LABEL
1360
1392
  EXPR_PAD = EXPR_BEG|EXPR_LABELED
1361
1393
 
1362
- EXPR_LIT = EXPR_NUM # TODO: migrate to EXPR_LIT
1394
+ EXPR_NUM = EXPR_LIT
1363
1395
 
1364
1396
  expr_names.merge!(EXPR_NONE => "EXPR_NONE",
1365
1397
  EXPR_BEG => "EXPR_BEG",
@@ -6,9 +6,9 @@ class RubyLexer
6
6
 
7
7
  macro
8
8
 
9
- IDENT /^#{IDENT_CHAR}+/o
9
+ IDENT_CHAR /[a-zA-Z0-9_[:^ascii:]]/
10
10
 
11
- ESC /\\((?>[0-7]{1,3}|x[0-9a-fA-F]{1,2}|M-[^\\]|(C-|c)[^\\]|u[0-9a-fA-F]{1,4}|u\{[0-9a-fA-F]+\}|[^0-7xMCc]))/
11
+ ESC /\\((?>[0-7]{1,3}|x\h{1,2}|M-[^\\]|(C-|c)[^\\]|u\h{1,4}|u\{\h+(?:\s+\h+)*\}|[^0-7xMCc]))/
12
12
  SIMPLE_STRING /((#{ESC}|\#(#{ESC}|[^\{\#\@\$\"\\])|[^\"\\\#])*)/o
13
13
  SSTRING /((\\.|[^\'])*)/
14
14
 
@@ -62,7 +62,7 @@ rule
62
62
  | /\=(?=begin\b)/ { result arg_state, TOKENS[text], text }
63
63
 
64
64
  ruby22_label? /\"#{SIMPLE_STRING}\":/o process_label
65
- /\"(#{SIMPLE_STRING})\"/o { result EXPR_END, :tSTRING, text[1..-2].gsub(ESC) { unescape $1 } }
65
+ /\"(#{SIMPLE_STRING})\"/o process_simple_string
66
66
  /\"/ { string STR_DQUOTE; result nil, :tSTRING_BEG, text }
67
67
 
68
68
  /\@\@?\d/ { rb_compile_error "`#{text}` is not allowed as a variable name" }
@@ -164,13 +164,12 @@ was_label? /\'#{SSTRING}\':?/o process_label_or_string
164
164
  | in_fname? /\$([1-9]\d*)/ process_gvar
165
165
  | /\$([1-9]\d*)/ process_nthref
166
166
  | /\$0/ process_gvar
167
- | /\$[^[:ascii:]]+/ process_gvar
167
+ | /\$#{IDENT_CHAR}+/ process_gvar
168
168
  | /\$\W|\$\z/ process_gvar_oddity
169
- | /\$\w+/ process_gvar
170
169
 
171
170
  /\_/ process_underscore
172
171
 
173
- /#{IDENT}/o process_token
172
+ /#{IDENT_CHAR}+/o process_token
174
173
 
175
174
  /\004|\032|\000|\Z/ { [RubyLexer::EOF, RubyLexer::EOF] }
176
175
 
@@ -1,7 +1,7 @@
1
1
  # encoding: UTF-8
2
2
  #--
3
3
  # This file is automatically generated. Do not modify it.
4
- # Generated by: oedipus_lex version 2.5.1.
4
+ # Generated by: oedipus_lex version 2.5.2.
5
5
  # Source: lib/ruby_lexer.rex
6
6
  #++
7
7
 
@@ -16,8 +16,8 @@ class RubyLexer
16
16
  require 'strscan'
17
17
 
18
18
  # :stopdoc:
19
- IDENT = /^#{IDENT_CHAR}+/o
20
- ESC = /\\((?>[0-7]{1,3}|x[0-9a-fA-F]{1,2}|M-[^\\]|(C-|c)[^\\]|u[0-9a-fA-F]{1,4}|u\{[0-9a-fA-F]+\}|[^0-7xMCc]))/
19
+ IDENT_CHAR = /[a-zA-Z0-9_[:^ascii:]]/
20
+ ESC = /\\((?>[0-7]{1,3}|x\h{1,2}|M-[^\\]|(C-|c)[^\\]|u\h{1,4}|u\{\h+(?:\s+\h+)*\}|[^0-7xMCc]))/
21
21
  SIMPLE_STRING = /((#{ESC}|\#(#{ESC}|[^\{\#\@\$\"\\])|[^\"\\\#])*)/o
22
22
  SSTRING = /((\\.|[^\'])*)/
23
23
  INT_DEC = /[+]?(?:(?:[1-9][\d_]*|0)(?!\.\d)(ri|r|i)?\b|0d[0-9_]+)(ri|r|i)?/i
@@ -160,7 +160,7 @@ class RubyLexer
160
160
  when ruby22_label? && (text = ss.scan(/\"#{SIMPLE_STRING}\":/o)) then
161
161
  process_label text
162
162
  when text = ss.scan(/\"(#{SIMPLE_STRING})\"/o) then
163
- action { result EXPR_END, :tSTRING, text[1..-2].gsub(ESC) { unescape $1 } }
163
+ process_simple_string text
164
164
  when text = ss.scan(/\"/) then
165
165
  action { string STR_DQUOTE; result nil, :tSTRING_BEG, text }
166
166
  when text = ss.scan(/\@\@?\d/) then
@@ -328,16 +328,14 @@ class RubyLexer
328
328
  process_nthref text
329
329
  when text = ss.scan(/\$0/) then
330
330
  process_gvar text
331
- when text = ss.scan(/\$[^[:ascii:]]+/) then
331
+ when text = ss.scan(/\$#{IDENT_CHAR}+/) then
332
332
  process_gvar text
333
333
  when text = ss.scan(/\$\W|\$\z/) then
334
334
  process_gvar_oddity text
335
- when text = ss.scan(/\$\w+/) then
336
- process_gvar text
337
335
  end # group /\$/
338
336
  when text = ss.scan(/\_/) then
339
337
  process_underscore text
340
- when text = ss.scan(/#{IDENT}/o) then
338
+ when text = ss.scan(/#{IDENT_CHAR}+/o) then
341
339
  process_token text
342
340
  when ss.skip(/\004|\032|\000|\Z/) then
343
341
  action { [RubyLexer::EOF, RubyLexer::EOF] }
@@ -78,10 +78,12 @@ require "ruby23_parser"
78
78
  require "ruby24_parser"
79
79
  require "ruby25_parser"
80
80
  require "ruby26_parser"
81
+ require "ruby27_parser"
81
82
 
82
83
  class RubyParser # HACK
83
84
  VERSIONS.clear # also a HACK caused by racc namespace issues
84
85
 
86
+ class V27 < ::Ruby27Parser; end
85
87
  class V26 < ::Ruby26Parser; end
86
88
  class V25 < ::Ruby25Parser; end
87
89
  class V24 < ::Ruby24Parser; end
@@ -14,6 +14,8 @@ class Ruby24Parser
14
14
  class Ruby25Parser
15
15
  #elif V == 26
16
16
  class Ruby26Parser
17
+ #elif V == 27
18
+ class Ruby27Parser
17
19
  #else
18
20
  fail "version not specified or supported on code generation"
19
21
  #endif
@@ -286,13 +288,15 @@ rule
286
288
  }
287
289
  | primary_value tCOLON2 tCONSTANT tOP_ASGN command_rhs
288
290
  {
289
- result = s(:op_asgn, val[0], val[4], val[2], val[3])
290
- debug20 4, val, result
291
+ lhs1, _, lhs2, op, rhs = val
292
+
293
+ result = s(:op_asgn, lhs1, rhs, lhs2.to_sym, op.to_sym)
291
294
  }
292
295
  | primary_value tCOLON2 tIDENTIFIER tOP_ASGN command_rhs
293
296
  {
294
- result = s(:op_asgn, val[0], val[4], val[2], val[3])
295
- debug20 5, val, result
297
+ lhs1, _, lhs2, op, rhs = val
298
+
299
+ result = s(:op_asgn, lhs1, rhs, lhs2.to_sym, op.to_sym)
296
300
  }
297
301
  | backref tOP_ASGN command_rhs
298
302
  {
@@ -1063,17 +1067,14 @@ rule
1063
1067
  | args opt_block_arg
1064
1068
  {
1065
1069
  result = call_args val
1066
- result = self.arg_blk_pass val[0], val[1]
1067
1070
  }
1068
1071
  | assocs opt_block_arg
1069
1072
  {
1070
- result = call_args [array_to_hash(val[0])]
1071
- result = self.arg_blk_pass result, val[1]
1073
+ result = call_args [array_to_hash(val[0]), val[1]]
1072
1074
  }
1073
1075
  | args tCOMMA assocs opt_block_arg
1074
1076
  {
1075
- result = call_args [val[0], array_to_hash(val[2])]
1076
- result = self.arg_blk_pass result, val[3]
1077
+ result = call_args [val[0], array_to_hash(val[2]), val[3]]
1077
1078
  }
1078
1079
  | block_arg
1079
1080
  {
@@ -1081,12 +1082,39 @@ rule
1081
1082
  }
1082
1083
 
1083
1084
  command_args: {
1084
- result = lexer.cmdarg.store true
1085
+ # parse26.y line 2200
1086
+
1087
+ # If call_args starts with a open paren '(' or
1088
+ # '[', look-ahead reading of the letters calls
1089
+ # CMDARG_PUSH(0), but the push must be done
1090
+ # after CMDARG_PUSH(1). So this code makes them
1091
+ # consistent by first cancelling the premature
1092
+ # CMDARG_PUSH(0), doing CMDARG_PUSH(1), and
1093
+ # finally redoing CMDARG_PUSH(0).
1094
+
1095
+ result = yychar = self.last_token_type.first
1096
+ lookahead = [:tLPAREN, :tLPAREN_ARG, :tLPAREN2, :tLBRACK, :tLBRACK2].include?(yychar)
1097
+ lexer.cmdarg.pop if lookahead
1098
+ lexer.cmdarg.push true
1099
+ lexer.cmdarg.push false if lookahead
1085
1100
  }
1086
1101
  call_args
1087
1102
  {
1088
- lexer.cmdarg.restore val[0]
1089
- result = val[1]
1103
+ yychar, args = val
1104
+
1105
+ # call_args can be followed by tLBRACE_ARG (that
1106
+ # does CMDARG_PUSH(0) in the lexer) but the push
1107
+ # must be done after CMDARG_POP() in the parser.
1108
+ # So this code does CMDARG_POP() to pop 0 pushed
1109
+ # by tLBRACE_ARG, CMDARG_POP() to pop 1 pushed
1110
+ # by command_args, and CMDARG_PUSH(0) to restore
1111
+ # back the flag set by tLBRACE_ARG.
1112
+
1113
+ lookahead = [:tLBRACE_ARG].include?(yychar)
1114
+ lexer.cmdarg.pop if lookahead
1115
+ lexer.cmdarg.pop
1116
+ lexer.cmdarg.push false if lookahead
1117
+ result = args
1090
1118
  }
1091
1119
 
1092
1120
  block_arg: tAMPER arg_value
@@ -1104,8 +1132,9 @@ rule
1104
1132
  args: arg_value
1105
1133
  {
1106
1134
  arg, = val
1135
+ lineno = arg.line || lexer.lineno # HACK
1107
1136
 
1108
- result = s(:array, arg).line arg.line
1137
+ result = s(:array, arg).line lineno
1109
1138
  }
1110
1139
  | tSTAR arg_value
1111
1140
  {
@@ -1117,9 +1146,11 @@ rule
1117
1146
  args, _, id = val
1118
1147
  result = self.list_append args, id
1119
1148
  }
1120
- | args tCOMMA tSTAR { result = lexer.lineno } arg_value
1149
+ | args tCOMMA tSTAR arg_value
1121
1150
  {
1122
- args, _, _, line, id = val
1151
+ # TODO: the line number from tSTAR has been dropped
1152
+ args, _, _, id = val
1153
+ line = lexer.lineno
1123
1154
  result = self.list_append args, s(:splat, id).line(line)
1124
1155
  }
1125
1156
 
@@ -1140,7 +1171,6 @@ rule
1140
1171
  }
1141
1172
  | args tCOMMA tSTAR arg_value
1142
1173
  {
1143
- # FIX: bad shift/reduce conflict with rhs' comma star prod
1144
1174
  # TODO: make all tXXXX terminals include lexer.lineno
1145
1175
  arg, _, _, splat = val
1146
1176
  result = self.arg_concat arg, splat
@@ -1168,21 +1198,13 @@ rule
1168
1198
  }
1169
1199
  | k_begin
1170
1200
  {
1201
+ lexer.cmdarg.push false
1171
1202
  result = self.lexer.lineno
1172
- # TODO:
1173
- # $<val>1 = cmdarg_stack;
1174
- # CMDARG_SET(0);
1175
1203
  }
1176
1204
  bodystmt k_end
1177
1205
  {
1178
- # TODO: CMDARG_SET($<val>1);
1179
- unless val[2] then
1180
- result = s(:nil)
1181
- else
1182
- result = s(:begin, val[2])
1183
- end
1184
-
1185
- result.line = val[1]
1206
+ lexer.cmdarg.pop
1207
+ result = new_begin val
1186
1208
  }
1187
1209
  | tLPAREN_ARG
1188
1210
  {
@@ -1195,18 +1217,14 @@ rule
1195
1217
  result = s(:begin).line line
1196
1218
  }
1197
1219
  | tLPAREN_ARG
1198
- {
1199
- result = lexer.cmdarg.store false
1200
- }
1201
1220
  stmt
1202
1221
  {
1203
1222
  lexer.lex_state = EXPR_ENDARG
1204
1223
  }
1205
1224
  rparen
1206
1225
  {
1207
- _, cmdarg, stmt, _, _, = val
1208
- warning "(...) interpreted as grouped expression"
1209
- lexer.cmdarg.restore cmdarg
1226
+ _, stmt, _, _, = val
1227
+ # warning "(...) interpreted as grouped expression"
1210
1228
  result = stmt
1211
1229
  }
1212
1230
  | tLPAREN compstmt tRPAREN
@@ -1389,48 +1407,61 @@ rule
1389
1407
  }
1390
1408
  | k_def fname
1391
1409
  {
1392
- result = [self.in_def, self.lexer.cmdarg.stack.dup]
1410
+ result = self.in_def
1393
1411
 
1394
- self.comments.push self.lexer.comments
1395
- self.in_def = true
1412
+ self.in_def = true # group = local_push
1396
1413
  self.env.extend
1397
- # TODO: local->cmdargs = cmdarg_stack;
1398
- # TODO: port local_push_gen and local_pop_gen
1399
- lexer.cmdarg.stack.replace [false]
1414
+ lexer.cmdarg.push false
1415
+ lexer.cond.push false
1416
+
1417
+ self.comments.push self.lexer.comments
1400
1418
  }
1401
1419
  f_arglist bodystmt { result = lexer.lineno } k_end
1402
1420
  {
1403
- in_def, cmdarg = val[2]
1421
+ in_def = val[2]
1404
1422
 
1405
1423
  result = new_defn val
1406
1424
 
1407
- lexer.cmdarg.stack.replace cmdarg
1425
+ lexer.cond.pop # group = local_pop
1426
+ lexer.cmdarg.pop
1408
1427
  self.env.unextend
1409
1428
  self.in_def = in_def
1429
+
1410
1430
  self.lexer.comments # we don't care about comments in the body
1411
1431
  }
1412
1432
  | k_def singleton dot_or_colon
1413
1433
  {
1414
- self.comments.push self.lexer.comments
1415
1434
  lexer.lex_state = EXPR_FNAME
1416
1435
  }
1417
1436
  fname
1418
1437
  {
1419
- self.in_single += 1
1438
+ result = [self.in_def, lexer.lineno]
1439
+
1440
+ self.in_single += 1 # TODO: remove?
1441
+
1442
+ self.in_def = true # local_push
1420
1443
  self.env.extend
1421
- lexer.lex_state = EXPR_ENDFN # force for args
1422
- result = [lexer.lineno, self.lexer.cmdarg.stack.dup]
1423
- lexer.cmdarg.stack.replace [false]
1444
+ lexer.cmdarg.push false
1445
+ lexer.cond.push false
1446
+
1447
+ lexer.lex_state = EXPR_ENDFN|EXPR_LABEL
1448
+ self.comments.push self.lexer.comments
1424
1449
  }
1425
1450
  f_arglist bodystmt k_end
1426
1451
  {
1427
- _, cmdarg = val[5]
1428
- result = new_defs val
1452
+ _, _recv, _, _, _name, (in_def, _lineno), _args, _body, _ = val
1429
1453
 
1430
- lexer.cmdarg.stack.replace cmdarg
1454
+ result = new_defs val
1431
1455
 
1456
+ lexer.cond.pop # group = local_pop
1457
+ lexer.cmdarg.pop
1432
1458
  self.env.unextend
1459
+ self.in_def = in_def
1460
+
1433
1461
  self.in_single -= 1
1462
+
1463
+ # TODO: restore cur_arg ? what's cur_arg?
1464
+
1434
1465
  self.lexer.comments # we don't care about comments in the body
1435
1466
  }
1436
1467
  | kBREAK
@@ -1715,20 +1746,19 @@ opt_block_args_tail: tCOMMA block_args_tail
1715
1746
  }
1716
1747
  f_larglist
1717
1748
  {
1718
- result = lexer.cmdarg.store(false)
1749
+ lexer.cmdarg.push false
1719
1750
  }
1720
1751
  lambda_body
1721
1752
  {
1722
- (line, lpar), args, cmdarg, body = val
1753
+ (line, lpar), args, _cmdarg, body = val
1723
1754
  lexer.lpar_beg = lpar
1724
1755
 
1725
- lexer.cmdarg.restore cmdarg
1726
- lexer.cmdarg.lexpop
1756
+ lexer.cmdarg.pop
1727
1757
 
1728
1758
  call = s(:lambda).line line
1729
1759
  result = new_iter call, args, body
1730
1760
  result.line = line
1731
- self.env.unextend
1761
+ self.env.unextend # TODO: dynapush & dynapop
1732
1762
  }
1733
1763
 
1734
1764
  f_larglist: tLPAREN2 f_args opt_bv_decl rparen
@@ -1881,7 +1911,7 @@ opt_block_args_tail: tCOMMA block_args_tail
1881
1911
  }
1882
1912
 
1883
1913
  do_body: { self.env.extend :dynamic; result = self.lexer.lineno }
1884
- { result = lexer.cmdarg.store(false) }
1914
+ { lexer.cmdarg.push false }
1885
1915
  opt_block_param
1886
1916
  #if V >= 25
1887
1917
  bodystmt
@@ -1889,11 +1919,11 @@ opt_block_args_tail: tCOMMA block_args_tail
1889
1919
  compstmt
1890
1920
  #endif
1891
1921
  {
1892
- line, cmdarg, param, cmpstmt = val
1922
+ line, _cmdarg, param, cmpstmt = val
1893
1923
 
1894
1924
  result = new_do_body param, cmpstmt, line
1925
+ lexer.cmdarg.pop
1895
1926
  self.env.unextend
1896
- lexer.cmdarg.restore cmdarg
1897
1927
  }
1898
1928
 
1899
1929
  case_body: k_when
@@ -1993,7 +2023,7 @@ opt_block_args_tail: tCOMMA block_args_tail
1993
2023
 
1994
2024
  xstring: tXSTRING_BEG xstring_contents tSTRING_END
1995
2025
  {
1996
- result = new_xstring val[1]
2026
+ result = new_xstring val
1997
2027
  # TODO: dedent?!?! SERIOUSLY?!?
1998
2028
  }
1999
2029
 
@@ -2135,12 +2165,13 @@ regexp_contents: none
2135
2165
  result = [lexer.lex_strterm,
2136
2166
  lexer.brace_nest,
2137
2167
  lexer.string_nest, # TODO: remove
2138
- lexer.cond.store,
2139
- lexer.cmdarg.store,
2140
2168
  lexer.lex_state,
2141
2169
  lexer.lineno,
2142
2170
  ]
2143
2171
 
2172
+ lexer.cmdarg.push false
2173
+ lexer.cond.push false
2174
+
2144
2175
  lexer.lex_strterm = nil
2145
2176
  lexer.brace_nest = 0
2146
2177
  lexer.string_nest = 0
@@ -2152,14 +2183,15 @@ regexp_contents: none
2152
2183
  {
2153
2184
  _, memo, stmt, _ = val
2154
2185
 
2155
- lex_strterm, brace_nest, string_nest, oldcond, oldcmdarg, oldlex_state, line = memo
2186
+ lex_strterm, brace_nest, string_nest, oldlex_state, line = memo
2187
+ # TODO: heredoc_indent
2156
2188
 
2157
2189
  lexer.lex_strterm = lex_strterm
2158
2190
  lexer.brace_nest = brace_nest
2159
2191
  lexer.string_nest = string_nest
2160
2192
 
2161
- lexer.cond.restore oldcond
2162
- lexer.cmdarg.restore oldcmdarg
2193
+ lexer.cmdarg.pop
2194
+ lexer.cond.pop
2163
2195
 
2164
2196
  lexer.lex_state = oldlex_state
2165
2197