brakeman 4.6.1 → 4.7.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of brakeman might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CHANGES.md +11 -0
- data/bundle/load.rb +7 -7
- data/bundle/ruby/2.6.0/gems/{haml-4.0.7 → haml-5.1.2}/CHANGELOG.md +122 -4
- data/bundle/ruby/2.6.0/gems/{haml-4.0.7 → haml-5.1.2}/FAQ.md +4 -14
- data/bundle/ruby/2.6.0/gems/haml-5.1.2/Gemfile +19 -0
- data/bundle/ruby/2.6.0/gems/{haml-4.0.7 → haml-5.1.2}/MIT-LICENSE +2 -2
- data/bundle/ruby/2.6.0/gems/{haml-4.0.7 → haml-5.1.2}/README.md +80 -42
- data/bundle/ruby/2.6.0/gems/{haml-4.0.7 → haml-5.1.2}/REFERENCE.md +121 -64
- data/bundle/ruby/2.6.0/gems/haml-5.1.2/TODO +24 -0
- data/bundle/ruby/2.6.0/gems/haml-5.1.2/haml.gemspec +44 -0
- data/bundle/ruby/2.6.0/gems/{haml-4.0.7 → haml-5.1.2}/lib/haml.rb +2 -0
- data/bundle/ruby/2.6.0/gems/haml-5.1.2/lib/haml/attribute_builder.rb +164 -0
- data/bundle/ruby/2.6.0/gems/haml-5.1.2/lib/haml/attribute_compiler.rb +224 -0
- data/bundle/ruby/2.6.0/gems/haml-5.1.2/lib/haml/attribute_parser.rb +150 -0
- data/bundle/ruby/2.6.0/gems/{haml-4.0.7 → haml-5.1.2}/lib/haml/buffer.rb +25 -132
- data/bundle/ruby/2.6.0/gems/haml-5.1.2/lib/haml/compiler.rb +330 -0
- data/bundle/ruby/2.6.0/gems/{haml-4.0.7 → haml-5.1.2}/lib/haml/engine.rb +34 -41
- data/bundle/ruby/2.6.0/gems/haml-5.1.2/lib/haml/error.rb +65 -0
- data/bundle/ruby/2.6.0/gems/haml-5.1.2/lib/haml/escapable.rb +50 -0
- data/bundle/ruby/2.6.0/gems/{haml-4.0.7 → haml-5.1.2}/lib/haml/exec.rb +38 -20
- data/bundle/ruby/2.6.0/gems/{haml-4.0.7 → haml-5.1.2}/lib/haml/filters.rb +22 -27
- data/bundle/ruby/2.6.0/gems/haml-5.1.2/lib/haml/generator.rb +42 -0
- data/bundle/ruby/2.6.0/gems/{haml-4.0.7 → haml-5.1.2}/lib/haml/helpers.rb +129 -90
- data/bundle/ruby/2.6.0/gems/{haml-4.0.7 → haml-5.1.2}/lib/haml/helpers/action_view_extensions.rb +4 -2
- data/bundle/ruby/2.6.0/gems/{haml-4.0.7 → haml-5.1.2}/lib/haml/helpers/action_view_mods.rb +45 -60
- data/bundle/ruby/2.6.0/gems/{haml-4.0.7 → haml-5.1.2}/lib/haml/helpers/action_view_xss_mods.rb +2 -0
- data/bundle/ruby/2.6.0/gems/haml-5.1.2/lib/haml/helpers/safe_erubi_template.rb +20 -0
- data/bundle/ruby/2.6.0/gems/{haml-4.0.7 → haml-5.1.2}/lib/haml/helpers/safe_erubis_template.rb +5 -1
- data/bundle/ruby/2.6.0/gems/{haml-4.0.7 → haml-5.1.2}/lib/haml/helpers/xss_mods.rb +19 -12
- data/bundle/ruby/2.6.0/gems/{haml-4.0.7 → haml-5.1.2}/lib/haml/options.rb +63 -69
- data/bundle/ruby/2.6.0/gems/{haml-4.0.7 → haml-5.1.2}/lib/haml/parser.rb +292 -228
- data/bundle/ruby/2.6.0/gems/haml-5.1.2/lib/haml/plugin.rb +37 -0
- data/bundle/ruby/2.6.0/gems/haml-5.1.2/lib/haml/railtie.rb +48 -0
- data/bundle/ruby/2.6.0/gems/{haml-4.0.7 → haml-5.1.2}/lib/haml/sass_rails_filter.rb +18 -4
- data/bundle/ruby/2.6.0/gems/{haml-4.0.7 → haml-5.1.2}/lib/haml/template.rb +13 -6
- data/bundle/ruby/2.6.0/gems/{haml-4.0.7 → haml-5.1.2}/lib/haml/template/options.rb +13 -2
- data/bundle/ruby/2.6.0/gems/haml-5.1.2/lib/haml/temple_engine.rb +123 -0
- data/bundle/ruby/2.6.0/gems/haml-5.1.2/lib/haml/temple_line_counter.rb +30 -0
- data/bundle/ruby/2.6.0/gems/haml-5.1.2/lib/haml/util.rb +258 -0
- data/bundle/ruby/2.6.0/gems/haml-5.1.2/lib/haml/version.rb +5 -0
- data/bundle/ruby/2.6.0/gems/haml-5.1.2/yard/default/fulldoc/html/css/common.sass +15 -0
- data/bundle/ruby/2.6.0/gems/haml-5.1.2/yard/default/layout/html/footer.erb +12 -0
- data/bundle/ruby/2.6.0/gems/{highline-2.0.2 → highline-2.0.3}/AUTHORS +0 -0
- data/bundle/ruby/2.6.0/gems/{highline-2.0.2 → highline-2.0.3}/COPYING +0 -0
- data/bundle/ruby/2.6.0/gems/{highline-2.0.2 → highline-2.0.3}/Changelog.md +3 -0
- data/bundle/ruby/2.6.0/gems/{highline-2.0.2 → highline-2.0.3}/Gemfile +0 -0
- data/bundle/ruby/2.6.0/gems/{highline-2.0.2 → highline-2.0.3}/LICENSE +0 -0
- data/bundle/ruby/2.6.0/gems/{highline-2.0.2 → highline-2.0.3}/README.md +0 -0
- data/bundle/ruby/2.6.0/gems/{highline-2.0.2 → highline-2.0.3}/TODO +0 -0
- data/bundle/ruby/2.6.0/gems/{highline-2.0.2 → highline-2.0.3}/appveyor.yml +0 -0
- data/bundle/ruby/2.6.0/gems/{highline-2.0.2 → highline-2.0.3}/highline.gemspec +0 -0
- data/bundle/ruby/2.6.0/gems/{highline-2.0.2 → highline-2.0.3}/lib/highline.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{highline-2.0.2 → highline-2.0.3}/lib/highline/builtin_styles.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{highline-2.0.2 → highline-2.0.3}/lib/highline/color_scheme.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{highline-2.0.2 → highline-2.0.3}/lib/highline/compatibility.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{highline-2.0.2 → highline-2.0.3}/lib/highline/custom_errors.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{highline-2.0.2 → highline-2.0.3}/lib/highline/import.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{highline-2.0.2 → highline-2.0.3}/lib/highline/io_console_compatible.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{highline-2.0.2 → highline-2.0.3}/lib/highline/list.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{highline-2.0.2 → highline-2.0.3}/lib/highline/list_renderer.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{highline-2.0.2 → highline-2.0.3}/lib/highline/menu.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{highline-2.0.2 → highline-2.0.3}/lib/highline/menu/item.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{highline-2.0.2 → highline-2.0.3}/lib/highline/paginator.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{highline-2.0.2 → highline-2.0.3}/lib/highline/question.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{highline-2.0.2 → highline-2.0.3}/lib/highline/question/answer_converter.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{highline-2.0.2 → highline-2.0.3}/lib/highline/question_asker.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{highline-2.0.2 → highline-2.0.3}/lib/highline/simulate.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{highline-2.0.2 → highline-2.0.3}/lib/highline/statement.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{highline-2.0.2 → highline-2.0.3}/lib/highline/string.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{highline-2.0.2 → highline-2.0.3}/lib/highline/string_extensions.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{highline-2.0.2 → highline-2.0.3}/lib/highline/style.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{highline-2.0.2 → highline-2.0.3}/lib/highline/template_renderer.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{highline-2.0.2 → highline-2.0.3}/lib/highline/terminal.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{highline-2.0.2 → highline-2.0.3}/lib/highline/terminal/io_console.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{highline-2.0.2 → highline-2.0.3}/lib/highline/terminal/ncurses.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{highline-2.0.2 → highline-2.0.3}/lib/highline/terminal/unix_stty.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{highline-2.0.2 → highline-2.0.3}/lib/highline/version.rb +1 -1
- data/bundle/ruby/2.6.0/gems/{highline-2.0.2 → highline-2.0.3}/lib/highline/wrapper.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{ruby2ruby-2.4.3 → ruby2ruby-2.4.4}/History.rdoc +6 -0
- data/bundle/ruby/2.6.0/gems/{ruby2ruby-2.4.3 → ruby2ruby-2.4.4}/Manifest.txt +0 -0
- data/bundle/ruby/2.6.0/gems/{ruby2ruby-2.4.3 → ruby2ruby-2.4.4}/README.rdoc +0 -0
- data/bundle/ruby/2.6.0/gems/{ruby2ruby-2.4.3 → ruby2ruby-2.4.4}/lib/ruby2ruby.rb +3 -3
- data/bundle/ruby/2.6.0/gems/{ruby_parser-3.13.1 → ruby_parser-3.14.0}/History.rdoc +38 -0
- data/bundle/ruby/2.6.0/gems/{ruby_parser-3.13.1 → ruby_parser-3.14.0}/Manifest.txt +0 -0
- data/bundle/ruby/2.6.0/gems/{ruby_parser-3.13.1 → ruby_parser-3.14.0}/README.rdoc +3 -3
- data/bundle/ruby/2.6.0/gems/{ruby_parser-3.13.1 → ruby_parser-3.14.0}/compare/normalize.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{ruby_parser-3.13.1 → ruby_parser-3.14.0}/debugging.md +0 -0
- data/bundle/ruby/2.6.0/gems/{ruby_parser-3.13.1 → ruby_parser-3.14.0}/lib/rp_extensions.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{ruby_parser-3.13.1 → ruby_parser-3.14.0}/lib/rp_stringscanner.rb +0 -0
- data/bundle/ruby/2.6.0/gems/ruby_parser-3.14.0/lib/ruby20_parser.rb +7045 -0
- data/bundle/ruby/2.6.0/gems/{ruby_parser-3.13.1/lib/ruby_parser.yy → ruby_parser-3.14.0/lib/ruby20_parser.y} +390 -397
- data/bundle/ruby/2.6.0/gems/ruby_parser-3.14.0/lib/ruby21_parser.rb +7116 -0
- data/bundle/ruby/2.6.0/gems/{ruby_parser-3.13.1 → ruby_parser-3.14.0}/lib/ruby21_parser.y +399 -254
- data/bundle/ruby/2.6.0/gems/ruby_parser-3.14.0/lib/ruby22_parser.rb +7149 -0
- data/bundle/ruby/2.6.0/gems/{ruby_parser-3.13.1 → ruby_parser-3.14.0}/lib/ruby22_parser.y +400 -255
- data/bundle/ruby/2.6.0/gems/ruby_parser-3.14.0/lib/ruby23_parser.rb +7166 -0
- data/bundle/ruby/2.6.0/gems/{ruby_parser-3.13.1 → ruby_parser-3.14.0}/lib/ruby23_parser.y +400 -255
- data/bundle/ruby/2.6.0/gems/ruby_parser-3.14.0/lib/ruby24_parser.rb +7178 -0
- data/bundle/ruby/2.6.0/gems/{ruby_parser-3.13.1 → ruby_parser-3.14.0}/lib/ruby24_parser.y +404 -257
- data/bundle/ruby/2.6.0/gems/ruby_parser-3.14.0/lib/ruby25_parser.rb +7178 -0
- data/bundle/ruby/2.6.0/gems/{ruby_parser-3.13.1 → ruby_parser-3.14.0}/lib/ruby25_parser.y +404 -257
- data/bundle/ruby/2.6.0/gems/ruby_parser-3.14.0/lib/ruby26_parser.rb +7198 -0
- data/bundle/ruby/2.6.0/gems/{ruby_parser-3.13.1 → ruby_parser-3.14.0}/lib/ruby26_parser.y +410 -261
- data/bundle/ruby/2.6.0/gems/{ruby_parser-3.13.1 → ruby_parser-3.14.0}/lib/ruby_lexer.rb +424 -432
- data/bundle/ruby/2.6.0/gems/{ruby_parser-3.13.1 → ruby_parser-3.14.0}/lib/ruby_lexer.rex +0 -0
- data/bundle/ruby/2.6.0/gems/{ruby_parser-3.13.1 → ruby_parser-3.14.0}/lib/ruby_lexer.rex.rb +1 -1
- data/bundle/ruby/2.6.0/gems/{ruby_parser-3.13.1 → ruby_parser-3.14.0}/lib/ruby_parser.rb +27 -27
- data/bundle/ruby/2.6.0/gems/ruby_parser-3.14.0/lib/ruby_parser.yy +2732 -0
- data/bundle/ruby/2.6.0/gems/{ruby_parser-3.13.1 → ruby_parser-3.14.0}/lib/ruby_parser_extras.rb +627 -406
- data/bundle/ruby/2.6.0/gems/{ruby_parser-3.13.1 → ruby_parser-3.14.0}/tools/munge.rb +1 -1
- data/bundle/ruby/2.6.0/gems/{ruby_parser-3.13.1 → ruby_parser-3.14.0}/tools/ripper.rb +13 -2
- data/bundle/ruby/2.6.0/gems/{sexp_processor-4.12.1 → sexp_processor-4.13.0}/History.rdoc +13 -0
- data/bundle/ruby/2.6.0/gems/{sexp_processor-4.12.1 → sexp_processor-4.13.0}/Manifest.txt +1 -0
- data/bundle/ruby/2.6.0/gems/{sexp_processor-4.12.1 → sexp_processor-4.13.0}/README.rdoc +0 -0
- data/bundle/ruby/2.6.0/gems/{sexp_processor-4.12.1 → sexp_processor-4.13.0}/lib/composite_sexp_processor.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{sexp_processor-4.12.1 → sexp_processor-4.13.0}/lib/pt_testcase.rb +0 -0
- data/bundle/ruby/2.6.0/gems/sexp_processor-4.13.0/lib/sexp.rb +381 -0
- data/bundle/ruby/2.6.0/gems/{sexp_processor-4.12.1/lib/sexp.rb → sexp_processor-4.13.0/lib/sexp_matcher.rb} +25 -385
- data/bundle/ruby/2.6.0/gems/{sexp_processor-4.12.1 → sexp_processor-4.13.0}/lib/sexp_processor.rb +1 -1
- data/bundle/ruby/2.6.0/gems/{sexp_processor-4.12.1 → sexp_processor-4.13.0}/lib/strict_sexp.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{sexp_processor-4.12.1 → sexp_processor-4.13.0}/lib/unique.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{temple-0.8.1 → temple-0.8.2}/CHANGES +5 -0
- data/bundle/ruby/2.6.0/gems/{temple-0.8.1 → temple-0.8.2}/EXPRESSIONS.md +0 -0
- data/bundle/ruby/2.6.0/gems/{temple-0.8.1 → temple-0.8.2}/Gemfile +0 -0
- data/bundle/ruby/2.6.0/gems/{temple-0.8.1 → temple-0.8.2}/LICENSE +0 -0
- data/bundle/ruby/2.6.0/gems/{temple-0.8.1 → temple-0.8.2}/README.md +1 -1
- data/bundle/ruby/2.6.0/gems/{temple-0.8.1 → temple-0.8.2}/lib/temple.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{temple-0.8.1 → temple-0.8.2}/lib/temple/engine.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{temple-0.8.1 → temple-0.8.2}/lib/temple/erb/engine.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{temple-0.8.1 → temple-0.8.2}/lib/temple/erb/parser.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{temple-0.8.1 → temple-0.8.2}/lib/temple/erb/template.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{temple-0.8.1 → temple-0.8.2}/lib/temple/erb/trimming.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{temple-0.8.1 → temple-0.8.2}/lib/temple/exceptions.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{temple-0.8.1 → temple-0.8.2}/lib/temple/filter.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{temple-0.8.1 → temple-0.8.2}/lib/temple/filters/code_merger.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{temple-0.8.1 → temple-0.8.2}/lib/temple/filters/control_flow.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{temple-0.8.1 → temple-0.8.2}/lib/temple/filters/dynamic_inliner.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{temple-0.8.1 → temple-0.8.2}/lib/temple/filters/encoding.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{temple-0.8.1 → temple-0.8.2}/lib/temple/filters/eraser.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{temple-0.8.1 → temple-0.8.2}/lib/temple/filters/escapable.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{temple-0.8.1 → temple-0.8.2}/lib/temple/filters/multi_flattener.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{temple-0.8.1 → temple-0.8.2}/lib/temple/filters/remove_bom.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{temple-0.8.1 → temple-0.8.2}/lib/temple/filters/static_analyzer.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{temple-0.8.1 → temple-0.8.2}/lib/temple/filters/static_merger.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{temple-0.8.1 → temple-0.8.2}/lib/temple/filters/string_splitter.rb +1 -1
- data/bundle/ruby/2.6.0/gems/{temple-0.8.1 → temple-0.8.2}/lib/temple/filters/validator.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{temple-0.8.1 → temple-0.8.2}/lib/temple/generator.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{temple-0.8.1 → temple-0.8.2}/lib/temple/generators/array.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{temple-0.8.1 → temple-0.8.2}/lib/temple/generators/array_buffer.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{temple-0.8.1 → temple-0.8.2}/lib/temple/generators/erb.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{temple-0.8.1 → temple-0.8.2}/lib/temple/generators/rails_output_buffer.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{temple-0.8.1 → temple-0.8.2}/lib/temple/generators/string_buffer.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{temple-0.8.1 → temple-0.8.2}/lib/temple/grammar.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{temple-0.8.1 → temple-0.8.2}/lib/temple/html/attribute_merger.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{temple-0.8.1 → temple-0.8.2}/lib/temple/html/attribute_remover.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{temple-0.8.1 → temple-0.8.2}/lib/temple/html/attribute_sorter.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{temple-0.8.1 → temple-0.8.2}/lib/temple/html/dispatcher.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{temple-0.8.1 → temple-0.8.2}/lib/temple/html/fast.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{temple-0.8.1 → temple-0.8.2}/lib/temple/html/filter.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{temple-0.8.1 → temple-0.8.2}/lib/temple/html/pretty.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{temple-0.8.1 → temple-0.8.2}/lib/temple/html/safe.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{temple-0.8.1 → temple-0.8.2}/lib/temple/map.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{temple-0.8.1 → temple-0.8.2}/lib/temple/mixins/dispatcher.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{temple-0.8.1 → temple-0.8.2}/lib/temple/mixins/engine_dsl.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{temple-0.8.1 → temple-0.8.2}/lib/temple/mixins/grammar_dsl.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{temple-0.8.1 → temple-0.8.2}/lib/temple/mixins/options.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{temple-0.8.1 → temple-0.8.2}/lib/temple/mixins/template.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{temple-0.8.1 → temple-0.8.2}/lib/temple/parser.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{temple-0.8.1 → temple-0.8.2}/lib/temple/static_analyzer.rb +1 -1
- data/bundle/ruby/2.6.0/gems/{temple-0.8.1 → temple-0.8.2}/lib/temple/templates.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{temple-0.8.1 → temple-0.8.2}/lib/temple/templates/rails.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{temple-0.8.1 → temple-0.8.2}/lib/temple/templates/tilt.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{temple-0.8.1 → temple-0.8.2}/lib/temple/utils.rb +0 -0
- data/bundle/ruby/2.6.0/gems/temple-0.8.2/lib/temple/version.rb +3 -0
- data/bundle/ruby/2.6.0/gems/{temple-0.8.1 → temple-0.8.2}/temple.gemspec +0 -0
- data/bundle/ruby/2.6.0/gems/{tilt-2.0.9 → tilt-2.0.10}/COPYING +0 -0
- data/bundle/ruby/2.6.0/gems/{tilt-2.0.9 → tilt-2.0.10}/lib/tilt.rb +1 -1
- data/bundle/ruby/2.6.0/gems/{tilt-2.0.9 → tilt-2.0.10}/lib/tilt/asciidoc.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{tilt-2.0.9 → tilt-2.0.10}/lib/tilt/babel.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{tilt-2.0.9 → tilt-2.0.10}/lib/tilt/bluecloth.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{tilt-2.0.9 → tilt-2.0.10}/lib/tilt/builder.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{tilt-2.0.9 → tilt-2.0.10}/lib/tilt/coffee.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{tilt-2.0.9 → tilt-2.0.10}/lib/tilt/commonmarker.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{tilt-2.0.9 → tilt-2.0.10}/lib/tilt/creole.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{tilt-2.0.9 → tilt-2.0.10}/lib/tilt/csv.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{tilt-2.0.9 → tilt-2.0.10}/lib/tilt/dummy.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{tilt-2.0.9 → tilt-2.0.10}/lib/tilt/erb.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{tilt-2.0.9 → tilt-2.0.10}/lib/tilt/erubi.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{tilt-2.0.9 → tilt-2.0.10}/lib/tilt/erubis.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{tilt-2.0.9 → tilt-2.0.10}/lib/tilt/etanni.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{tilt-2.0.9 → tilt-2.0.10}/lib/tilt/haml.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{tilt-2.0.9 → tilt-2.0.10}/lib/tilt/kramdown.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{tilt-2.0.9 → tilt-2.0.10}/lib/tilt/less.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{tilt-2.0.9 → tilt-2.0.10}/lib/tilt/liquid.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{tilt-2.0.9 → tilt-2.0.10}/lib/tilt/livescript.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{tilt-2.0.9 → tilt-2.0.10}/lib/tilt/mapping.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{tilt-2.0.9 → tilt-2.0.10}/lib/tilt/markaby.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{tilt-2.0.9 → tilt-2.0.10}/lib/tilt/maruku.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{tilt-2.0.9 → tilt-2.0.10}/lib/tilt/nokogiri.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{tilt-2.0.9 → tilt-2.0.10}/lib/tilt/pandoc.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{tilt-2.0.9 → tilt-2.0.10}/lib/tilt/plain.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{tilt-2.0.9 → tilt-2.0.10}/lib/tilt/prawn.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{tilt-2.0.9 → tilt-2.0.10}/lib/tilt/radius.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{tilt-2.0.9 → tilt-2.0.10}/lib/tilt/rdiscount.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{tilt-2.0.9 → tilt-2.0.10}/lib/tilt/rdoc.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{tilt-2.0.9 → tilt-2.0.10}/lib/tilt/redcarpet.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{tilt-2.0.9 → tilt-2.0.10}/lib/tilt/redcloth.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{tilt-2.0.9 → tilt-2.0.10}/lib/tilt/rst-pandoc.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{tilt-2.0.9 → tilt-2.0.10}/lib/tilt/sass.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{tilt-2.0.9 → tilt-2.0.10}/lib/tilt/sigil.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{tilt-2.0.9 → tilt-2.0.10}/lib/tilt/string.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{tilt-2.0.9 → tilt-2.0.10}/lib/tilt/template.rb +7 -12
- data/bundle/ruby/2.6.0/gems/{tilt-2.0.9 → tilt-2.0.10}/lib/tilt/typescript.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{tilt-2.0.9 → tilt-2.0.10}/lib/tilt/wikicloth.rb +0 -0
- data/bundle/ruby/2.6.0/gems/{tilt-2.0.9 → tilt-2.0.10}/lib/tilt/yajl.rb +0 -0
- data/lib/brakeman/checks/base_check.rb +23 -1
- data/lib/brakeman/checks/check_cookie_serialization.rb +1 -1
- data/lib/brakeman/checks/check_cross_site_scripting.rb +1 -1
- data/lib/brakeman/checks/check_execute.rb +26 -1
- data/lib/brakeman/differ.rb +16 -28
- data/lib/brakeman/parsers/haml_embedded.rb +1 -1
- data/lib/brakeman/parsers/template_parser.rb +3 -1
- data/lib/brakeman/processors/alias_processor.rb +10 -0
- data/lib/brakeman/processors/base_processor.rb +2 -0
- data/lib/brakeman/processors/haml_template_processor.rb +86 -122
- data/lib/brakeman/processors/lib/rails2_config_processor.rb +1 -1
- data/lib/brakeman/processors/template_alias_processor.rb +28 -0
- data/lib/brakeman/tracker/config.rb +33 -92
- data/lib/brakeman/version.rb +1 -1
- metadata +215 -206
- data/bundle/ruby/2.6.0/gems/haml-4.0.7/lib/haml/compiler.rb +0 -540
- data/bundle/ruby/2.6.0/gems/haml-4.0.7/lib/haml/error.rb +0 -61
- data/bundle/ruby/2.6.0/gems/haml-4.0.7/lib/haml/railtie.rb +0 -22
- data/bundle/ruby/2.6.0/gems/haml-4.0.7/lib/haml/template/plugin.rb +0 -41
- data/bundle/ruby/2.6.0/gems/haml-4.0.7/lib/haml/util.rb +0 -377
- data/bundle/ruby/2.6.0/gems/haml-4.0.7/lib/haml/version.rb +0 -3
- data/bundle/ruby/2.6.0/gems/ruby_parser-3.13.1/lib/ruby20_parser.rb +0 -6869
- data/bundle/ruby/2.6.0/gems/ruby_parser-3.13.1/lib/ruby20_parser.y +0 -2431
- data/bundle/ruby/2.6.0/gems/ruby_parser-3.13.1/lib/ruby21_parser.rb +0 -6944
- data/bundle/ruby/2.6.0/gems/ruby_parser-3.13.1/lib/ruby22_parser.rb +0 -6968
- data/bundle/ruby/2.6.0/gems/ruby_parser-3.13.1/lib/ruby23_parser.rb +0 -6987
- data/bundle/ruby/2.6.0/gems/ruby_parser-3.13.1/lib/ruby24_parser.rb +0 -6994
- data/bundle/ruby/2.6.0/gems/ruby_parser-3.13.1/lib/ruby25_parser.rb +0 -6994
- data/bundle/ruby/2.6.0/gems/ruby_parser-3.13.1/lib/ruby26_parser.rb +0 -7012
- data/bundle/ruby/2.6.0/gems/temple-0.8.1/lib/temple/version.rb +0 -3
- data/bundle/ruby/2.6.0/gems/tilt-2.0.9/CHANGELOG.md +0 -132
- data/bundle/ruby/2.6.0/gems/tilt-2.0.9/Gemfile +0 -70
- data/bundle/ruby/2.6.0/gems/tilt-2.0.9/HACKING +0 -16
- data/bundle/ruby/2.6.0/gems/tilt-2.0.9/README.md +0 -233
- data/bundle/ruby/2.6.0/gems/tilt-2.0.9/tilt.gemspec +0 -130
@@ -1,374 +1,3 @@
|
|
1
|
-
$TESTING ||= false # unless defined $TESTING
|
2
|
-
|
3
|
-
##
|
4
|
-
# Sexps are the basic storage mechanism of SexpProcessor. Sexps have
|
5
|
-
# a +type+ (to be renamed +node_type+) which is the first element of
|
6
|
-
# the Sexp. The type is used by SexpProcessor to determine whom to
|
7
|
-
# dispatch the Sexp to for processing.
|
8
|
-
|
9
|
-
class Sexp < Array # ZenTest FULL
|
10
|
-
##
|
11
|
-
# A setter for the line this sexp was found on. Usually set by ruby_parser.
|
12
|
-
|
13
|
-
attr_writer :line
|
14
|
-
|
15
|
-
##
|
16
|
-
# Accessors for the file. Usually set by ruby_parser.
|
17
|
-
|
18
|
-
attr_accessor :file
|
19
|
-
|
20
|
-
##
|
21
|
-
# Optional comments above/aside this sexp. Usually set by ruby_parser.
|
22
|
-
|
23
|
-
attr_accessor :comments
|
24
|
-
|
25
|
-
@@array_types = [ :array, :args ] # TODO: remove
|
26
|
-
|
27
|
-
##
|
28
|
-
# Create a new Sexp containing +args+.
|
29
|
-
|
30
|
-
def initialize *args
|
31
|
-
super(args)
|
32
|
-
end
|
33
|
-
|
34
|
-
##
|
35
|
-
# Creates a new Sexp from Array +a+.
|
36
|
-
|
37
|
-
def self.from_array a
|
38
|
-
ary = Array === a ? a : [a]
|
39
|
-
|
40
|
-
self.new.concat(ary.map { |x|
|
41
|
-
case x
|
42
|
-
when Sexp
|
43
|
-
x
|
44
|
-
when Array
|
45
|
-
self.from_array(x)
|
46
|
-
else
|
47
|
-
x
|
48
|
-
end
|
49
|
-
})
|
50
|
-
end
|
51
|
-
|
52
|
-
##
|
53
|
-
# Creates a new sexp with the new contents of +body+, but with the
|
54
|
-
# same +file+, +line+, and +comment+ as self.
|
55
|
-
|
56
|
-
def new(*body)
|
57
|
-
r = self.class.new.concat(body) # ensures a sexp from map
|
58
|
-
r.file = self.file if self.file
|
59
|
-
r.line = self.line if self.line
|
60
|
-
r.comments = self.comments if self.comments
|
61
|
-
r
|
62
|
-
end
|
63
|
-
|
64
|
-
def map &blk # :nodoc:
|
65
|
-
self.new.concat(super(&blk)) # ensures a sexp from map
|
66
|
-
end
|
67
|
-
|
68
|
-
def == obj # :nodoc:
|
69
|
-
obj.class == self.class and super # only because of a bug in ruby
|
70
|
-
end
|
71
|
-
|
72
|
-
##
|
73
|
-
# Returns true if the node_type is +array+ or +args+.
|
74
|
-
#
|
75
|
-
# REFACTOR: to TypedSexp - we only care when we have units.
|
76
|
-
|
77
|
-
def array_type?
|
78
|
-
warn "DEPRECATED: please file an issue if you actually use this. from #{caller.first}"
|
79
|
-
type = self.sexp_type
|
80
|
-
@@array_types.include? type
|
81
|
-
end
|
82
|
-
|
83
|
-
def compact # :nodoc:
|
84
|
-
self.delete_if(&:nil?)
|
85
|
-
end
|
86
|
-
|
87
|
-
##
|
88
|
-
# Recursively enumerates the sexp yielding to +block+ for every element.
|
89
|
-
#
|
90
|
-
# Returning :skip will stop traversing that subtree:
|
91
|
-
#
|
92
|
-
# sexp.deep_each do |s|
|
93
|
-
# next :skip if s.sexp_type == :if
|
94
|
-
# # ...
|
95
|
-
# end
|
96
|
-
|
97
|
-
def deep_each &block
|
98
|
-
return enum_for(:deep_each) unless block_given?
|
99
|
-
|
100
|
-
self.each_sexp do |sexp|
|
101
|
-
next if block[sexp] == :skip
|
102
|
-
sexp.deep_each(&block)
|
103
|
-
end
|
104
|
-
end
|
105
|
-
|
106
|
-
##
|
107
|
-
# Return the maximum depth of the sexp. One-based.
|
108
|
-
|
109
|
-
def depth
|
110
|
-
1 + (each_sexp.map(&:depth).max || 0)
|
111
|
-
end
|
112
|
-
|
113
|
-
##
|
114
|
-
# Enumeratates the sexp yielding to +b+ when the node_type == +t+.
|
115
|
-
|
116
|
-
def each_of_type t, &b
|
117
|
-
return enum_for(:each_of_type) unless block_given?
|
118
|
-
|
119
|
-
each_sexp do | sexp |
|
120
|
-
sexp.each_of_type(t, &b)
|
121
|
-
yield sexp if sexp.sexp_type == t
|
122
|
-
end
|
123
|
-
end
|
124
|
-
|
125
|
-
##
|
126
|
-
# Recursively enumerates all sub-sexps skipping non-Sexp elements.
|
127
|
-
|
128
|
-
def each_sexp
|
129
|
-
return enum_for(:each_sexp) unless block_given?
|
130
|
-
|
131
|
-
self.each do |sexp|
|
132
|
-
next unless Sexp === sexp
|
133
|
-
|
134
|
-
yield sexp
|
135
|
-
end
|
136
|
-
end
|
137
|
-
|
138
|
-
##
|
139
|
-
# Replaces all elements whose node_type is +from+ with +to+. Used
|
140
|
-
# only for the most trivial of rewrites.
|
141
|
-
|
142
|
-
def find_and_replace_all from, to
|
143
|
-
each_with_index do | elem, index |
|
144
|
-
if Sexp === elem then
|
145
|
-
elem.find_and_replace_all(from, to)
|
146
|
-
elsif elem == from
|
147
|
-
self[index] = to
|
148
|
-
end
|
149
|
-
end
|
150
|
-
end
|
151
|
-
|
152
|
-
##
|
153
|
-
# Replaces all Sexps matching +pattern+ with Sexp +repl+.
|
154
|
-
|
155
|
-
def gsub pattern, repl
|
156
|
-
return repl if pattern == self
|
157
|
-
|
158
|
-
new = self.map { |subset|
|
159
|
-
case subset
|
160
|
-
when Sexp then
|
161
|
-
if Matcher === pattern && pattern.satisfy?(subset) then # TODO: make === be satisfy? maybe?
|
162
|
-
repl.dup rescue repl
|
163
|
-
else
|
164
|
-
subset.gsub pattern, repl
|
165
|
-
end
|
166
|
-
else
|
167
|
-
subset
|
168
|
-
end
|
169
|
-
}
|
170
|
-
|
171
|
-
Sexp.from_array new
|
172
|
-
end
|
173
|
-
|
174
|
-
def inspect # :nodoc:
|
175
|
-
sexp_str = self.map(&:inspect).join ", "
|
176
|
-
if ENV["VERBOSE"] && line then
|
177
|
-
"s(#{sexp_str}).line(#{line})"
|
178
|
-
else
|
179
|
-
"s(#{sexp_str})"
|
180
|
-
end
|
181
|
-
end
|
182
|
-
|
183
|
-
def find_node name, delete = false # :nodoc:
|
184
|
-
matches = find_nodes name
|
185
|
-
|
186
|
-
case matches.size
|
187
|
-
when 0 then
|
188
|
-
nil
|
189
|
-
when 1 then
|
190
|
-
match = matches.first
|
191
|
-
delete match if delete
|
192
|
-
match
|
193
|
-
else
|
194
|
-
raise NoMethodError, "multiple nodes for #{name} were found in #{inspect}"
|
195
|
-
end
|
196
|
-
end
|
197
|
-
|
198
|
-
##
|
199
|
-
# Find every node with type +name+.
|
200
|
-
|
201
|
-
def find_nodes name
|
202
|
-
each_sexp.find_all { |sexp| sexp.sexp_type == name }
|
203
|
-
end
|
204
|
-
|
205
|
-
UNASSIGNED = Object.new
|
206
|
-
|
207
|
-
##
|
208
|
-
# If passed a line number, sets the line and returns self. Otherwise
|
209
|
-
# returns the line number. This allows you to do message cascades
|
210
|
-
# and still get the sexp back.
|
211
|
-
|
212
|
-
def line n = UNASSIGNED
|
213
|
-
if n != UNASSIGNED then
|
214
|
-
raise ArgumentError, "setting %p.line %p" % [self, n] unless Integer === n
|
215
|
-
@line = n
|
216
|
-
self
|
217
|
-
else
|
218
|
-
@line ||= nil
|
219
|
-
end
|
220
|
-
end
|
221
|
-
|
222
|
-
##
|
223
|
-
# Returns the maximum line number of the children of self.
|
224
|
-
|
225
|
-
def line_max
|
226
|
-
@line_max ||= self.deep_each.map(&:line).max
|
227
|
-
end
|
228
|
-
|
229
|
-
##
|
230
|
-
# Returns the size of the sexp, flattened.
|
231
|
-
|
232
|
-
def mass
|
233
|
-
@mass ||= inject(1) { |t, s| Sexp === s ? t + s.mass : t }
|
234
|
-
end
|
235
|
-
|
236
|
-
##
|
237
|
-
# Returns the node named +node+, deleting it if +delete+ is true.
|
238
|
-
|
239
|
-
def method_missing meth, delete = false
|
240
|
-
r = find_node meth, delete
|
241
|
-
if ENV["DEBUG"] then
|
242
|
-
if r.nil? then
|
243
|
-
warn "%p.method_missing(%p) => nil from %s" % [self, meth, caller.first]
|
244
|
-
elsif ENV["VERBOSE"]
|
245
|
-
warn "%p.method_missing(%p) from %s" % [self, meth, caller.first]
|
246
|
-
end
|
247
|
-
end
|
248
|
-
r
|
249
|
-
end
|
250
|
-
|
251
|
-
def respond_to? msg, private = false # :nodoc:
|
252
|
-
# why do I need this? Because ruby 2.0 is broken. That's why.
|
253
|
-
super
|
254
|
-
end
|
255
|
-
|
256
|
-
def pretty_print q # :nodoc:
|
257
|
-
nnd = ")"
|
258
|
-
nnd << ".line(#{line})" if line && ENV["VERBOSE"]
|
259
|
-
|
260
|
-
q.group(1, "s(", nnd) do
|
261
|
-
q.seplist(self) {|v| q.pp v }
|
262
|
-
end
|
263
|
-
end
|
264
|
-
|
265
|
-
##
|
266
|
-
# Returns the node type of the Sexp.
|
267
|
-
|
268
|
-
def sexp_type
|
269
|
-
first
|
270
|
-
end
|
271
|
-
|
272
|
-
##
|
273
|
-
# Sets the node type of the Sexp.
|
274
|
-
|
275
|
-
def sexp_type= v
|
276
|
-
self[0] = v
|
277
|
-
end
|
278
|
-
|
279
|
-
##
|
280
|
-
# Returns the Sexp body (starting at +from+, defaulting to 1), ie
|
281
|
-
# the values without the node type.
|
282
|
-
|
283
|
-
def sexp_body from = 1
|
284
|
-
self.new.concat(self[from..-1] || [])
|
285
|
-
end
|
286
|
-
|
287
|
-
##
|
288
|
-
# Returns the Sexp body, ie the values without the node type.
|
289
|
-
|
290
|
-
def sexp_body= v
|
291
|
-
self[1..-1] = v
|
292
|
-
end
|
293
|
-
|
294
|
-
alias :head :sexp_type
|
295
|
-
alias :rest :sexp_body
|
296
|
-
|
297
|
-
##
|
298
|
-
# If run with debug, Sexp will raise if you shift on an empty
|
299
|
-
# Sexp. Helps with debugging.
|
300
|
-
|
301
|
-
def shift
|
302
|
-
raise "I'm empty" if self.empty?
|
303
|
-
super
|
304
|
-
end if ($DEBUG or $TESTING)
|
305
|
-
|
306
|
-
##
|
307
|
-
# Returns the bare bones structure of the sexp.
|
308
|
-
# s(:a, :b, s(:c, :d), :e) => s(:a, s(:c))
|
309
|
-
|
310
|
-
def structure
|
311
|
-
if Array === self.sexp_type then
|
312
|
-
warn "NOTE: form s(s(:subsexp)).structure is deprecated. Removing in 5.0"
|
313
|
-
s(:bogus, *self).structure # TODO: remove >= 4.2.0
|
314
|
-
else
|
315
|
-
s(self.sexp_type, *each_sexp.map(&:structure))
|
316
|
-
end
|
317
|
-
end
|
318
|
-
|
319
|
-
##
|
320
|
-
# Replaces the Sexp matching +pattern+ with +repl+.
|
321
|
-
|
322
|
-
def sub pattern, repl
|
323
|
-
return repl.dup if pattern == self
|
324
|
-
return repl.dup if Matcher === pattern && pattern.satisfy?(self)
|
325
|
-
|
326
|
-
done = false
|
327
|
-
|
328
|
-
new = self.map do |subset|
|
329
|
-
if done then
|
330
|
-
subset
|
331
|
-
else
|
332
|
-
case subset
|
333
|
-
when Sexp then
|
334
|
-
if pattern == subset then
|
335
|
-
done = true
|
336
|
-
repl.dup rescue repl
|
337
|
-
elsif Matcher === pattern && pattern.satisfy?(subset) then
|
338
|
-
done = true
|
339
|
-
repl.dup rescue repl
|
340
|
-
else
|
341
|
-
subset.sub pattern, repl
|
342
|
-
end
|
343
|
-
else
|
344
|
-
subset
|
345
|
-
end
|
346
|
-
end
|
347
|
-
end
|
348
|
-
|
349
|
-
Sexp.from_array new
|
350
|
-
end
|
351
|
-
|
352
|
-
def to_a # :nodoc:
|
353
|
-
self.map { |o| Sexp === o ? o.to_a : o }
|
354
|
-
end
|
355
|
-
|
356
|
-
alias to_s inspect # :nodoc:
|
357
|
-
end
|
358
|
-
|
359
|
-
##
|
360
|
-
# This is a very important shortcut to make using Sexps much more awesome.
|
361
|
-
#
|
362
|
-
# In its normal form +s(...)+, creates a Sexp instance. If passed a
|
363
|
-
# block, it creates a Sexp::Matcher using the factory methods on Sexp.
|
364
|
-
#
|
365
|
-
# See Matcher and other factory class methods on Sexp.
|
366
|
-
|
367
|
-
def s *args, &blk
|
368
|
-
return Sexp.class_eval(&blk) if blk
|
369
|
-
Sexp.new(*args)
|
370
|
-
end
|
371
|
-
|
372
1
|
class Sexp #:nodoc:
|
373
2
|
##
|
374
3
|
# Verifies that +pattern+ is a Matcher and then dispatches to its
|
@@ -446,10 +75,16 @@ class Sexp #:nodoc:
|
|
446
75
|
#
|
447
76
|
# See Matcher for examples.
|
448
77
|
|
449
|
-
def self.
|
78
|
+
def self.q *args
|
450
79
|
Matcher.new(*args)
|
451
80
|
end
|
452
81
|
|
82
|
+
def self.s *args
|
83
|
+
where = caller.first.split(/:/, 3).first(2).join ":"
|
84
|
+
warn "DEPRECATED: use Sexp.q(...) instead. From %s" % [where]
|
85
|
+
q(*args)
|
86
|
+
end
|
87
|
+
|
453
88
|
##
|
454
89
|
# Matches any single item.
|
455
90
|
#
|
@@ -759,15 +394,14 @@ class Sexp #:nodoc:
|
|
759
394
|
# Create a new Parser instance on +s+
|
760
395
|
|
761
396
|
def initialize s
|
762
|
-
self.tokens =
|
763
|
-
lex s
|
397
|
+
self.tokens = lex s
|
764
398
|
end
|
765
399
|
|
766
400
|
##
|
767
401
|
# Converts +s+ into a stream of tokens and adds them to +tokens+.
|
768
402
|
|
769
403
|
def lex s
|
770
|
-
|
404
|
+
s.scan %r%[()\[\]]|\"[^"]*\"|/[^/]*/|:?[\w?!=~-]+%
|
771
405
|
end
|
772
406
|
|
773
407
|
##
|
@@ -805,8 +439,8 @@ class Sexp #:nodoc:
|
|
805
439
|
# | /^\/(.*)\/$/:re => Regexp.new re[0]
|
806
440
|
# | /^"(.*)"$/:s => String.new s[0]
|
807
441
|
# | NAME:name => name.to_sym
|
808
|
-
# NAME :
|
809
|
-
# CMD : "t" | "m" | "atom"
|
442
|
+
# NAME : /:?[\w?!=~-]+/
|
443
|
+
# CMD : "t" | "m" | "atom" | "not?"
|
810
444
|
|
811
445
|
def parse_sexp
|
812
446
|
token = next_token
|
@@ -831,8 +465,8 @@ class Sexp #:nodoc:
|
|
831
465
|
Regexp.new re
|
832
466
|
when /^"(.*)"$/ then
|
833
467
|
$1
|
834
|
-
when
|
835
|
-
|
468
|
+
when /^:?([\w?!=~-]+)$/ then
|
469
|
+
$1.to_sym
|
836
470
|
else
|
837
471
|
raise SyntaxError, "unhandled token: %p" % [token]
|
838
472
|
end
|
@@ -848,13 +482,13 @@ class Sexp #:nodoc:
|
|
848
482
|
result << parse_sexp while peek_token && peek_token != ")"
|
849
483
|
next_token # pop off ")"
|
850
484
|
|
851
|
-
Sexp.
|
485
|
+
Sexp.q(*result)
|
852
486
|
end
|
853
487
|
|
854
488
|
##
|
855
489
|
# A collection of allowed commands to convert into matchers.
|
856
490
|
|
857
|
-
ALLOWED = [:t, :m, :atom].freeze
|
491
|
+
ALLOWED = [:t, :m, :atom, :not?].freeze
|
858
492
|
|
859
493
|
##
|
860
494
|
# Parses a balanced command. A command is denoted by square
|
@@ -867,7 +501,7 @@ class Sexp #:nodoc:
|
|
867
501
|
next_token # pop off "]"
|
868
502
|
|
869
503
|
cmd = args.shift
|
870
|
-
args = Sexp.
|
504
|
+
args = Sexp.q(*args)
|
871
505
|
|
872
506
|
raise SyntaxError, "bad cmd: %p" % [cmd] unless ALLOWED.include? cmd
|
873
507
|
|
@@ -1203,6 +837,14 @@ class Sexp #:nodoc:
|
|
1203
837
|
q.pp pattern
|
1204
838
|
end
|
1205
839
|
end
|
840
|
+
|
841
|
+
def eql? o
|
842
|
+
super and self.pattern.eql? o.pattern
|
843
|
+
end
|
844
|
+
|
845
|
+
def hash
|
846
|
+
[super, pattern].hash
|
847
|
+
end
|
1206
848
|
end
|
1207
849
|
|
1208
850
|
##
|
@@ -1418,6 +1060,4 @@ class Sexp #:nodoc:
|
|
1418
1060
|
end
|
1419
1061
|
end
|
1420
1062
|
end # class MatchCollection
|
1421
|
-
end
|
1422
|
-
|
1423
|
-
require "strict_sexp" if ENV["STRICT_SEXP"].to_i > 0
|
1063
|
+
end # class Sexp
|