brakeman 5.2.3 → 7.0.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 (637) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES.md +111 -0
  3. data/README.md +8 -5
  4. data/bundle/load.rb +15 -15
  5. data/bundle/ruby/3.1.0/gems/csv-3.3.2/LICENSE.txt +33 -0
  6. data/bundle/ruby/3.1.0/gems/csv-3.3.2/NEWS.md +965 -0
  7. data/bundle/ruby/3.1.0/gems/csv-3.3.2/README.md +55 -0
  8. data/bundle/ruby/3.1.0/gems/csv-3.3.2/lib/csv/core_ext/array.rb +9 -0
  9. data/bundle/ruby/3.1.0/gems/csv-3.3.2/lib/csv/core_ext/string.rb +9 -0
  10. data/bundle/ruby/3.1.0/gems/csv-3.3.2/lib/csv/fields_converter.rb +96 -0
  11. data/bundle/ruby/3.1.0/gems/csv-3.3.2/lib/csv/input_record_separator.rb +18 -0
  12. data/bundle/ruby/3.1.0/gems/csv-3.3.2/lib/csv/parser.rb +1292 -0
  13. data/bundle/ruby/3.1.0/gems/csv-3.3.2/lib/csv/row.rb +757 -0
  14. data/bundle/ruby/3.1.0/gems/csv-3.3.2/lib/csv/table.rb +1055 -0
  15. data/bundle/ruby/3.1.0/gems/csv-3.3.2/lib/csv/version.rb +6 -0
  16. data/bundle/ruby/3.1.0/gems/csv-3.3.2/lib/csv/writer.rb +209 -0
  17. data/bundle/ruby/3.1.0/gems/csv-3.3.2/lib/csv.rb +3017 -0
  18. data/bundle/ruby/{2.7.0/gems/highline-2.0.3 → 3.1.0/gems/highline-3.1.1}/Changelog.md +34 -0
  19. data/bundle/ruby/{2.7.0/gems/highline-2.0.3 → 3.1.0/gems/highline-3.1.1}/Gemfile +3 -5
  20. data/bundle/ruby/{2.7.0/gems/highline-2.0.3 → 3.1.0/gems/highline-3.1.1}/README.md +41 -3
  21. data/bundle/ruby/{2.7.0/gems/highline-2.0.3 → 3.1.0/gems/highline-3.1.1}/highline.gemspec +6 -1
  22. data/bundle/ruby/{2.7.0/gems/highline-2.0.3 → 3.1.0/gems/highline-3.1.1}/lib/highline/io_console_compatible.rb +1 -1
  23. data/bundle/ruby/{2.7.0/gems/highline-2.0.3 → 3.1.0/gems/highline-3.1.1}/lib/highline/menu.rb +0 -0
  24. data/bundle/ruby/{2.7.0/gems/highline-2.0.3 → 3.1.0/gems/highline-3.1.1}/lib/highline/question/answer_converter.rb +2 -5
  25. data/bundle/ruby/{2.7.0/gems/highline-2.0.3 → 3.1.0/gems/highline-3.1.1}/lib/highline/question.rb +23 -13
  26. data/bundle/ruby/{2.7.0/gems/highline-2.0.3 → 3.1.0/gems/highline-3.1.1}/lib/highline/question_asker.rb +3 -1
  27. data/bundle/ruby/{2.7.0/gems/highline-2.0.3 → 3.1.0/gems/highline-3.1.1}/lib/highline/style.rb +0 -0
  28. data/bundle/ruby/{2.7.0/gems/highline-2.0.3 → 3.1.0/gems/highline-3.1.1}/lib/highline/terminal/io_console.rb +1 -1
  29. data/bundle/ruby/{2.7.0/gems/highline-2.0.3 → 3.1.0/gems/highline-3.1.1}/lib/highline/terminal/unix_stty.rb +6 -4
  30. data/bundle/ruby/{2.7.0/gems/highline-2.0.3 → 3.1.0/gems/highline-3.1.1}/lib/highline/terminal.rb +8 -6
  31. data/bundle/ruby/{2.7.0/gems/highline-2.0.3 → 3.1.0/gems/highline-3.1.1}/lib/highline/version.rb +1 -1
  32. data/bundle/ruby/{2.7.0/gems/highline-2.0.3 → 3.1.0/gems/highline-3.1.1}/lib/highline.rb +27 -6
  33. data/bundle/ruby/3.1.0/gems/parallel-1.26.3/lib/parallel/version.rb +4 -0
  34. data/bundle/ruby/{2.7.0/gems/parallel-1.22.1 → 3.1.0/gems/parallel-1.26.3}/lib/parallel.rb +109 -13
  35. data/bundle/ruby/3.1.0/gems/reline-0.6.0/COPYING +56 -0
  36. data/bundle/ruby/3.1.0/gems/reline-0.6.0/README.md +94 -0
  37. data/bundle/ruby/3.1.0/gems/reline-0.6.0/lib/reline/config.rb +373 -0
  38. data/bundle/ruby/3.1.0/gems/reline-0.6.0/lib/reline/face.rb +199 -0
  39. data/bundle/ruby/3.1.0/gems/reline-0.6.0/lib/reline/history.rb +76 -0
  40. data/bundle/ruby/3.1.0/gems/reline-0.6.0/lib/reline/io/ansi.rb +325 -0
  41. data/bundle/ruby/3.1.0/gems/reline-0.6.0/lib/reline/io/dumb.rb +120 -0
  42. data/bundle/ruby/3.1.0/gems/reline-0.6.0/lib/reline/io/windows.rb +530 -0
  43. data/bundle/ruby/3.1.0/gems/reline-0.6.0/lib/reline/io.rb +55 -0
  44. data/bundle/ruby/3.1.0/gems/reline-0.6.0/lib/reline/key_actor/base.rb +37 -0
  45. data/bundle/ruby/3.1.0/gems/reline-0.6.0/lib/reline/key_actor/composite.rb +17 -0
  46. data/bundle/ruby/3.1.0/gems/reline-0.6.0/lib/reline/key_actor/emacs.rb +517 -0
  47. data/bundle/ruby/3.1.0/gems/reline-0.6.0/lib/reline/key_actor/vi_command.rb +518 -0
  48. data/bundle/ruby/3.1.0/gems/reline-0.6.0/lib/reline/key_actor/vi_insert.rb +517 -0
  49. data/bundle/ruby/3.1.0/gems/reline-0.6.0/lib/reline/key_actor.rb +8 -0
  50. data/bundle/ruby/3.1.0/gems/reline-0.6.0/lib/reline/key_stroke.rb +119 -0
  51. data/bundle/ruby/3.1.0/gems/reline-0.6.0/lib/reline/kill_ring.rb +125 -0
  52. data/bundle/ruby/3.1.0/gems/reline-0.6.0/lib/reline/line_editor.rb +2382 -0
  53. data/bundle/ruby/3.1.0/gems/reline-0.6.0/lib/reline/unicode/east_asian_width.rb +1267 -0
  54. data/bundle/ruby/3.1.0/gems/reline-0.6.0/lib/reline/unicode.rb +415 -0
  55. data/bundle/ruby/3.1.0/gems/reline-0.6.0/lib/reline/version.rb +3 -0
  56. data/bundle/ruby/3.1.0/gems/reline-0.6.0/lib/reline.rb +519 -0
  57. data/bundle/ruby/3.1.0/gems/reline-0.6.0/license_of_rb-readline +25 -0
  58. data/bundle/ruby/3.1.0/gems/rexml-3.4.0/LICENSE.txt +22 -0
  59. data/bundle/ruby/3.1.0/gems/rexml-3.4.0/NEWS.md +675 -0
  60. data/bundle/ruby/{2.7.0/gems/rexml-3.2.5 → 3.1.0/gems/rexml-3.4.0}/README.md +10 -1
  61. data/bundle/ruby/{2.7.0/gems/rexml-3.2.5 → 3.1.0/gems/rexml-3.4.0}/lib/rexml/attribute.rb +17 -11
  62. data/bundle/ruby/{2.7.0/gems/rexml-3.2.5 → 3.1.0/gems/rexml-3.4.0}/lib/rexml/document.rb +6 -2
  63. data/bundle/ruby/{2.7.0/gems/rexml-3.2.5 → 3.1.0/gems/rexml-3.4.0}/lib/rexml/element.rb +19 -34
  64. data/bundle/ruby/{2.7.0/gems/rexml-3.2.5 → 3.1.0/gems/rexml-3.4.0}/lib/rexml/entity.rb +9 -38
  65. data/bundle/ruby/{2.7.0/gems/rexml-3.2.5 → 3.1.0/gems/rexml-3.4.0}/lib/rexml/formatters/pretty.rb +3 -3
  66. data/bundle/ruby/{2.7.0/gems/rexml-3.2.5 → 3.1.0/gems/rexml-3.4.0}/lib/rexml/functions.rb +1 -2
  67. data/bundle/ruby/{2.7.0/gems/rexml-3.2.5 → 3.1.0/gems/rexml-3.4.0}/lib/rexml/namespace.rb +8 -4
  68. data/bundle/ruby/{2.7.0/gems/rexml-3.2.5 → 3.1.0/gems/rexml-3.4.0}/lib/rexml/node.rb +8 -4
  69. data/bundle/ruby/{2.7.0/gems/rexml-3.2.5 → 3.1.0/gems/rexml-3.4.0}/lib/rexml/parseexception.rb +1 -0
  70. data/bundle/ruby/3.1.0/gems/rexml-3.4.0/lib/rexml/parsers/baseparser.rb +866 -0
  71. data/bundle/ruby/{2.7.0/gems/rexml-3.2.5 → 3.1.0/gems/rexml-3.4.0}/lib/rexml/parsers/pullparser.rb +16 -0
  72. data/bundle/ruby/{2.7.0/gems/rexml-3.2.5 → 3.1.0/gems/rexml-3.4.0}/lib/rexml/parsers/sax2parser.rb +16 -19
  73. data/bundle/ruby/{2.7.0/gems/rexml-3.2.5 → 3.1.0/gems/rexml-3.4.0}/lib/rexml/parsers/streamparser.rb +16 -10
  74. data/bundle/ruby/{2.7.0/gems/rexml-3.2.5 → 3.1.0/gems/rexml-3.4.0}/lib/rexml/parsers/treeparser.rb +9 -21
  75. data/bundle/ruby/{2.7.0/gems/rexml-3.2.5 → 3.1.0/gems/rexml-3.4.0}/lib/rexml/parsers/xpathparser.rb +136 -86
  76. data/bundle/ruby/{2.7.0/gems/rexml-3.2.5 → 3.1.0/gems/rexml-3.4.0}/lib/rexml/rexml.rb +3 -1
  77. data/bundle/ruby/3.1.0/gems/rexml-3.4.0/lib/rexml/source.rb +369 -0
  78. data/bundle/ruby/{2.7.0/gems/rexml-3.2.5 → 3.1.0/gems/rexml-3.4.0}/lib/rexml/text.rb +60 -61
  79. data/bundle/ruby/{2.7.0/gems/rexml-3.2.5 → 3.1.0/gems/rexml-3.4.0}/lib/rexml/xpath_parser.rb +7 -3
  80. data/bundle/ruby/{2.7.0/gems/ruby2ruby-2.4.4 → 3.1.0/gems/ruby2ruby-2.5.1}/History.rdoc +22 -0
  81. data/bundle/ruby/{2.7.0/gems/ruby2ruby-2.4.4 → 3.1.0/gems/ruby2ruby-2.5.1}/lib/ruby2ruby.rb +162 -26
  82. data/bundle/ruby/{2.7.0/gems/ruby_parser-3.19.1 → 3.1.0/gems/ruby_parser-3.20.3}/History.rdoc +48 -0
  83. data/bundle/ruby/{2.7.0/gems/ruby_parser-3.19.1 → 3.1.0/gems/ruby_parser-3.20.3}/Manifest.txt +2 -0
  84. data/bundle/ruby/{2.7.0/gems/ruby_parser-3.19.1 → 3.1.0/gems/ruby_parser-3.20.3}/README.rdoc +2 -1
  85. data/bundle/ruby/{2.7.0/gems/ruby_parser-3.19.1 → 3.1.0/gems/ruby_parser-3.20.3}/compare/normalize.rb +1 -0
  86. data/bundle/ruby/{2.7.0/gems/ruby_parser-3.19.1 → 3.1.0/gems/ruby_parser-3.20.3}/lib/ruby20_parser.rb +4267 -4284
  87. data/bundle/ruby/{2.7.0/gems/ruby_parser-3.19.1 → 3.1.0/gems/ruby_parser-3.20.3}/lib/ruby20_parser.y +50 -26
  88. data/bundle/ruby/{2.7.0/gems/ruby_parser-3.19.1 → 3.1.0/gems/ruby_parser-3.20.3}/lib/ruby21_parser.rb +4241 -4240
  89. data/bundle/ruby/{2.7.0/gems/ruby_parser-3.19.1 → 3.1.0/gems/ruby_parser-3.20.3}/lib/ruby21_parser.y +50 -26
  90. data/bundle/ruby/{2.7.0/gems/ruby_parser-3.19.1 → 3.1.0/gems/ruby_parser-3.20.3}/lib/ruby22_parser.rb +4289 -4290
  91. data/bundle/ruby/{2.7.0/gems/ruby_parser-3.19.1 → 3.1.0/gems/ruby_parser-3.20.3}/lib/ruby22_parser.y +50 -26
  92. data/bundle/ruby/{2.7.0/gems/ruby_parser-3.19.1 → 3.1.0/gems/ruby_parser-3.20.3}/lib/ruby23_parser.rb +4274 -4243
  93. data/bundle/ruby/{2.7.0/gems/ruby_parser-3.19.1 → 3.1.0/gems/ruby_parser-3.20.3}/lib/ruby23_parser.y +50 -26
  94. data/bundle/ruby/{2.7.0/gems/ruby_parser-3.19.1 → 3.1.0/gems/ruby_parser-3.20.3}/lib/ruby24_parser.rb +4279 -4298
  95. data/bundle/ruby/{2.7.0/gems/ruby_parser-3.19.1 → 3.1.0/gems/ruby_parser-3.20.3}/lib/ruby24_parser.y +50 -26
  96. data/bundle/ruby/{2.7.0/gems/ruby_parser-3.19.1 → 3.1.0/gems/ruby_parser-3.20.3}/lib/ruby25_parser.rb +4270 -4289
  97. data/bundle/ruby/{2.7.0/gems/ruby_parser-3.19.1 → 3.1.0/gems/ruby_parser-3.20.3}/lib/ruby25_parser.y +50 -26
  98. data/bundle/ruby/{2.7.0/gems/ruby_parser-3.19.1 → 3.1.0/gems/ruby_parser-3.20.3}/lib/ruby26_parser.rb +4270 -4289
  99. data/bundle/ruby/{2.7.0/gems/ruby_parser-3.19.1 → 3.1.0/gems/ruby_parser-3.20.3}/lib/ruby26_parser.y +50 -26
  100. data/bundle/ruby/{2.7.0/gems/ruby_parser-3.19.1 → 3.1.0/gems/ruby_parser-3.20.3}/lib/ruby27_parser.rb +4189 -4206
  101. data/bundle/ruby/{2.7.0/gems/ruby_parser-3.19.1 → 3.1.0/gems/ruby_parser-3.20.3}/lib/ruby27_parser.y +63 -27
  102. data/bundle/ruby/{2.7.0/gems/ruby_parser-3.19.1 → 3.1.0/gems/ruby_parser-3.20.3}/lib/ruby30_parser.rb +6037 -5963
  103. data/bundle/ruby/{2.7.0/gems/ruby_parser-3.19.1 → 3.1.0/gems/ruby_parser-3.20.3}/lib/ruby30_parser.y +148 -87
  104. data/bundle/ruby/{2.7.0/gems/ruby_parser-3.19.1 → 3.1.0/gems/ruby_parser-3.20.3}/lib/ruby31_parser.rb +6213 -6186
  105. data/bundle/ruby/{2.7.0/gems/ruby_parser-3.19.1/lib/ruby3_parser.yy → 3.1.0/gems/ruby_parser-3.20.3/lib/ruby31_parser.y} +149 -143
  106. data/bundle/ruby/3.1.0/gems/ruby_parser-3.20.3/lib/ruby32_parser.rb +13601 -0
  107. data/bundle/ruby/{2.7.0/gems/ruby_parser-3.19.1/lib/ruby31_parser.y → 3.1.0/gems/ruby_parser-3.20.3/lib/ruby32_parser.y} +171 -109
  108. data/bundle/ruby/3.1.0/gems/ruby_parser-3.20.3/lib/ruby3_parser.yy +3635 -0
  109. data/bundle/ruby/{2.7.0/gems/ruby_parser-3.19.1 → 3.1.0/gems/ruby_parser-3.20.3}/lib/ruby_lexer.rb +26 -11
  110. data/bundle/ruby/{2.7.0/gems/ruby_parser-3.19.1 → 3.1.0/gems/ruby_parser-3.20.3}/lib/ruby_lexer.rex.rb +1 -1
  111. data/bundle/ruby/{2.7.0/gems/ruby_parser-3.19.1 → 3.1.0/gems/ruby_parser-3.20.3}/lib/ruby_lexer_strings.rb +2 -2
  112. data/bundle/ruby/{2.7.0/gems/ruby_parser-3.19.1 → 3.1.0/gems/ruby_parser-3.20.3}/lib/ruby_parser.rb +2 -0
  113. data/bundle/ruby/{2.7.0/gems/ruby_parser-3.19.1 → 3.1.0/gems/ruby_parser-3.20.3}/lib/ruby_parser.yy +63 -27
  114. data/bundle/ruby/{2.7.0/gems/ruby_parser-3.19.1 → 3.1.0/gems/ruby_parser-3.20.3}/lib/ruby_parser_extras.rb +36 -23
  115. data/bundle/ruby/{2.7.0/gems/ruby_parser-3.19.1 → 3.1.0/gems/ruby_parser-3.20.3}/tools/munge.rb +8 -2
  116. data/bundle/ruby/{2.7.0/gems/ruby_parser-3.19.1 → 3.1.0/gems/ruby_parser-3.20.3}/tools/ripper.rb +14 -12
  117. data/bundle/ruby/{2.7.0/gems/sexp_processor-4.16.1 → 3.1.0/gems/sexp_processor-4.17.3}/History.rdoc +31 -0
  118. data/bundle/ruby/{2.7.0/gems/sexp_processor-4.16.1 → 3.1.0/gems/sexp_processor-4.17.3}/lib/pt_testcase.rb +3 -3
  119. data/bundle/ruby/{2.7.0/gems/sexp_processor-4.16.1 → 3.1.0/gems/sexp_processor-4.17.3}/lib/sexp.rb +9 -3
  120. data/bundle/ruby/{2.7.0/gems/sexp_processor-4.16.1 → 3.1.0/gems/sexp_processor-4.17.3}/lib/sexp_matcher.rb +1 -1
  121. data/bundle/ruby/{2.7.0/gems/sexp_processor-4.16.1 → 3.1.0/gems/sexp_processor-4.17.3}/lib/sexp_processor.rb +1 -1
  122. data/bundle/ruby/{2.7.0/gems/sexp_processor-4.16.1 → 3.1.0/gems/sexp_processor-4.17.3}/lib/strict_sexp.rb +6 -5
  123. data/bundle/ruby/{2.7.0/gems/slim-4.1.0 → 3.1.0/gems/slim-5.2.1}/CHANGES +44 -8
  124. data/bundle/ruby/3.1.0/gems/slim-5.2.1/Gemfile +43 -0
  125. data/bundle/ruby/{2.7.0/gems/slim-4.1.0 → 3.1.0/gems/slim-5.2.1}/LICENSE +1 -1
  126. data/bundle/ruby/{2.7.0/gems/slim-4.1.0 → 3.1.0/gems/slim-5.2.1}/README.jp.md +28 -41
  127. data/bundle/ruby/{2.7.0/gems/slim-4.1.0 → 3.1.0/gems/slim-5.2.1}/README.md +66 -43
  128. data/bundle/ruby/{2.7.0/gems/slim-4.1.0 → 3.1.0/gems/slim-5.2.1}/lib/slim/code_attributes.rb +2 -1
  129. data/bundle/ruby/{2.7.0/gems/slim-4.1.0 → 3.1.0/gems/slim-5.2.1}/lib/slim/command.rb +2 -8
  130. data/bundle/ruby/{2.7.0/gems/slim-4.1.0 → 3.1.0/gems/slim-5.2.1}/lib/slim/controls.rb +1 -0
  131. data/bundle/ruby/{2.7.0/gems/slim-4.1.0 → 3.1.0/gems/slim-5.2.1}/lib/slim/do_inserter.rb +4 -3
  132. data/bundle/ruby/{2.7.0/gems/slim-4.1.0 → 3.1.0/gems/slim-5.2.1}/lib/slim/embedded.rb +17 -17
  133. data/bundle/ruby/{2.7.0/gems/slim-4.1.0 → 3.1.0/gems/slim-5.2.1}/lib/slim/end_inserter.rb +3 -2
  134. data/bundle/ruby/{2.7.0/gems/slim-4.1.0 → 3.1.0/gems/slim-5.2.1}/lib/slim/engine.rb +3 -0
  135. data/bundle/ruby/{2.7.0/gems/slim-4.1.0 → 3.1.0/gems/slim-5.2.1}/lib/slim/erb_converter.rb +1 -0
  136. data/bundle/ruby/{2.7.0/gems/slim-4.1.0 → 3.1.0/gems/slim-5.2.1}/lib/slim/filter.rb +1 -0
  137. data/bundle/ruby/{2.7.0/gems/slim-4.1.0 → 3.1.0/gems/slim-5.2.1}/lib/slim/grammar.rb +1 -0
  138. data/bundle/ruby/{2.7.0/gems/slim-4.1.0 → 3.1.0/gems/slim-5.2.1}/lib/slim/include.rb +1 -0
  139. data/bundle/ruby/{2.7.0/gems/slim-4.1.0 → 3.1.0/gems/slim-5.2.1}/lib/slim/interpolation.rb +1 -0
  140. data/bundle/ruby/{2.7.0/gems/slim-4.1.0 → 3.1.0/gems/slim-5.2.1}/lib/slim/logic_less/context.rb +6 -7
  141. data/bundle/ruby/{2.7.0/gems/slim-4.1.0 → 3.1.0/gems/slim-5.2.1}/lib/slim/logic_less/filter.rb +1 -0
  142. data/bundle/ruby/{2.7.0/gems/slim-4.1.0 → 3.1.0/gems/slim-5.2.1}/lib/slim/logic_less.rb +1 -0
  143. data/bundle/ruby/{2.7.0/gems/slim-4.1.0 → 3.1.0/gems/slim-5.2.1}/lib/slim/parser.rb +26 -39
  144. data/bundle/ruby/3.1.0/gems/slim-5.2.1/lib/slim/railtie.rb +19 -0
  145. data/bundle/ruby/{2.7.0/gems/slim-4.1.0 → 3.1.0/gems/slim-5.2.1}/lib/slim/smart/escaper.rb +1 -1
  146. data/bundle/ruby/{2.7.0/gems/slim-4.1.0 → 3.1.0/gems/slim-5.2.1}/lib/slim/smart/filter.rb +3 -2
  147. data/bundle/ruby/{2.7.0/gems/slim-4.1.0 → 3.1.0/gems/slim-5.2.1}/lib/slim/smart/parser.rb +4 -3
  148. data/bundle/ruby/{2.7.0/gems/slim-4.1.0 → 3.1.0/gems/slim-5.2.1}/lib/slim/smart.rb +1 -0
  149. data/bundle/ruby/{2.7.0/gems/slim-4.1.0 → 3.1.0/gems/slim-5.2.1}/lib/slim/splat/builder.rb +16 -8
  150. data/bundle/ruby/{2.7.0/gems/slim-4.1.0 → 3.1.0/gems/slim-5.2.1}/lib/slim/splat/filter.rb +6 -4
  151. data/bundle/ruby/3.1.0/gems/slim-5.2.1/lib/slim/template.rb +6 -0
  152. data/bundle/ruby/{2.7.0/gems/slim-4.1.0 → 3.1.0/gems/slim-5.2.1}/lib/slim/translator.rb +4 -3
  153. data/bundle/ruby/{2.7.0/gems/slim-4.1.0 → 3.1.0/gems/slim-5.2.1}/lib/slim/version.rb +2 -1
  154. data/bundle/ruby/{2.7.0/gems/slim-4.1.0 → 3.1.0/gems/slim-5.2.1}/lib/slim.rb +2 -0
  155. data/bundle/ruby/{2.7.0/gems/slim-4.1.0 → 3.1.0/gems/slim-5.2.1}/slim.gemspec +14 -5
  156. data/bundle/ruby/{2.7.0/gems/temple-0.8.2 → 3.1.0/gems/temple-0.10.3}/CHANGES +39 -1
  157. data/bundle/ruby/3.1.0/gems/temple-0.10.3/Gemfile +2 -0
  158. data/bundle/ruby/{2.7.0/gems/temple-0.8.2 → 3.1.0/gems/temple-0.10.3}/README.md +1 -1
  159. data/bundle/ruby/{2.7.0/gems/temple-0.8.2 → 3.1.0/gems/temple-0.10.3}/lib/temple/engine.rb +1 -0
  160. data/bundle/ruby/{2.7.0/gems/temple-0.8.2 → 3.1.0/gems/temple-0.10.3}/lib/temple/erb/engine.rb +3 -0
  161. data/bundle/ruby/{2.7.0/gems/temple-0.8.2 → 3.1.0/gems/temple-0.10.3}/lib/temple/erb/parser.rb +2 -1
  162. data/bundle/ruby/{2.7.0/gems/temple-0.8.2 → 3.1.0/gems/temple-0.10.3}/lib/temple/erb/template.rb +1 -0
  163. data/bundle/ruby/{2.7.0/gems/temple-0.8.2 → 3.1.0/gems/temple-0.10.3}/lib/temple/erb/trimming.rb +1 -0
  164. data/bundle/ruby/{2.7.0/gems/temple-0.8.2 → 3.1.0/gems/temple-0.10.3}/lib/temple/exceptions.rb +1 -0
  165. data/bundle/ruby/{2.7.0/gems/temple-0.8.2 → 3.1.0/gems/temple-0.10.3}/lib/temple/filter.rb +1 -0
  166. data/bundle/ruby/3.1.0/gems/temple-0.10.3/lib/temple/filters/ambles.rb +22 -0
  167. data/bundle/ruby/{2.7.0/gems/temple-0.8.2 → 3.1.0/gems/temple-0.10.3}/lib/temple/filters/code_merger.rb +1 -0
  168. data/bundle/ruby/{2.7.0/gems/temple-0.8.2 → 3.1.0/gems/temple-0.10.3}/lib/temple/filters/control_flow.rb +1 -0
  169. data/bundle/ruby/{2.7.0/gems/temple-0.8.2 → 3.1.0/gems/temple-0.10.3}/lib/temple/filters/dynamic_inliner.rb +2 -1
  170. data/bundle/ruby/3.1.0/gems/temple-0.10.3/lib/temple/filters/dynamic_merger.rb +69 -0
  171. data/bundle/ruby/{2.7.0/gems/temple-0.8.2 → 3.1.0/gems/temple-0.10.3}/lib/temple/filters/encoding.rb +1 -0
  172. data/bundle/ruby/{2.7.0/gems/temple-0.8.2 → 3.1.0/gems/temple-0.10.3}/lib/temple/filters/eraser.rb +1 -0
  173. data/bundle/ruby/{2.7.0/gems/temple-0.8.2 → 3.1.0/gems/temple-0.10.3}/lib/temple/filters/escapable.rb +1 -0
  174. data/bundle/ruby/{2.7.0/gems/temple-0.8.2 → 3.1.0/gems/temple-0.10.3}/lib/temple/filters/multi_flattener.rb +1 -0
  175. data/bundle/ruby/{2.7.0/gems/temple-0.8.2 → 3.1.0/gems/temple-0.10.3}/lib/temple/filters/remove_bom.rb +1 -0
  176. data/bundle/ruby/{2.7.0/gems/temple-0.8.2 → 3.1.0/gems/temple-0.10.3}/lib/temple/filters/static_analyzer.rb +1 -0
  177. data/bundle/ruby/{2.7.0/gems/temple-0.8.2 → 3.1.0/gems/temple-0.10.3}/lib/temple/filters/static_merger.rb +1 -0
  178. data/bundle/ruby/{2.7.0/gems/temple-0.8.2 → 3.1.0/gems/temple-0.10.3}/lib/temple/filters/string_splitter.rb +13 -1
  179. data/bundle/ruby/{2.7.0/gems/temple-0.8.2 → 3.1.0/gems/temple-0.10.3}/lib/temple/filters/validator.rb +1 -0
  180. data/bundle/ruby/{2.7.0/gems/temple-0.8.2 → 3.1.0/gems/temple-0.10.3}/lib/temple/generator.rb +5 -2
  181. data/bundle/ruby/{2.7.0/gems/temple-0.8.2 → 3.1.0/gems/temple-0.10.3}/lib/temple/generators/array.rb +1 -0
  182. data/bundle/ruby/{2.7.0/gems/temple-0.8.2 → 3.1.0/gems/temple-0.10.3}/lib/temple/generators/array_buffer.rb +1 -0
  183. data/bundle/ruby/{2.7.0/gems/temple-0.8.2 → 3.1.0/gems/temple-0.10.3}/lib/temple/generators/erb.rb +1 -0
  184. data/bundle/ruby/{2.7.0/gems/temple-0.8.2 → 3.1.0/gems/temple-0.10.3}/lib/temple/generators/rails_output_buffer.rb +4 -4
  185. data/bundle/ruby/{2.7.0/gems/temple-0.8.2 → 3.1.0/gems/temple-0.10.3}/lib/temple/generators/string_buffer.rb +2 -1
  186. data/bundle/ruby/{2.7.0/gems/temple-0.8.2 → 3.1.0/gems/temple-0.10.3}/lib/temple/grammar.rb +1 -0
  187. data/bundle/ruby/{2.7.0/gems/temple-0.8.2 → 3.1.0/gems/temple-0.10.3}/lib/temple/html/attribute_merger.rb +1 -0
  188. data/bundle/ruby/{2.7.0/gems/temple-0.8.2 → 3.1.0/gems/temple-0.10.3}/lib/temple/html/attribute_remover.rb +1 -0
  189. data/bundle/ruby/{2.7.0/gems/temple-0.8.2 → 3.1.0/gems/temple-0.10.3}/lib/temple/html/attribute_sorter.rb +1 -0
  190. data/bundle/ruby/{2.7.0/gems/temple-0.8.2 → 3.1.0/gems/temple-0.10.3}/lib/temple/html/dispatcher.rb +1 -0
  191. data/bundle/ruby/{2.7.0/gems/temple-0.8.2 → 3.1.0/gems/temple-0.10.3}/lib/temple/html/fast.rb +1 -0
  192. data/bundle/ruby/{2.7.0/gems/temple-0.8.2 → 3.1.0/gems/temple-0.10.3}/lib/temple/html/filter.rb +1 -0
  193. data/bundle/ruby/{2.7.0/gems/temple-0.8.2 → 3.1.0/gems/temple-0.10.3}/lib/temple/html/pretty.rb +1 -0
  194. data/bundle/ruby/{2.7.0/gems/temple-0.8.2 → 3.1.0/gems/temple-0.10.3}/lib/temple/html/safe.rb +1 -0
  195. data/bundle/ruby/{2.7.0/gems/temple-0.8.2 → 3.1.0/gems/temple-0.10.3}/lib/temple/map.rb +1 -0
  196. data/bundle/ruby/{2.7.0/gems/temple-0.8.2 → 3.1.0/gems/temple-0.10.3}/lib/temple/mixins/dispatcher.rb +1 -0
  197. data/bundle/ruby/{2.7.0/gems/temple-0.8.2 → 3.1.0/gems/temple-0.10.3}/lib/temple/mixins/engine_dsl.rb +1 -0
  198. data/bundle/ruby/{2.7.0/gems/temple-0.8.2 → 3.1.0/gems/temple-0.10.3}/lib/temple/mixins/grammar_dsl.rb +4 -2
  199. data/bundle/ruby/{2.7.0/gems/temple-0.8.2 → 3.1.0/gems/temple-0.10.3}/lib/temple/mixins/options.rb +1 -0
  200. data/bundle/ruby/{2.7.0/gems/temple-0.8.2 → 3.1.0/gems/temple-0.10.3}/lib/temple/mixins/template.rb +1 -0
  201. data/bundle/ruby/{2.7.0/gems/temple-0.8.2 → 3.1.0/gems/temple-0.10.3}/lib/temple/parser.rb +1 -0
  202. data/bundle/ruby/{2.7.0/gems/temple-0.8.2 → 3.1.0/gems/temple-0.10.3}/lib/temple/static_analyzer.rb +1 -0
  203. data/bundle/ruby/{2.7.0/gems/temple-0.8.2 → 3.1.0/gems/temple-0.10.3}/lib/temple/templates/rails.rb +7 -2
  204. data/bundle/ruby/{2.7.0/gems/temple-0.8.2 → 3.1.0/gems/temple-0.10.3}/lib/temple/templates/tilt.rb +2 -9
  205. data/bundle/ruby/{2.7.0/gems/temple-0.8.2 → 3.1.0/gems/temple-0.10.3}/lib/temple/templates.rb +1 -0
  206. data/bundle/ruby/{2.7.0/gems/temple-0.8.2 → 3.1.0/gems/temple-0.10.3}/lib/temple/utils.rb +5 -15
  207. data/bundle/ruby/3.1.0/gems/temple-0.10.3/lib/temple/version.rb +4 -0
  208. data/bundle/ruby/{2.7.0/gems/temple-0.8.2 → 3.1.0/gems/temple-0.10.3}/lib/temple.rb +3 -0
  209. data/bundle/ruby/{2.7.0/gems/temple-0.8.2 → 3.1.0/gems/temple-0.10.3}/temple.gemspec +4 -6
  210. data/bundle/ruby/3.1.0/gems/terminal-table-3.0.2/History.rdoc +142 -0
  211. data/bundle/ruby/3.1.0/gems/terminal-table-3.0.2/README.md +417 -0
  212. data/bundle/ruby/{2.7.0/gems/terminal-table-1.8.0 → 3.1.0/gems/terminal-table-3.0.2}/lib/terminal-table/cell.rb +8 -8
  213. data/bundle/ruby/{2.7.0/gems/terminal-table-1.8.0 → 3.1.0/gems/terminal-table-3.0.2}/lib/terminal-table/row.rb +18 -4
  214. data/bundle/ruby/3.1.0/gems/terminal-table-3.0.2/lib/terminal-table/separator.rb +66 -0
  215. data/bundle/ruby/3.1.0/gems/terminal-table-3.0.2/lib/terminal-table/style.rb +284 -0
  216. data/bundle/ruby/{2.7.0/gems/terminal-table-1.8.0 → 3.1.0/gems/terminal-table-3.0.2}/lib/terminal-table/table.rb +47 -18
  217. data/bundle/ruby/3.1.0/gems/terminal-table-3.0.2/lib/terminal-table/util.rb +13 -0
  218. data/bundle/ruby/{2.7.0/gems/terminal-table-1.8.0 → 3.1.0/gems/terminal-table-3.0.2}/lib/terminal-table/version.rb +1 -1
  219. data/bundle/ruby/{2.7.0/gems/terminal-table-1.8.0 → 3.1.0/gems/terminal-table-3.0.2}/lib/terminal-table.rb +2 -2
  220. data/bundle/ruby/{2.7.0/gems/terminal-table-1.8.0 → 3.1.0/gems/terminal-table-3.0.2}/terminal-table.gemspec +3 -3
  221. data/bundle/ruby/{2.7.0/gems/tilt-2.0.10 → 3.1.0/gems/tilt-2.5.0}/COPYING +1 -0
  222. data/bundle/ruby/3.1.0/gems/tilt-2.5.0/lib/tilt/_emacs_org.rb +2 -0
  223. data/bundle/ruby/3.1.0/gems/tilt-2.5.0/lib/tilt/_handlebars.rb +2 -0
  224. data/bundle/ruby/3.1.0/gems/tilt-2.5.0/lib/tilt/_jbuilder.rb +2 -0
  225. data/bundle/ruby/3.1.0/gems/tilt-2.5.0/lib/tilt/_org.rb +2 -0
  226. data/bundle/ruby/3.1.0/gems/tilt-2.5.0/lib/tilt/asciidoc.rb +15 -0
  227. data/bundle/ruby/3.1.0/gems/tilt-2.5.0/lib/tilt/babel.rb +8 -0
  228. data/bundle/ruby/3.1.0/gems/tilt-2.5.0/lib/tilt/builder.rb +42 -0
  229. data/bundle/ruby/3.1.0/gems/tilt-2.5.0/lib/tilt/cli.rb +134 -0
  230. data/bundle/ruby/3.1.0/gems/tilt-2.5.0/lib/tilt/coffee.rb +39 -0
  231. data/bundle/ruby/3.1.0/gems/tilt-2.5.0/lib/tilt/commonmarker.rb +95 -0
  232. data/bundle/ruby/3.1.0/gems/tilt-2.5.0/lib/tilt/creole.rb +16 -0
  233. data/bundle/ruby/{2.7.0/gems/tilt-2.0.10 → 3.1.0/gems/tilt-2.5.0}/lib/tilt/csv.rb +6 -18
  234. data/bundle/ruby/{2.7.0/gems/tilt-2.0.10 → 3.1.0/gems/tilt-2.5.0}/lib/tilt/erb.rb +23 -21
  235. data/bundle/ruby/3.1.0/gems/tilt-2.5.0/lib/tilt/erubi.rb +55 -0
  236. data/bundle/ruby/{2.7.0/gems/tilt-2.0.10 → 3.1.0/gems/tilt-2.5.0}/lib/tilt/etanni.rb +5 -4
  237. data/bundle/ruby/3.1.0/gems/tilt-2.5.0/lib/tilt/haml.rb +94 -0
  238. data/bundle/ruby/3.1.0/gems/tilt-2.5.0/lib/tilt/kramdown.rb +13 -0
  239. data/bundle/ruby/{2.7.0/gems/tilt-2.0.10 → 3.1.0/gems/tilt-2.5.0}/lib/tilt/liquid.rb +10 -17
  240. data/bundle/ruby/3.1.0/gems/tilt-2.5.0/lib/tilt/livescript.rb +11 -0
  241. data/bundle/ruby/{2.7.0/gems/tilt-2.0.10 → 3.1.0/gems/tilt-2.5.0}/lib/tilt/mapping.rb +228 -109
  242. data/bundle/ruby/{2.7.0/gems/tilt-2.0.10 → 3.1.0/gems/tilt-2.5.0}/lib/tilt/markaby.rb +5 -7
  243. data/bundle/ruby/{2.7.0/gems/tilt-2.0.10 → 3.1.0/gems/tilt-2.5.0}/lib/tilt/nokogiri.rb +11 -10
  244. data/bundle/ruby/3.1.0/gems/tilt-2.5.0/lib/tilt/pandoc.rb +39 -0
  245. data/bundle/ruby/3.1.0/gems/tilt-2.5.0/lib/tilt/pipeline.rb +19 -0
  246. data/bundle/ruby/3.1.0/gems/tilt-2.5.0/lib/tilt/plain.rb +5 -0
  247. data/bundle/ruby/3.1.0/gems/tilt-2.5.0/lib/tilt/prawn.rb +28 -0
  248. data/bundle/ruby/3.1.0/gems/tilt-2.5.0/lib/tilt/radius.rb +41 -0
  249. data/bundle/ruby/3.1.0/gems/tilt-2.5.0/lib/tilt/rdiscount.rb +23 -0
  250. data/bundle/ruby/3.1.0/gems/tilt-2.5.0/lib/tilt/rdoc.rb +11 -0
  251. data/bundle/ruby/3.1.0/gems/tilt-2.5.0/lib/tilt/redcarpet.rb +31 -0
  252. data/bundle/ruby/3.1.0/gems/tilt-2.5.0/lib/tilt/redcloth.rb +13 -0
  253. data/bundle/ruby/3.1.0/gems/tilt-2.5.0/lib/tilt/rst-pandoc.rb +10 -0
  254. data/bundle/ruby/3.1.0/gems/tilt-2.5.0/lib/tilt/sass.rb +78 -0
  255. data/bundle/ruby/3.1.0/gems/tilt-2.5.0/lib/tilt/slim.rb +5 -0
  256. data/bundle/ruby/{2.7.0/gems/tilt-2.0.10 → 3.1.0/gems/tilt-2.5.0}/lib/tilt/string.rb +9 -3
  257. data/bundle/ruby/3.1.0/gems/tilt-2.5.0/lib/tilt/template.rb +479 -0
  258. data/bundle/ruby/3.1.0/gems/tilt-2.5.0/lib/tilt/typescript.rb +19 -0
  259. data/bundle/ruby/{2.7.0/gems/tilt-2.0.10 → 3.1.0/gems/tilt-2.5.0}/lib/tilt/yajl.rb +5 -11
  260. data/bundle/ruby/{2.7.0/gems/tilt-2.0.10 → 3.1.0/gems/tilt-2.5.0}/lib/tilt.rb +60 -42
  261. data/bundle/ruby/{2.7.0/gems/unicode-display_width-1.8.0 → 3.1.0/gems/unicode-display_width-2.6.0}/CHANGELOG.md +65 -2
  262. data/bundle/ruby/{2.7.0/gems/unicode-display_width-1.8.0 → 3.1.0/gems/unicode-display_width-2.6.0}/MIT-LICENSE.txt +1 -1
  263. data/bundle/ruby/{2.7.0/gems/unicode-display_width-1.8.0 → 3.1.0/gems/unicode-display_width-2.6.0}/README.md +67 -20
  264. data/bundle/ruby/3.1.0/gems/unicode-display_width-2.6.0/data/display_width.marshal.gz +0 -0
  265. data/bundle/ruby/3.1.0/gems/unicode-display_width-2.6.0/lib/unicode/display_width/constants.rb +10 -0
  266. data/bundle/ruby/3.1.0/gems/unicode-display_width-2.6.0/lib/unicode/display_width/index.rb +34 -0
  267. data/bundle/ruby/3.1.0/gems/unicode-display_width-2.6.0/lib/unicode/display_width/no_string_ext.rb +8 -0
  268. data/bundle/ruby/3.1.0/gems/unicode-display_width-2.6.0/lib/unicode/display_width/string_ext.rb +9 -0
  269. data/bundle/ruby/3.1.0/gems/unicode-display_width-2.6.0/lib/unicode/display_width.rb +123 -0
  270. data/lib/brakeman/app_tree.rb +40 -13
  271. data/lib/brakeman/checks/base_check.rb +2 -3
  272. data/lib/brakeman/checks/check_basic_auth.rb +4 -2
  273. data/lib/brakeman/checks/check_basic_auth_timing_attack.rb +2 -1
  274. data/lib/brakeman/checks/check_content_tag.rb +16 -9
  275. data/lib/brakeman/checks/check_cookie_serialization.rb +2 -1
  276. data/lib/brakeman/checks/check_create_with.rb +4 -2
  277. data/lib/brakeman/checks/check_cross_site_scripting.rb +6 -3
  278. data/lib/brakeman/checks/check_csrf_token_forgery_cve.rb +2 -1
  279. data/lib/brakeman/checks/check_default_routes.rb +6 -3
  280. data/lib/brakeman/checks/check_deserialize.rb +6 -2
  281. data/lib/brakeman/checks/check_detailed_exceptions.rb +4 -2
  282. data/lib/brakeman/checks/check_digest_dos.rb +2 -1
  283. data/lib/brakeman/checks/check_divide_by_zero.rb +2 -1
  284. data/lib/brakeman/checks/check_dynamic_finders.rb +2 -1
  285. data/lib/brakeman/checks/check_eol_rails.rb +6 -0
  286. data/lib/brakeman/checks/check_eol_ruby.rb +4 -1
  287. data/lib/brakeman/checks/check_escape_function.rb +2 -1
  288. data/lib/brakeman/checks/check_evaluation.rb +21 -2
  289. data/lib/brakeman/checks/check_execute.rb +34 -3
  290. data/lib/brakeman/checks/check_file_access.rb +2 -1
  291. data/lib/brakeman/checks/check_file_disclosure.rb +2 -1
  292. data/lib/brakeman/checks/check_filter_skipping.rb +2 -1
  293. data/lib/brakeman/checks/check_force_ssl.rb +2 -1
  294. data/lib/brakeman/checks/check_forgery_setting.rb +4 -2
  295. data/lib/brakeman/checks/check_header_dos.rb +2 -1
  296. data/lib/brakeman/checks/check_i18n_xss.rb +2 -1
  297. data/lib/brakeman/checks/check_jruby_xml.rb +2 -1
  298. data/lib/brakeman/checks/check_json_encoding.rb +2 -1
  299. data/lib/brakeman/checks/check_json_entity_escape.rb +4 -2
  300. data/lib/brakeman/checks/check_json_parsing.rb +4 -2
  301. data/lib/brakeman/checks/check_link_to.rb +2 -1
  302. data/lib/brakeman/checks/check_link_to_href.rb +4 -2
  303. data/lib/brakeman/checks/check_mail_to.rb +2 -1
  304. data/lib/brakeman/checks/check_mass_assignment.rb +6 -3
  305. data/lib/brakeman/checks/check_mime_type_dos.rb +2 -1
  306. data/lib/brakeman/checks/check_model_attr_accessible.rb +3 -1
  307. data/lib/brakeman/checks/check_model_attributes.rb +4 -2
  308. data/lib/brakeman/checks/check_model_serialize.rb +2 -1
  309. data/lib/brakeman/checks/check_nested_attributes.rb +2 -1
  310. data/lib/brakeman/checks/check_nested_attributes_bypass.rb +2 -1
  311. data/lib/brakeman/checks/check_number_to_currency.rb +4 -2
  312. data/lib/brakeman/checks/check_page_caching_cve.rb +2 -1
  313. data/lib/brakeman/checks/check_pathname.rb +48 -0
  314. data/lib/brakeman/checks/check_permit_attributes.rb +2 -1
  315. data/lib/brakeman/checks/check_quote_table_name.rb +2 -1
  316. data/lib/brakeman/checks/check_ransack.rb +53 -0
  317. data/lib/brakeman/checks/check_redirect.rb +67 -31
  318. data/lib/brakeman/checks/check_regex_dos.rb +2 -1
  319. data/lib/brakeman/checks/check_render.rb +10 -3
  320. data/lib/brakeman/checks/check_render_dos.rb +2 -1
  321. data/lib/brakeman/checks/check_render_inline.rb +4 -2
  322. data/lib/brakeman/checks/check_response_splitting.rb +2 -1
  323. data/lib/brakeman/checks/check_reverse_tabnabbing.rb +2 -1
  324. data/lib/brakeman/checks/check_route_dos.rb +2 -1
  325. data/lib/brakeman/checks/check_safe_buffer_manipulation.rb +2 -1
  326. data/lib/brakeman/checks/check_sanitize_config_cve.rb +120 -0
  327. data/lib/brakeman/checks/check_sanitize_methods.rb +6 -3
  328. data/lib/brakeman/checks/check_secrets.rb +2 -1
  329. data/lib/brakeman/checks/check_select_tag.rb +2 -1
  330. data/lib/brakeman/checks/check_select_vulnerability.rb +2 -1
  331. data/lib/brakeman/checks/check_send.rb +2 -1
  332. data/lib/brakeman/checks/check_session_manipulation.rb +2 -1
  333. data/lib/brakeman/checks/check_session_settings.rb +8 -6
  334. data/lib/brakeman/checks/check_simple_format.rb +4 -2
  335. data/lib/brakeman/checks/check_single_quotes.rb +2 -1
  336. data/lib/brakeman/checks/check_skip_before_filter.rb +4 -2
  337. data/lib/brakeman/checks/check_sprockets_path_traversal.rb +2 -1
  338. data/lib/brakeman/checks/check_sql.rb +5 -3
  339. data/lib/brakeman/checks/check_sql_cves.rb +4 -2
  340. data/lib/brakeman/checks/check_ssl_verify.rb +2 -1
  341. data/lib/brakeman/checks/check_strip_tags.rb +6 -3
  342. data/lib/brakeman/checks/check_symbol_dos.rb +2 -1
  343. data/lib/brakeman/checks/check_symbol_dos_cve.rb +2 -1
  344. data/lib/brakeman/checks/check_template_injection.rb +2 -1
  345. data/lib/brakeman/checks/check_translate_bug.rb +2 -1
  346. data/lib/brakeman/checks/check_unsafe_reflection.rb +2 -1
  347. data/lib/brakeman/checks/check_unsafe_reflection_methods.rb +2 -1
  348. data/lib/brakeman/checks/check_unscoped_find.rb +10 -1
  349. data/lib/brakeman/checks/check_validation_regex.rb +2 -1
  350. data/lib/brakeman/checks/check_verb_confusion.rb +2 -1
  351. data/lib/brakeman/checks/check_weak_hash.rb +6 -3
  352. data/lib/brakeman/checks/check_weak_rsa_key.rb +112 -0
  353. data/lib/brakeman/checks/check_without_protection.rb +2 -1
  354. data/lib/brakeman/checks/check_xml_dos.rb +2 -1
  355. data/lib/brakeman/checks/check_yaml_parsing.rb +4 -2
  356. data/lib/brakeman/checks/eol_check.rb +4 -2
  357. data/lib/brakeman/file_parser.rb +35 -2
  358. data/lib/brakeman/options.rb +42 -5
  359. data/lib/brakeman/parsers/erubis_patch.rb +11 -0
  360. data/lib/brakeman/parsers/rails2_erubis.rb +3 -0
  361. data/lib/brakeman/parsers/rails2_xss_plugin_erubis.rb +4 -0
  362. data/lib/brakeman/parsers/rails3_erubis.rb +5 -1
  363. data/lib/brakeman/parsers/slim_embedded.rb +2 -0
  364. data/lib/brakeman/processors/alias_processor.rb +124 -41
  365. data/lib/brakeman/processors/gem_processor.rb +2 -2
  366. data/lib/brakeman/processors/lib/file_type_detector.rb +9 -7
  367. data/lib/brakeman/processors/lib/find_all_calls.rb +1 -0
  368. data/lib/brakeman/processors/lib/module_helper.rb +31 -1
  369. data/lib/brakeman/processors/lib/rails3_config_processor.rb +1 -1
  370. data/lib/brakeman/processors/library_processor.rb +6 -0
  371. data/lib/brakeman/report/ignore/config.rb +0 -1
  372. data/lib/brakeman/report/pager.rb +1 -1
  373. data/lib/brakeman/report/report_codeclimate.rb +1 -1
  374. data/lib/brakeman/report/report_csv.rb +2 -0
  375. data/lib/brakeman/report/report_github.rb +1 -1
  376. data/lib/brakeman/report/report_junit.rb +2 -2
  377. data/lib/brakeman/report/report_markdown.rb +1 -1
  378. data/lib/brakeman/report/report_sarif.rb +122 -2
  379. data/lib/brakeman/report/report_table.rb +7 -7
  380. data/lib/brakeman/report/report_tabs.rb +0 -1
  381. data/lib/brakeman/report/report_text.rb +10 -1
  382. data/lib/brakeman/report/templates/controller_warnings.html.erb +2 -0
  383. data/lib/brakeman/report/templates/ignored_warnings.html.erb +2 -0
  384. data/lib/brakeman/report/templates/model_warnings.html.erb +2 -0
  385. data/lib/brakeman/report/templates/security_warnings.html.erb +2 -0
  386. data/lib/brakeman/report/templates/view_warnings.html.erb +2 -0
  387. data/lib/brakeman/rescanner.rb +40 -388
  388. data/lib/brakeman/scanner.rb +161 -76
  389. data/lib/brakeman/tracker/config.rb +89 -34
  390. data/lib/brakeman/tracker/controller.rb +14 -10
  391. data/lib/brakeman/tracker/file_cache.rb +83 -0
  392. data/lib/brakeman/tracker.rb +21 -4
  393. data/lib/brakeman/util.rb +21 -7
  394. data/lib/brakeman/version.rb +1 -1
  395. data/lib/brakeman/warning.rb +6 -3
  396. data/lib/brakeman/warning_codes.rb +6 -0
  397. data/lib/brakeman.rb +22 -7
  398. data/lib/ruby_parser/bm_sexp.rb +5 -1
  399. metadata +438 -422
  400. data/bundle/ruby/2.7.0/gems/highline-2.0.3/appveyor.yml +0 -37
  401. data/bundle/ruby/2.7.0/gems/parallel-1.22.1/lib/parallel/processor_count.rb +0 -44
  402. data/bundle/ruby/2.7.0/gems/parallel-1.22.1/lib/parallel/version.rb +0 -4
  403. data/bundle/ruby/2.7.0/gems/rexml-3.2.5/NEWS.md +0 -178
  404. data/bundle/ruby/2.7.0/gems/rexml-3.2.5/lib/rexml/parsers/baseparser.rb +0 -694
  405. data/bundle/ruby/2.7.0/gems/rexml-3.2.5/lib/rexml/source.rb +0 -298
  406. data/bundle/ruby/2.7.0/gems/ruby_parser-legacy-1.0.0/History.rdoc +0 -6
  407. data/bundle/ruby/2.7.0/gems/ruby_parser-legacy-1.0.0/Manifest.txt +0 -19
  408. data/bundle/ruby/2.7.0/gems/ruby_parser-legacy-1.0.0/README.rdoc +0 -54
  409. data/bundle/ruby/2.7.0/gems/ruby_parser-legacy-1.0.0/lib/ruby_parser/legacy/ruby18_parser.rb +0 -5794
  410. data/bundle/ruby/2.7.0/gems/ruby_parser-legacy-1.0.0/lib/ruby_parser/legacy/ruby18_parser.y +0 -1909
  411. data/bundle/ruby/2.7.0/gems/ruby_parser-legacy-1.0.0/lib/ruby_parser/legacy/ruby19_parser.rb +0 -6186
  412. data/bundle/ruby/2.7.0/gems/ruby_parser-legacy-1.0.0/lib/ruby_parser/legacy/ruby19_parser.y +0 -2117
  413. data/bundle/ruby/2.7.0/gems/ruby_parser-legacy-1.0.0/lib/ruby_parser/legacy/ruby_lexer.rb +0 -1412
  414. data/bundle/ruby/2.7.0/gems/ruby_parser-legacy-1.0.0/lib/ruby_parser/legacy/ruby_lexer.rex +0 -179
  415. data/bundle/ruby/2.7.0/gems/ruby_parser-legacy-1.0.0/lib/ruby_parser/legacy/ruby_lexer.rex.rb +0 -323
  416. data/bundle/ruby/2.7.0/gems/ruby_parser-legacy-1.0.0/lib/ruby_parser/legacy/ruby_parser.rb +0 -30
  417. data/bundle/ruby/2.7.0/gems/ruby_parser-legacy-1.0.0/lib/ruby_parser/legacy/ruby_parser_extras.rb +0 -1388
  418. data/bundle/ruby/2.7.0/gems/ruby_parser-legacy-1.0.0/lib/ruby_parser/legacy.rb +0 -5
  419. data/bundle/ruby/2.7.0/gems/safe_yaml-1.0.5/CHANGES.md +0 -154
  420. data/bundle/ruby/2.7.0/gems/safe_yaml-1.0.5/Gemfile +0 -11
  421. data/bundle/ruby/2.7.0/gems/safe_yaml-1.0.5/LICENSE.txt +0 -22
  422. data/bundle/ruby/2.7.0/gems/safe_yaml-1.0.5/README.md +0 -191
  423. data/bundle/ruby/2.7.0/gems/safe_yaml-1.0.5/bundle_install_all_ruby_versions.sh +0 -11
  424. data/bundle/ruby/2.7.0/gems/safe_yaml-1.0.5/lib/safe_yaml/deep.rb +0 -34
  425. data/bundle/ruby/2.7.0/gems/safe_yaml-1.0.5/lib/safe_yaml/libyaml_checker.rb +0 -36
  426. data/bundle/ruby/2.7.0/gems/safe_yaml-1.0.5/lib/safe_yaml/load.rb +0 -181
  427. data/bundle/ruby/2.7.0/gems/safe_yaml-1.0.5/lib/safe_yaml/parse/date.rb +0 -37
  428. data/bundle/ruby/2.7.0/gems/safe_yaml-1.0.5/lib/safe_yaml/parse/hexadecimal.rb +0 -12
  429. data/bundle/ruby/2.7.0/gems/safe_yaml-1.0.5/lib/safe_yaml/parse/sexagesimal.rb +0 -26
  430. data/bundle/ruby/2.7.0/gems/safe_yaml-1.0.5/lib/safe_yaml/psych_handler.rb +0 -99
  431. data/bundle/ruby/2.7.0/gems/safe_yaml-1.0.5/lib/safe_yaml/psych_resolver.rb +0 -52
  432. data/bundle/ruby/2.7.0/gems/safe_yaml-1.0.5/lib/safe_yaml/resolver.rb +0 -94
  433. data/bundle/ruby/2.7.0/gems/safe_yaml-1.0.5/lib/safe_yaml/safe_to_ruby_visitor.rb +0 -29
  434. data/bundle/ruby/2.7.0/gems/safe_yaml-1.0.5/lib/safe_yaml/store.rb +0 -39
  435. data/bundle/ruby/2.7.0/gems/safe_yaml-1.0.5/lib/safe_yaml/syck_hack.rb +0 -36
  436. data/bundle/ruby/2.7.0/gems/safe_yaml-1.0.5/lib/safe_yaml/syck_node_monkeypatch.rb +0 -43
  437. data/bundle/ruby/2.7.0/gems/safe_yaml-1.0.5/lib/safe_yaml/syck_resolver.rb +0 -38
  438. data/bundle/ruby/2.7.0/gems/safe_yaml-1.0.5/lib/safe_yaml/transform/to_boolean.rb +0 -21
  439. data/bundle/ruby/2.7.0/gems/safe_yaml-1.0.5/lib/safe_yaml/transform/to_date.rb +0 -13
  440. data/bundle/ruby/2.7.0/gems/safe_yaml-1.0.5/lib/safe_yaml/transform/to_float.rb +0 -33
  441. data/bundle/ruby/2.7.0/gems/safe_yaml-1.0.5/lib/safe_yaml/transform/to_integer.rb +0 -26
  442. data/bundle/ruby/2.7.0/gems/safe_yaml-1.0.5/lib/safe_yaml/transform/to_nil.rb +0 -18
  443. data/bundle/ruby/2.7.0/gems/safe_yaml-1.0.5/lib/safe_yaml/transform/to_symbol.rb +0 -17
  444. data/bundle/ruby/2.7.0/gems/safe_yaml-1.0.5/lib/safe_yaml/transform/transformation_map.rb +0 -47
  445. data/bundle/ruby/2.7.0/gems/safe_yaml-1.0.5/lib/safe_yaml/transform.rb +0 -41
  446. data/bundle/ruby/2.7.0/gems/safe_yaml-1.0.5/lib/safe_yaml/version.rb +0 -3
  447. data/bundle/ruby/2.7.0/gems/safe_yaml-1.0.5/lib/safe_yaml.rb +0 -94
  448. data/bundle/ruby/2.7.0/gems/safe_yaml-1.0.5/run_specs_all_ruby_versions.sh +0 -38
  449. data/bundle/ruby/2.7.0/gems/safe_yaml-1.0.5/safe_yaml.gemspec +0 -19
  450. data/bundle/ruby/2.7.0/gems/slim-4.1.0/Gemfile +0 -70
  451. data/bundle/ruby/2.7.0/gems/slim-4.1.0/lib/slim/template.rb +0 -19
  452. data/bundle/ruby/2.7.0/gems/temple-0.8.2/Gemfile +0 -3
  453. data/bundle/ruby/2.7.0/gems/temple-0.8.2/lib/temple/version.rb +0 -3
  454. data/bundle/ruby/2.7.0/gems/terminal-table-1.8.0/History.rdoc +0 -85
  455. data/bundle/ruby/2.7.0/gems/terminal-table-1.8.0/README.rdoc +0 -247
  456. data/bundle/ruby/2.7.0/gems/terminal-table-1.8.0/lib/terminal-table/separator.rb +0 -14
  457. data/bundle/ruby/2.7.0/gems/terminal-table-1.8.0/lib/terminal-table/style.rb +0 -79
  458. data/bundle/ruby/2.7.0/gems/tilt-2.0.10/lib/tilt/asciidoc.rb +0 -27
  459. data/bundle/ruby/2.7.0/gems/tilt-2.0.10/lib/tilt/babel.rb +0 -16
  460. data/bundle/ruby/2.7.0/gems/tilt-2.0.10/lib/tilt/bluecloth.rb +0 -24
  461. data/bundle/ruby/2.7.0/gems/tilt-2.0.10/lib/tilt/builder.rb +0 -37
  462. data/bundle/ruby/2.7.0/gems/tilt-2.0.10/lib/tilt/coffee.rb +0 -58
  463. data/bundle/ruby/2.7.0/gems/tilt-2.0.10/lib/tilt/commonmarker.rb +0 -78
  464. data/bundle/ruby/2.7.0/gems/tilt-2.0.10/lib/tilt/creole.rb +0 -25
  465. data/bundle/ruby/2.7.0/gems/tilt-2.0.10/lib/tilt/dummy.rb +0 -3
  466. data/bundle/ruby/2.7.0/gems/tilt-2.0.10/lib/tilt/erubi.rb +0 -32
  467. data/bundle/ruby/2.7.0/gems/tilt-2.0.10/lib/tilt/erubis.rb +0 -43
  468. data/bundle/ruby/2.7.0/gems/tilt-2.0.10/lib/tilt/haml.rb +0 -86
  469. data/bundle/ruby/2.7.0/gems/tilt-2.0.10/lib/tilt/kramdown.rb +0 -25
  470. data/bundle/ruby/2.7.0/gems/tilt-2.0.10/lib/tilt/less.rb +0 -30
  471. data/bundle/ruby/2.7.0/gems/tilt-2.0.10/lib/tilt/livescript.rb +0 -23
  472. data/bundle/ruby/2.7.0/gems/tilt-2.0.10/lib/tilt/maruku.rb +0 -22
  473. data/bundle/ruby/2.7.0/gems/tilt-2.0.10/lib/tilt/pandoc.rb +0 -49
  474. data/bundle/ruby/2.7.0/gems/tilt-2.0.10/lib/tilt/plain.rb +0 -16
  475. data/bundle/ruby/2.7.0/gems/tilt-2.0.10/lib/tilt/prawn.rb +0 -43
  476. data/bundle/ruby/2.7.0/gems/tilt-2.0.10/lib/tilt/radius.rb +0 -48
  477. data/bundle/ruby/2.7.0/gems/tilt-2.0.10/lib/tilt/rdiscount.rb +0 -39
  478. data/bundle/ruby/2.7.0/gems/tilt-2.0.10/lib/tilt/rdoc.rb +0 -40
  479. data/bundle/ruby/2.7.0/gems/tilt-2.0.10/lib/tilt/redcarpet.rb +0 -83
  480. data/bundle/ruby/2.7.0/gems/tilt-2.0.10/lib/tilt/redcloth.rb +0 -23
  481. data/bundle/ruby/2.7.0/gems/tilt-2.0.10/lib/tilt/rst-pandoc.rb +0 -18
  482. data/bundle/ruby/2.7.0/gems/tilt-2.0.10/lib/tilt/sass.rb +0 -52
  483. data/bundle/ruby/2.7.0/gems/tilt-2.0.10/lib/tilt/sigil.rb +0 -34
  484. data/bundle/ruby/2.7.0/gems/tilt-2.0.10/lib/tilt/template.rb +0 -297
  485. data/bundle/ruby/2.7.0/gems/tilt-2.0.10/lib/tilt/typescript.rb +0 -26
  486. data/bundle/ruby/2.7.0/gems/tilt-2.0.10/lib/tilt/wikicloth.rb +0 -22
  487. data/bundle/ruby/2.7.0/gems/unicode-display_width-1.8.0/data/display_width.marshal.gz +0 -0
  488. data/bundle/ruby/2.7.0/gems/unicode-display_width-1.8.0/lib/unicode/display_width/constants.rb +0 -8
  489. data/bundle/ruby/2.7.0/gems/unicode-display_width-1.8.0/lib/unicode/display_width/index.rb +0 -12
  490. data/bundle/ruby/2.7.0/gems/unicode-display_width-1.8.0/lib/unicode/display_width/no_string_ext.rb +0 -7
  491. data/bundle/ruby/2.7.0/gems/unicode-display_width-1.8.0/lib/unicode/display_width/string_ext.rb +0 -17
  492. data/bundle/ruby/2.7.0/gems/unicode-display_width-1.8.0/lib/unicode/display_width.rb +0 -51
  493. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/erubis-2.7.0/CHANGES.txt +0 -0
  494. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/erubis-2.7.0/MIT-LICENSE +0 -0
  495. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/erubis-2.7.0/README.txt +0 -0
  496. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/erubis-2.7.0/contrib/erubis +0 -0
  497. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/erubis-2.7.0/contrib/erubis-run.rb +0 -0
  498. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/erubis-2.7.0/contrib/inline-require +0 -0
  499. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/erubis-2.7.0/lib/erubis/context.rb +0 -0
  500. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/erubis-2.7.0/lib/erubis/converter.rb +0 -0
  501. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/erubis-2.7.0/lib/erubis/engine/ec.rb +0 -0
  502. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/erubis-2.7.0/lib/erubis/engine/ecpp.rb +0 -0
  503. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/erubis-2.7.0/lib/erubis/engine/ejava.rb +0 -0
  504. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/erubis-2.7.0/lib/erubis/engine/ejavascript.rb +0 -0
  505. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/erubis-2.7.0/lib/erubis/engine/enhanced.rb +0 -0
  506. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/erubis-2.7.0/lib/erubis/engine/eperl.rb +0 -0
  507. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/erubis-2.7.0/lib/erubis/engine/ephp.rb +0 -0
  508. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/erubis-2.7.0/lib/erubis/engine/eruby.rb +0 -0
  509. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/erubis-2.7.0/lib/erubis/engine/escheme.rb +0 -0
  510. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/erubis-2.7.0/lib/erubis/engine/optimized.rb +0 -0
  511. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/erubis-2.7.0/lib/erubis/engine.rb +0 -0
  512. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/erubis-2.7.0/lib/erubis/enhancer.rb +0 -0
  513. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/erubis-2.7.0/lib/erubis/error.rb +0 -0
  514. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/erubis-2.7.0/lib/erubis/evaluator.rb +0 -0
  515. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/erubis-2.7.0/lib/erubis/generator.rb +0 -0
  516. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/erubis-2.7.0/lib/erubis/helper.rb +0 -0
  517. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/erubis-2.7.0/lib/erubis/helpers/rails_form_helper.rb +0 -0
  518. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/erubis-2.7.0/lib/erubis/helpers/rails_helper.rb +0 -0
  519. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/erubis-2.7.0/lib/erubis/local-setting.rb +0 -0
  520. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/erubis-2.7.0/lib/erubis/main.rb +0 -0
  521. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/erubis-2.7.0/lib/erubis/preprocessing.rb +0 -0
  522. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/erubis-2.7.0/lib/erubis/tiny.rb +0 -0
  523. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/erubis-2.7.0/lib/erubis/util.rb +0 -0
  524. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/erubis-2.7.0/lib/erubis.rb +0 -0
  525. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/erubis-2.7.0/setup.rb +0 -0
  526. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/haml-5.2.2/CHANGELOG.md +0 -0
  527. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/haml-5.2.2/FAQ.md +0 -0
  528. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/haml-5.2.2/Gemfile +0 -0
  529. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/haml-5.2.2/MIT-LICENSE +0 -0
  530. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/haml-5.2.2/README.md +0 -0
  531. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/haml-5.2.2/REFERENCE.md +0 -0
  532. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/haml-5.2.2/TODO +0 -0
  533. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/haml-5.2.2/haml.gemspec +0 -0
  534. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/haml-5.2.2/lib/haml/attribute_builder.rb +0 -0
  535. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/haml-5.2.2/lib/haml/attribute_compiler.rb +0 -0
  536. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/haml-5.2.2/lib/haml/attribute_parser.rb +0 -0
  537. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/haml-5.2.2/lib/haml/buffer.rb +0 -0
  538. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/haml-5.2.2/lib/haml/compiler.rb +0 -0
  539. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/haml-5.2.2/lib/haml/engine.rb +0 -0
  540. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/haml-5.2.2/lib/haml/error.rb +0 -0
  541. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/haml-5.2.2/lib/haml/escapable.rb +0 -0
  542. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/haml-5.2.2/lib/haml/exec.rb +0 -0
  543. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/haml-5.2.2/lib/haml/filters.rb +0 -0
  544. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/haml-5.2.2/lib/haml/generator.rb +0 -0
  545. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/haml-5.2.2/lib/haml/helpers/action_view_extensions.rb +0 -0
  546. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/haml-5.2.2/lib/haml/helpers/action_view_mods.rb +0 -0
  547. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/haml-5.2.2/lib/haml/helpers/action_view_xss_mods.rb +0 -0
  548. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/haml-5.2.2/lib/haml/helpers/safe_erubi_template.rb +0 -0
  549. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/haml-5.2.2/lib/haml/helpers/safe_erubis_template.rb +0 -0
  550. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/haml-5.2.2/lib/haml/helpers/xss_mods.rb +0 -0
  551. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/haml-5.2.2/lib/haml/helpers.rb +0 -0
  552. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/haml-5.2.2/lib/haml/options.rb +0 -0
  553. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/haml-5.2.2/lib/haml/parser.rb +0 -0
  554. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/haml-5.2.2/lib/haml/plugin.rb +0 -0
  555. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/haml-5.2.2/lib/haml/railtie.rb +0 -0
  556. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/haml-5.2.2/lib/haml/sass_rails_filter.rb +0 -0
  557. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/haml-5.2.2/lib/haml/template/options.rb +0 -0
  558. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/haml-5.2.2/lib/haml/template.rb +0 -0
  559. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/haml-5.2.2/lib/haml/temple_engine.rb +0 -0
  560. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/haml-5.2.2/lib/haml/temple_line_counter.rb +0 -0
  561. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/haml-5.2.2/lib/haml/util.rb +0 -0
  562. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/haml-5.2.2/lib/haml/version.rb +0 -0
  563. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/haml-5.2.2/lib/haml.rb +0 -0
  564. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/haml-5.2.2/yard/default/fulldoc/html/css/common.sass +0 -0
  565. /data/bundle/ruby/{2.7.0 → 3.1.0}/gems/haml-5.2.2/yard/default/layout/html/footer.erb +0 -0
  566. /data/bundle/ruby/{2.7.0/gems/highline-2.0.3 → 3.1.0/gems/highline-3.1.1}/AUTHORS +0 -0
  567. /data/bundle/ruby/{2.7.0/gems/highline-2.0.3 → 3.1.0/gems/highline-3.1.1}/COPYING +0 -0
  568. /data/bundle/ruby/{2.7.0/gems/highline-2.0.3 → 3.1.0/gems/highline-3.1.1}/LICENSE +0 -0
  569. /data/bundle/ruby/{2.7.0/gems/highline-2.0.3 → 3.1.0/gems/highline-3.1.1}/TODO +0 -0
  570. /data/bundle/ruby/{2.7.0/gems/highline-2.0.3 → 3.1.0/gems/highline-3.1.1}/lib/highline/builtin_styles.rb +0 -0
  571. /data/bundle/ruby/{2.7.0/gems/highline-2.0.3 → 3.1.0/gems/highline-3.1.1}/lib/highline/color_scheme.rb +0 -0
  572. /data/bundle/ruby/{2.7.0/gems/highline-2.0.3 → 3.1.0/gems/highline-3.1.1}/lib/highline/compatibility.rb +0 -0
  573. /data/bundle/ruby/{2.7.0/gems/highline-2.0.3 → 3.1.0/gems/highline-3.1.1}/lib/highline/custom_errors.rb +0 -0
  574. /data/bundle/ruby/{2.7.0/gems/highline-2.0.3 → 3.1.0/gems/highline-3.1.1}/lib/highline/import.rb +0 -0
  575. /data/bundle/ruby/{2.7.0/gems/highline-2.0.3 → 3.1.0/gems/highline-3.1.1}/lib/highline/list.rb +0 -0
  576. /data/bundle/ruby/{2.7.0/gems/highline-2.0.3 → 3.1.0/gems/highline-3.1.1}/lib/highline/list_renderer.rb +0 -0
  577. /data/bundle/ruby/{2.7.0/gems/highline-2.0.3 → 3.1.0/gems/highline-3.1.1}/lib/highline/menu/item.rb +0 -0
  578. /data/bundle/ruby/{2.7.0/gems/highline-2.0.3 → 3.1.0/gems/highline-3.1.1}/lib/highline/paginator.rb +0 -0
  579. /data/bundle/ruby/{2.7.0/gems/highline-2.0.3 → 3.1.0/gems/highline-3.1.1}/lib/highline/simulate.rb +0 -0
  580. /data/bundle/ruby/{2.7.0/gems/highline-2.0.3 → 3.1.0/gems/highline-3.1.1}/lib/highline/statement.rb +0 -0
  581. /data/bundle/ruby/{2.7.0/gems/highline-2.0.3 → 3.1.0/gems/highline-3.1.1}/lib/highline/string.rb +0 -0
  582. /data/bundle/ruby/{2.7.0/gems/highline-2.0.3 → 3.1.0/gems/highline-3.1.1}/lib/highline/string_extensions.rb +0 -0
  583. /data/bundle/ruby/{2.7.0/gems/highline-2.0.3 → 3.1.0/gems/highline-3.1.1}/lib/highline/template_renderer.rb +0 -0
  584. /data/bundle/ruby/{2.7.0/gems/highline-2.0.3 → 3.1.0/gems/highline-3.1.1}/lib/highline/terminal/ncurses.rb +0 -0
  585. /data/bundle/ruby/{2.7.0/gems/highline-2.0.3 → 3.1.0/gems/highline-3.1.1}/lib/highline/wrapper.rb +0 -0
  586. /data/bundle/ruby/{2.7.0/gems/parallel-1.22.1 → 3.1.0/gems/parallel-1.26.3}/MIT-LICENSE.txt +0 -0
  587. /data/bundle/ruby/{2.7.0/gems/rexml-3.2.5/LICENSE.txt → 3.1.0/gems/reline-0.6.0/BSDL} +0 -0
  588. /data/bundle/ruby/{2.7.0/gems/rexml-3.2.5 → 3.1.0/gems/rexml-3.4.0}/lib/rexml/attlistdecl.rb +0 -0
  589. /data/bundle/ruby/{2.7.0/gems/rexml-3.2.5 → 3.1.0/gems/rexml-3.4.0}/lib/rexml/cdata.rb +0 -0
  590. /data/bundle/ruby/{2.7.0/gems/rexml-3.2.5 → 3.1.0/gems/rexml-3.4.0}/lib/rexml/child.rb +0 -0
  591. /data/bundle/ruby/{2.7.0/gems/rexml-3.2.5 → 3.1.0/gems/rexml-3.4.0}/lib/rexml/comment.rb +0 -0
  592. /data/bundle/ruby/{2.7.0/gems/rexml-3.2.5 → 3.1.0/gems/rexml-3.4.0}/lib/rexml/doctype.rb +0 -0
  593. /data/bundle/ruby/{2.7.0/gems/rexml-3.2.5 → 3.1.0/gems/rexml-3.4.0}/lib/rexml/dtd/attlistdecl.rb +0 -0
  594. /data/bundle/ruby/{2.7.0/gems/rexml-3.2.5 → 3.1.0/gems/rexml-3.4.0}/lib/rexml/dtd/dtd.rb +0 -0
  595. /data/bundle/ruby/{2.7.0/gems/rexml-3.2.5 → 3.1.0/gems/rexml-3.4.0}/lib/rexml/dtd/elementdecl.rb +0 -0
  596. /data/bundle/ruby/{2.7.0/gems/rexml-3.2.5 → 3.1.0/gems/rexml-3.4.0}/lib/rexml/dtd/entitydecl.rb +0 -0
  597. /data/bundle/ruby/{2.7.0/gems/rexml-3.2.5 → 3.1.0/gems/rexml-3.4.0}/lib/rexml/dtd/notationdecl.rb +0 -0
  598. /data/bundle/ruby/{2.7.0/gems/rexml-3.2.5 → 3.1.0/gems/rexml-3.4.0}/lib/rexml/encoding.rb +0 -0
  599. /data/bundle/ruby/{2.7.0/gems/rexml-3.2.5 → 3.1.0/gems/rexml-3.4.0}/lib/rexml/formatters/default.rb +0 -0
  600. /data/bundle/ruby/{2.7.0/gems/rexml-3.2.5 → 3.1.0/gems/rexml-3.4.0}/lib/rexml/formatters/transitive.rb +0 -0
  601. /data/bundle/ruby/{2.7.0/gems/rexml-3.2.5 → 3.1.0/gems/rexml-3.4.0}/lib/rexml/instruction.rb +0 -0
  602. /data/bundle/ruby/{2.7.0/gems/rexml-3.2.5 → 3.1.0/gems/rexml-3.4.0}/lib/rexml/light/node.rb +0 -0
  603. /data/bundle/ruby/{2.7.0/gems/rexml-3.2.5 → 3.1.0/gems/rexml-3.4.0}/lib/rexml/output.rb +0 -0
  604. /data/bundle/ruby/{2.7.0/gems/rexml-3.2.5 → 3.1.0/gems/rexml-3.4.0}/lib/rexml/parent.rb +0 -0
  605. /data/bundle/ruby/{2.7.0/gems/rexml-3.2.5 → 3.1.0/gems/rexml-3.4.0}/lib/rexml/parsers/lightparser.rb +0 -0
  606. /data/bundle/ruby/{2.7.0/gems/rexml-3.2.5 → 3.1.0/gems/rexml-3.4.0}/lib/rexml/parsers/ultralightparser.rb +0 -0
  607. /data/bundle/ruby/{2.7.0/gems/rexml-3.2.5 → 3.1.0/gems/rexml-3.4.0}/lib/rexml/quickpath.rb +0 -0
  608. /data/bundle/ruby/{2.7.0/gems/rexml-3.2.5 → 3.1.0/gems/rexml-3.4.0}/lib/rexml/sax2listener.rb +0 -0
  609. /data/bundle/ruby/{2.7.0/gems/rexml-3.2.5 → 3.1.0/gems/rexml-3.4.0}/lib/rexml/security.rb +0 -0
  610. /data/bundle/ruby/{2.7.0/gems/rexml-3.2.5 → 3.1.0/gems/rexml-3.4.0}/lib/rexml/streamlistener.rb +0 -0
  611. /data/bundle/ruby/{2.7.0/gems/rexml-3.2.5 → 3.1.0/gems/rexml-3.4.0}/lib/rexml/undefinednamespaceexception.rb +0 -0
  612. /data/bundle/ruby/{2.7.0/gems/rexml-3.2.5 → 3.1.0/gems/rexml-3.4.0}/lib/rexml/validation/relaxng.rb +0 -0
  613. /data/bundle/ruby/{2.7.0/gems/rexml-3.2.5 → 3.1.0/gems/rexml-3.4.0}/lib/rexml/validation/validation.rb +0 -0
  614. /data/bundle/ruby/{2.7.0/gems/rexml-3.2.5 → 3.1.0/gems/rexml-3.4.0}/lib/rexml/validation/validationexception.rb +0 -0
  615. /data/bundle/ruby/{2.7.0/gems/rexml-3.2.5 → 3.1.0/gems/rexml-3.4.0}/lib/rexml/xmldecl.rb +0 -0
  616. /data/bundle/ruby/{2.7.0/gems/rexml-3.2.5 → 3.1.0/gems/rexml-3.4.0}/lib/rexml/xmltokens.rb +0 -0
  617. /data/bundle/ruby/{2.7.0/gems/rexml-3.2.5 → 3.1.0/gems/rexml-3.4.0}/lib/rexml/xpath.rb +0 -0
  618. /data/bundle/ruby/{2.7.0/gems/rexml-3.2.5 → 3.1.0/gems/rexml-3.4.0}/lib/rexml.rb +0 -0
  619. /data/bundle/ruby/{2.7.0/gems/ruby2ruby-2.4.4 → 3.1.0/gems/ruby2ruby-2.5.1}/Manifest.txt +0 -0
  620. /data/bundle/ruby/{2.7.0/gems/ruby2ruby-2.4.4 → 3.1.0/gems/ruby2ruby-2.5.1}/README.rdoc +0 -0
  621. /data/bundle/ruby/{2.7.0/gems/ruby_parser-3.19.1 → 3.1.0/gems/ruby_parser-3.20.3}/debugging.md +0 -0
  622. /data/bundle/ruby/{2.7.0/gems/ruby_parser-3.19.1 → 3.1.0/gems/ruby_parser-3.20.3}/gauntlet.md +0 -0
  623. /data/bundle/ruby/{2.7.0/gems/ruby_parser-3.19.1 → 3.1.0/gems/ruby_parser-3.20.3}/lib/rp_extensions.rb +0 -0
  624. /data/bundle/ruby/{2.7.0/gems/ruby_parser-3.19.1 → 3.1.0/gems/ruby_parser-3.20.3}/lib/rp_stringscanner.rb +0 -0
  625. /data/bundle/ruby/{2.7.0/gems/ruby_parser-3.19.1 → 3.1.0/gems/ruby_parser-3.20.3}/lib/ruby_lexer.rex +0 -0
  626. /data/bundle/ruby/{2.7.0/gems/sexp_processor-4.16.1 → 3.1.0/gems/sexp_processor-4.17.3}/Manifest.txt +0 -0
  627. /data/bundle/ruby/{2.7.0/gems/sexp_processor-4.16.1 → 3.1.0/gems/sexp_processor-4.17.3}/README.rdoc +0 -0
  628. /data/bundle/ruby/{2.7.0/gems/sexp_processor-4.16.1 → 3.1.0/gems/sexp_processor-4.17.3}/lib/composite_sexp_processor.rb +0 -0
  629. /data/bundle/ruby/{2.7.0/gems/sexp_processor-4.16.1 → 3.1.0/gems/sexp_processor-4.17.3}/lib/unique.rb +0 -0
  630. /data/bundle/ruby/{2.7.0/gems/temple-0.8.2 → 3.1.0/gems/temple-0.10.3}/EXPRESSIONS.md +0 -0
  631. /data/bundle/ruby/{2.7.0/gems/temple-0.8.2 → 3.1.0/gems/temple-0.10.3}/LICENSE +0 -0
  632. /data/bundle/ruby/{2.7.0/gems/terminal-table-1.8.0 → 3.1.0/gems/terminal-table-3.0.2}/Gemfile +0 -0
  633. /data/bundle/ruby/{2.7.0/gems/terminal-table-1.8.0 → 3.1.0/gems/terminal-table-3.0.2}/LICENSE.txt +0 -0
  634. /data/bundle/ruby/{2.7.0/gems/terminal-table-1.8.0 → 3.1.0/gems/terminal-table-3.0.2}/Manifest +0 -0
  635. /data/bundle/ruby/{2.7.0/gems/terminal-table-1.8.0 → 3.1.0/gems/terminal-table-3.0.2}/Todo.rdoc +0 -0
  636. /data/bundle/ruby/{2.7.0/gems/terminal-table-1.8.0 → 3.1.0/gems/terminal-table-3.0.2}/lib/terminal-table/import.rb +0 -0
  637. /data/bundle/ruby/{2.7.0/gems/terminal-table-1.8.0 → 3.1.0/gems/terminal-table-3.0.2}/lib/terminal-table/table_helper.rb +0 -0
@@ -1,2117 +0,0 @@
1
- # -*- racc -*-
2
-
3
- class Ruby19Parser
4
-
5
- token kCLASS kMODULE kDEF kUNDEF kBEGIN kRESCUE kENSURE kEND kIF kUNLESS
6
- kTHEN kELSIF kELSE kCASE kWHEN kWHILE kUNTIL kFOR kBREAK kNEXT
7
- kREDO kRETRY kIN kDO kDO_COND kDO_BLOCK kDO_LAMBDA kRETURN kYIELD kSUPER
8
- kSELF kNIL kTRUE kFALSE kAND kOR kNOT kIF_MOD kUNLESS_MOD kWHILE_MOD
9
- kUNTIL_MOD kRESCUE_MOD kALIAS kDEFINED klBEGIN klEND k__LINE__
10
- k__FILE__ k__ENCODING__ tIDENTIFIER tFID tGVAR tIVAR tCONSTANT
11
- tLABEL tCVAR tNTH_REF tBACK_REF tSTRING_CONTENT tINTEGER tFLOAT
12
- tREGEXP_END tUPLUS tUMINUS tUMINUS_NUM tPOW tCMP tEQ tEQQ tNEQ
13
- tGEQ tLEQ tANDOP tOROP tMATCH tNMATCH tDOT tDOT2 tDOT3 tAREF
14
- tASET tLSHFT tRSHFT tCOLON2 tCOLON3 tOP_ASGN tASSOC tLPAREN
15
- tLPAREN2 tRPAREN tLPAREN_ARG tLBRACK tLBRACK2 tRBRACK tLBRACE
16
- tLBRACE_ARG tSTAR tSTAR2 tAMPER tAMPER2 tTILDE tPERCENT tDIVIDE
17
- tPLUS tMINUS tLT tGT tPIPE tBANG tCARET tLCURLY tRCURLY
18
- tBACK_REF2 tSYMBEG tSTRING_BEG tXSTRING_BEG tREGEXP_BEG
19
- tWORDS_BEG tQWORDS_BEG tSTRING_DBEG tSTRING_DVAR tSTRING_END
20
- tSTRING tSYMBOL tNL tEH tCOLON tCOMMA tSPACE tSEMI tLAST_TOKEN
21
- tLAMBDA tLAMBEG
22
-
23
- prechigh
24
- right tBANG tTILDE tUPLUS
25
- right tPOW
26
- right tUMINUS_NUM tUMINUS
27
- left tSTAR2 tDIVIDE tPERCENT
28
- left tPLUS tMINUS
29
- left tLSHFT tRSHFT
30
- left tAMPER2
31
- left tPIPE tCARET
32
- left tGT tGEQ tLT tLEQ
33
- nonassoc tCMP tEQ tEQQ tNEQ tMATCH tNMATCH
34
- left tANDOP
35
- left tOROP
36
- nonassoc tDOT2 tDOT3
37
- right tEH tCOLON
38
- left kRESCUE_MOD
39
- right tEQL tOP_ASGN
40
- nonassoc kDEFINED
41
- right kNOT
42
- left kOR kAND
43
- nonassoc kIF_MOD kUNLESS_MOD kWHILE_MOD kUNTIL_MOD
44
- nonassoc tLBRACE_ARG
45
- nonassoc tLOWEST
46
- preclow
47
-
48
- rule
49
-
50
- program: {
51
- self.lexer.lex_state = :expr_beg
52
- }
53
- top_compstmt
54
- {
55
- result = new_compstmt val
56
- }
57
-
58
- top_compstmt: top_stmts opt_terms
59
- {
60
- result = val[0]
61
- }
62
-
63
- top_stmts: none
64
- | top_stmt
65
- | top_stmts terms top_stmt
66
- {
67
- result = self.block_append val[0], val[2]
68
- }
69
- | error top_stmt
70
-
71
- top_stmt: stmt
72
- | klBEGIN
73
- {
74
- if (self.in_def || self.in_single > 0) then
75
- yyerror "BEGIN in method"
76
- end
77
- self.env.extend
78
- }
79
- tLCURLY top_compstmt tRCURLY
80
- {
81
- result = new_iter s(:preexe), 0, val[3]
82
- }
83
-
84
- bodystmt: compstmt opt_rescue opt_else opt_ensure
85
- {
86
- result = new_body val
87
- }
88
-
89
- compstmt: stmts opt_terms
90
- {
91
- result = new_compstmt val
92
- }
93
-
94
- stmts: none
95
- | stmt
96
- | stmts terms stmt
97
- {
98
- result = self.block_append val[0], val[2]
99
- }
100
- | error stmt
101
- {
102
- result = val[1]
103
- }
104
-
105
- stmt: kALIAS fitem
106
- {
107
- lexer.lex_state = :expr_fname
108
- result = self.lexer.lineno
109
- }
110
- fitem
111
- {
112
- result = s(:alias, val[1], val[3]).line(val[2])
113
- }
114
- | kALIAS tGVAR tGVAR
115
- {
116
- result = s(:valias, val[1].to_sym, val[2].to_sym)
117
- }
118
- | kALIAS tGVAR tBACK_REF
119
- {
120
- result = s(:valias, val[1].to_sym, :"$#{val[2]}")
121
- }
122
- | kALIAS tGVAR tNTH_REF
123
- {
124
- yyerror "can't make alias for the number variables"
125
- }
126
- | kUNDEF undef_list
127
- {
128
- result = val[1]
129
- }
130
- | stmt kIF_MOD expr_value
131
- {
132
- result = new_if val[2], val[0], nil
133
- }
134
- | stmt kUNLESS_MOD expr_value
135
- {
136
- result = new_if val[2], nil, val[0]
137
- }
138
- | stmt kWHILE_MOD expr_value
139
- {
140
- result = new_while val[0], val[2], true
141
- }
142
- | stmt kUNTIL_MOD expr_value
143
- {
144
- result = new_until val[0], val[2], true
145
- }
146
- | stmt kRESCUE_MOD stmt
147
- {
148
- result = s(:rescue, val[0], new_resbody(s(:array), val[2]))
149
- }
150
- | klEND tLCURLY compstmt tRCURLY
151
- {
152
- if (self.in_def || self.in_single > 0) then
153
- yyerror "END in method; use at_exit"
154
- end
155
- result = new_iter s(:postexe), 0, val[2]
156
- }
157
- | command_asgn
158
- | mlhs tEQL command_call
159
- {
160
- result = new_masgn val[0], val[2], :wrap
161
- }
162
- | var_lhs tOP_ASGN command_call
163
- {
164
- result = new_op_asgn val
165
- }
166
- | primary_value tLBRACK2 opt_call_args rbracket tOP_ASGN command_call
167
- {
168
- result = s(:op_asgn1, val[0], val[2], val[4].to_sym, val[5])
169
- }
170
- | primary_value tDOT tIDENTIFIER tOP_ASGN command_call
171
- {
172
- result = s(:op_asgn, val[0], val[4], val[2].to_sym, val[3].to_sym)
173
- }
174
- | primary_value tDOT tCONSTANT tOP_ASGN command_call
175
- {
176
- result = s(:op_asgn, val[0], val[4], val[2].to_sym, val[3].to_sym)
177
- }
178
- | primary_value tCOLON2 tCONSTANT tOP_ASGN command_call
179
- {
180
- result = s(:op_asgn, val[0], val[4], val[2], val[3])
181
- }
182
- | primary_value tCOLON2 tIDENTIFIER tOP_ASGN command_call
183
- {
184
- result = s(:op_asgn, val[0], val[4], val[2], val[3])
185
- }
186
- | backref tOP_ASGN command_call
187
- {
188
- self.backref_assign_error val[0]
189
- }
190
- | lhs tEQL mrhs
191
- {
192
- result = new_assign val[0], s(:svalue, val[2])
193
- }
194
- | mlhs tEQL arg_value
195
- {
196
- result = new_masgn val[0], val[2], :wrap
197
- }
198
- | mlhs tEQL mrhs
199
- {
200
- result = new_masgn val[0], val[2]
201
- }
202
- | expr
203
-
204
- command_asgn: lhs tEQL command_call
205
- {
206
- result = new_assign val[0], val[2]
207
- }
208
- | lhs tEQL command_asgn
209
- {
210
- result = new_assign val[0], val[2]
211
- }
212
-
213
- expr: command_call
214
- | expr kAND expr
215
- {
216
- result = logical_op :and, val[0], val[2]
217
- }
218
- | expr kOR expr
219
- {
220
- result = logical_op :or, val[0], val[2]
221
- }
222
- | kNOT opt_nl expr
223
- {
224
- result = s(:call, val[2], :"!")
225
- }
226
- | tBANG command_call
227
- {
228
- result = s(:call, val[1], :"!")
229
- }
230
- | arg
231
-
232
- expr_value: expr
233
- {
234
- result = value_expr(val[0])
235
- }
236
-
237
- command_call: command
238
- | block_command
239
-
240
- block_command: block_call
241
- | block_call tDOT operation2 command_args # TODO: dot_or_colon
242
- {
243
- result = new_call val[0], val[2].to_sym, val[3]
244
- }
245
- | block_call tCOLON2 operation2 command_args
246
- {
247
- result = new_call val[0], val[2].to_sym, val[3]
248
- }
249
-
250
- cmd_brace_block: tLBRACE_ARG
251
- {
252
- self.env.extend(:dynamic)
253
- result = self.lexer.lineno
254
- }
255
- opt_block_param
256
- {
257
- result = nil # self.env.dynamic.keys
258
- }
259
- compstmt tRCURLY
260
- {
261
- result = new_iter nil, val[2], val[4]
262
- result.line = val[1]
263
-
264
- self.env.unextend
265
- }
266
-
267
- command: operation command_args =tLOWEST
268
- {
269
- result = new_call nil, val[0].to_sym, val[1]
270
- }
271
- | operation command_args cmd_brace_block
272
- {
273
- result = new_call nil, val[0].to_sym, val[1]
274
- if val[2] then
275
- block_dup_check result, val[2]
276
-
277
- result, operation = val[2], result
278
- result.insert 1, operation
279
- end
280
- }
281
- | primary_value tDOT operation2 command_args =tLOWEST
282
- {
283
- result = new_call val[0], val[2].to_sym, val[3]
284
- }
285
- | primary_value tDOT operation2 command_args cmd_brace_block
286
- {
287
- recv, _, msg, args, block = val
288
- call = new_call recv, msg.to_sym, args
289
-
290
- block_dup_check call, block
291
-
292
- block.insert 1, call
293
- result = block
294
- }
295
- | primary_value tCOLON2 operation2 command_args =tLOWEST
296
- {
297
- result = new_call val[0], val[2].to_sym, val[3]
298
- }
299
- | primary_value tCOLON2 operation2 command_args cmd_brace_block
300
- {
301
- recv, _, msg, args, block = val
302
- call = new_call recv, msg.to_sym, args
303
-
304
- block_dup_check call, block
305
-
306
- block.insert 1, call
307
- result = block
308
- }
309
- | kSUPER command_args
310
- {
311
- result = new_super val[1]
312
- }
313
- | kYIELD command_args
314
- {
315
- result = new_yield val[1]
316
- }
317
- | kRETURN call_args
318
- {
319
- line = val[0].last
320
- result = s(:return, ret_args(val[1])).line(line)
321
- }
322
- | kBREAK call_args
323
- {
324
- line = val[0].last
325
- result = s(:break, ret_args(val[1])).line(line)
326
- }
327
- | kNEXT call_args
328
- {
329
- line = val[0].last
330
- result = s(:next, ret_args(val[1])).line(line)
331
- }
332
-
333
- mlhs: mlhs_basic
334
- | tLPAREN mlhs_inner rparen
335
- {
336
- result = val[1]
337
- }
338
-
339
- mlhs_inner: mlhs_basic
340
- | tLPAREN mlhs_inner rparen
341
- {
342
- result = s(:masgn, s(:array, val[1]))
343
- }
344
-
345
- mlhs_basic: mlhs_head
346
- {
347
- result = s(:masgn, val[0])
348
- }
349
- | mlhs_head mlhs_item
350
- {
351
- result = s(:masgn, val[0] << val[1].compact)
352
- }
353
- | mlhs_head tSTAR mlhs_node
354
- {
355
- result = s(:masgn, val[0] << s(:splat, val[2]))
356
- }
357
- | mlhs_head tSTAR mlhs_node tCOMMA mlhs_post
358
- {
359
- ary = list_append val[0], s(:splat, val[2])
360
- ary.concat val[4].sexp_body
361
- result = s(:masgn, ary)
362
- }
363
- | mlhs_head tSTAR
364
- {
365
- result = s(:masgn, val[0] << s(:splat))
366
- }
367
- | mlhs_head tSTAR tCOMMA mlhs_post
368
- {
369
- ary = list_append val[0], s(:splat)
370
- ary.concat val[3].sexp_body
371
- result = s(:masgn, ary)
372
- }
373
- | tSTAR mlhs_node
374
- {
375
- result = s(:masgn, s(:array, s(:splat, val[1])))
376
- }
377
- | tSTAR mlhs_node tCOMMA mlhs_post
378
- {
379
- ary = s(:array, s(:splat, val[1]))
380
- ary.concat val[3].sexp_body
381
- result = s(:masgn, ary)
382
- }
383
- | tSTAR
384
- {
385
- result = s(:masgn, s(:array, s(:splat)))
386
- }
387
- | tSTAR tCOMMA mlhs_post
388
- {
389
- ary = s(:array, s(:splat))
390
- ary.concat val[2].sexp_body
391
- result = s(:masgn, ary)
392
- }
393
-
394
- mlhs_item: mlhs_node
395
- | tLPAREN mlhs_inner rparen
396
- {
397
- result = val[1]
398
- }
399
-
400
- mlhs_head: mlhs_item tCOMMA
401
- {
402
- result = s(:array, val[0])
403
- }
404
- | mlhs_head mlhs_item tCOMMA
405
- {
406
- result = val[0] << val[1].compact
407
- }
408
-
409
- mlhs_post: mlhs_item
410
- {
411
- result = s(:array, val[0])
412
- }
413
- | mlhs_post tCOMMA mlhs_item
414
- {
415
- result = list_append val[0], val[2]
416
- }
417
-
418
- mlhs_node: user_variable
419
- {
420
- result = self.assignable val[0]
421
- }
422
- | keyword_variable
423
- {
424
- result = self.assignable val[0]
425
- }
426
- | primary_value tLBRACK2 opt_call_args rbracket
427
- {
428
- result = self.aryset val[0], val[2]
429
- }
430
- | primary_value tDOT tIDENTIFIER
431
- {
432
- result = s(:attrasgn, val[0], :"#{val[2]}=")
433
- }
434
- | primary_value tCOLON2 tIDENTIFIER
435
- {
436
- result = s(:attrasgn, val[0], :"#{val[2]}=")
437
- }
438
- | primary_value tDOT tCONSTANT
439
- {
440
- result = s(:attrasgn, val[0], :"#{val[2]}=")
441
- }
442
- | primary_value tCOLON2 tCONSTANT
443
- {
444
- if (self.in_def || self.in_single > 0) then
445
- yyerror "dynamic constant assignment"
446
- end
447
-
448
- result = s(:const, s(:colon2, val[0], val[2].to_sym), nil)
449
- }
450
- | tCOLON3 tCONSTANT
451
- {
452
- if (self.in_def || self.in_single > 0) then
453
- yyerror "dynamic constant assignment"
454
- end
455
-
456
- result = s(:const, nil, s(:colon3, val[1].to_sym))
457
- }
458
- | backref
459
- {
460
- self.backref_assign_error val[0]
461
- }
462
-
463
- lhs: user_variable
464
- {
465
- result = self.assignable val[0]
466
- }
467
- | keyword_variable
468
- {
469
- result = self.assignable val[0]
470
- }
471
- | primary_value tLBRACK2 opt_call_args rbracket
472
- {
473
- result = self.aryset val[0], val[2]
474
- }
475
- | primary_value tDOT tIDENTIFIER
476
- {
477
- result = s(:attrasgn, val[0], :"#{val[2]}=")
478
- }
479
- | primary_value tCOLON2 tIDENTIFIER
480
- {
481
- result = s(:attrasgn, val[0], :"#{val[2]}=")
482
- }
483
- | primary_value tDOT tCONSTANT
484
- {
485
- result = s(:attrasgn, val[0], :"#{val[2]}=")
486
- }
487
- | primary_value tCOLON2 tCONSTANT
488
- {
489
- if (self.in_def || self.in_single > 0) then
490
- yyerror "dynamic constant assignment"
491
- end
492
-
493
- result = s(:const, s(:colon2, val[0], val[2].to_sym))
494
- }
495
- | tCOLON3 tCONSTANT
496
- {
497
- if (self.in_def || self.in_single > 0) then
498
- yyerror "dynamic constant assignment"
499
- end
500
-
501
- result = s(:const, s(:colon3, val[1].to_sym))
502
- }
503
- | backref
504
- {
505
- self.backref_assign_error val[0]
506
- }
507
-
508
- cname: tIDENTIFIER
509
- {
510
- yyerror "class/module name must be CONSTANT"
511
- }
512
- | tCONSTANT
513
-
514
- cpath: tCOLON3 cname
515
- {
516
- result = s(:colon3, val[1].to_sym)
517
- }
518
- | cname
519
- {
520
- result = val[0].to_sym
521
- }
522
- | primary_value tCOLON2 cname
523
- {
524
- result = s(:colon2, val[0], val[2].to_sym)
525
- }
526
-
527
- fname: tIDENTIFIER | tCONSTANT | tFID
528
- | op
529
- {
530
- lexer.lex_state = :expr_end
531
- result = val[0]
532
- }
533
-
534
- | reswords
535
- {
536
- (sym, _line), = val
537
- lexer.lex_state = :expr_end
538
- result = sym
539
- }
540
-
541
- fsym: fname | symbol
542
-
543
- fitem: fsym { result = s(:lit, val[0].to_sym) }
544
- | dsym
545
-
546
- undef_list: fitem
547
- {
548
- result = new_undef val[0]
549
- }
550
- |
551
- undef_list tCOMMA
552
- {
553
- lexer.lex_state = :expr_fname
554
- }
555
- fitem
556
- {
557
- result = new_undef val[0], val[3]
558
- }
559
-
560
- op: tPIPE | tCARET | tAMPER2 | tCMP | tEQ | tEQQ
561
- | tMATCH | tNMATCH | tGT | tGEQ | tLT | tLEQ
562
- | tNEQ | tLSHFT | tRSHFT | tPLUS | tMINUS | tSTAR2
563
- | tSTAR | tDIVIDE | tPERCENT | tPOW | tBANG | tTILDE
564
- | tUPLUS | tUMINUS | tAREF | tASET | tBACK_REF2
565
-
566
- reswords: k__LINE__ | k__FILE__ | k__ENCODING__ | klBEGIN | klEND
567
- | kALIAS | kAND | kBEGIN | kBREAK | kCASE
568
- | kCLASS | kDEF | kDEFINED | kDO | kELSE
569
- | kELSIF | kEND | kENSURE | kFALSE | kFOR
570
- | kIN | kMODULE | kNEXT | kNIL | kNOT
571
- | kOR | kREDO | kRESCUE | kRETRY | kRETURN
572
- | kSELF | kSUPER | kTHEN | kTRUE | kUNDEF
573
- | kWHEN | kYIELD | kIF | kUNLESS | kWHILE
574
- | kUNTIL
575
-
576
- arg: lhs tEQL arg
577
- {
578
- result = new_assign val[0], val[2]
579
- }
580
- | lhs tEQL arg kRESCUE_MOD arg
581
- {
582
- result = new_assign val[0], s(:rescue, val[2], new_resbody(s(:array), val[4]))
583
- }
584
- | var_lhs tOP_ASGN arg
585
- {
586
- result = new_op_asgn val
587
- }
588
- | var_lhs tOP_ASGN arg kRESCUE_MOD arg
589
- {
590
- result = new_op_asgn val
591
- result = s(:rescue, result, new_resbody(s(:array), val[4]))
592
- }
593
- | primary_value tLBRACK2 opt_call_args rbracket tOP_ASGN arg
594
- {
595
- val[2].sexp_type = :arglist if val[2]
596
- result = s(:op_asgn1, val[0], val[2], val[4].to_sym, val[5])
597
- }
598
- | primary_value tDOT tIDENTIFIER tOP_ASGN arg
599
- {
600
- result = s(:op_asgn2, val[0], :"#{val[2]}=", val[3].to_sym, val[4])
601
- }
602
- | primary_value tDOT tCONSTANT tOP_ASGN arg
603
- {
604
- result = s(:op_asgn2, val[0], :"#{val[2]}=", val[3].to_sym, val[4])
605
- }
606
- | primary_value tCOLON2 tIDENTIFIER tOP_ASGN arg
607
- {
608
- result = s(:op_asgn, val[0], val[4], val[2].to_sym, val[3].to_sym)
609
- }
610
- | primary_value tCOLON2 tCONSTANT tOP_ASGN arg
611
- {
612
- yyerror "constant re-assignment"
613
- }
614
- | tCOLON3 tCONSTANT tOP_ASGN arg
615
- {
616
- yyerror "constant re-assignment"
617
- }
618
- | backref tOP_ASGN arg
619
- {
620
- self.backref_assign_error val[0]
621
- }
622
- | arg tDOT2 arg
623
- {
624
- v1, v2 = val[0], val[2]
625
- if v1.node_type == :lit and v2.node_type == :lit and Integer === v1.last and Integer === v2.last then
626
- result = s(:lit, (v1.last)..(v2.last))
627
- else
628
- result = s(:dot2, v1, v2)
629
- end
630
- }
631
- | arg tDOT3 arg
632
- {
633
- v1, v2 = val[0], val[2]
634
- if v1.node_type == :lit and v2.node_type == :lit and Integer === v1.last and Integer === v2.last then
635
- result = s(:lit, (v1.last)...(v2.last))
636
- else
637
- result = s(:dot3, v1, v2)
638
- end
639
- }
640
- | arg tPLUS arg
641
- {
642
- result = new_call val[0], :+, argl(val[2])
643
- }
644
- | arg tMINUS arg
645
- {
646
- result = new_call val[0], :-, argl(val[2])
647
- }
648
- | arg tSTAR2 arg
649
- {
650
- result = new_call val[0], :*, argl(val[2])
651
- }
652
- | arg tDIVIDE arg
653
- {
654
- result = new_call val[0], :"/", argl(val[2])
655
- }
656
- | arg tPERCENT arg
657
- {
658
- result = new_call val[0], :"%", argl(val[2])
659
- }
660
- | arg tPOW arg
661
- {
662
- result = new_call val[0], :**, argl(val[2])
663
- }
664
- | tUMINUS_NUM tINTEGER tPOW arg
665
- {
666
- result = new_call(new_call(s(:lit, val[1]), :"**", argl(val[3])), :"-@")
667
- }
668
- | tUMINUS_NUM tFLOAT tPOW arg
669
- {
670
- result = new_call(new_call(s(:lit, val[1]), :"**", argl(val[3])), :"-@")
671
- }
672
- | tUPLUS arg
673
- {
674
- result = new_call val[1], :"+@"
675
- }
676
- | tUMINUS arg
677
- {
678
- result = new_call val[1], :"-@"
679
- }
680
- | arg tPIPE arg
681
- {
682
- result = new_call val[0], :"|", argl(val[2])
683
- }
684
- | arg tCARET arg
685
- {
686
- result = new_call val[0], :"^", argl(val[2])
687
- }
688
- | arg tAMPER2 arg
689
- {
690
- result = new_call val[0], :"&", argl(val[2])
691
- }
692
- | arg tCMP arg
693
- {
694
- result = new_call val[0], :"<=>", argl(val[2])
695
- }
696
- | arg tGT arg
697
- {
698
- result = new_call val[0], :">", argl(val[2])
699
- }
700
- | arg tGEQ arg
701
- {
702
- result = new_call val[0], :">=", argl(val[2])
703
- }
704
- | arg tLT arg
705
- {
706
- result = new_call val[0], :"<", argl(val[2])
707
- }
708
- | arg tLEQ arg
709
- {
710
- result = new_call val[0], :"<=", argl(val[2])
711
- }
712
- | arg tEQ arg
713
- {
714
- result = new_call val[0], :"==", argl(val[2])
715
- }
716
- | arg tEQQ arg
717
- {
718
- result = new_call val[0], :"===", argl(val[2])
719
- }
720
- | arg tNEQ arg
721
- {
722
- result = new_call val[0], :"!=", argl(val[2])
723
- }
724
- | arg tMATCH arg
725
- {
726
- result = new_match val[0], val[2]
727
- }
728
- | arg tNMATCH arg
729
- {
730
- result = s(:not, new_match(val[0], val[2]))
731
- }
732
- | tBANG arg
733
- {
734
- result = new_call val[1], :"!"
735
- }
736
- | tTILDE arg
737
- {
738
- val[2] = value_expr val[2]
739
- result = new_call val[1], :"~"
740
- }
741
- | arg tLSHFT arg
742
- {
743
- val[0] = value_expr val[0]
744
- val[2] = value_expr val[2]
745
- result = new_call val[0], :"\<\<", argl(val[2])
746
- }
747
- | arg tRSHFT arg
748
- {
749
- val[0] = value_expr val[0]
750
- val[2] = value_expr val[2]
751
- result = new_call val[0], :">>", argl(val[2])
752
- }
753
- | arg tANDOP arg
754
- {
755
- result = logical_op :and, val[0], val[2]
756
- }
757
- | arg tOROP arg
758
- {
759
- result = logical_op :or, val[0], val[2]
760
- }
761
- | kDEFINED opt_nl arg
762
- {
763
- result = s(:defined, val[2])
764
- }
765
- | arg tEH arg opt_nl tCOLON arg
766
- {
767
- result = s(:if, val[0], val[2], val[5])
768
- }
769
- | primary
770
-
771
- arg_value: arg
772
- {
773
- result = value_expr(val[0])
774
- }
775
-
776
- aref_args: none
777
- | args trailer
778
- {
779
- result = val[0]
780
- }
781
- | args tCOMMA assocs trailer
782
- {
783
- result = val[0] << s(:hash, *val[2].values)
784
- }
785
- | assocs trailer
786
- {
787
- result = s(:array, s(:hash, *val[0].values))
788
- }
789
-
790
- paren_args: tLPAREN2 opt_call_args rparen
791
- {
792
- result = val[1]
793
- }
794
-
795
- opt_paren_args: none
796
- | paren_args
797
-
798
- opt_call_args: none
799
- {
800
- result = val[0]
801
- }
802
- | call_args
803
- {
804
- result = val[0]
805
- }
806
- | args tCOMMA
807
- {
808
- result = val[0]
809
- }
810
- | args tCOMMA assocs tCOMMA
811
- {
812
- result = val[0] << s(:hash, *val[2].sexp_body) # TODO: self.args
813
- }
814
- | assocs tCOMMA
815
- {
816
- result = s(:hash, *val[0].values)
817
- }
818
-
819
- call_args: command
820
- {
821
- warning "parenthesize argument(s) for future version"
822
- result = s(:array, val[0])
823
- }
824
- | args opt_block_arg
825
- {
826
- result = self.arg_blk_pass val[0], val[1]
827
- }
828
- | assocs opt_block_arg
829
- {
830
- result = s(:array, s(:hash, *val[0].values))
831
- result = self.arg_blk_pass result, val[1]
832
- }
833
- | args tCOMMA assocs opt_block_arg
834
- {
835
- result = val[0] << s(:hash, *val[2].values)
836
- result = self.arg_blk_pass result, val[3]
837
- }
838
- | block_arg
839
-
840
- command_args: {
841
- result = lexer.cmdarg.stack.dup # TODO: smell?
842
- lexer.cmdarg.push true
843
- }
844
- call_args
845
- {
846
- lexer.cmdarg.stack.replace val[0]
847
- result = val[1]
848
- }
849
-
850
- block_arg: tAMPER arg_value
851
- {
852
- result = s(:block_pass, val[1])
853
- }
854
-
855
- opt_block_arg: tCOMMA block_arg
856
- {
857
- result = val[1]
858
- }
859
- | none
860
-
861
- args: arg_value
862
- {
863
- result = s(:array, val[0])
864
- }
865
- | tSTAR arg_value
866
- {
867
- result = s(:array, s(:splat, val[1]))
868
- }
869
- | args tCOMMA arg_value
870
- {
871
- result = self.list_append val[0], val[2]
872
- }
873
- | args tCOMMA tSTAR arg_value
874
- {
875
- result = self.list_append val[0], s(:splat, val[3])
876
- }
877
-
878
- mrhs: args tCOMMA arg_value
879
- {
880
- result = val[0] << val[2]
881
- }
882
- | args tCOMMA tSTAR arg_value
883
- {
884
- result = self.arg_concat val[0], val[3]
885
- }
886
- | tSTAR arg_value
887
- {
888
- result = s(:splat, val[1])
889
- }
890
-
891
- primary: literal
892
- | strings
893
- | xstring
894
- | regexp
895
- | words
896
- | qwords
897
- | var_ref
898
- | backref
899
- | tFID
900
- {
901
- result = new_call nil, val[0].to_sym
902
- }
903
- | kBEGIN
904
- {
905
- result = self.lexer.lineno
906
- }
907
- bodystmt kEND
908
- {
909
- unless val[2] then
910
- result = s(:nil)
911
- else
912
- result = s(:begin, val[2])
913
- end
914
-
915
- result.line = val[1]
916
- }
917
- | tLPAREN_ARG expr
918
- {
919
- lexer.lex_state = :expr_endarg
920
- }
921
- rparen
922
- {
923
- warning "(...) interpreted as grouped expression"
924
- result = val[1]
925
- }
926
- | tLPAREN compstmt tRPAREN
927
- {
928
- result = val[1] || s(:nil)
929
- result.paren = true
930
- }
931
- | primary_value tCOLON2 tCONSTANT
932
- {
933
- result = s(:colon2, val[0], val[2].to_sym)
934
- }
935
- | tCOLON3 tCONSTANT
936
- {
937
- result = s(:colon3, val[1].to_sym)
938
- }
939
- | tLBRACK aref_args tRBRACK
940
- {
941
- result = val[1] || s(:array)
942
- }
943
- | tLBRACE
944
- {
945
- result = self.lexer.lineno
946
- }
947
- assoc_list tRCURLY
948
- {
949
- result = new_hash val
950
- }
951
- | kRETURN
952
- {
953
- result = s(:return)
954
- }
955
- | kYIELD tLPAREN2 call_args rparen
956
- {
957
- result = new_yield val[2]
958
- }
959
- | kYIELD tLPAREN2 rparen
960
- {
961
- result = new_yield
962
- }
963
- | kYIELD
964
- {
965
- result = new_yield
966
- }
967
- | kDEFINED opt_nl tLPAREN2 expr rparen
968
- {
969
- result = s(:defined, val[3])
970
- }
971
- | kNOT tLPAREN2 expr rparen
972
- {
973
- result = s(:call, val[2], :"!")
974
- }
975
- | kNOT tLPAREN2 rparen
976
- {
977
- raise "no3\non#{val.inspect}"
978
- }
979
- | operation brace_block
980
- {
981
- oper, iter = val[0], val[1]
982
- call = new_call nil, oper.to_sym
983
- iter.insert 1, call
984
- result = iter
985
- call.line = iter.line
986
- }
987
- | method_call
988
- | method_call brace_block
989
- {
990
- call, iter = val[0], val[1]
991
- block_dup_check call, iter
992
- iter.insert 1, call # FIX
993
- result = iter
994
- }
995
- | tLAMBDA lambda
996
- {
997
- result = val[1] # TODO: fix lineno
998
- }
999
- | kIF expr_value then compstmt if_tail kEND
1000
- {
1001
- result = new_if val[1], val[3], val[4]
1002
- }
1003
- | kUNLESS expr_value then compstmt opt_else kEND
1004
- {
1005
- result = new_if val[1], val[4], val[3]
1006
- }
1007
- | kWHILE
1008
- {
1009
- lexer.cond.push true
1010
- }
1011
- expr_value do
1012
- {
1013
- lexer.cond.pop
1014
- }
1015
- compstmt kEND
1016
- {
1017
- result = new_while val[5], val[2], true
1018
- }
1019
- | kUNTIL
1020
- {
1021
- lexer.cond.push true
1022
- }
1023
- expr_value do
1024
- {
1025
- lexer.cond.pop
1026
- }
1027
- compstmt kEND
1028
- {
1029
- result = new_until val[5], val[2], true
1030
- }
1031
- | kCASE expr_value opt_terms case_body kEND
1032
- {
1033
- (_, line), expr, _, body, _ = val
1034
- result = new_case expr, body, line
1035
- }
1036
- | kCASE opt_terms case_body kEND
1037
- {
1038
- (_, line), _, body, _ = val
1039
- result = new_case nil, body, line
1040
- }
1041
- | kFOR for_var kIN
1042
- {
1043
- lexer.cond.push true
1044
- }
1045
- expr_value do
1046
- {
1047
- lexer.cond.pop
1048
- }
1049
- compstmt kEND
1050
- {
1051
- result = new_for val[4], val[1], val[7]
1052
- }
1053
- | kCLASS
1054
- {
1055
- result = self.lexer.lineno
1056
- }
1057
- cpath superclass
1058
- {
1059
- self.comments.push self.lexer.comments
1060
- if (self.in_def || self.in_single > 0) then
1061
- yyerror "class definition in method body"
1062
- end
1063
- self.env.extend
1064
- }
1065
- bodystmt kEND
1066
- {
1067
- result = new_class val
1068
- self.env.unextend
1069
- self.lexer.comments # we don't care about comments in the body
1070
- }
1071
- | kCLASS tLSHFT
1072
- {
1073
- result = self.lexer.lineno
1074
- }
1075
- expr
1076
- {
1077
- result = self.in_def
1078
- self.in_def = false
1079
- }
1080
- term
1081
- {
1082
- result = self.in_single
1083
- self.in_single = 0
1084
- self.env.extend
1085
- }
1086
- bodystmt kEND
1087
- {
1088
- result = new_sclass val
1089
- self.env.unextend
1090
- self.lexer.comments # we don't care about comments in the body
1091
- }
1092
- | kMODULE
1093
- {
1094
- result = self.lexer.lineno
1095
- }
1096
- cpath
1097
- {
1098
- self.comments.push self.lexer.comments
1099
- yyerror "module definition in method body" if
1100
- self.in_def or self.in_single > 0
1101
-
1102
- self.env.extend
1103
- }
1104
- bodystmt kEND
1105
- {
1106
- result = new_module val
1107
- self.env.unextend
1108
- self.lexer.comments # we don't care about comments in the body
1109
- }
1110
- | kDEF fname
1111
- {
1112
- result = [self.in_def, self.lexer.cmdarg.stack.dup]
1113
-
1114
- self.comments.push self.lexer.comments
1115
- self.in_def = true
1116
- self.env.extend
1117
- lexer.cmdarg.stack.replace [false]
1118
- }
1119
- f_arglist bodystmt kEND
1120
- {
1121
- in_def, cmdarg = val[2]
1122
-
1123
- result = new_defn val
1124
-
1125
- lexer.cmdarg.stack.replace cmdarg
1126
- self.env.unextend
1127
- self.in_def = in_def
1128
- self.lexer.comments # we don't care about comments in the body
1129
- }
1130
- | kDEF singleton dot_or_colon
1131
- {
1132
- self.comments.push self.lexer.comments
1133
- lexer.lex_state = :expr_fname
1134
- }
1135
- fname
1136
- {
1137
- self.in_single += 1
1138
- self.env.extend
1139
- lexer.lex_state = :expr_end # force for args
1140
- result = [lexer.lineno, self.lexer.cmdarg.stack.dup]
1141
- lexer.cmdarg.stack.replace [false]
1142
- }
1143
- f_arglist bodystmt kEND
1144
- {
1145
- line, cmdarg = val[5]
1146
- result = new_defs val
1147
- result[3].line line
1148
-
1149
- lexer.cmdarg.stack.replace cmdarg
1150
- self.env.unextend
1151
- self.in_single -= 1
1152
- self.lexer.comments # we don't care about comments in the body
1153
- }
1154
- | kBREAK
1155
- {
1156
- result = s(:break)
1157
- }
1158
- | kNEXT
1159
- {
1160
- result = s(:next)
1161
- }
1162
- | kREDO
1163
- {
1164
- result = s(:redo)
1165
- }
1166
- | kRETRY
1167
- {
1168
- result = s(:retry)
1169
- }
1170
-
1171
- primary_value: primary
1172
- {
1173
- result = value_expr(val[0])
1174
- }
1175
-
1176
- # These are really stupid
1177
- k_begin: kBEGIN
1178
- k_if: kIF
1179
- k_unless: kUNLESS
1180
- k_while: kWHILE
1181
- k_until: kUNTIL
1182
- k_case: kCASE
1183
- k_for: kFOR
1184
- k_class: kCLASS
1185
- k_module: kMODULE
1186
- k_def: kDEF
1187
- k_end: kEND
1188
-
1189
- then: term
1190
- | kTHEN
1191
- | term kTHEN
1192
-
1193
- do: term
1194
- | kDO_COND
1195
-
1196
- if_tail: opt_else
1197
- | kELSIF expr_value then compstmt if_tail
1198
- {
1199
- result = s(:if, val[1], val[3], val[4])
1200
- }
1201
-
1202
- opt_else: none
1203
- | kELSE compstmt
1204
- {
1205
- result = val[1]
1206
- }
1207
-
1208
- for_var: lhs
1209
- | mlhs
1210
- {
1211
- val[0].delete_at 1 if val[0][1].nil? # HACK
1212
- }
1213
-
1214
- f_marg: f_norm_arg
1215
- | tLPAREN f_margs rparen
1216
- {
1217
- result = val[1]
1218
- }
1219
-
1220
- f_marg_list: f_marg
1221
- {
1222
- result = s(:array, val[0])
1223
- }
1224
- | f_marg_list tCOMMA f_marg
1225
- {
1226
- result = list_append val[0], val[2]
1227
- }
1228
-
1229
- f_margs: f_marg_list
1230
- {
1231
- args, = val
1232
-
1233
- result = block_var args
1234
- }
1235
- | f_marg_list tCOMMA tSTAR f_norm_arg
1236
- {
1237
- args, _, _, splat = val
1238
-
1239
- result = block_var args, "*#{splat}".to_sym
1240
- }
1241
- | f_marg_list tCOMMA tSTAR f_norm_arg tCOMMA f_marg_list
1242
- {
1243
- args, _, _, splat, _, args2 = val
1244
-
1245
- result = block_var args, "*#{splat}".to_sym, args2
1246
- }
1247
- | f_marg_list tCOMMA tSTAR
1248
- {
1249
- args, _, _ = val
1250
-
1251
- result = block_var args, :*
1252
- }
1253
- | f_marg_list tCOMMA tSTAR tCOMMA f_marg_list
1254
- {
1255
- args, _, _, _, args2 = val
1256
-
1257
- result = block_var args, :*, args2
1258
- }
1259
- | tSTAR f_norm_arg
1260
- {
1261
- _, splat = val
1262
-
1263
- result = block_var :"*#{splat}"
1264
- }
1265
- | tSTAR f_norm_arg tCOMMA f_marg_list
1266
- {
1267
- _, splat, _, args = val
1268
-
1269
- result = block_var :"*#{splat}", args
1270
- }
1271
- | tSTAR
1272
- {
1273
- result = block_var :*
1274
- }
1275
- | tSTAR tCOMMA f_marg_list
1276
- {
1277
- _, _, args = val
1278
-
1279
- result = block_var :*, args
1280
- }
1281
-
1282
- block_param: f_arg tCOMMA f_block_optarg tCOMMA f_rest_arg opt_f_block_arg
1283
- {
1284
- result = args val
1285
- }
1286
- | f_arg tCOMMA f_block_optarg tCOMMA f_rest_arg tCOMMA f_arg opt_f_block_arg
1287
- {
1288
- result = args val
1289
- }
1290
- | f_arg tCOMMA f_block_optarg opt_f_block_arg
1291
- {
1292
- result = args val
1293
- }
1294
- | f_arg tCOMMA f_block_optarg tCOMMA f_arg opt_f_block_arg
1295
- {
1296
- result = args val
1297
- }
1298
- | f_arg tCOMMA f_rest_arg opt_f_block_arg
1299
- {
1300
- result = args val
1301
- }
1302
- | f_arg tCOMMA
1303
- {
1304
- result = args val
1305
- }
1306
- | f_arg tCOMMA f_rest_arg tCOMMA f_arg opt_f_block_arg
1307
- {
1308
- result = args val
1309
- }
1310
- | f_arg opt_f_block_arg
1311
- {
1312
- result = args val
1313
- }
1314
- | f_block_optarg tCOMMA f_rest_arg opt_f_block_arg
1315
- {
1316
- result = args val
1317
- }
1318
- | f_block_optarg tCOMMA f_rest_arg tCOMMA f_arg opt_f_block_arg
1319
- {
1320
- result = args val
1321
- }
1322
- | f_block_optarg opt_f_block_arg
1323
- {
1324
- result = args val
1325
- }
1326
- | f_block_optarg tCOMMA f_arg opt_f_block_arg
1327
- {
1328
- result = args val
1329
- }
1330
- | f_rest_arg opt_f_block_arg
1331
- {
1332
- result = args val
1333
- }
1334
- | f_rest_arg tCOMMA f_arg opt_f_block_arg
1335
- {
1336
- result = args val
1337
- }
1338
- | f_block_arg
1339
- {
1340
- result = args val
1341
- }
1342
-
1343
- opt_block_param: none { result = 0 }
1344
- | block_param_def
1345
-
1346
- block_param_def: tPIPE opt_bv_decl tPIPE
1347
- {
1348
- result = args val
1349
- }
1350
- | tOROP
1351
- {
1352
- result = s(:args)
1353
- self.lexer.command_start = true
1354
- }
1355
- | tPIPE block_param opt_bv_decl tPIPE
1356
- {
1357
- result = args val
1358
- }
1359
-
1360
- opt_bv_decl: none
1361
- | tSEMI bv_decls
1362
- {
1363
- result = val[1]
1364
- }
1365
-
1366
- bv_decls: bvar
1367
- {
1368
- result = args val
1369
- }
1370
- | bv_decls tCOMMA bvar
1371
- {
1372
- result = args val
1373
- }
1374
-
1375
- bvar: tIDENTIFIER
1376
- {
1377
- result = s(:shadow, val[0].to_sym)
1378
- }
1379
- | f_bad_arg
1380
-
1381
- lambda: {
1382
- # TODO: dyna_push ? hrm
1383
- result = lexer.lpar_beg
1384
- lexer.paren_nest += 1
1385
- lexer.lpar_beg = lexer.paren_nest
1386
- }
1387
- f_larglist lambda_body
1388
- {
1389
- lpar, args, body = val
1390
- lexer.lpar_beg = lpar
1391
-
1392
- call = new_call nil, :lambda
1393
- result = new_iter call, args, body
1394
- }
1395
-
1396
- f_larglist: tLPAREN2 f_args opt_bv_decl rparen
1397
- {
1398
- result = args val
1399
- }
1400
- | f_args
1401
- {
1402
- result = val[0]
1403
- result = 0 if result == s(:args)
1404
- }
1405
-
1406
- lambda_body: tLAMBEG compstmt tRCURLY
1407
- {
1408
- result = val[1]
1409
- }
1410
- | kDO_LAMBDA compstmt kEND
1411
- {
1412
- result = val[1]
1413
- }
1414
-
1415
- do_block: kDO_BLOCK
1416
- {
1417
- self.env.extend :dynamic
1418
- result = self.lexer.lineno
1419
- }
1420
- opt_block_param
1421
- {
1422
- result = nil # self.env.dynamic.keys
1423
- }
1424
- compstmt kEND
1425
- {
1426
- args = val[2]
1427
- body = val[4]
1428
- result = new_iter nil, args, body
1429
- result.line = val[1]
1430
-
1431
- self.env.unextend
1432
- }
1433
-
1434
- block_call: command do_block
1435
- {
1436
- # TODO:
1437
- # if (nd_type($1) == NODE_YIELD) {
1438
- # compile_error(PARSER_ARG "block given to yield");
1439
-
1440
- syntax_error "Both block arg and actual block given." if
1441
- val[0].block_pass?
1442
-
1443
- val = invert_block_call val if inverted? val
1444
-
1445
- result = val[1]
1446
- result.insert 1, val[0]
1447
- }
1448
- | block_call tDOT operation2 opt_paren_args
1449
- {
1450
- result = new_call val[0], val[2].to_sym, val[3]
1451
- }
1452
- | block_call tCOLON2 operation2 opt_paren_args
1453
- {
1454
- result = new_call val[0], val[2].to_sym, val[3]
1455
- }
1456
-
1457
- method_call: operation
1458
- {
1459
- result = self.lexer.lineno
1460
- }
1461
- paren_args
1462
- {
1463
- result = new_call nil, val[0].to_sym, val[2]
1464
- }
1465
- | primary_value tDOT operation2 opt_paren_args
1466
- {
1467
- result = new_call val[0], val[2].to_sym, val[3]
1468
- }
1469
- | primary_value tCOLON2 operation2 paren_args
1470
- {
1471
- result = new_call val[0], val[2].to_sym, val[3]
1472
- }
1473
- | primary_value tCOLON2 operation3
1474
- {
1475
- result = new_call val[0], val[2].to_sym
1476
- }
1477
- | primary_value tDOT paren_args
1478
- {
1479
- result = new_call val[0], :call, val[2]
1480
- }
1481
- | primary_value tCOLON2 paren_args
1482
- {
1483
- result = new_call val[0], :call, val[2]
1484
- }
1485
- | kSUPER paren_args
1486
- {
1487
- result = new_super val[1]
1488
- }
1489
- | kSUPER
1490
- {
1491
- result = s(:zsuper)
1492
- }
1493
- | primary_value tLBRACK2 opt_call_args rbracket
1494
- {
1495
- result = new_aref val
1496
- }
1497
-
1498
- brace_block: tLCURLY
1499
- {
1500
- self.env.extend :dynamic
1501
- result = self.lexer.lineno
1502
- }
1503
- opt_block_param
1504
- {
1505
- result = nil # self.env.dynamic.keys
1506
- }
1507
- compstmt tRCURLY
1508
- {
1509
- _, line, args, _, body, _ = val
1510
-
1511
- result = new_iter nil, args, body
1512
- result.line = line
1513
-
1514
- self.env.unextend
1515
- }
1516
- | kDO
1517
- {
1518
- self.env.extend :dynamic
1519
- result = self.lexer.lineno
1520
- }
1521
- opt_block_param
1522
- {
1523
- result = nil # self.env.dynamic.keys
1524
- }
1525
- compstmt kEND
1526
- {
1527
- _, line, args, _, body, _ = val
1528
-
1529
- result = new_iter nil, args, body
1530
- result.line = line
1531
-
1532
- self.env.unextend
1533
- }
1534
-
1535
- case_body: kWHEN
1536
- {
1537
- result = self.lexer.lineno
1538
- }
1539
- args then compstmt cases
1540
- {
1541
- result = new_when(val[2], val[4])
1542
- result.line = val[1]
1543
- result << val[5] if val[5]
1544
- }
1545
-
1546
- cases: opt_else | case_body
1547
-
1548
- opt_rescue: kRESCUE exc_list exc_var then compstmt opt_rescue
1549
- {
1550
- (_, line), klasses, var, _, body, rest = val
1551
-
1552
- klasses ||= s(:array)
1553
- klasses << new_assign(var, s(:gvar, :"$!")) if var
1554
- klasses.line line
1555
-
1556
- result = new_resbody(klasses, body)
1557
- result << rest if rest # UGH, rewritten above
1558
- }
1559
- |
1560
- {
1561
- result = nil
1562
- }
1563
-
1564
- exc_list: arg_value
1565
- {
1566
- result = s(:array, val[0])
1567
- }
1568
- | mrhs
1569
- | none
1570
-
1571
- exc_var: tASSOC lhs
1572
- {
1573
- result = val[1]
1574
- }
1575
- | none
1576
-
1577
- opt_ensure: kENSURE compstmt
1578
- {
1579
- _, body = val
1580
-
1581
- result = body || s(:nil)
1582
- }
1583
- | none
1584
-
1585
- literal: numeric { result = s(:lit, val[0]) }
1586
- | symbol { result = s(:lit, val[0]) }
1587
- | dsym
1588
-
1589
- strings: string
1590
- {
1591
- val[0] = s(:dstr, val[0].value) if val[0].sexp_type == :evstr
1592
- result = val[0]
1593
- }
1594
-
1595
- string: string1
1596
- | string string1
1597
- {
1598
- result = self.literal_concat val[0], val[1]
1599
- }
1600
-
1601
- string1: tSTRING_BEG string_contents tSTRING_END
1602
- {
1603
- result = val[1]
1604
- }
1605
- | tSTRING
1606
- {
1607
- result = new_string val
1608
- }
1609
-
1610
- xstring: tXSTRING_BEG xstring_contents tSTRING_END
1611
- {
1612
- result = new_xstring val[1]
1613
- }
1614
-
1615
- regexp: tREGEXP_BEG regexp_contents tREGEXP_END
1616
- {
1617
- result = new_regexp val
1618
- }
1619
-
1620
- words: tWORDS_BEG tSPACE tSTRING_END
1621
- {
1622
- result = s(:array)
1623
- }
1624
- | tWORDS_BEG word_list tSTRING_END
1625
- {
1626
- result = val[1]
1627
- }
1628
-
1629
- word_list: none
1630
- {
1631
- result = new_word_list
1632
- }
1633
- | word_list word tSPACE
1634
- {
1635
- result = val[0] << new_word_list_entry(val)
1636
- }
1637
-
1638
- word: string_content
1639
- | word string_content
1640
- {
1641
- result = self.literal_concat val[0], val[1]
1642
- }
1643
-
1644
- qwords: tQWORDS_BEG tSPACE tSTRING_END
1645
- {
1646
- result = s(:array)
1647
- }
1648
- | tQWORDS_BEG qword_list tSTRING_END
1649
- {
1650
- result = val[1]
1651
- }
1652
-
1653
- qword_list: none
1654
- {
1655
- result = new_qword_list
1656
- }
1657
- | qword_list tSTRING_CONTENT tSPACE
1658
- {
1659
- result = val[0] << new_qword_list_entry(val)
1660
- }
1661
-
1662
- string_contents: none
1663
- {
1664
- result = s(:str, "")
1665
- }
1666
- | string_contents string_content
1667
- {
1668
- result = literal_concat(val[0], val[1])
1669
- }
1670
-
1671
- xstring_contents: none
1672
- {
1673
- result = nil
1674
- }
1675
- | xstring_contents string_content
1676
- {
1677
- result = literal_concat(val[0], val[1])
1678
- }
1679
-
1680
- regexp_contents: none
1681
- {
1682
- result = nil
1683
- }
1684
- | regexp_contents string_content
1685
- {
1686
- result = literal_concat(val[0], val[1])
1687
- }
1688
-
1689
- string_content: tSTRING_CONTENT
1690
- {
1691
- result = new_string val
1692
- }
1693
- | tSTRING_DVAR
1694
- {
1695
- result = lexer.lex_strterm
1696
-
1697
- lexer.lex_strterm = nil
1698
- lexer.lex_state = :expr_beg
1699
- }
1700
- string_dvar
1701
- {
1702
- lexer.lex_strterm = val[1]
1703
- result = s(:evstr, val[2])
1704
- }
1705
- | tSTRING_DBEG
1706
- {
1707
- result = [lexer.lex_strterm,
1708
- lexer.brace_nest,
1709
- lexer.string_nest, # TODO: remove
1710
- lexer.cond.store,
1711
- lexer.cmdarg.store]
1712
-
1713
- lexer.lex_strterm = nil
1714
- lexer.brace_nest = 0
1715
- lexer.string_nest = 0
1716
-
1717
- lexer.lex_state = :expr_beg
1718
- }
1719
- compstmt tRCURLY
1720
- {
1721
- _, memo, stmt, _ = val
1722
-
1723
- lex_strterm, brace_nest, string_nest, oldcond, oldcmdarg = memo
1724
-
1725
- lexer.lex_strterm = lex_strterm
1726
- lexer.brace_nest = brace_nest
1727
- lexer.string_nest = string_nest
1728
-
1729
- lexer.cond.restore oldcond
1730
- lexer.cmdarg.restore oldcmdarg
1731
-
1732
- case stmt
1733
- when Sexp then
1734
- case stmt.sexp_type
1735
- when :str, :dstr, :evstr then
1736
- result = stmt
1737
- else
1738
- result = s(:evstr, stmt)
1739
- end
1740
- when nil then
1741
- result = s(:evstr)
1742
- else
1743
- raise "unknown string body: #{stmt.inspect}"
1744
- end
1745
- }
1746
-
1747
- string_dvar: tGVAR { result = s(:gvar, val[0].to_sym) }
1748
- | tIVAR { result = s(:ivar, val[0].to_sym) }
1749
- | tCVAR { result = s(:cvar, val[0].to_sym) }
1750
- | backref
1751
-
1752
- symbol: tSYMBEG sym
1753
- {
1754
- lexer.lex_state = :expr_end
1755
- result = val[1].to_sym
1756
- }
1757
- | tSYMBOL
1758
- {
1759
- result = val[0].to_sym
1760
- }
1761
-
1762
- sym: fname | tIVAR | tGVAR | tCVAR
1763
-
1764
- dsym: tSYMBEG xstring_contents tSTRING_END
1765
- {
1766
- lexer.lex_state = :expr_end
1767
- result = val[1]
1768
-
1769
- result ||= s(:str, "")
1770
-
1771
- case result.sexp_type
1772
- when :dstr then
1773
- result.sexp_type = :dsym
1774
- when :str then
1775
- result = s(:lit, result.last.intern)
1776
- else
1777
- result = s(:dsym, "", result)
1778
- end
1779
- }
1780
-
1781
- numeric: tINTEGER
1782
- | tFLOAT
1783
- | tUMINUS_NUM tINTEGER =tLOWEST
1784
- {
1785
- result = -val[1] # TODO: pt_testcase
1786
- }
1787
- | tUMINUS_NUM tFLOAT =tLOWEST
1788
- {
1789
- result = -val[1] # TODO: pt_testcase
1790
- }
1791
-
1792
- user_variable: tIDENTIFIER
1793
- | tIVAR
1794
- | tGVAR
1795
- | tCONSTANT
1796
- | tCVAR
1797
-
1798
- keyword_variable: kNIL { result = s(:nil) }
1799
- | kSELF { result = s(:self) }
1800
- | kTRUE { result = s(:true) }
1801
- | kFALSE { result = s(:false) }
1802
- | k__FILE__ { result = s(:str, self.file) }
1803
- | k__LINE__ { result = s(:lit, lexer.lineno) }
1804
- | k__ENCODING__
1805
- {
1806
- result =
1807
- if defined? Encoding then
1808
- s(:colon2, s(:const, :Encoding), :UTF_8)
1809
- else
1810
- s(:str, "Unsupported!")
1811
- end
1812
- }
1813
-
1814
- var_ref: user_variable
1815
- {
1816
- var = val[0]
1817
- result = Sexp === var ? var : self.gettable(var)
1818
- }
1819
- | keyword_variable
1820
- {
1821
- var = val[0]
1822
- result = Sexp === var ? var : self.gettable(var)
1823
- }
1824
-
1825
- var_lhs: user_variable
1826
- {
1827
- result = self.assignable val[0]
1828
- }
1829
- | keyword_variable
1830
- {
1831
- result = self.assignable val[0]
1832
- }
1833
-
1834
- backref: tNTH_REF { result = s(:nth_ref, val[0]) }
1835
- | tBACK_REF { result = s(:back_ref, val[0]) }
1836
-
1837
- superclass: term
1838
- {
1839
- result = nil
1840
- }
1841
- | tLT
1842
- {
1843
- lexer.lex_state = :expr_beg
1844
- }
1845
- expr_value term
1846
- {
1847
- result = val[2]
1848
- }
1849
- | error term
1850
- {
1851
- yyerrok
1852
- result = nil
1853
- }
1854
-
1855
- f_arglist: tLPAREN2 f_args rparen
1856
- {
1857
- result = val[1]
1858
- lexer.lex_state = :expr_beg
1859
- self.lexer.command_start = true
1860
- }
1861
- | f_args term
1862
- {
1863
- result = val[0]
1864
- }
1865
-
1866
- f_args: f_arg tCOMMA f_optarg tCOMMA f_rest_arg opt_f_block_arg
1867
- {
1868
- result = args val
1869
- }
1870
- | f_arg tCOMMA f_optarg tCOMMA f_rest_arg tCOMMA f_arg opt_f_block_arg
1871
- {
1872
- result = args val
1873
- }
1874
- | f_arg tCOMMA f_optarg opt_f_block_arg
1875
- {
1876
- result = args val
1877
- }
1878
- | f_arg tCOMMA f_optarg tCOMMA f_arg opt_f_block_arg
1879
- {
1880
- result = args val
1881
- }
1882
- | f_arg tCOMMA f_rest_arg opt_f_block_arg
1883
- {
1884
- result = args val
1885
- }
1886
- | f_arg tCOMMA f_rest_arg tCOMMA f_arg opt_f_block_arg
1887
- {
1888
- result = args val
1889
- }
1890
- | f_arg opt_f_block_arg
1891
- {
1892
- result = args val
1893
- }
1894
- | f_optarg tCOMMA f_rest_arg opt_f_block_arg
1895
- {
1896
- result = args val
1897
- }
1898
- | f_optarg tCOMMA f_rest_arg tCOMMA f_arg opt_f_block_arg
1899
- {
1900
- result = args val
1901
- }
1902
- | f_optarg opt_f_block_arg
1903
- {
1904
- result = args val
1905
- }
1906
- | f_optarg tCOMMA f_arg opt_f_block_arg
1907
- {
1908
- result = args val
1909
- }
1910
- | f_rest_arg opt_f_block_arg
1911
- {
1912
- result = args val
1913
- }
1914
- | f_rest_arg tCOMMA f_arg opt_f_block_arg
1915
- {
1916
- result = args val
1917
- }
1918
- | f_block_arg
1919
- {
1920
- result = args val
1921
- }
1922
- |
1923
- {
1924
- result = args val
1925
- }
1926
-
1927
- f_bad_arg: tCONSTANT
1928
- {
1929
- yyerror "formal argument cannot be a constant"
1930
- }
1931
- | tIVAR
1932
- {
1933
- yyerror "formal argument cannot be an instance variable"
1934
- }
1935
- | tGVAR
1936
- {
1937
- yyerror "formal argument cannot be a global variable"
1938
- }
1939
- | tCVAR
1940
- {
1941
- yyerror "formal argument cannot be a class variable"
1942
- }
1943
-
1944
- f_norm_arg: f_bad_arg
1945
- | tIDENTIFIER
1946
- {
1947
- identifier = val[0].to_sym
1948
- self.env[identifier] = :lvar
1949
-
1950
- result = identifier
1951
- }
1952
-
1953
- f_arg_item: f_norm_arg
1954
- | tLPAREN f_margs rparen
1955
- {
1956
- result = val[1]
1957
- }
1958
-
1959
- f_arg: f_arg_item
1960
- {
1961
- case val[0]
1962
- when Symbol then
1963
- result = s(:args)
1964
- result << val[0]
1965
- when Sexp then
1966
- result = val[0]
1967
- else
1968
- raise "Unknown f_arg type: #{val.inspect}"
1969
- end
1970
- }
1971
- | f_arg tCOMMA f_arg_item
1972
- {
1973
- list, _, item = val
1974
-
1975
- if list.sexp_type == :args then
1976
- result = list
1977
- else
1978
- result = s(:args, list)
1979
- end
1980
-
1981
- result << item
1982
- }
1983
-
1984
- f_opt: tIDENTIFIER tEQL arg_value
1985
- {
1986
- result = self.assignable val[0], val[2]
1987
- # TODO: detect duplicate names
1988
- }
1989
-
1990
- f_block_opt: tIDENTIFIER tEQL primary_value
1991
- {
1992
- result = self.assignable val[0], val[2]
1993
- }
1994
-
1995
- f_block_optarg: f_block_opt
1996
- {
1997
- result = s(:block, val[0])
1998
- }
1999
- | f_block_optarg tCOMMA f_block_opt
2000
- {
2001
- result = val[0]
2002
- result << val[2]
2003
- }
2004
-
2005
- f_optarg: f_opt
2006
- {
2007
- result = s(:block, val[0])
2008
- }
2009
- | f_optarg tCOMMA f_opt
2010
- {
2011
- result = self.block_append val[0], val[2]
2012
- }
2013
-
2014
- restarg_mark: tSTAR2 | tSTAR
2015
-
2016
- f_rest_arg: restarg_mark tIDENTIFIER
2017
- {
2018
- # TODO: differs from parse.y - needs tests
2019
- name = val[1].to_sym
2020
- self.assignable name
2021
- result = :"*#{name}"
2022
- }
2023
- | restarg_mark
2024
- {
2025
- name = :"*"
2026
- self.env[name] = :lvar
2027
- result = name
2028
- }
2029
-
2030
- blkarg_mark: tAMPER2 | tAMPER
2031
-
2032
- f_block_arg: blkarg_mark tIDENTIFIER
2033
- {
2034
- identifier = val[1].to_sym
2035
-
2036
- self.env[identifier] = :lvar
2037
- result = "&#{identifier}".to_sym
2038
- }
2039
-
2040
- opt_f_block_arg: tCOMMA f_block_arg
2041
- {
2042
- result = val[1]
2043
- }
2044
- |
2045
- {
2046
- result = nil
2047
- }
2048
-
2049
- singleton: var_ref
2050
- | tLPAREN2
2051
- {
2052
- lexer.lex_state = :expr_beg
2053
- }
2054
- expr rparen
2055
- {
2056
- result = val[2]
2057
- yyerror "Can't define single method for literals." if
2058
- result.sexp_type == :lit
2059
- }
2060
-
2061
- assoc_list: none # [!nil]
2062
- {
2063
- result = s(:array)
2064
- }
2065
- | assocs trailer # [!nil]
2066
- {
2067
- result = val[0]
2068
- }
2069
-
2070
- assocs: assoc
2071
- | assocs tCOMMA assoc
2072
- {
2073
- list = val[0].dup
2074
- more = val[2].sexp_body
2075
- list.push(*more) unless more.empty?
2076
- result = list
2077
- }
2078
-
2079
- assoc: arg_value tASSOC arg_value
2080
- {
2081
- result = s(:array, val[0], val[2])
2082
- }
2083
- | tLABEL opt_nl arg_value
2084
- {
2085
- label, _ = val[0] # TODO: fix lineno?
2086
- result = s(:array, s(:lit, label.to_sym), val.last)
2087
- }
2088
-
2089
- operation: tIDENTIFIER | tCONSTANT | tFID
2090
- operation2: tIDENTIFIER | tCONSTANT | tFID | op
2091
- operation3: tIDENTIFIER | tFID | op
2092
- dot_or_colon: tDOT | tCOLON2
2093
- opt_terms: | terms
2094
- opt_nl: | tNL
2095
- rparen: opt_nl tRPAREN
2096
- rbracket: opt_nl tRBRACK
2097
- trailer: | tNL | tCOMMA
2098
-
2099
- term: tSEMI { yyerrok }
2100
- | tNL
2101
-
2102
- terms: term
2103
- | terms tSEMI { yyerrok }
2104
-
2105
- none: { result = nil }
2106
- end
2107
-
2108
- ---- inner
2109
-
2110
- require "ruby_parser/legacy/ruby_lexer"
2111
- require "ruby_parser/legacy/ruby_parser_extras"
2112
-
2113
- # :stopdoc:
2114
-
2115
- # Local Variables: **
2116
- # racc-token-length-max:14 **
2117
- # End: **