brakeman 4.4.0 → 4.5.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 +17 -0
- data/bundle/load.rb +7 -8
- data/bundle/ruby/2.5.0/gems/{ruby2ruby-2.4.1 → ruby2ruby-2.4.2}/History.rdoc +8 -0
- data/bundle/ruby/2.5.0/gems/{ruby2ruby-2.4.1 → ruby2ruby-2.4.2}/Manifest.txt +0 -0
- data/bundle/ruby/2.5.0/gems/{ruby2ruby-2.4.1 → ruby2ruby-2.4.2}/README.rdoc +0 -0
- data/bundle/ruby/2.5.0/gems/{ruby2ruby-2.4.1 → ruby2ruby-2.4.2}/lib/ruby2ruby.rb +34 -36
- data/bundle/ruby/2.5.0/gems/{ruby_parser-3.12.0 → ruby_parser-3.13.0}/History.rdoc +47 -0
- data/bundle/ruby/2.5.0/gems/{ruby_parser-3.12.0 → ruby_parser-3.13.0}/Manifest.txt +5 -4
- data/bundle/ruby/2.5.0/gems/{ruby_parser-3.12.0 → ruby_parser-3.13.0}/README.rdoc +0 -0
- data/bundle/ruby/2.5.0/gems/{ruby_parser-3.12.0 → ruby_parser-3.13.0}/compare/normalize.rb +29 -2
- data/bundle/ruby/2.5.0/gems/ruby_parser-3.13.0/debugging.md +18 -0
- data/bundle/ruby/2.5.0/gems/{ruby_parser-3.12.0 → ruby_parser-3.13.0}/lib/rp_extensions.rb +0 -7
- data/bundle/ruby/2.5.0/gems/{ruby_parser-3.12.0 → ruby_parser-3.13.0}/lib/rp_stringscanner.rb +0 -0
- data/bundle/ruby/2.5.0/gems/ruby_parser-3.13.0/lib/ruby20_parser.rb +6874 -0
- data/bundle/ruby/2.5.0/gems/{ruby_parser-3.12.0 → ruby_parser-3.13.0}/lib/ruby20_parser.y +284 -201
- data/bundle/ruby/2.5.0/gems/ruby_parser-3.13.0/lib/ruby21_parser.rb +6952 -0
- data/bundle/ruby/2.5.0/gems/{ruby_parser-3.12.0 → ruby_parser-3.13.0}/lib/ruby21_parser.y +281 -197
- data/bundle/ruby/2.5.0/gems/ruby_parser-3.13.0/lib/ruby22_parser.rb +6983 -0
- data/bundle/ruby/2.5.0/gems/{ruby_parser-3.12.0/lib/ruby_parser.yy → ruby_parser-3.13.0/lib/ruby22_parser.y} +280 -306
- data/bundle/ruby/2.5.0/gems/ruby_parser-3.13.0/lib/ruby23_parser.rb +6982 -0
- data/bundle/ruby/2.5.0/gems/{ruby_parser-3.12.0 → ruby_parser-3.13.0}/lib/ruby23_parser.y +282 -203
- data/bundle/ruby/2.5.0/gems/ruby_parser-3.13.0/lib/ruby24_parser.rb +6982 -0
- data/bundle/ruby/2.5.0/gems/{ruby_parser-3.12.0 → ruby_parser-3.13.0}/lib/ruby24_parser.y +282 -203
- data/bundle/ruby/2.5.0/gems/ruby_parser-3.13.0/lib/ruby25_parser.rb +6981 -0
- data/bundle/ruby/2.5.0/gems/{ruby_parser-3.12.0 → ruby_parser-3.13.0}/lib/ruby25_parser.y +282 -203
- data/bundle/ruby/2.5.0/gems/ruby_parser-3.13.0/lib/ruby26_parser.rb +6999 -0
- data/bundle/ruby/2.5.0/gems/ruby_parser-3.13.0/lib/ruby26_parser.y +2469 -0
- data/bundle/ruby/2.5.0/gems/{ruby_parser-3.12.0 → ruby_parser-3.13.0}/lib/ruby_lexer.rb +116 -118
- data/bundle/ruby/2.5.0/gems/{ruby_parser-3.12.0 → ruby_parser-3.13.0}/lib/ruby_lexer.rex +10 -8
- data/bundle/ruby/2.5.0/gems/{ruby_parser-3.12.0 → ruby_parser-3.13.0}/lib/ruby_lexer.rex.rb +8 -8
- data/bundle/ruby/2.5.0/gems/{ruby_parser-3.12.0 → ruby_parser-3.13.0}/lib/ruby_parser.rb +5 -7
- data/bundle/ruby/2.5.0/gems/ruby_parser-3.13.0/lib/ruby_parser.yy +2571 -0
- data/bundle/ruby/2.5.0/gems/ruby_parser-3.13.0/lib/ruby_parser_extras.rb +1360 -0
- data/bundle/ruby/2.5.0/gems/ruby_parser-3.13.0/tools/munge.rb +216 -0
- data/bundle/ruby/2.5.0/gems/ruby_parser-3.13.0/tools/ripper.rb +23 -0
- data/bundle/ruby/2.5.0/gems/ruby_parser-legacy-1.0.0/History.rdoc +6 -0
- data/bundle/ruby/2.5.0/gems/ruby_parser-legacy-1.0.0/Manifest.txt +19 -0
- data/bundle/ruby/2.5.0/gems/ruby_parser-legacy-1.0.0/README.rdoc +54 -0
- data/bundle/ruby/2.5.0/gems/ruby_parser-legacy-1.0.0/lib/ruby_parser/legacy.rb +5 -0
- data/bundle/ruby/2.5.0/gems/{ruby_parser-3.12.0/lib → ruby_parser-legacy-1.0.0/lib/ruby_parser/legacy}/ruby18_parser.rb +7 -6
- data/bundle/ruby/2.5.0/gems/{ruby_parser-3.12.0/lib → ruby_parser-legacy-1.0.0/lib/ruby_parser/legacy}/ruby18_parser.y +5 -4
- data/bundle/ruby/2.5.0/gems/{ruby_parser-3.12.0/lib → ruby_parser-legacy-1.0.0/lib/ruby_parser/legacy}/ruby19_parser.rb +7 -6
- data/bundle/ruby/2.5.0/gems/{ruby_parser-3.12.0/lib → ruby_parser-legacy-1.0.0/lib/ruby_parser/legacy}/ruby19_parser.y +5 -4
- data/bundle/ruby/2.5.0/gems/ruby_parser-legacy-1.0.0/lib/ruby_parser/legacy/ruby_lexer.rb +1412 -0
- data/bundle/ruby/2.5.0/gems/ruby_parser-legacy-1.0.0/lib/ruby_parser/legacy/ruby_lexer.rex +179 -0
- data/bundle/ruby/2.5.0/gems/ruby_parser-legacy-1.0.0/lib/ruby_parser/legacy/ruby_lexer.rex.rb +323 -0
- data/bundle/ruby/2.5.0/gems/ruby_parser-legacy-1.0.0/lib/ruby_parser/legacy/ruby_parser.rb +30 -0
- data/bundle/ruby/2.5.0/gems/{ruby_parser-3.12.0/lib → ruby_parser-legacy-1.0.0/lib/ruby_parser/legacy}/ruby_parser_extras.rb +43 -33
- data/bundle/ruby/2.5.0/gems/{safe_yaml-1.0.4 → safe_yaml-1.0.5}/CHANGES.md +5 -0
- data/bundle/ruby/2.5.0/gems/{safe_yaml-1.0.4 → safe_yaml-1.0.5}/Gemfile +0 -0
- data/bundle/ruby/2.5.0/gems/{safe_yaml-1.0.4 → safe_yaml-1.0.5}/LICENSE.txt +0 -0
- data/bundle/ruby/2.5.0/gems/{safe_yaml-1.0.4 → safe_yaml-1.0.5}/README.md +0 -0
- data/bundle/ruby/2.5.0/gems/{safe_yaml-1.0.4 → safe_yaml-1.0.5}/bundle_install_all_ruby_versions.sh +0 -0
- data/bundle/ruby/2.5.0/gems/{safe_yaml-1.0.4 → safe_yaml-1.0.5}/lib/safe_yaml.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{safe_yaml-1.0.4 → safe_yaml-1.0.5}/lib/safe_yaml/deep.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{safe_yaml-1.0.4 → safe_yaml-1.0.5}/lib/safe_yaml/libyaml_checker.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{safe_yaml-1.0.4 → safe_yaml-1.0.5}/lib/safe_yaml/load.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{safe_yaml-1.0.4 → safe_yaml-1.0.5}/lib/safe_yaml/parse/date.rb +2 -0
- data/bundle/ruby/2.5.0/gems/{safe_yaml-1.0.4 → safe_yaml-1.0.5}/lib/safe_yaml/parse/hexadecimal.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{safe_yaml-1.0.4 → safe_yaml-1.0.5}/lib/safe_yaml/parse/sexagesimal.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{safe_yaml-1.0.4 → safe_yaml-1.0.5}/lib/safe_yaml/psych_handler.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{safe_yaml-1.0.4 → safe_yaml-1.0.5}/lib/safe_yaml/psych_resolver.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{safe_yaml-1.0.4 → safe_yaml-1.0.5}/lib/safe_yaml/resolver.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{safe_yaml-1.0.4 → safe_yaml-1.0.5}/lib/safe_yaml/safe_to_ruby_visitor.rb +0 -0
- data/bundle/ruby/2.5.0/gems/safe_yaml-1.0.5/lib/safe_yaml/store.rb +39 -0
- data/bundle/ruby/2.5.0/gems/{safe_yaml-1.0.4 → safe_yaml-1.0.5}/lib/safe_yaml/syck_hack.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{safe_yaml-1.0.4 → safe_yaml-1.0.5}/lib/safe_yaml/syck_node_monkeypatch.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{safe_yaml-1.0.4 → safe_yaml-1.0.5}/lib/safe_yaml/syck_resolver.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{safe_yaml-1.0.4 → safe_yaml-1.0.5}/lib/safe_yaml/transform.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{safe_yaml-1.0.4 → safe_yaml-1.0.5}/lib/safe_yaml/transform/to_boolean.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{safe_yaml-1.0.4 → safe_yaml-1.0.5}/lib/safe_yaml/transform/to_date.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{safe_yaml-1.0.4 → safe_yaml-1.0.5}/lib/safe_yaml/transform/to_float.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{safe_yaml-1.0.4 → safe_yaml-1.0.5}/lib/safe_yaml/transform/to_integer.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{safe_yaml-1.0.4 → safe_yaml-1.0.5}/lib/safe_yaml/transform/to_nil.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{safe_yaml-1.0.4 → safe_yaml-1.0.5}/lib/safe_yaml/transform/to_symbol.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{safe_yaml-1.0.4 → safe_yaml-1.0.5}/lib/safe_yaml/transform/transformation_map.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{safe_yaml-1.0.4 → safe_yaml-1.0.5}/lib/safe_yaml/version.rb +1 -1
- data/bundle/ruby/2.5.0/gems/{safe_yaml-1.0.4 → safe_yaml-1.0.5}/run_specs_all_ruby_versions.sh +0 -0
- data/bundle/ruby/2.5.0/gems/{safe_yaml-1.0.4 → safe_yaml-1.0.5}/safe_yaml.gemspec +0 -0
- data/bundle/ruby/2.5.0/gems/{sexp_processor-4.11.0 → sexp_processor-4.12.0}/History.rdoc +8 -0
- data/bundle/ruby/2.5.0/gems/{sexp_processor-4.11.0 → sexp_processor-4.12.0}/Manifest.txt +0 -0
- data/bundle/ruby/2.5.0/gems/{sexp_processor-4.11.0 → sexp_processor-4.12.0}/README.rdoc +0 -0
- data/bundle/ruby/2.5.0/gems/{sexp_processor-4.11.0 → sexp_processor-4.12.0}/lib/composite_sexp_processor.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{sexp_processor-4.11.0 → sexp_processor-4.12.0}/lib/pt_testcase.rb +2 -2
- data/bundle/ruby/2.5.0/gems/{sexp_processor-4.11.0 → sexp_processor-4.12.0}/lib/sexp.rb +4 -4
- data/bundle/ruby/2.5.0/gems/{sexp_processor-4.11.0 → sexp_processor-4.12.0}/lib/sexp_processor.rb +1 -1
- data/bundle/ruby/2.5.0/gems/{sexp_processor-4.11.0 → sexp_processor-4.12.0}/lib/strict_sexp.rb +3 -3
- data/bundle/ruby/2.5.0/gems/{sexp_processor-4.11.0 → sexp_processor-4.12.0}/lib/unique.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{temple-0.8.0 → temple-0.8.1}/CHANGES +6 -0
- data/bundle/ruby/2.5.0/gems/{temple-0.8.0 → temple-0.8.1}/EXPRESSIONS.md +1 -1
- data/bundle/ruby/2.5.0/gems/{temple-0.8.0 → temple-0.8.1}/Gemfile +0 -0
- data/bundle/ruby/2.5.0/gems/{temple-0.8.0 → temple-0.8.1}/LICENSE +0 -0
- data/bundle/ruby/2.5.0/gems/{temple-0.8.0 → temple-0.8.1}/README.md +1 -1
- data/bundle/ruby/2.5.0/gems/{temple-0.8.0 → temple-0.8.1}/lib/temple.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{temple-0.8.0 → temple-0.8.1}/lib/temple/engine.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{temple-0.8.0 → temple-0.8.1}/lib/temple/erb/engine.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{temple-0.8.0 → temple-0.8.1}/lib/temple/erb/parser.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{temple-0.8.0 → temple-0.8.1}/lib/temple/erb/template.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{temple-0.8.0 → temple-0.8.1}/lib/temple/erb/trimming.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{temple-0.8.0 → temple-0.8.1}/lib/temple/exceptions.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{temple-0.8.0 → temple-0.8.1}/lib/temple/filter.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{temple-0.8.0 → temple-0.8.1}/lib/temple/filters/code_merger.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{temple-0.8.0 → temple-0.8.1}/lib/temple/filters/control_flow.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{temple-0.8.0 → temple-0.8.1}/lib/temple/filters/dynamic_inliner.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{temple-0.8.0 → temple-0.8.1}/lib/temple/filters/encoding.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{temple-0.8.0 → temple-0.8.1}/lib/temple/filters/eraser.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{temple-0.8.0 → temple-0.8.1}/lib/temple/filters/escapable.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{temple-0.8.0 → temple-0.8.1}/lib/temple/filters/multi_flattener.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{temple-0.8.0 → temple-0.8.1}/lib/temple/filters/remove_bom.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{temple-0.8.0 → temple-0.8.1}/lib/temple/filters/static_analyzer.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{temple-0.8.0 → temple-0.8.1}/lib/temple/filters/static_merger.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{temple-0.8.0 → temple-0.8.1}/lib/temple/filters/string_splitter.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{temple-0.8.0 → temple-0.8.1}/lib/temple/filters/validator.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{temple-0.8.0 → temple-0.8.1}/lib/temple/generator.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{temple-0.8.0 → temple-0.8.1}/lib/temple/generators/array.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{temple-0.8.0 → temple-0.8.1}/lib/temple/generators/array_buffer.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{temple-0.8.0 → temple-0.8.1}/lib/temple/generators/erb.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{temple-0.8.0 → temple-0.8.1}/lib/temple/generators/rails_output_buffer.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{temple-0.8.0 → temple-0.8.1}/lib/temple/generators/string_buffer.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{temple-0.8.0 → temple-0.8.1}/lib/temple/grammar.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{temple-0.8.0 → temple-0.8.1}/lib/temple/html/attribute_merger.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{temple-0.8.0 → temple-0.8.1}/lib/temple/html/attribute_remover.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{temple-0.8.0 → temple-0.8.1}/lib/temple/html/attribute_sorter.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{temple-0.8.0 → temple-0.8.1}/lib/temple/html/dispatcher.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{temple-0.8.0 → temple-0.8.1}/lib/temple/html/fast.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{temple-0.8.0 → temple-0.8.1}/lib/temple/html/filter.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{temple-0.8.0 → temple-0.8.1}/lib/temple/html/pretty.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{temple-0.8.0 → temple-0.8.1}/lib/temple/html/safe.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{temple-0.8.0 → temple-0.8.1}/lib/temple/map.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{temple-0.8.0 → temple-0.8.1}/lib/temple/mixins/dispatcher.rb +2 -1
- data/bundle/ruby/2.5.0/gems/{temple-0.8.0 → temple-0.8.1}/lib/temple/mixins/engine_dsl.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{temple-0.8.0 → temple-0.8.1}/lib/temple/mixins/grammar_dsl.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{temple-0.8.0 → temple-0.8.1}/lib/temple/mixins/options.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{temple-0.8.0 → temple-0.8.1}/lib/temple/mixins/template.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{temple-0.8.0 → temple-0.8.1}/lib/temple/parser.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{temple-0.8.0 → temple-0.8.1}/lib/temple/static_analyzer.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{temple-0.8.0 → temple-0.8.1}/lib/temple/templates.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{temple-0.8.0 → temple-0.8.1}/lib/temple/templates/rails.rb +2 -2
- data/bundle/ruby/2.5.0/gems/{temple-0.8.0 → temple-0.8.1}/lib/temple/templates/tilt.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{temple-0.8.0 → temple-0.8.1}/lib/temple/utils.rb +0 -0
- data/bundle/ruby/2.5.0/gems/temple-0.8.1/lib/temple/version.rb +3 -0
- data/bundle/ruby/2.5.0/gems/{temple-0.8.0 → temple-0.8.1}/temple.gemspec +0 -0
- data/bundle/ruby/2.5.0/gems/{unicode-display_width-1.4.1 → unicode-display_width-1.5.0}/CHANGELOG.md +4 -0
- data/bundle/ruby/2.5.0/gems/{unicode-display_width-1.4.1 → unicode-display_width-1.5.0}/MIT-LICENSE.txt +1 -1
- data/bundle/ruby/2.5.0/gems/{unicode-display_width-1.4.1 → unicode-display_width-1.5.0}/README.md +10 -10
- data/bundle/ruby/2.5.0/gems/unicode-display_width-1.5.0/data/display_width.marshal.gz +0 -0
- data/bundle/ruby/2.5.0/gems/{unicode-display_width-1.4.1 → unicode-display_width-1.5.0}/lib/unicode/display_width.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{unicode-display_width-1.4.1 → unicode-display_width-1.5.0}/lib/unicode/display_width/constants.rb +2 -2
- data/bundle/ruby/2.5.0/gems/{unicode-display_width-1.4.1 → unicode-display_width-1.5.0}/lib/unicode/display_width/index.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{unicode-display_width-1.4.1 → unicode-display_width-1.5.0}/lib/unicode/display_width/no_string_ext.rb +0 -0
- data/bundle/ruby/2.5.0/gems/{unicode-display_width-1.4.1 → unicode-display_width-1.5.0}/lib/unicode/display_width/string_ext.rb +0 -0
- data/lib/brakeman/checks/base_check.rb +16 -0
- data/lib/brakeman/checks/check_content_tag.rb +12 -0
- data/lib/brakeman/checks/check_cross_site_scripting.rb +6 -6
- data/lib/brakeman/checks/check_evaluation.rb +0 -1
- data/lib/brakeman/checks/check_execute.rb +18 -0
- data/lib/brakeman/checks/check_send.rb +0 -1
- data/lib/brakeman/checks/check_session_manipulation.rb +0 -1
- data/lib/brakeman/checks/check_sql.rb +12 -3
- data/lib/brakeman/file_parser.rb +8 -4
- data/lib/brakeman/parsers/haml_embedded.rb +44 -0
- data/lib/brakeman/parsers/slim_embedded.rb +44 -0
- data/lib/brakeman/parsers/template_parser.rb +2 -4
- data/lib/brakeman/processors/alias_processor.rb +23 -1
- data/lib/brakeman/processors/lib/call_conversion_helper.rb +4 -0
- data/lib/brakeman/processors/slim_template_processor.rb +16 -0
- data/lib/brakeman/processors/template_alias_processor.rb +2 -2
- data/lib/brakeman/scanner.rb +11 -10
- data/lib/brakeman/tracker.rb +5 -1
- data/lib/brakeman/tracker/config.rb +32 -7
- data/lib/brakeman/util.rb +17 -0
- data/lib/brakeman/version.rb +1 -1
- metadata +157 -320
- data/bundle/ruby/2.5.0/gems/ruby_parser-3.12.0/lib/ruby20_parser.rb +0 -6687
- data/bundle/ruby/2.5.0/gems/ruby_parser-3.12.0/lib/ruby21_parser.rb +0 -6767
- data/bundle/ruby/2.5.0/gems/ruby_parser-3.12.0/lib/ruby22_parser.rb +0 -6803
- data/bundle/ruby/2.5.0/gems/ruby_parser-3.12.0/lib/ruby22_parser.y +0 -2376
- data/bundle/ruby/2.5.0/gems/ruby_parser-3.12.0/lib/ruby23_parser.rb +0 -6818
- data/bundle/ruby/2.5.0/gems/ruby_parser-3.12.0/lib/ruby24_parser.rb +0 -6818
- data/bundle/ruby/2.5.0/gems/ruby_parser-3.12.0/lib/ruby25_parser.rb +0 -6818
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/CODE_OF_CONDUCT.md +0 -10
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/CONTRIBUTING.md +0 -148
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/MIT-LICENSE +0 -20
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/README.md +0 -227
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/REVISION +0 -1
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/VERSION +0 -1
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/VERSION_DATE +0 -1
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/VERSION_NAME +0 -1
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/extra/sass-spec-ref.sh +0 -32
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/extra/update_watch.rb +0 -13
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/init.rb +0 -18
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass.rb +0 -109
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/cache_stores.rb +0 -15
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/cache_stores/base.rb +0 -88
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/cache_stores/chain.rb +0 -34
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/cache_stores/filesystem.rb +0 -60
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/cache_stores/memory.rb +0 -46
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/cache_stores/null.rb +0 -25
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/callbacks.rb +0 -67
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/css.rb +0 -408
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/deprecation.rb +0 -55
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/engine.rb +0 -1226
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/environment.rb +0 -215
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/error.rb +0 -198
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/exec.rb +0 -9
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/exec/base.rb +0 -199
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/exec/sass_convert.rb +0 -283
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/exec/sass_scss.rb +0 -440
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/features.rb +0 -47
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/importers.rb +0 -23
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/importers/base.rb +0 -182
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/importers/deprecated_path.rb +0 -51
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/importers/filesystem.rb +0 -219
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/logger.rb +0 -17
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/logger/base.rb +0 -36
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/logger/delayed.rb +0 -50
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/logger/log_level.rb +0 -45
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/media.rb +0 -210
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/plugin.rb +0 -134
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/plugin/compiler.rb +0 -582
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/plugin/configuration.rb +0 -134
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/plugin/generic.rb +0 -15
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/plugin/merb.rb +0 -48
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/plugin/rack.rb +0 -60
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/plugin/rails.rb +0 -47
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/plugin/staleness_checker.rb +0 -199
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/railtie.rb +0 -10
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/repl.rb +0 -57
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/root.rb +0 -7
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/script.rb +0 -66
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/script/css_lexer.rb +0 -33
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/script/css_parser.rb +0 -33
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/script/css_variable_warning.rb +0 -52
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/script/functions.rb +0 -2693
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/script/lexer.rb +0 -464
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/script/parser.rb +0 -832
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/script/tree.rb +0 -16
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/script/tree/funcall.rb +0 -313
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/script/tree/interpolation.rb +0 -223
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/script/tree/list_literal.rb +0 -104
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/script/tree/literal.rb +0 -49
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/script/tree/map_literal.rb +0 -64
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/script/tree/node.rb +0 -127
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/script/tree/operation.rb +0 -156
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/script/tree/selector.rb +0 -26
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/script/tree/string_interpolation.rb +0 -125
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/script/tree/unary_operation.rb +0 -69
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/script/tree/variable.rb +0 -57
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/script/value.rb +0 -11
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/script/value/arg_list.rb +0 -36
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/script/value/base.rb +0 -241
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/script/value/bool.rb +0 -35
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/script/value/color.rb +0 -698
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/script/value/helpers.rb +0 -272
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/script/value/list.rb +0 -113
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/script/value/map.rb +0 -70
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/script/value/null.rb +0 -44
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/script/value/number.rb +0 -563
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/script/value/string.rb +0 -138
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/scss.rb +0 -14
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/scss/css_parser.rb +0 -56
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/scss/parser.rb +0 -1254
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/scss/rx.rb +0 -140
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/scss/static_parser.rb +0 -373
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/selector.rb +0 -323
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/selector/abstract_sequence.rb +0 -111
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/selector/comma_sequence.rb +0 -191
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/selector/pseudo.rb +0 -266
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/selector/sequence.rb +0 -636
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/selector/simple.rb +0 -117
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/selector/simple_sequence.rb +0 -344
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/shared.rb +0 -76
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/source/map.rb +0 -213
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/source/position.rb +0 -39
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/source/range.rb +0 -41
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/stack.rb +0 -120
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/supports.rb +0 -225
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/tree/at_root_node.rb +0 -83
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/tree/charset_node.rb +0 -22
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/tree/comment_node.rb +0 -82
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/tree/content_node.rb +0 -9
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/tree/css_import_node.rb +0 -68
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/tree/debug_node.rb +0 -18
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/tree/directive_node.rb +0 -59
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/tree/each_node.rb +0 -24
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/tree/error_node.rb +0 -18
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/tree/extend_node.rb +0 -43
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/tree/for_node.rb +0 -36
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/tree/function_node.rb +0 -44
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/tree/if_node.rb +0 -52
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/tree/import_node.rb +0 -75
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/tree/keyframe_rule_node.rb +0 -15
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/tree/media_node.rb +0 -48
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/tree/mixin_def_node.rb +0 -38
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/tree/mixin_node.rb +0 -52
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/tree/node.rb +0 -240
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/tree/prop_node.rb +0 -170
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/tree/return_node.rb +0 -19
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/tree/root_node.rb +0 -44
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/tree/rule_node.rb +0 -155
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/tree/supports_node.rb +0 -38
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/tree/trace_node.rb +0 -33
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/tree/variable_node.rb +0 -36
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/tree/visitors/base.rb +0 -72
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/tree/visitors/check_nesting.rb +0 -173
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/tree/visitors/convert.rb +0 -351
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/tree/visitors/cssize.rb +0 -373
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/tree/visitors/deep_copy.rb +0 -107
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/tree/visitors/extend.rb +0 -70
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/tree/visitors/perform.rb +0 -564
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/tree/visitors/set_options.rb +0 -139
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/tree/visitors/to_css.rb +0 -409
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/tree/warn_node.rb +0 -18
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/tree/while_node.rb +0 -18
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/util.rb +0 -1375
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/util/cross_platform_random.rb +0 -19
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/util/multibyte_string_scanner.rb +0 -155
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/util/normalized_map.rb +0 -129
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/util/ordered_hash.rb +0 -192
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/util/subset_map.rb +0 -109
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/util/test.rb +0 -9
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/lib/sass/version.rb +0 -124
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/rails/init.rb +0 -1
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/vendor/listen/CHANGELOG.md +0 -1
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/vendor/listen/CONTRIBUTING.md +0 -38
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/vendor/listen/Gemfile +0 -20
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/vendor/listen/Guardfile +0 -8
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/vendor/listen/LICENSE +0 -20
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/vendor/listen/README.md +0 -349
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/vendor/listen/Rakefile +0 -5
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/vendor/listen/Vagrantfile +0 -96
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/vendor/listen/lib/listen.rb +0 -54
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/vendor/listen/lib/listen/adapter.rb +0 -327
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/vendor/listen/lib/listen/adapters/bsd.rb +0 -75
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/vendor/listen/lib/listen/adapters/darwin.rb +0 -48
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/vendor/listen/lib/listen/adapters/linux.rb +0 -81
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/vendor/listen/lib/listen/adapters/polling.rb +0 -58
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/vendor/listen/lib/listen/adapters/windows.rb +0 -91
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/vendor/listen/lib/listen/directory_record.rb +0 -406
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/vendor/listen/lib/listen/listener.rb +0 -323
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/vendor/listen/lib/listen/turnstile.rb +0 -32
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/vendor/listen/lib/listen/version.rb +0 -3
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/vendor/listen/listen.gemspec +0 -28
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/vendor/listen/spec/listen/adapter_spec.rb +0 -149
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/vendor/listen/spec/listen/adapters/bsd_spec.rb +0 -36
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/vendor/listen/spec/listen/adapters/darwin_spec.rb +0 -37
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/vendor/listen/spec/listen/adapters/linux_spec.rb +0 -47
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/vendor/listen/spec/listen/adapters/polling_spec.rb +0 -68
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/vendor/listen/spec/listen/adapters/windows_spec.rb +0 -30
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/vendor/listen/spec/listen/directory_record_spec.rb +0 -1250
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/vendor/listen/spec/listen/listener_spec.rb +0 -258
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/vendor/listen/spec/listen/turnstile_spec.rb +0 -56
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/vendor/listen/spec/listen_spec.rb +0 -67
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/vendor/listen/spec/spec_helper.rb +0 -25
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/vendor/listen/spec/support/adapter_helper.rb +0 -666
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/vendor/listen/spec/support/directory_record_helper.rb +0 -57
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/vendor/listen/spec/support/fixtures_helper.rb +0 -29
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/vendor/listen/spec/support/listeners_helper.rb +0 -179
- data/bundle/ruby/2.5.0/gems/sass-3.4.25/vendor/listen/spec/support/platform_helper.rb +0 -15
- data/bundle/ruby/2.5.0/gems/temple-0.8.0/lib/temple/version.rb +0 -3
- data/bundle/ruby/2.5.0/gems/unicode-display_width-1.4.1/data/display_width.marshal.gz +0 -0
@@ -1,19 +0,0 @@
|
|
1
|
-
module Sass
|
2
|
-
module Tree
|
3
|
-
# A dynamic node representing returning from a function.
|
4
|
-
#
|
5
|
-
# @see Sass::Tree
|
6
|
-
class ReturnNode < Node
|
7
|
-
# The expression to return.
|
8
|
-
#
|
9
|
-
# @return [Script::Tree::Node]
|
10
|
-
attr_accessor :expr
|
11
|
-
|
12
|
-
# @param expr [Script::Tree::Node] The expression to return
|
13
|
-
def initialize(expr)
|
14
|
-
@expr = expr
|
15
|
-
super()
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
@@ -1,44 +0,0 @@
|
|
1
|
-
module Sass
|
2
|
-
module Tree
|
3
|
-
# A static node that is the root node of the Sass document.
|
4
|
-
class RootNode < Node
|
5
|
-
# The Sass template from which this node was created
|
6
|
-
#
|
7
|
-
# @param template [String]
|
8
|
-
attr_reader :template
|
9
|
-
|
10
|
-
# @param template [String] The Sass template from which this node was created
|
11
|
-
def initialize(template)
|
12
|
-
super()
|
13
|
-
@template = template
|
14
|
-
end
|
15
|
-
|
16
|
-
# Runs the dynamic Sass code and computes the CSS for the tree.
|
17
|
-
#
|
18
|
-
# @return [String] The compiled CSS.
|
19
|
-
def render
|
20
|
-
css_tree.css
|
21
|
-
end
|
22
|
-
|
23
|
-
# Runs the dynamic Sass code and computes the CSS for the tree, along with
|
24
|
-
# the sourcemap.
|
25
|
-
#
|
26
|
-
# @return [(String, Sass::Source::Map)] The compiled CSS, as well as
|
27
|
-
# the source map. @see #render
|
28
|
-
def render_with_sourcemap
|
29
|
-
css_tree.css_with_sourcemap
|
30
|
-
end
|
31
|
-
|
32
|
-
private
|
33
|
-
|
34
|
-
def css_tree
|
35
|
-
Visitors::CheckNesting.visit(self)
|
36
|
-
result = Visitors::Perform.visit(self)
|
37
|
-
Visitors::CheckNesting.visit(result) # Check again to validate mixins
|
38
|
-
result, extends = Visitors::Cssize.visit(result)
|
39
|
-
Visitors::Extend.visit(result, extends)
|
40
|
-
result
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
@@ -1,155 +0,0 @@
|
|
1
|
-
require 'pathname'
|
2
|
-
|
3
|
-
module Sass::Tree
|
4
|
-
# A static node representing a CSS rule.
|
5
|
-
#
|
6
|
-
# @see Sass::Tree
|
7
|
-
class RuleNode < Node
|
8
|
-
# The character used to include the parent selector
|
9
|
-
PARENT = '&'
|
10
|
-
|
11
|
-
# The CSS selector for this rule,
|
12
|
-
# interspersed with {Sass::Script::Tree::Node}s
|
13
|
-
# representing `#{}`-interpolation.
|
14
|
-
# Any adjacent strings will be merged together.
|
15
|
-
#
|
16
|
-
# @return [Array<String, Sass::Script::Tree::Node>]
|
17
|
-
attr_accessor :rule
|
18
|
-
|
19
|
-
# The CSS selector for this rule, without any unresolved
|
20
|
-
# interpolation but with parent references still intact. It's only
|
21
|
-
# guaranteed to be set once {Tree::Visitors::Perform} has been
|
22
|
-
# run, but it may be set before then for optimization reasons.
|
23
|
-
#
|
24
|
-
# @return [Selector::CommaSequence]
|
25
|
-
attr_accessor :parsed_rules
|
26
|
-
|
27
|
-
# The CSS selector for this rule, without any unresolved
|
28
|
-
# interpolation or parent references. It's only set once
|
29
|
-
# {Tree::Visitors::Perform} has been run.
|
30
|
-
#
|
31
|
-
# @return [Selector::CommaSequence]
|
32
|
-
attr_accessor :resolved_rules
|
33
|
-
|
34
|
-
# How deep this rule is indented
|
35
|
-
# relative to a base-level rule.
|
36
|
-
# This is only greater than 0 in the case that:
|
37
|
-
#
|
38
|
-
# * This node is in a CSS tree
|
39
|
-
# * The style is :nested
|
40
|
-
# * This is a child rule of another rule
|
41
|
-
# * The parent rule has properties, and thus will be rendered
|
42
|
-
#
|
43
|
-
# @return [Integer]
|
44
|
-
attr_accessor :tabs
|
45
|
-
|
46
|
-
# The entire selector source range for this rule.
|
47
|
-
# @return [Sass::Source::Range]
|
48
|
-
attr_accessor :selector_source_range
|
49
|
-
|
50
|
-
# Whether or not this rule is the last rule in a nested group.
|
51
|
-
# This is only set in a CSS tree.
|
52
|
-
#
|
53
|
-
# @return [Boolean]
|
54
|
-
attr_accessor :group_end
|
55
|
-
|
56
|
-
# The stack trace.
|
57
|
-
# This is only readable in a CSS tree as it is written during the perform step
|
58
|
-
# and only when the :trace_selectors option is set.
|
59
|
-
#
|
60
|
-
# @return [String]
|
61
|
-
attr_accessor :stack_trace
|
62
|
-
|
63
|
-
# @param rule [Array<String, Sass::Script::Tree::Node>, Sass::Selector::CommaSequence]
|
64
|
-
# The CSS rule, either unparsed or parsed.
|
65
|
-
# @param selector_source_range [Sass::Source::Range]
|
66
|
-
def initialize(rule, selector_source_range = nil)
|
67
|
-
if rule.is_a?(Sass::Selector::CommaSequence)
|
68
|
-
@rule = [rule.to_s]
|
69
|
-
@parsed_rules = rule
|
70
|
-
else
|
71
|
-
merged = Sass::Util.merge_adjacent_strings(rule)
|
72
|
-
@rule = Sass::Util.strip_string_array(merged)
|
73
|
-
try_to_parse_non_interpolated_rules
|
74
|
-
end
|
75
|
-
@selector_source_range = selector_source_range
|
76
|
-
@tabs = 0
|
77
|
-
super()
|
78
|
-
end
|
79
|
-
|
80
|
-
# If we've precached the parsed selector, set the line on it, too.
|
81
|
-
def line=(line)
|
82
|
-
@parsed_rules.line = line if @parsed_rules
|
83
|
-
super
|
84
|
-
end
|
85
|
-
|
86
|
-
# If we've precached the parsed selector, set the filename on it, too.
|
87
|
-
def filename=(filename)
|
88
|
-
@parsed_rules.filename = filename if @parsed_rules
|
89
|
-
super
|
90
|
-
end
|
91
|
-
|
92
|
-
# Compares the contents of two rules.
|
93
|
-
#
|
94
|
-
# @param other [Object] The object to compare with
|
95
|
-
# @return [Boolean] Whether or not this node and the other object
|
96
|
-
# are the same
|
97
|
-
def ==(other)
|
98
|
-
self.class == other.class && rule == other.rule && super
|
99
|
-
end
|
100
|
-
|
101
|
-
# Adds another {RuleNode}'s rules to this one's.
|
102
|
-
#
|
103
|
-
# @param node [RuleNode] The other node
|
104
|
-
def add_rules(node)
|
105
|
-
@rule = Sass::Util.strip_string_array(
|
106
|
-
Sass::Util.merge_adjacent_strings(@rule + ["\n"] + node.rule))
|
107
|
-
try_to_parse_non_interpolated_rules
|
108
|
-
end
|
109
|
-
|
110
|
-
# @return [Boolean] Whether or not this rule is continued on the next line
|
111
|
-
def continued?
|
112
|
-
last = @rule.last
|
113
|
-
last.is_a?(String) && last[-1] == ?,
|
114
|
-
end
|
115
|
-
|
116
|
-
# A hash that will be associated with this rule in the CSS document
|
117
|
-
# if the {file:SASS_REFERENCE.md#debug_info-option `:debug_info` option} is enabled.
|
118
|
-
# This data is used by e.g. [the FireSass Firebug
|
119
|
-
# extension](https://addons.mozilla.org/en-US/firefox/addon/103988).
|
120
|
-
#
|
121
|
-
# @return [{#to_s => #to_s}]
|
122
|
-
def debug_info
|
123
|
-
{:filename => filename && ("file://" + Sass::Util.escape_uri(File.expand_path(filename))),
|
124
|
-
:line => line}
|
125
|
-
end
|
126
|
-
|
127
|
-
# A rule node is invisible if it has only placeholder selectors.
|
128
|
-
def invisible?
|
129
|
-
resolved_rules.members.all? {|seq| seq.has_placeholder?}
|
130
|
-
end
|
131
|
-
|
132
|
-
private
|
133
|
-
|
134
|
-
def try_to_parse_non_interpolated_rules
|
135
|
-
@parsed_rules = nil
|
136
|
-
return unless @rule.all? {|t| t.is_a?(String)}
|
137
|
-
|
138
|
-
# We don't use real filename/line info because we don't have it yet.
|
139
|
-
# When we get it, we'll set it on the parsed rules if possible.
|
140
|
-
parser = nil
|
141
|
-
warnings = Sass::Util.silence_warnings do
|
142
|
-
parser = Sass::SCSS::StaticParser.new(@rule.join.strip, nil, nil, 1)
|
143
|
-
# rubocop:disable RescueModifier
|
144
|
-
@parsed_rules = parser.parse_selector rescue nil
|
145
|
-
# rubocop:enable RescueModifier
|
146
|
-
|
147
|
-
$stderr.string
|
148
|
-
end
|
149
|
-
|
150
|
-
# If parsing produces a warning, throw away the result so we can parse
|
151
|
-
# later with the real filename info.
|
152
|
-
@parsed_rules = nil unless warnings.empty?
|
153
|
-
end
|
154
|
-
end
|
155
|
-
end
|
@@ -1,38 +0,0 @@
|
|
1
|
-
module Sass::Tree
|
2
|
-
# A static node representing a `@supports` rule.
|
3
|
-
#
|
4
|
-
# @see Sass::Tree
|
5
|
-
class SupportsNode < DirectiveNode
|
6
|
-
# The name, which may include a browser prefix.
|
7
|
-
#
|
8
|
-
# @return [String]
|
9
|
-
attr_accessor :name
|
10
|
-
|
11
|
-
# The supports condition.
|
12
|
-
#
|
13
|
-
# @return [Sass::Supports::Condition]
|
14
|
-
attr_accessor :condition
|
15
|
-
|
16
|
-
# @param condition [Sass::Supports::Condition] See \{#condition}
|
17
|
-
def initialize(name, condition)
|
18
|
-
@name = name
|
19
|
-
@condition = condition
|
20
|
-
super('')
|
21
|
-
end
|
22
|
-
|
23
|
-
# @see DirectiveNode#value
|
24
|
-
def value; raise NotImplementedError; end
|
25
|
-
|
26
|
-
# @see DirectiveNode#resolved_value
|
27
|
-
def resolved_value
|
28
|
-
@resolved_value ||= "@#{name} #{condition.to_css}"
|
29
|
-
end
|
30
|
-
|
31
|
-
# True when the directive has no visible children.
|
32
|
-
#
|
33
|
-
# @return [Boolean]
|
34
|
-
def invisible?
|
35
|
-
children.all? {|c| c.invisible?}
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
@@ -1,33 +0,0 @@
|
|
1
|
-
require 'sass/tree/node'
|
2
|
-
|
3
|
-
module Sass::Tree
|
4
|
-
# A solely static node left over after a mixin include or @content has been performed.
|
5
|
-
# Its sole purpose is to wrap exceptions to add to the backtrace.
|
6
|
-
#
|
7
|
-
# @see Sass::Tree
|
8
|
-
class TraceNode < Node
|
9
|
-
# The name of the trace entry to add.
|
10
|
-
#
|
11
|
-
# @return [String]
|
12
|
-
attr_reader :name
|
13
|
-
|
14
|
-
# @param name [String] The name of the trace entry to add.
|
15
|
-
def initialize(name)
|
16
|
-
@name = name
|
17
|
-
self.has_children = true
|
18
|
-
super()
|
19
|
-
end
|
20
|
-
|
21
|
-
# Initializes this node from an existing node.
|
22
|
-
# @param name [String] The name of the trace entry to add.
|
23
|
-
# @param node [Node] The node to copy information from.
|
24
|
-
# @return [TraceNode]
|
25
|
-
def self.from_node(name, node)
|
26
|
-
trace = new(name)
|
27
|
-
trace.line = node.line
|
28
|
-
trace.filename = node.filename
|
29
|
-
trace.options = node.options
|
30
|
-
trace
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
@@ -1,36 +0,0 @@
|
|
1
|
-
module Sass
|
2
|
-
module Tree
|
3
|
-
# A dynamic node representing a variable definition.
|
4
|
-
#
|
5
|
-
# @see Sass::Tree
|
6
|
-
class VariableNode < Node
|
7
|
-
# The name of the variable.
|
8
|
-
# @return [String]
|
9
|
-
attr_reader :name
|
10
|
-
|
11
|
-
# The parse tree for the variable value.
|
12
|
-
# @return [Script::Tree::Node]
|
13
|
-
attr_accessor :expr
|
14
|
-
|
15
|
-
# Whether this is a guarded variable assignment (`!default`).
|
16
|
-
# @return [Boolean]
|
17
|
-
attr_reader :guarded
|
18
|
-
|
19
|
-
# Whether this is a global variable assignment (`!global`).
|
20
|
-
# @return [Boolean]
|
21
|
-
attr_reader :global
|
22
|
-
|
23
|
-
# @param name [String] The name of the variable
|
24
|
-
# @param expr [Script::Tree::Node] See \{#expr}
|
25
|
-
# @param guarded [Boolean] See \{#guarded}
|
26
|
-
# @param global [Boolean] See \{#global}
|
27
|
-
def initialize(name, expr, guarded, global)
|
28
|
-
@name = name
|
29
|
-
@expr = expr
|
30
|
-
@guarded = guarded
|
31
|
-
@global = global
|
32
|
-
super()
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
@@ -1,72 +0,0 @@
|
|
1
|
-
# Visitors are used to traverse the Sass parse tree.
|
2
|
-
# Visitors should extend {Visitors::Base},
|
3
|
-
# which provides a small amount of scaffolding for traversal.
|
4
|
-
module Sass::Tree::Visitors
|
5
|
-
# The abstract base class for Sass visitors.
|
6
|
-
# Visitors should extend this class,
|
7
|
-
# then implement `visit_*` methods for each node they care about
|
8
|
-
# (e.g. `visit_rule` for {RuleNode} or `visit_for` for {ForNode}).
|
9
|
-
# These methods take the node in question as argument.
|
10
|
-
# They may `yield` to visit the child nodes of the current node.
|
11
|
-
#
|
12
|
-
# *Note*: due to the unusual nature of {Sass::Tree::IfNode},
|
13
|
-
# special care must be taken to ensure that it is properly handled.
|
14
|
-
# In particular, there is no built-in scaffolding
|
15
|
-
# for dealing with the return value of `@else` nodes.
|
16
|
-
#
|
17
|
-
# @abstract
|
18
|
-
class Base
|
19
|
-
# Runs the visitor on a tree.
|
20
|
-
#
|
21
|
-
# @param root [Tree::Node] The root node of the Sass tree.
|
22
|
-
# @return [Object] The return value of \{#visit} for the root node.
|
23
|
-
def self.visit(root)
|
24
|
-
new.send(:visit, root)
|
25
|
-
end
|
26
|
-
|
27
|
-
protected
|
28
|
-
|
29
|
-
# Runs the visitor on the given node.
|
30
|
-
# This can be overridden by subclasses that need to do something for each node.
|
31
|
-
#
|
32
|
-
# @param node [Tree::Node] The node to visit.
|
33
|
-
# @return [Object] The return value of the `visit_*` method for this node.
|
34
|
-
def visit(node)
|
35
|
-
if respond_to?(node.class.visit_method, true)
|
36
|
-
send(node.class.visit_method, node) {visit_children(node)}
|
37
|
-
else
|
38
|
-
visit_children(node)
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
# Visit the child nodes for a given node.
|
43
|
-
# This can be overridden by subclasses that need to do something
|
44
|
-
# with the child nodes' return values.
|
45
|
-
#
|
46
|
-
# This method is run when `visit_*` methods `yield`,
|
47
|
-
# and its return value is returned from the `yield`.
|
48
|
-
#
|
49
|
-
# @param parent [Tree::Node] The parent node of the children to visit.
|
50
|
-
# @return [Array<Object>] The return values of the `visit_*` methods for the children.
|
51
|
-
def visit_children(parent)
|
52
|
-
parent.children.map {|c| visit(c)}
|
53
|
-
end
|
54
|
-
|
55
|
-
# Returns the name of a node as used in the `visit_*` method.
|
56
|
-
#
|
57
|
-
# @param [Tree::Node] node The node.
|
58
|
-
# @return [String] The name.
|
59
|
-
def self.node_name(node)
|
60
|
-
Sass::Util.deprecated(self, "Call node.class.node_name instead.")
|
61
|
-
node.class.node_name
|
62
|
-
end
|
63
|
-
|
64
|
-
# `yield`s, then runs the visitor on the `@else` clause if the node has one.
|
65
|
-
# This exists to ensure that the contents of the `@else` clause get visited.
|
66
|
-
def visit_if(node)
|
67
|
-
yield
|
68
|
-
visit(node.else) if node.else
|
69
|
-
node
|
70
|
-
end
|
71
|
-
end
|
72
|
-
end
|
@@ -1,173 +0,0 @@
|
|
1
|
-
# A visitor for checking that all nodes are properly nested.
|
2
|
-
class Sass::Tree::Visitors::CheckNesting < Sass::Tree::Visitors::Base
|
3
|
-
protected
|
4
|
-
|
5
|
-
def initialize
|
6
|
-
@parents = []
|
7
|
-
@parent = nil
|
8
|
-
@current_mixin_def = nil
|
9
|
-
end
|
10
|
-
|
11
|
-
def visit(node)
|
12
|
-
if (error = @parent && (
|
13
|
-
try_send(@parent.class.invalid_child_method_name, @parent, node) ||
|
14
|
-
try_send(node.class.invalid_parent_method_name, @parent, node)))
|
15
|
-
raise Sass::SyntaxError.new(error)
|
16
|
-
end
|
17
|
-
super
|
18
|
-
rescue Sass::SyntaxError => e
|
19
|
-
e.modify_backtrace(:filename => node.filename, :line => node.line)
|
20
|
-
raise e
|
21
|
-
end
|
22
|
-
|
23
|
-
CONTROL_NODES = [Sass::Tree::EachNode, Sass::Tree::ForNode, Sass::Tree::IfNode,
|
24
|
-
Sass::Tree::WhileNode, Sass::Tree::TraceNode]
|
25
|
-
SCRIPT_NODES = [Sass::Tree::ImportNode] + CONTROL_NODES
|
26
|
-
def visit_children(parent)
|
27
|
-
old_parent = @parent
|
28
|
-
|
29
|
-
# When checking a static tree, resolve at-roots to be sure they won't send
|
30
|
-
# nodes where they don't belong.
|
31
|
-
if parent.is_a?(Sass::Tree::AtRootNode) && parent.resolved_value
|
32
|
-
old_parents = @parents
|
33
|
-
@parents = @parents.reject {|p| parent.exclude_node?(p)}
|
34
|
-
@parent = Sass::Util.enum_with_index(@parents.reverse).
|
35
|
-
find {|p, i| !transparent_parent?(p, @parents[-i - 2])}.first
|
36
|
-
|
37
|
-
begin
|
38
|
-
return super
|
39
|
-
ensure
|
40
|
-
@parents = old_parents
|
41
|
-
@parent = old_parent
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
unless transparent_parent?(parent, old_parent)
|
46
|
-
@parent = parent
|
47
|
-
end
|
48
|
-
|
49
|
-
@parents.push parent
|
50
|
-
begin
|
51
|
-
super
|
52
|
-
ensure
|
53
|
-
@parent = old_parent
|
54
|
-
@parents.pop
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
def visit_root(node)
|
59
|
-
yield
|
60
|
-
rescue Sass::SyntaxError => e
|
61
|
-
e.sass_template ||= node.template
|
62
|
-
raise e
|
63
|
-
end
|
64
|
-
|
65
|
-
def visit_import(node)
|
66
|
-
yield
|
67
|
-
rescue Sass::SyntaxError => e
|
68
|
-
e.modify_backtrace(:filename => node.children.first.filename)
|
69
|
-
e.add_backtrace(:filename => node.filename, :line => node.line)
|
70
|
-
raise e
|
71
|
-
end
|
72
|
-
|
73
|
-
def visit_mixindef(node)
|
74
|
-
@current_mixin_def, old_mixin_def = node, @current_mixin_def
|
75
|
-
yield
|
76
|
-
ensure
|
77
|
-
@current_mixin_def = old_mixin_def
|
78
|
-
end
|
79
|
-
|
80
|
-
def invalid_content_parent?(parent, child)
|
81
|
-
if @current_mixin_def
|
82
|
-
@current_mixin_def.has_content = true
|
83
|
-
nil
|
84
|
-
else
|
85
|
-
"@content may only be used within a mixin."
|
86
|
-
end
|
87
|
-
end
|
88
|
-
|
89
|
-
def invalid_charset_parent?(parent, child)
|
90
|
-
"@charset may only be used at the root of a document." unless parent.is_a?(Sass::Tree::RootNode)
|
91
|
-
end
|
92
|
-
|
93
|
-
VALID_EXTEND_PARENTS = [Sass::Tree::RuleNode, Sass::Tree::MixinDefNode, Sass::Tree::MixinNode]
|
94
|
-
def invalid_extend_parent?(parent, child)
|
95
|
-
return if is_any_of?(parent, VALID_EXTEND_PARENTS)
|
96
|
-
"Extend directives may only be used within rules."
|
97
|
-
end
|
98
|
-
|
99
|
-
INVALID_IMPORT_PARENTS = CONTROL_NODES +
|
100
|
-
[Sass::Tree::MixinDefNode, Sass::Tree::MixinNode]
|
101
|
-
def invalid_import_parent?(parent, child)
|
102
|
-
unless (@parents.map {|p| p.class} & INVALID_IMPORT_PARENTS).empty?
|
103
|
-
return "Import directives may not be used within control directives or mixins."
|
104
|
-
end
|
105
|
-
return if parent.is_a?(Sass::Tree::RootNode)
|
106
|
-
return "CSS import directives may only be used at the root of a document." if child.css_import?
|
107
|
-
rescue Sass::SyntaxError => e
|
108
|
-
e.modify_backtrace(:filename => child.imported_file.options[:filename])
|
109
|
-
e.add_backtrace(:filename => child.filename, :line => child.line)
|
110
|
-
raise e
|
111
|
-
end
|
112
|
-
|
113
|
-
def invalid_mixindef_parent?(parent, child)
|
114
|
-
return if (@parents.map {|p| p.class} & INVALID_IMPORT_PARENTS).empty?
|
115
|
-
"Mixins may not be defined within control directives or other mixins."
|
116
|
-
end
|
117
|
-
|
118
|
-
def invalid_function_parent?(parent, child)
|
119
|
-
return if (@parents.map {|p| p.class} & INVALID_IMPORT_PARENTS).empty?
|
120
|
-
"Functions may not be defined within control directives or other mixins."
|
121
|
-
end
|
122
|
-
|
123
|
-
VALID_FUNCTION_CHILDREN = [
|
124
|
-
Sass::Tree::CommentNode, Sass::Tree::DebugNode, Sass::Tree::ReturnNode,
|
125
|
-
Sass::Tree::VariableNode, Sass::Tree::WarnNode, Sass::Tree::ErrorNode
|
126
|
-
] + CONTROL_NODES
|
127
|
-
def invalid_function_child?(parent, child)
|
128
|
-
return if is_any_of?(child, VALID_FUNCTION_CHILDREN)
|
129
|
-
"Functions can only contain variable declarations and control directives."
|
130
|
-
end
|
131
|
-
|
132
|
-
VALID_PROP_CHILDREN = CONTROL_NODES + [Sass::Tree::CommentNode,
|
133
|
-
Sass::Tree::PropNode,
|
134
|
-
Sass::Tree::MixinNode]
|
135
|
-
def invalid_prop_child?(parent, child)
|
136
|
-
return if is_any_of?(child, VALID_PROP_CHILDREN)
|
137
|
-
"Illegal nesting: Only properties may be nested beneath properties."
|
138
|
-
end
|
139
|
-
|
140
|
-
VALID_PROP_PARENTS = [Sass::Tree::RuleNode, Sass::Tree::KeyframeRuleNode, Sass::Tree::PropNode,
|
141
|
-
Sass::Tree::MixinDefNode, Sass::Tree::DirectiveNode, Sass::Tree::MixinNode]
|
142
|
-
def invalid_prop_parent?(parent, child)
|
143
|
-
return if is_any_of?(parent, VALID_PROP_PARENTS)
|
144
|
-
"Properties are only allowed within rules, directives, mixin includes, or other properties." +
|
145
|
-
child.pseudo_class_selector_message
|
146
|
-
end
|
147
|
-
|
148
|
-
def invalid_return_parent?(parent, child)
|
149
|
-
"@return may only be used within a function." unless parent.is_a?(Sass::Tree::FunctionNode)
|
150
|
-
end
|
151
|
-
|
152
|
-
private
|
153
|
-
|
154
|
-
# Whether `parent` should be assigned to `@parent`.
|
155
|
-
def transparent_parent?(parent, grandparent)
|
156
|
-
is_any_of?(parent, SCRIPT_NODES) ||
|
157
|
-
(parent.bubbles? &&
|
158
|
-
!grandparent.is_a?(Sass::Tree::RootNode) &&
|
159
|
-
!grandparent.is_a?(Sass::Tree::AtRootNode))
|
160
|
-
end
|
161
|
-
|
162
|
-
def is_any_of?(val, classes)
|
163
|
-
classes.each do |c|
|
164
|
-
return true if val.is_a?(c)
|
165
|
-
end
|
166
|
-
false
|
167
|
-
end
|
168
|
-
|
169
|
-
def try_send(method, *args)
|
170
|
-
return unless respond_to?(method, true)
|
171
|
-
send(method, *args)
|
172
|
-
end
|
173
|
-
end
|