zuora_connect_ui 0.8.2 → 0.8.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/javascripts/zuora_connect_ui.js +1 -0
- data/app/assets/javascripts/zuora_connect_ui/util.js +51 -0
- data/app/assets/stylesheets/_zuora_connect_ui.scss +4 -6
- data/app/assets/stylesheets/zuora_connect_ui/datatables.scss +3 -3
- data/app/helpers/zuora_connect_ui/application_helper.rb +28 -4
- data/app/views/partials/_table.html.erb +16 -7
- data/lib/zuora_connect_ui/version.rb +1 -1
- data/vendor/ruby/2.6.0/cache/autoprefixer-rails-9.6.1.1.gem +0 -0
- data/vendor/ruby/2.6.0/cache/parser-2.6.4.1.gem +0 -0
- data/vendor/ruby/2.6.0/cache/sassc-2.2.0.gem +0 -0
- data/vendor/ruby/2.6.0/cache/zeitwerk-2.1.10.gem +0 -0
- data/vendor/ruby/2.6.0/extensions/x86_64-linux/2.6.0/sassc-2.2.0/gem.build_complete +0 -0
- data/vendor/ruby/2.6.0/extensions/x86_64-linux/2.6.0/sassc-2.2.0/gem_make.out +75 -0
- data/vendor/ruby/2.6.0/extensions/x86_64-linux/2.6.0/sassc-2.2.0/sassc/libsass.so +0 -0
- data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/CHANGELOG.md +1085 -0
- data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/Gemfile +10 -0
- data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/LICENSE +20 -0
- data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/README.md +237 -0
- data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/Rakefile +53 -0
- data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/autoprefixer-rails.gemspec +32 -0
- data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/lib/autoprefixer-rails.rb +41 -0
- data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/lib/autoprefixer-rails/processor.rb +194 -0
- data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/lib/autoprefixer-rails/railtie.rb +50 -0
- data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/lib/autoprefixer-rails/result.rb +24 -0
- data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/lib/autoprefixer-rails/sprockets.rb +62 -0
- data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/lib/autoprefixer-rails/version.rb +3 -0
- data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/lib/rake/autoprefixer_tasks.rb +28 -0
- data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/spec/app/Rakefile +2 -0
- data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/spec/app/app/assets/config/manifest.js +0 -0
- data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/spec/app/app/assets/stylesheets/evaluate.css.erb +1 -0
- data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/spec/app/app/assets/stylesheets/loaded.sass +2 -0
- data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/spec/app/app/assets/stylesheets/sass.sass +1 -0
- data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/spec/app/app/assets/stylesheets/test.css +3 -0
- data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/spec/app/app/assets/stylesheets/wrong.css +2 -0
- data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/spec/app/app/controllers/application_controller.rb +2 -0
- data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/spec/app/app/controllers/css_controller.rb +6 -0
- data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/spec/app/config.ru +2 -0
- data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/spec/app/config/application.rb +16 -0
- data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/spec/app/config/autoprefixer.yml +2 -0
- data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/spec/app/config/boot.rb +2 -0
- data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/spec/app/config/environment.rb +3 -0
- data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/spec/app/config/environments/test.rb +9 -0
- data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/spec/app/config/initializers/secret_token.rb +1 -0
- data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/spec/app/config/routes.rb +3 -0
- data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/spec/autoprefixer_spec.rb +121 -0
- data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/spec/processor_spec.rb +25 -0
- data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/spec/rails_spec.rb +40 -0
- data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/spec/railtie_spec.rb +29 -0
- data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/spec/spec_helper.rb +16 -0
- data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/vendor/autoprefixer.js +67195 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/CHANGELOG.md +909 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/CONTRIBUTING.md +17 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/Gemfile +10 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/LICENSE.txt +25 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/README.md +301 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/Rakefile +166 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/bin/ruby-parse +7 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/bin/ruby-rewrite +7 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/ci/run_rubocop_specs +14 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/doc/AST_FORMAT.md +1816 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/doc/CUSTOMIZATION.md +37 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/doc/INTERNALS.md +21 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/doc/css/common.css +68 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/gauntlet_parser.rb +123 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser.rb +82 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/all.rb +12 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/ast/node.rb +40 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/ast/processor.rb +264 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/base.rb +270 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/builders/default.rb +1741 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/clobbering_error.rb +13 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/color.rb +32 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/context.rb +59 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/current.rb +92 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/deprecation.rb +13 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/diagnostic.rb +163 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/diagnostic/engine.rb +105 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/lexer.rb +23546 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/lexer.rl +2503 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/lexer/dedenter.rb +79 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/lexer/explanation.rb +55 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/lexer/literal.rb +269 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/lexer/max_numparam_stack.rb +42 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/lexer/stack_state.rb +49 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/macruby.rb +6124 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/macruby.y +2198 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/messages.rb +90 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/meta.rb +33 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/rewriter.rb +105 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/ruby18.rb +5661 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/ruby18.y +1934 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/ruby19.rb +6084 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/ruby19.y +2175 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/ruby20.rb +6511 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/ruby20.y +2353 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/ruby21.rb +6570 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/ruby21.y +2357 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/ruby22.rb +6605 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/ruby22.y +2364 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/ruby23.rb +6624 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/ruby23.y +2370 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/ruby24.rb +6689 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/ruby24.y +2408 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/ruby25.rb +6656 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/ruby25.y +2405 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/ruby26.rb +6670 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/ruby26.y +2413 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/ruby27.rb +6893 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/ruby27.y +2470 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/rubymotion.rb +6078 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/rubymotion.y +2182 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/runner.rb +253 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/runner/ruby_parse.rb +157 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/runner/ruby_rewrite.rb +101 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/source/buffer.rb +330 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/source/comment.rb +121 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/source/comment/associator.rb +210 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/source/map.rb +186 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/source/map/collection.rb +18 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/source/map/condition.rb +21 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/source/map/constant.rb +32 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/source/map/definition.rb +23 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/source/map/for.rb +19 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/source/map/heredoc.rb +19 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/source/map/index.rb +33 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/source/map/keyword.rb +20 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/source/map/objc_kwarg.rb +19 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/source/map/operator.rb +17 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/source/map/rescue_body.rb +21 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/source/map/send.rb +36 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/source/map/ternary.rb +18 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/source/map/variable.rb +31 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/source/range.rb +310 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/source/rewriter.rb +513 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/source/rewriter/action.rb +44 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/source/tree_rewriter.rb +301 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/source/tree_rewriter/action.rb +133 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/static_environment.rb +46 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/syntax_error.rb +21 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/tree_rewriter.rb +134 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/version.rb +5 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/parser.gemspec +51 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/test/bug_163/fixtures/input.rb +5 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/test/bug_163/fixtures/output.rb +5 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/test/bug_163/rewriter.rb +20 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/test/helper.rb +59 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/test/parse_helper.rb +316 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/test/racc_coverage_helper.rb +133 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/test/test_base.rb +31 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/test/test_current.rb +29 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/test/test_diagnostic.rb +96 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/test/test_diagnostic_engine.rb +62 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/test/test_encoding.rb +99 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/test/test_lexer.rb +3659 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/test/test_lexer_stack_state.rb +78 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/test/test_parse_helper.rb +80 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/test/test_parser.rb +7579 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/test/test_runner_parse.rb +35 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/test/test_runner_rewrite.rb +47 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/test/test_source_buffer.rb +162 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/test/test_source_comment.rb +36 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/test/test_source_comment_associator.rb +367 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/test/test_source_map.rb +15 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/test/test_source_range.rb +172 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/test/test_source_rewriter.rb +541 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/test/test_source_rewriter_action.rb +46 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/test/test_source_tree_rewriter.rb +173 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/test/test_static_environment.rb +45 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/test/using_tree_rewriter/fixtures/input.rb +3 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/test/using_tree_rewriter/fixtures/output.rb +3 -0
- data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/test/using_tree_rewriter/using_tree_rewriter.rb +9 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/CHANGELOG.md +77 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/CODE_OF_CONDUCT.md +10 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/Gemfile +2 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/LICENSE.txt +22 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/README.md +68 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/Rakefile +53 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/Makefile +271 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/SharedPtr.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/ast.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/ast2c.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/ast_fwd_decl.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/ast_sel_cmp.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/ast_sel_unify.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/ast_selectors.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/ast_supports.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/ast_values.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/backtrace.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/base64vlq.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/bind.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/c2ast.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/c99func.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/cencode.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/check_nesting.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/color_maps.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/constants.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/context.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/cssize.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/depend +4 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/emitter.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/environment.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/error_handling.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/eval.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/expand.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/extconf.rb +84 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/extend.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/file.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/fn_colors.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/fn_lists.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/fn_maps.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/fn_miscs.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/fn_numbers.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/fn_selectors.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/fn_strings.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/fn_utils.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/inspect.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/json.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/lexer.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass.so +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/VERSION +1 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/contrib/plugin.cpp +60 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/include/sass.h +15 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/include/sass/base.h +96 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/include/sass/context.h +170 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/include/sass/functions.h +139 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/include/sass/values.h +145 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/include/sass/version.h +12 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/include/sass2scss.h +120 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/ast.cpp +963 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/ast.hpp +905 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/ast2c.cpp +80 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/ast2c.hpp +39 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/ast_def_macros.hpp +132 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/ast_fwd_decl.cpp +30 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/ast_fwd_decl.hpp +341 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/ast_sel_cmp.cpp +909 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/ast_sel_unify.cpp +280 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/ast_selectors.cpp +1475 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/ast_selectors.hpp +568 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/ast_supports.cpp +130 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/ast_supports.hpp +121 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/ast_values.cpp +967 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/ast_values.hpp +489 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/b64/cencode.h +32 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/b64/encode.h +79 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/backtrace.cpp +50 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/backtrace.hpp +29 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/base64vlq.cpp +47 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/base64vlq.hpp +30 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/bind.cpp +312 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/bind.hpp +15 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/c2ast.cpp +64 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/c2ast.hpp +14 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/c99func.c +54 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/cencode.c +108 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/check_nesting.cpp +394 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/check_nesting.hpp +66 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/color_maps.cpp +651 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/color_maps.hpp +331 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/constants.cpp +194 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/constants.hpp +194 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/context.cpp +890 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/context.hpp +152 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/cssize.cpp +604 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/cssize.hpp +77 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/debug.hpp +43 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/debugger.hpp +807 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/emitter.cpp +298 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/emitter.hpp +103 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/environment.cpp +260 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/environment.hpp +119 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/error_handling.cpp +212 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/error_handling.hpp +229 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/eval.cpp +1657 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/eval.hpp +112 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/expand.cpp +822 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/expand.hpp +78 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/extend.cpp +2132 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/extend.hpp +86 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/file.cpp +522 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/file.hpp +133 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/fn_colors.cpp +594 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/fn_colors.hpp +85 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/fn_lists.cpp +284 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/fn_lists.hpp +34 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/fn_maps.cpp +94 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/fn_maps.hpp +30 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/fn_miscs.cpp +256 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/fn_miscs.hpp +40 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/fn_numbers.cpp +220 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/fn_numbers.hpp +45 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/fn_selectors.cpp +235 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/fn_selectors.hpp +35 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/fn_strings.cpp +254 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/fn_strings.hpp +34 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/fn_utils.cpp +156 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/fn_utils.hpp +56 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/inspect.cpp +1087 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/inspect.hpp +99 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/json.cpp +1436 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/json.hpp +117 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/kwd_arg_macros.hpp +28 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/lexer.cpp +184 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/lexer.hpp +315 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/listize.cpp +84 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/listize.hpp +38 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/mapping.hpp +18 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/memory/SharedPtr.cpp +33 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/memory/SharedPtr.hpp +286 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/node.cpp +322 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/node.hpp +118 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/operation.hpp +213 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/operators.cpp +266 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/operators.hpp +30 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/output.cpp +339 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/output.hpp +47 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/parser.cpp +3153 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/parser.hpp +402 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/paths.hpp +71 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/plugins.cpp +188 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/plugins.hpp +57 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/position.cpp +184 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/position.hpp +124 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/prelexer.cpp +1780 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/prelexer.hpp +484 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/remove_placeholders.cpp +87 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/remove_placeholders.hpp +34 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/sass.cpp +155 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/sass.hpp +142 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/sass2scss.cpp +895 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/sass_context.cpp +772 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/sass_context.hpp +129 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/sass_functions.cpp +210 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/sass_functions.hpp +50 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/sass_util.cpp +152 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/sass_util.hpp +256 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/sass_values.cpp +365 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/sass_values.hpp +82 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/source_map.cpp +198 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/source_map.hpp +62 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/subset_map.cpp +58 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/subset_map.hpp +76 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/to_value.cpp +114 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/to_value.hpp +46 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/units.cpp +505 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/units.hpp +110 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/utf8.h +34 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/utf8/checked.h +336 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/utf8/core.h +332 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/utf8/unchecked.h +235 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/utf8_string.cpp +105 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/utf8_string.hpp +37 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/util.cpp +725 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/util.hpp +106 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/util_string.cpp +75 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/util_string.hpp +19 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/values.cpp +140 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/values.hpp +12 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/listize.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/node.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/operators.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/output.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/parser.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/plugins.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/position.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/prelexer.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/remove_placeholders.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/sass.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/sass2scss.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/sass_context.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/sass_functions.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/sass_util.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/sass_values.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/source_map.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/subset_map.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/to_value.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/units.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/utf8_string.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/util.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/util_string.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/values.o +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc.rb +57 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/dependency.rb +17 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/engine.rb +139 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/error.rb +37 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/functions_handler.rb +73 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/import_handler.rb +50 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/importer.rb +31 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/libsass.so +0 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/native.rb +62 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/native/lib_c.rb +21 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/native/native_context_api.rb +147 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/native/native_functions_api.rb +159 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/native/sass2scss_api.rb +10 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/native/sass_input_style.rb +13 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/native/sass_output_style.rb +12 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/native/sass_value.rb +97 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/native/string_list.rb +10 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/sass_2_scss.rb +9 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/script.rb +17 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/script/functions.rb +8 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/script/value.rb +137 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/script/value/bool.rb +32 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/script/value/color.rb +95 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/script/value/list.rb +136 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/script/value/map.rb +69 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/script/value/number.rb +389 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/script/value/string.rb +96 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/script/value_conversion.rb +69 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/script/value_conversion/base.rb +13 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/script/value_conversion/bool.rb +13 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/script/value_conversion/color.rb +18 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/script/value_conversion/list.rb +25 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/script/value_conversion/map.rb +21 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/script/value_conversion/number.rb +13 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/script/value_conversion/string.rb +17 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/util.rb +231 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/util/normalized_map.rb +117 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/version.rb +5 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/sassc.gemspec +69 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/test/custom_importer_test.rb +127 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/test/engine_test.rb +314 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/test/error_test.rb +29 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/test/fixtures/paths.scss +10 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/test/functions_test.rb +323 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/test/native_test.rb +213 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/test/output_style_test.rb +107 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/test/sass_2_scss_test.rb +14 -0
- data/vendor/ruby/2.6.0/gems/sassc-2.2.0/test/test_helper.rb +45 -0
- data/vendor/ruby/2.6.0/gems/zeitwerk-2.1.10/README.md +533 -0
- data/vendor/ruby/2.6.0/gems/zeitwerk-2.1.10/lib/zeitwerk.rb +12 -0
- data/vendor/ruby/2.6.0/gems/zeitwerk-2.1.10/lib/zeitwerk/error.rb +10 -0
- data/vendor/ruby/2.6.0/gems/zeitwerk-2.1.10/lib/zeitwerk/explicit_namespace.rb +80 -0
- data/vendor/ruby/2.6.0/gems/zeitwerk-2.1.10/lib/zeitwerk/gem_inflector.rb +19 -0
- data/vendor/ruby/2.6.0/gems/zeitwerk-2.1.10/lib/zeitwerk/inflector.rb +19 -0
- data/vendor/ruby/2.6.0/gems/zeitwerk-2.1.10/lib/zeitwerk/kernel.rb +33 -0
- data/vendor/ruby/2.6.0/gems/zeitwerk-2.1.10/lib/zeitwerk/loader.rb +759 -0
- data/vendor/ruby/2.6.0/gems/zeitwerk-2.1.10/lib/zeitwerk/loader/callbacks.rb +71 -0
- data/vendor/ruby/2.6.0/gems/zeitwerk-2.1.10/lib/zeitwerk/real_mod_name.rb +15 -0
- data/vendor/ruby/2.6.0/gems/zeitwerk-2.1.10/lib/zeitwerk/registry.rb +147 -0
- data/vendor/ruby/2.6.0/gems/zeitwerk-2.1.10/lib/zeitwerk/version.rb +5 -0
- data/vendor/ruby/2.6.0/specifications/autoprefixer-rails-9.6.1.1.gemspec +47 -0
- data/vendor/ruby/2.6.0/specifications/parser-2.6.4.1.gemspec +62 -0
- data/vendor/ruby/2.6.0/specifications/sassc-2.2.0.gemspec +60 -0
- data/vendor/ruby/2.6.0/specifications/zeitwerk-2.1.10.gemspec +21 -0
- metadata +441 -4
- data/vendor/assets/anjuna/css/anjuna-application.css +0 -2
- data/vendor/assets/anjuna/css/anjuna-theme.css +0 -2
@@ -0,0 +1,194 @@
|
|
1
|
+
#ifndef SASS_CONSTANTS_H
|
2
|
+
#define SASS_CONSTANTS_H
|
3
|
+
|
4
|
+
namespace Sass {
|
5
|
+
namespace Constants {
|
6
|
+
|
7
|
+
// The maximum call stack that can be created
|
8
|
+
extern const unsigned long MaxCallStack;
|
9
|
+
|
10
|
+
// https://developer.mozilla.org/en-US/docs/Web/CSS/Specificity
|
11
|
+
// The following list of selectors is by increasing specificity:
|
12
|
+
extern const unsigned long Specificity_Star;
|
13
|
+
extern const unsigned long Specificity_Universal;
|
14
|
+
extern const unsigned long Specificity_Element;
|
15
|
+
extern const unsigned long Specificity_Base;
|
16
|
+
extern const unsigned long Specificity_Class;
|
17
|
+
extern const unsigned long Specificity_Attr;
|
18
|
+
extern const unsigned long Specificity_Pseudo;
|
19
|
+
extern const unsigned long Specificity_ID;
|
20
|
+
|
21
|
+
// Selector unification order;
|
22
|
+
extern const int UnificationOrder_Element;
|
23
|
+
extern const int UnificationOrder_Id;
|
24
|
+
extern const int UnificationOrder_Class;
|
25
|
+
extern const int UnificationOrder_Attribute;
|
26
|
+
extern const int UnificationOrder_PseudoClass;
|
27
|
+
extern const int UnificationOrder_Wrapped;
|
28
|
+
extern const int UnificationOrder_PseudoElement;
|
29
|
+
extern const int UnificationOrder_Placeholder;
|
30
|
+
|
31
|
+
// sass keywords
|
32
|
+
extern const char at_root_kwd[];
|
33
|
+
extern const char import_kwd[];
|
34
|
+
extern const char mixin_kwd[];
|
35
|
+
extern const char function_kwd[];
|
36
|
+
extern const char return_kwd[];
|
37
|
+
extern const char include_kwd[];
|
38
|
+
extern const char content_kwd[];
|
39
|
+
extern const char extend_kwd[];
|
40
|
+
extern const char if_kwd[];
|
41
|
+
extern const char else_kwd[];
|
42
|
+
extern const char if_after_else_kwd[];
|
43
|
+
extern const char for_kwd[];
|
44
|
+
extern const char from_kwd[];
|
45
|
+
extern const char to_kwd[];
|
46
|
+
extern const char through_kwd[];
|
47
|
+
extern const char each_kwd[];
|
48
|
+
extern const char in_kwd[];
|
49
|
+
extern const char while_kwd[];
|
50
|
+
extern const char warn_kwd[];
|
51
|
+
extern const char error_kwd[];
|
52
|
+
extern const char debug_kwd[];
|
53
|
+
extern const char default_kwd[];
|
54
|
+
extern const char global_kwd[];
|
55
|
+
extern const char null_kwd[];
|
56
|
+
extern const char optional_kwd[];
|
57
|
+
extern const char with_kwd[];
|
58
|
+
extern const char without_kwd[];
|
59
|
+
extern const char all_kwd[];
|
60
|
+
extern const char rule_kwd[];
|
61
|
+
|
62
|
+
// css standard units
|
63
|
+
extern const char em_kwd[];
|
64
|
+
extern const char ex_kwd[];
|
65
|
+
extern const char px_kwd[];
|
66
|
+
extern const char cm_kwd[];
|
67
|
+
extern const char mm_kwd[];
|
68
|
+
extern const char pt_kwd[];
|
69
|
+
extern const char pc_kwd[];
|
70
|
+
extern const char deg_kwd[];
|
71
|
+
extern const char rad_kwd[];
|
72
|
+
extern const char grad_kwd[];
|
73
|
+
extern const char turn_kwd[];
|
74
|
+
extern const char ms_kwd[];
|
75
|
+
extern const char s_kwd[];
|
76
|
+
extern const char Hz_kwd[];
|
77
|
+
extern const char kHz_kwd[];
|
78
|
+
|
79
|
+
// vendor prefixes
|
80
|
+
extern const char vendor_opera_kwd[];
|
81
|
+
extern const char vendor_webkit_kwd[];
|
82
|
+
extern const char vendor_mozilla_kwd[];
|
83
|
+
extern const char vendor_ms_kwd[];
|
84
|
+
extern const char vendor_khtml_kwd[];
|
85
|
+
|
86
|
+
// css functions and keywords
|
87
|
+
extern const char charset_kwd[];
|
88
|
+
extern const char media_kwd[];
|
89
|
+
extern const char supports_kwd[];
|
90
|
+
extern const char keyframes_kwd[];
|
91
|
+
extern const char only_kwd[];
|
92
|
+
extern const char rgb_fn_kwd[];
|
93
|
+
extern const char url_fn_kwd[];
|
94
|
+
extern const char url_kwd[];
|
95
|
+
// extern const char url_prefix_fn_kwd[];
|
96
|
+
extern const char important_kwd[];
|
97
|
+
extern const char pseudo_not_fn_kwd[];
|
98
|
+
extern const char even_kwd[];
|
99
|
+
extern const char odd_kwd[];
|
100
|
+
extern const char progid_kwd[];
|
101
|
+
extern const char expression_kwd[];
|
102
|
+
extern const char calc_fn_kwd[];
|
103
|
+
|
104
|
+
// char classes for "regular expressions"
|
105
|
+
extern const char almost_any_value_class[];
|
106
|
+
|
107
|
+
// css selector keywords
|
108
|
+
extern const char sel_deep_kwd[];
|
109
|
+
|
110
|
+
// css attribute-matching operators
|
111
|
+
extern const char tilde_equal[];
|
112
|
+
extern const char pipe_equal[];
|
113
|
+
extern const char caret_equal[];
|
114
|
+
extern const char dollar_equal[];
|
115
|
+
extern const char star_equal[];
|
116
|
+
|
117
|
+
// relational & logical operators and constants
|
118
|
+
extern const char and_kwd[];
|
119
|
+
extern const char or_kwd[];
|
120
|
+
extern const char not_kwd[];
|
121
|
+
extern const char gt[];
|
122
|
+
extern const char gte[];
|
123
|
+
extern const char lt[];
|
124
|
+
extern const char lte[];
|
125
|
+
extern const char eq[];
|
126
|
+
extern const char neq[];
|
127
|
+
extern const char true_kwd[];
|
128
|
+
extern const char false_kwd[];
|
129
|
+
|
130
|
+
// definition keywords
|
131
|
+
extern const char using_kwd[];
|
132
|
+
|
133
|
+
// miscellaneous punctuation and delimiters
|
134
|
+
extern const char percent_str[];
|
135
|
+
extern const char empty_str[];
|
136
|
+
extern const char slash_slash[];
|
137
|
+
extern const char slash_star[];
|
138
|
+
extern const char star_slash[];
|
139
|
+
extern const char hash_lbrace[];
|
140
|
+
extern const char rbrace[];
|
141
|
+
extern const char rparen[];
|
142
|
+
extern const char sign_chars[];
|
143
|
+
extern const char op_chars[];
|
144
|
+
extern const char hyphen[];
|
145
|
+
extern const char ellipsis[];
|
146
|
+
// extern const char url_space_chars[];
|
147
|
+
|
148
|
+
// type names
|
149
|
+
extern const char numeric_name[];
|
150
|
+
extern const char number_name[];
|
151
|
+
extern const char percentage_name[];
|
152
|
+
extern const char dimension_name[];
|
153
|
+
extern const char string_name[];
|
154
|
+
extern const char bool_name[];
|
155
|
+
extern const char color_name[];
|
156
|
+
extern const char list_name[];
|
157
|
+
extern const char map_name[];
|
158
|
+
extern const char arglist_name[];
|
159
|
+
|
160
|
+
// constants for uri parsing (RFC 3986 Appendix A.)
|
161
|
+
extern const char uri_chars[];
|
162
|
+
extern const char real_uri_chars[];
|
163
|
+
|
164
|
+
// some specific constant character classes
|
165
|
+
// they must be static to be useable by lexer
|
166
|
+
extern const char static_ops[];
|
167
|
+
extern const char selector_list_delims[];
|
168
|
+
extern const char complex_selector_delims[];
|
169
|
+
extern const char selector_combinator_ops[];
|
170
|
+
extern const char attribute_compare_modifiers[];
|
171
|
+
extern const char selector_lookahead_ops[];
|
172
|
+
|
173
|
+
// byte order marks
|
174
|
+
// (taken from http://en.wikipedia.org/wiki/Byte_order_mark)
|
175
|
+
extern const unsigned char utf_8_bom[];
|
176
|
+
extern const unsigned char utf_16_bom_be[];
|
177
|
+
extern const unsigned char utf_16_bom_le[];
|
178
|
+
extern const unsigned char utf_32_bom_be[];
|
179
|
+
extern const unsigned char utf_32_bom_le[];
|
180
|
+
extern const unsigned char utf_7_bom_1[];
|
181
|
+
extern const unsigned char utf_7_bom_2[];
|
182
|
+
extern const unsigned char utf_7_bom_3[];
|
183
|
+
extern const unsigned char utf_7_bom_4[];
|
184
|
+
extern const unsigned char utf_7_bom_5[];
|
185
|
+
extern const unsigned char utf_1_bom[];
|
186
|
+
extern const unsigned char utf_ebcdic_bom[];
|
187
|
+
extern const unsigned char scsu_bom[];
|
188
|
+
extern const unsigned char bocu_1_bom[];
|
189
|
+
extern const unsigned char gb_18030_bom[];
|
190
|
+
|
191
|
+
}
|
192
|
+
}
|
193
|
+
|
194
|
+
#endif
|
@@ -0,0 +1,890 @@
|
|
1
|
+
// sass.hpp must go before all system headers to get the
|
2
|
+
// __EXTENSIONS__ fix on Solaris.
|
3
|
+
#include "sass.hpp"
|
4
|
+
|
5
|
+
#include <string>
|
6
|
+
#include <cstdlib>
|
7
|
+
#include <cstring>
|
8
|
+
#include <iomanip>
|
9
|
+
#include <sstream>
|
10
|
+
#include <iostream>
|
11
|
+
|
12
|
+
#include "ast.hpp"
|
13
|
+
#include "util.hpp"
|
14
|
+
#include "sass.h"
|
15
|
+
#include "context.hpp"
|
16
|
+
#include "plugins.hpp"
|
17
|
+
#include "constants.hpp"
|
18
|
+
#include "parser.hpp"
|
19
|
+
#include "file.hpp"
|
20
|
+
#include "inspect.hpp"
|
21
|
+
#include "output.hpp"
|
22
|
+
#include "expand.hpp"
|
23
|
+
#include "eval.hpp"
|
24
|
+
#include "check_nesting.hpp"
|
25
|
+
#include "cssize.hpp"
|
26
|
+
#include "listize.hpp"
|
27
|
+
#include "extend.hpp"
|
28
|
+
#include "remove_placeholders.hpp"
|
29
|
+
#include "sass_functions.hpp"
|
30
|
+
#include "backtrace.hpp"
|
31
|
+
#include "sass2scss.h"
|
32
|
+
#include "prelexer.hpp"
|
33
|
+
#include "emitter.hpp"
|
34
|
+
#include "fn_utils.hpp"
|
35
|
+
#include "fn_miscs.hpp"
|
36
|
+
#include "fn_maps.hpp"
|
37
|
+
#include "fn_lists.hpp"
|
38
|
+
#include "fn_colors.hpp"
|
39
|
+
#include "fn_numbers.hpp"
|
40
|
+
#include "fn_strings.hpp"
|
41
|
+
#include "fn_selectors.hpp"
|
42
|
+
|
43
|
+
namespace Sass {
|
44
|
+
using namespace Constants;
|
45
|
+
using namespace File;
|
46
|
+
using namespace Sass;
|
47
|
+
|
48
|
+
inline bool sort_importers (const Sass_Importer_Entry& i, const Sass_Importer_Entry& j)
|
49
|
+
{ return sass_importer_get_priority(i) > sass_importer_get_priority(j); }
|
50
|
+
|
51
|
+
static std::string safe_input(const char* in_path)
|
52
|
+
{
|
53
|
+
// enforce some safe defaults
|
54
|
+
// used to create relative file links
|
55
|
+
std::string safe_path(in_path ? in_path : "");
|
56
|
+
return safe_path == "" ? "stdin" : safe_path;
|
57
|
+
}
|
58
|
+
|
59
|
+
static std::string safe_output(const char* out_path, const std::string& input_path = "")
|
60
|
+
{
|
61
|
+
std::string safe_path(out_path ? out_path : "");
|
62
|
+
// maybe we can extract an output path from input path
|
63
|
+
if (safe_path == "" && input_path != "") {
|
64
|
+
int lastindex = static_cast<int>(input_path.find_last_of("."));
|
65
|
+
return (lastindex > -1 ? input_path.substr(0, lastindex) : input_path) + ".css";
|
66
|
+
}
|
67
|
+
// enforce some safe defaults
|
68
|
+
// used to create relative file links
|
69
|
+
return safe_path == "" ? "stdout" : safe_path;
|
70
|
+
}
|
71
|
+
|
72
|
+
Context::Context(struct Sass_Context& c_ctx)
|
73
|
+
: CWD(File::get_cwd()),
|
74
|
+
c_options(c_ctx),
|
75
|
+
entry_path(""),
|
76
|
+
head_imports(0),
|
77
|
+
plugins(),
|
78
|
+
emitter(c_options),
|
79
|
+
|
80
|
+
ast_gc(),
|
81
|
+
strings(),
|
82
|
+
resources(),
|
83
|
+
sheets(),
|
84
|
+
subset_map(),
|
85
|
+
import_stack(),
|
86
|
+
callee_stack(),
|
87
|
+
traces(),
|
88
|
+
c_compiler(NULL),
|
89
|
+
|
90
|
+
c_headers (std::vector<Sass_Importer_Entry>()),
|
91
|
+
c_importers (std::vector<Sass_Importer_Entry>()),
|
92
|
+
c_functions (std::vector<Sass_Function_Entry>()),
|
93
|
+
|
94
|
+
indent (safe_str(c_options.indent, " ")),
|
95
|
+
linefeed (safe_str(c_options.linefeed, "\n")),
|
96
|
+
|
97
|
+
input_path (make_canonical_path(safe_input(c_options.input_path))),
|
98
|
+
output_path (make_canonical_path(safe_output(c_options.output_path, input_path))),
|
99
|
+
source_map_file (make_canonical_path(safe_str(c_options.source_map_file, ""))),
|
100
|
+
source_map_root (make_canonical_path(safe_str(c_options.source_map_root, "")))
|
101
|
+
|
102
|
+
{
|
103
|
+
|
104
|
+
// Sass 3.4: The current working directory will no longer be placed onto the Sass load path by default.
|
105
|
+
// If you need the current working directory to be available, set SASS_PATH=. in your shell's environment.
|
106
|
+
// include_paths.push_back(CWD);
|
107
|
+
|
108
|
+
// collect more paths from different options
|
109
|
+
collect_include_paths(c_options.include_path);
|
110
|
+
collect_include_paths(c_options.include_paths);
|
111
|
+
collect_plugin_paths(c_options.plugin_path);
|
112
|
+
collect_plugin_paths(c_options.plugin_paths);
|
113
|
+
|
114
|
+
// load plugins and register custom behaviors
|
115
|
+
for(auto plug : plugin_paths) plugins.load_plugins(plug);
|
116
|
+
for(auto fn : plugins.get_headers()) c_headers.push_back(fn);
|
117
|
+
for(auto fn : plugins.get_importers()) c_importers.push_back(fn);
|
118
|
+
for(auto fn : plugins.get_functions()) c_functions.push_back(fn);
|
119
|
+
|
120
|
+
// sort the items by priority (lowest first)
|
121
|
+
sort (c_headers.begin(), c_headers.end(), sort_importers);
|
122
|
+
sort (c_importers.begin(), c_importers.end(), sort_importers);
|
123
|
+
|
124
|
+
emitter.set_filename(abs2rel(output_path, source_map_file, CWD));
|
125
|
+
|
126
|
+
}
|
127
|
+
|
128
|
+
void Context::add_c_function(Sass_Function_Entry function)
|
129
|
+
{
|
130
|
+
c_functions.push_back(function);
|
131
|
+
}
|
132
|
+
void Context::add_c_header(Sass_Importer_Entry header)
|
133
|
+
{
|
134
|
+
c_headers.push_back(header);
|
135
|
+
// need to sort the array afterwards (no big deal)
|
136
|
+
sort (c_headers.begin(), c_headers.end(), sort_importers);
|
137
|
+
}
|
138
|
+
void Context::add_c_importer(Sass_Importer_Entry importer)
|
139
|
+
{
|
140
|
+
c_importers.push_back(importer);
|
141
|
+
// need to sort the array afterwards (no big deal)
|
142
|
+
sort (c_importers.begin(), c_importers.end(), sort_importers);
|
143
|
+
}
|
144
|
+
|
145
|
+
Context::~Context()
|
146
|
+
{
|
147
|
+
// resources were allocated by malloc
|
148
|
+
for (size_t i = 0; i < resources.size(); ++i) {
|
149
|
+
free(resources[i].contents);
|
150
|
+
free(resources[i].srcmap);
|
151
|
+
}
|
152
|
+
// free all strings we kept alive during compiler execution
|
153
|
+
for (size_t n = 0; n < strings.size(); ++n) free(strings[n]);
|
154
|
+
// everything that gets put into sources will be freed by us
|
155
|
+
// this shouldn't have anything in it anyway!?
|
156
|
+
for (size_t m = 0; m < import_stack.size(); ++m) {
|
157
|
+
sass_import_take_source(import_stack[m]);
|
158
|
+
sass_import_take_srcmap(import_stack[m]);
|
159
|
+
sass_delete_import(import_stack[m]);
|
160
|
+
}
|
161
|
+
// clear inner structures (vectors) and input source
|
162
|
+
resources.clear(); import_stack.clear();
|
163
|
+
subset_map.clear(), sheets.clear();
|
164
|
+
}
|
165
|
+
|
166
|
+
Data_Context::~Data_Context()
|
167
|
+
{
|
168
|
+
// --> this will be freed by resources
|
169
|
+
// make sure we free the source even if not processed!
|
170
|
+
// if (resources.size() == 0 && source_c_str) free(source_c_str);
|
171
|
+
// if (resources.size() == 0 && srcmap_c_str) free(srcmap_c_str);
|
172
|
+
// source_c_str = 0; srcmap_c_str = 0;
|
173
|
+
}
|
174
|
+
|
175
|
+
File_Context::~File_Context()
|
176
|
+
{
|
177
|
+
}
|
178
|
+
|
179
|
+
void Context::collect_include_paths(const char* paths_str)
|
180
|
+
{
|
181
|
+
if (paths_str) {
|
182
|
+
const char* beg = paths_str;
|
183
|
+
const char* end = Prelexer::find_first<PATH_SEP>(beg);
|
184
|
+
|
185
|
+
while (end) {
|
186
|
+
std::string path(beg, end - beg);
|
187
|
+
if (!path.empty()) {
|
188
|
+
if (*path.rbegin() != '/') path += '/';
|
189
|
+
include_paths.push_back(path);
|
190
|
+
}
|
191
|
+
beg = end + 1;
|
192
|
+
end = Prelexer::find_first<PATH_SEP>(beg);
|
193
|
+
}
|
194
|
+
|
195
|
+
std::string path(beg);
|
196
|
+
if (!path.empty()) {
|
197
|
+
if (*path.rbegin() != '/') path += '/';
|
198
|
+
include_paths.push_back(path);
|
199
|
+
}
|
200
|
+
}
|
201
|
+
}
|
202
|
+
|
203
|
+
void Context::collect_include_paths(string_list* paths_array)
|
204
|
+
{
|
205
|
+
while (paths_array)
|
206
|
+
{
|
207
|
+
collect_include_paths(paths_array->string);
|
208
|
+
paths_array = paths_array->next;
|
209
|
+
}
|
210
|
+
}
|
211
|
+
|
212
|
+
void Context::collect_plugin_paths(const char* paths_str)
|
213
|
+
{
|
214
|
+
if (paths_str) {
|
215
|
+
const char* beg = paths_str;
|
216
|
+
const char* end = Prelexer::find_first<PATH_SEP>(beg);
|
217
|
+
|
218
|
+
while (end) {
|
219
|
+
std::string path(beg, end - beg);
|
220
|
+
if (!path.empty()) {
|
221
|
+
if (*path.rbegin() != '/') path += '/';
|
222
|
+
plugin_paths.push_back(path);
|
223
|
+
}
|
224
|
+
beg = end + 1;
|
225
|
+
end = Prelexer::find_first<PATH_SEP>(beg);
|
226
|
+
}
|
227
|
+
|
228
|
+
std::string path(beg);
|
229
|
+
if (!path.empty()) {
|
230
|
+
if (*path.rbegin() != '/') path += '/';
|
231
|
+
plugin_paths.push_back(path);
|
232
|
+
}
|
233
|
+
}
|
234
|
+
}
|
235
|
+
|
236
|
+
void Context::collect_plugin_paths(string_list* paths_array)
|
237
|
+
{
|
238
|
+
while (paths_array)
|
239
|
+
{
|
240
|
+
collect_plugin_paths(paths_array->string);
|
241
|
+
paths_array = paths_array->next;
|
242
|
+
}
|
243
|
+
}
|
244
|
+
|
245
|
+
// resolve the imp_path in base_path or include_paths
|
246
|
+
// looks for alternatives and returns a list from one directory
|
247
|
+
std::vector<Include> Context::find_includes(const Importer& import)
|
248
|
+
{
|
249
|
+
// make sure we resolve against an absolute path
|
250
|
+
std::string base_path(rel2abs(import.base_path));
|
251
|
+
// first try to resolve the load path relative to the base path
|
252
|
+
std::vector<Include> vec(resolve_includes(base_path, import.imp_path));
|
253
|
+
// then search in every include path (but only if nothing found yet)
|
254
|
+
for (size_t i = 0, S = include_paths.size(); vec.size() == 0 && i < S; ++i)
|
255
|
+
{
|
256
|
+
// call resolve_includes and individual base path and append all results
|
257
|
+
std::vector<Include> resolved(resolve_includes(include_paths[i], import.imp_path));
|
258
|
+
if (resolved.size()) vec.insert(vec.end(), resolved.begin(), resolved.end());
|
259
|
+
}
|
260
|
+
// return vector
|
261
|
+
return vec;
|
262
|
+
}
|
263
|
+
|
264
|
+
// register include with resolved path and its content
|
265
|
+
// memory of the resources will be freed by us on exit
|
266
|
+
void Context::register_resource(const Include& inc, const Resource& res)
|
267
|
+
{
|
268
|
+
|
269
|
+
// do not parse same resource twice
|
270
|
+
// maybe raise an error in this case
|
271
|
+
// if (sheets.count(inc.abs_path)) {
|
272
|
+
// free(res.contents); free(res.srcmap);
|
273
|
+
// throw std::runtime_error("duplicate resource registered");
|
274
|
+
// return;
|
275
|
+
// }
|
276
|
+
|
277
|
+
// get index for this resource
|
278
|
+
size_t idx = resources.size();
|
279
|
+
|
280
|
+
// tell emitter about new resource
|
281
|
+
emitter.add_source_index(idx);
|
282
|
+
|
283
|
+
// put resources under our control
|
284
|
+
// the memory will be freed later
|
285
|
+
resources.push_back(res);
|
286
|
+
|
287
|
+
// add a relative link to the working directory
|
288
|
+
included_files.push_back(inc.abs_path);
|
289
|
+
// add a relative link to the source map output file
|
290
|
+
srcmap_links.push_back(abs2rel(inc.abs_path, source_map_file, CWD));
|
291
|
+
|
292
|
+
// get pointer to the loaded content
|
293
|
+
Sass_Import_Entry import = sass_make_import(
|
294
|
+
inc.imp_path.c_str(),
|
295
|
+
inc.abs_path.c_str(),
|
296
|
+
res.contents,
|
297
|
+
res.srcmap
|
298
|
+
);
|
299
|
+
// add the entry to the stack
|
300
|
+
import_stack.push_back(import);
|
301
|
+
|
302
|
+
// get pointer to the loaded content
|
303
|
+
const char* contents = resources[idx].contents;
|
304
|
+
// keep a copy of the path around (for parserstates)
|
305
|
+
// ToDo: we clean it, but still not very elegant!?
|
306
|
+
strings.push_back(sass_copy_c_string(inc.abs_path.c_str()));
|
307
|
+
// create the initial parser state from resource
|
308
|
+
ParserState pstate(strings.back(), contents, idx);
|
309
|
+
|
310
|
+
// check existing import stack for possible recursion
|
311
|
+
for (size_t i = 0; i < import_stack.size() - 2; ++i) {
|
312
|
+
auto parent = import_stack[i];
|
313
|
+
if (std::strcmp(parent->abs_path, import->abs_path) == 0) {
|
314
|
+
std::string cwd(File::get_cwd());
|
315
|
+
// make path relative to the current directory
|
316
|
+
std::string stack("An @import loop has been found:");
|
317
|
+
for (size_t n = 1; n < i + 2; ++n) {
|
318
|
+
stack += "\n " + std::string(File::abs2rel(import_stack[n]->abs_path, cwd, cwd)) +
|
319
|
+
" imports " + std::string(File::abs2rel(import_stack[n+1]->abs_path, cwd, cwd));
|
320
|
+
}
|
321
|
+
// implement error throw directly until we
|
322
|
+
// decided how to handle full stack traces
|
323
|
+
throw Exception::InvalidSyntax(pstate, traces, stack);
|
324
|
+
// error(stack, prstate ? *prstate : pstate, import_stack);
|
325
|
+
}
|
326
|
+
}
|
327
|
+
|
328
|
+
// create a parser instance from the given c_str buffer
|
329
|
+
Parser p(Parser::from_c_str(contents, *this, traces, pstate));
|
330
|
+
// do not yet dispose these buffers
|
331
|
+
sass_import_take_source(import);
|
332
|
+
sass_import_take_srcmap(import);
|
333
|
+
// then parse the root block
|
334
|
+
Block_Obj root = p.parse();
|
335
|
+
// delete memory of current stack frame
|
336
|
+
sass_delete_import(import_stack.back());
|
337
|
+
// remove current stack frame
|
338
|
+
import_stack.pop_back();
|
339
|
+
// create key/value pair for ast node
|
340
|
+
std::pair<const std::string, StyleSheet>
|
341
|
+
ast_pair(inc.abs_path, { res, root });
|
342
|
+
// register resulting resource
|
343
|
+
sheets.insert(ast_pair);
|
344
|
+
}
|
345
|
+
|
346
|
+
// register include with resolved path and its content
|
347
|
+
// memory of the resources will be freed by us on exit
|
348
|
+
void Context::register_resource(const Include& inc, const Resource& res, ParserState& prstate)
|
349
|
+
{
|
350
|
+
traces.push_back(Backtrace(prstate));
|
351
|
+
register_resource(inc, res);
|
352
|
+
traces.pop_back();
|
353
|
+
}
|
354
|
+
|
355
|
+
// Add a new import to the context (called from `import_url`)
|
356
|
+
Include Context::load_import(const Importer& imp, ParserState pstate)
|
357
|
+
{
|
358
|
+
|
359
|
+
// search for valid imports (ie. partials) on the filesystem
|
360
|
+
// this may return more than one valid result (ambiguous imp_path)
|
361
|
+
const std::vector<Include> resolved(find_includes(imp));
|
362
|
+
|
363
|
+
// error nicely on ambiguous imp_path
|
364
|
+
if (resolved.size() > 1) {
|
365
|
+
std::stringstream msg_stream;
|
366
|
+
msg_stream << "It's not clear which file to import for ";
|
367
|
+
msg_stream << "'@import \"" << imp.imp_path << "\"'." << "\n";
|
368
|
+
msg_stream << "Candidates:" << "\n";
|
369
|
+
for (size_t i = 0, L = resolved.size(); i < L; ++i)
|
370
|
+
{ msg_stream << " " << resolved[i].imp_path << "\n"; }
|
371
|
+
msg_stream << "Please delete or rename all but one of these files." << "\n";
|
372
|
+
error(msg_stream.str(), pstate, traces);
|
373
|
+
}
|
374
|
+
|
375
|
+
// process the resolved entry
|
376
|
+
else if (resolved.size() == 1) {
|
377
|
+
bool use_cache = c_importers.size() == 0;
|
378
|
+
// use cache for the resource loading
|
379
|
+
if (use_cache && sheets.count(resolved[0].abs_path)) return resolved[0];
|
380
|
+
// try to read the content of the resolved file entry
|
381
|
+
// the memory buffer returned must be freed by us!
|
382
|
+
if (char* contents = read_file(resolved[0].abs_path)) {
|
383
|
+
// register the newly resolved file resource
|
384
|
+
register_resource(resolved[0], { contents, 0 }, pstate);
|
385
|
+
// return resolved entry
|
386
|
+
return resolved[0];
|
387
|
+
}
|
388
|
+
}
|
389
|
+
|
390
|
+
// nothing found
|
391
|
+
return { imp, "" };
|
392
|
+
|
393
|
+
}
|
394
|
+
|
395
|
+
void Context::import_url (Import* imp, std::string load_path, const std::string& ctx_path) {
|
396
|
+
|
397
|
+
ParserState pstate(imp->pstate());
|
398
|
+
std::string imp_path(unquote(load_path));
|
399
|
+
std::string protocol("file");
|
400
|
+
|
401
|
+
using namespace Prelexer;
|
402
|
+
if (const char* proto = sequence< identifier, exactly<':'>, exactly<'/'>, exactly<'/'> >(imp_path.c_str())) {
|
403
|
+
|
404
|
+
protocol = std::string(imp_path.c_str(), proto - 3);
|
405
|
+
// if (protocol.compare("file") && true) { }
|
406
|
+
}
|
407
|
+
|
408
|
+
// add urls (protocol other than file) and urls without procotol to `urls` member
|
409
|
+
// ToDo: if ctx_path is already a file resource, we should not add it here?
|
410
|
+
if (imp->import_queries() || protocol != "file" || imp_path.substr(0, 2) == "//") {
|
411
|
+
imp->urls().push_back(SASS_MEMORY_NEW(String_Quoted, imp->pstate(), load_path));
|
412
|
+
}
|
413
|
+
else if (imp_path.length() > 4 && imp_path.substr(imp_path.length() - 4, 4) == ".css") {
|
414
|
+
String_Constant* loc = SASS_MEMORY_NEW(String_Constant, pstate, unquote(load_path));
|
415
|
+
Argument_Obj loc_arg = SASS_MEMORY_NEW(Argument, pstate, loc);
|
416
|
+
Arguments_Obj loc_args = SASS_MEMORY_NEW(Arguments, pstate);
|
417
|
+
loc_args->append(loc_arg);
|
418
|
+
Function_Call* new_url = SASS_MEMORY_NEW(Function_Call, pstate, std::string("url"), loc_args);
|
419
|
+
imp->urls().push_back(new_url);
|
420
|
+
}
|
421
|
+
else {
|
422
|
+
const Importer importer(imp_path, ctx_path);
|
423
|
+
Include include(load_import(importer, pstate));
|
424
|
+
if (include.abs_path.empty()) {
|
425
|
+
error("File to import not found or unreadable: " + imp_path + ".", pstate, traces);
|
426
|
+
}
|
427
|
+
imp->incs().push_back(include);
|
428
|
+
}
|
429
|
+
|
430
|
+
}
|
431
|
+
|
432
|
+
|
433
|
+
// call custom importers on the given (unquoted) load_path and eventually parse the resulting style_sheet
|
434
|
+
bool Context::call_loader(const std::string& load_path, const char* ctx_path, ParserState& pstate, Import* imp, std::vector<Sass_Importer_Entry> importers, bool only_one)
|
435
|
+
{
|
436
|
+
// unique counter
|
437
|
+
size_t count = 0;
|
438
|
+
// need one correct import
|
439
|
+
bool has_import = false;
|
440
|
+
// process all custom importers (or custom headers)
|
441
|
+
for (Sass_Importer_Entry& importer_ent : importers) {
|
442
|
+
// int priority = sass_importer_get_priority(importer);
|
443
|
+
Sass_Importer_Fn fn = sass_importer_get_function(importer_ent);
|
444
|
+
// skip importer if it returns NULL
|
445
|
+
if (Sass_Import_List includes =
|
446
|
+
fn(load_path.c_str(), importer_ent, c_compiler)
|
447
|
+
) {
|
448
|
+
// get c pointer copy to iterate over
|
449
|
+
Sass_Import_List it_includes = includes;
|
450
|
+
while (*it_includes) { ++count;
|
451
|
+
// create unique path to use as key
|
452
|
+
std::string uniq_path = load_path;
|
453
|
+
if (!only_one && count) {
|
454
|
+
std::stringstream path_strm;
|
455
|
+
path_strm << uniq_path << ":" << count;
|
456
|
+
uniq_path = path_strm.str();
|
457
|
+
}
|
458
|
+
// create the importer struct
|
459
|
+
Importer importer(uniq_path, ctx_path);
|
460
|
+
// query data from the current include
|
461
|
+
Sass_Import_Entry include_ent = *it_includes;
|
462
|
+
char* source = sass_import_take_source(include_ent);
|
463
|
+
char* srcmap = sass_import_take_srcmap(include_ent);
|
464
|
+
size_t line = sass_import_get_error_line(include_ent);
|
465
|
+
size_t column = sass_import_get_error_column(include_ent);
|
466
|
+
const char *abs_path = sass_import_get_abs_path(include_ent);
|
467
|
+
// handle error message passed back from custom importer
|
468
|
+
// it may (or may not) override the line and column info
|
469
|
+
if (const char* err_message = sass_import_get_error_message(include_ent)) {
|
470
|
+
if (source || srcmap) register_resource({ importer, uniq_path }, { source, srcmap }, pstate);
|
471
|
+
if (line == std::string::npos && column == std::string::npos) error(err_message, pstate, traces);
|
472
|
+
else error(err_message, ParserState(ctx_path, source, Position(line, column)), traces);
|
473
|
+
}
|
474
|
+
// content for import was set
|
475
|
+
else if (source) {
|
476
|
+
// resolved abs_path should be set by custom importer
|
477
|
+
// use the created uniq_path as fallback (maybe enforce)
|
478
|
+
std::string path_key(abs_path ? abs_path : uniq_path);
|
479
|
+
// create the importer struct
|
480
|
+
Include include(importer, path_key);
|
481
|
+
// attach information to AST node
|
482
|
+
imp->incs().push_back(include);
|
483
|
+
// register the resource buffers
|
484
|
+
register_resource(include, { source, srcmap }, pstate);
|
485
|
+
}
|
486
|
+
// only a path was retuned
|
487
|
+
// try to load it like normal
|
488
|
+
else if(abs_path) {
|
489
|
+
// checks some urls to preserve
|
490
|
+
// `http://`, `https://` and `//`
|
491
|
+
// or dispatchs to `import_file`
|
492
|
+
// which will check for a `.css` extension
|
493
|
+
// or resolves the file on the filesystem
|
494
|
+
// added and resolved via `add_file`
|
495
|
+
// finally stores everything on `imp`
|
496
|
+
import_url(imp, abs_path, ctx_path);
|
497
|
+
}
|
498
|
+
// move to next
|
499
|
+
++it_includes;
|
500
|
+
}
|
501
|
+
// deallocate the returned memory
|
502
|
+
sass_delete_import_list(includes);
|
503
|
+
// set success flag
|
504
|
+
has_import = true;
|
505
|
+
// break out of loop
|
506
|
+
if (only_one) break;
|
507
|
+
}
|
508
|
+
}
|
509
|
+
// return result
|
510
|
+
return has_import;
|
511
|
+
}
|
512
|
+
|
513
|
+
void register_function(Context&, Signature sig, Native_Function f, Env* env);
|
514
|
+
void register_function(Context&, Signature sig, Native_Function f, size_t arity, Env* env);
|
515
|
+
void register_overload_stub(Context&, std::string name, Env* env);
|
516
|
+
void register_built_in_functions(Context&, Env* env);
|
517
|
+
void register_c_functions(Context&, Env* env, Sass_Function_List);
|
518
|
+
void register_c_function(Context&, Env* env, Sass_Function_Entry);
|
519
|
+
|
520
|
+
char* Context::render(Block_Obj root)
|
521
|
+
{
|
522
|
+
// check for valid block
|
523
|
+
if (!root) return 0;
|
524
|
+
// start the render process
|
525
|
+
root->perform(&emitter);
|
526
|
+
// finish emitter stream
|
527
|
+
emitter.finalize();
|
528
|
+
// get the resulting buffer from stream
|
529
|
+
OutputBuffer emitted = emitter.get_buffer();
|
530
|
+
// should we append a source map url?
|
531
|
+
if (!c_options.omit_source_map_url) {
|
532
|
+
// generate an embeded source map
|
533
|
+
if (c_options.source_map_embed) {
|
534
|
+
emitted.buffer += linefeed;
|
535
|
+
emitted.buffer += format_embedded_source_map();
|
536
|
+
}
|
537
|
+
// or just link the generated one
|
538
|
+
else if (source_map_file != "") {
|
539
|
+
emitted.buffer += linefeed;
|
540
|
+
emitted.buffer += format_source_mapping_url(source_map_file);
|
541
|
+
}
|
542
|
+
}
|
543
|
+
// create a copy of the resulting buffer string
|
544
|
+
// this must be freed or taken over by implementor
|
545
|
+
return sass_copy_c_string(emitted.buffer.c_str());
|
546
|
+
}
|
547
|
+
|
548
|
+
void Context::apply_custom_headers(Block_Obj root, const char* ctx_path, ParserState pstate)
|
549
|
+
{
|
550
|
+
// create a custom import to resolve headers
|
551
|
+
Import_Obj imp = SASS_MEMORY_NEW(Import, pstate);
|
552
|
+
// dispatch headers which will add custom functions
|
553
|
+
// custom headers are added to the import instance
|
554
|
+
call_headers(entry_path, ctx_path, pstate, imp);
|
555
|
+
// increase head count to skip later
|
556
|
+
head_imports += resources.size() - 1;
|
557
|
+
// add the statement if we have urls
|
558
|
+
if (!imp->urls().empty()) root->append(imp);
|
559
|
+
// process all other resources (add Import_Stub nodes)
|
560
|
+
for (size_t i = 0, S = imp->incs().size(); i < S; ++i) {
|
561
|
+
root->append(SASS_MEMORY_NEW(Import_Stub, pstate, imp->incs()[i]));
|
562
|
+
}
|
563
|
+
}
|
564
|
+
|
565
|
+
Block_Obj File_Context::parse()
|
566
|
+
{
|
567
|
+
|
568
|
+
// check if entry file is given
|
569
|
+
if (input_path.empty()) return {};
|
570
|
+
|
571
|
+
// create absolute path from input filename
|
572
|
+
// ToDo: this should be resolved via custom importers
|
573
|
+
std::string abs_path(rel2abs(input_path, CWD));
|
574
|
+
|
575
|
+
// try to load the entry file
|
576
|
+
char* contents = read_file(abs_path);
|
577
|
+
|
578
|
+
// alternatively also look inside each include path folder
|
579
|
+
// I think this differs from ruby sass (IMO too late to remove)
|
580
|
+
for (size_t i = 0, S = include_paths.size(); contents == 0 && i < S; ++i) {
|
581
|
+
// build absolute path for this include path entry
|
582
|
+
abs_path = rel2abs(input_path, include_paths[i]);
|
583
|
+
// try to load the resulting path
|
584
|
+
contents = read_file(abs_path);
|
585
|
+
}
|
586
|
+
|
587
|
+
// abort early if no content could be loaded (various reasons)
|
588
|
+
if (!contents) throw std::runtime_error("File to read not found or unreadable: " + input_path);
|
589
|
+
|
590
|
+
// store entry path
|
591
|
+
entry_path = abs_path;
|
592
|
+
|
593
|
+
// create entry only for import stack
|
594
|
+
Sass_Import_Entry import = sass_make_import(
|
595
|
+
input_path.c_str(),
|
596
|
+
entry_path.c_str(),
|
597
|
+
contents,
|
598
|
+
0
|
599
|
+
);
|
600
|
+
// add the entry to the stack
|
601
|
+
import_stack.push_back(import);
|
602
|
+
|
603
|
+
// create the source entry for file entry
|
604
|
+
register_resource({{ input_path, "." }, abs_path }, { contents, 0 });
|
605
|
+
|
606
|
+
// create root ast tree node
|
607
|
+
return compile();
|
608
|
+
|
609
|
+
}
|
610
|
+
|
611
|
+
Block_Obj Data_Context::parse()
|
612
|
+
{
|
613
|
+
|
614
|
+
// check if source string is given
|
615
|
+
if (!source_c_str) return {};
|
616
|
+
|
617
|
+
// convert indented sass syntax
|
618
|
+
if(c_options.is_indented_syntax_src) {
|
619
|
+
// call sass2scss to convert the string
|
620
|
+
char * converted = sass2scss(source_c_str,
|
621
|
+
// preserve the structure as much as possible
|
622
|
+
SASS2SCSS_PRETTIFY_1 | SASS2SCSS_KEEP_COMMENT);
|
623
|
+
// replace old source_c_str with converted
|
624
|
+
free(source_c_str); source_c_str = converted;
|
625
|
+
}
|
626
|
+
|
627
|
+
// remember entry path (defaults to stdin for string)
|
628
|
+
entry_path = input_path.empty() ? "stdin" : input_path;
|
629
|
+
|
630
|
+
// ToDo: this may be resolved via custom importers
|
631
|
+
std::string abs_path(rel2abs(entry_path));
|
632
|
+
char* abs_path_c_str = sass_copy_c_string(abs_path.c_str());
|
633
|
+
strings.push_back(abs_path_c_str);
|
634
|
+
|
635
|
+
// create entry only for the import stack
|
636
|
+
Sass_Import_Entry import = sass_make_import(
|
637
|
+
entry_path.c_str(),
|
638
|
+
abs_path_c_str,
|
639
|
+
source_c_str,
|
640
|
+
srcmap_c_str
|
641
|
+
);
|
642
|
+
// add the entry to the stack
|
643
|
+
import_stack.push_back(import);
|
644
|
+
|
645
|
+
// register a synthetic resource (path does not really exist, skip in includes)
|
646
|
+
register_resource({{ input_path, "." }, input_path }, { source_c_str, srcmap_c_str });
|
647
|
+
|
648
|
+
// create root ast tree node
|
649
|
+
return compile();
|
650
|
+
}
|
651
|
+
|
652
|
+
|
653
|
+
|
654
|
+
// parse root block from includes
|
655
|
+
Block_Obj Context::compile()
|
656
|
+
{
|
657
|
+
// abort if there is no data
|
658
|
+
if (resources.size() == 0) return {};
|
659
|
+
// get root block from the first style sheet
|
660
|
+
Block_Obj root = sheets.at(entry_path).root;
|
661
|
+
// abort on invalid root
|
662
|
+
if (root.isNull()) return {};
|
663
|
+
Env global; // create root environment
|
664
|
+
// register built-in functions on env
|
665
|
+
register_built_in_functions(*this, &global);
|
666
|
+
// register custom functions (defined via C-API)
|
667
|
+
for (size_t i = 0, S = c_functions.size(); i < S; ++i)
|
668
|
+
{ register_c_function(*this, &global, c_functions[i]); }
|
669
|
+
// create initial backtrace entry
|
670
|
+
// create crtp visitor objects
|
671
|
+
Expand expand(*this, &global);
|
672
|
+
Cssize cssize(*this);
|
673
|
+
CheckNesting check_nesting;
|
674
|
+
// check nesting in all files
|
675
|
+
for (auto sheet : sheets) {
|
676
|
+
auto styles = sheet.second;
|
677
|
+
check_nesting(styles.root);
|
678
|
+
}
|
679
|
+
// expand and eval the tree
|
680
|
+
root = expand(root);
|
681
|
+
// check nesting
|
682
|
+
check_nesting(root);
|
683
|
+
// merge and bubble certain rules
|
684
|
+
root = cssize(root);
|
685
|
+
// should we extend something?
|
686
|
+
if (!subset_map.empty()) {
|
687
|
+
// create crtp visitor object
|
688
|
+
Extend extend(subset_map);
|
689
|
+
extend.setEval(expand.eval);
|
690
|
+
// extend tree nodes
|
691
|
+
extend(root);
|
692
|
+
}
|
693
|
+
|
694
|
+
// clean up by removing empty placeholders
|
695
|
+
// ToDo: maybe we can do this somewhere else?
|
696
|
+
Remove_Placeholders remove_placeholders;
|
697
|
+
root->perform(&remove_placeholders);
|
698
|
+
// return processed tree
|
699
|
+
return root;
|
700
|
+
}
|
701
|
+
// EO compile
|
702
|
+
|
703
|
+
std::string Context::format_embedded_source_map()
|
704
|
+
{
|
705
|
+
std::string map = emitter.render_srcmap(*this);
|
706
|
+
std::istringstream is( map );
|
707
|
+
std::ostringstream buffer;
|
708
|
+
base64::encoder E;
|
709
|
+
E.encode(is, buffer);
|
710
|
+
std::string url = "data:application/json;base64," + buffer.str();
|
711
|
+
url.erase(url.size() - 1);
|
712
|
+
return "/*# sourceMappingURL=" + url + " */";
|
713
|
+
}
|
714
|
+
|
715
|
+
std::string Context::format_source_mapping_url(const std::string& file)
|
716
|
+
{
|
717
|
+
std::string url = abs2rel(file, output_path, CWD);
|
718
|
+
return "/*# sourceMappingURL=" + url + " */";
|
719
|
+
}
|
720
|
+
|
721
|
+
char* Context::render_srcmap()
|
722
|
+
{
|
723
|
+
if (source_map_file == "") return 0;
|
724
|
+
std::string map = emitter.render_srcmap(*this);
|
725
|
+
return sass_copy_c_string(map.c_str());
|
726
|
+
}
|
727
|
+
|
728
|
+
|
729
|
+
// for data context we want to start after "stdin"
|
730
|
+
// we probably always want to skip the header includes?
|
731
|
+
std::vector<std::string> Context::get_included_files(bool skip, size_t headers)
|
732
|
+
{
|
733
|
+
// create a copy of the vector for manipulations
|
734
|
+
std::vector<std::string> includes = included_files;
|
735
|
+
if (includes.size() == 0) return includes;
|
736
|
+
if (skip) { includes.erase( includes.begin(), includes.begin() + 1 + headers); }
|
737
|
+
else { includes.erase( includes.begin() + 1, includes.begin() + 1 + headers); }
|
738
|
+
includes.erase( std::unique( includes.begin(), includes.end() ), includes.end() );
|
739
|
+
std::sort( includes.begin() + (skip ? 0 : 1), includes.end() );
|
740
|
+
return includes;
|
741
|
+
}
|
742
|
+
|
743
|
+
void register_function(Context& ctx, Signature sig, Native_Function f, Env* env)
|
744
|
+
{
|
745
|
+
Definition* def = make_native_function(sig, f, ctx);
|
746
|
+
def->environment(env);
|
747
|
+
(*env)[def->name() + "[f]"] = def;
|
748
|
+
}
|
749
|
+
|
750
|
+
void register_function(Context& ctx, Signature sig, Native_Function f, size_t arity, Env* env)
|
751
|
+
{
|
752
|
+
Definition* def = make_native_function(sig, f, ctx);
|
753
|
+
std::stringstream ss;
|
754
|
+
ss << def->name() << "[f]" << arity;
|
755
|
+
def->environment(env);
|
756
|
+
(*env)[ss.str()] = def;
|
757
|
+
}
|
758
|
+
|
759
|
+
void register_overload_stub(Context& ctx, std::string name, Env* env)
|
760
|
+
{
|
761
|
+
Definition* stub = SASS_MEMORY_NEW(Definition,
|
762
|
+
ParserState("[built-in function]"),
|
763
|
+
0,
|
764
|
+
name,
|
765
|
+
{},
|
766
|
+
0,
|
767
|
+
true);
|
768
|
+
(*env)[name + "[f]"] = stub;
|
769
|
+
}
|
770
|
+
|
771
|
+
|
772
|
+
void register_built_in_functions(Context& ctx, Env* env)
|
773
|
+
{
|
774
|
+
using namespace Functions;
|
775
|
+
// RGB Functions
|
776
|
+
register_function(ctx, rgb_sig, rgb, env);
|
777
|
+
register_overload_stub(ctx, "rgba", env);
|
778
|
+
register_function(ctx, rgba_4_sig, rgba_4, 4, env);
|
779
|
+
register_function(ctx, rgba_2_sig, rgba_2, 2, env);
|
780
|
+
register_function(ctx, red_sig, red, env);
|
781
|
+
register_function(ctx, green_sig, green, env);
|
782
|
+
register_function(ctx, blue_sig, blue, env);
|
783
|
+
register_function(ctx, mix_sig, mix, env);
|
784
|
+
// HSL Functions
|
785
|
+
register_function(ctx, hsl_sig, hsl, env);
|
786
|
+
register_function(ctx, hsla_sig, hsla, env);
|
787
|
+
register_function(ctx, hue_sig, hue, env);
|
788
|
+
register_function(ctx, saturation_sig, saturation, env);
|
789
|
+
register_function(ctx, lightness_sig, lightness, env);
|
790
|
+
register_function(ctx, adjust_hue_sig, adjust_hue, env);
|
791
|
+
register_function(ctx, lighten_sig, lighten, env);
|
792
|
+
register_function(ctx, darken_sig, darken, env);
|
793
|
+
register_function(ctx, saturate_sig, saturate, env);
|
794
|
+
register_function(ctx, desaturate_sig, desaturate, env);
|
795
|
+
register_function(ctx, grayscale_sig, grayscale, env);
|
796
|
+
register_function(ctx, complement_sig, complement, env);
|
797
|
+
register_function(ctx, invert_sig, invert, env);
|
798
|
+
// Opacity Functions
|
799
|
+
register_function(ctx, alpha_sig, alpha, env);
|
800
|
+
register_function(ctx, opacity_sig, alpha, env);
|
801
|
+
register_function(ctx, opacify_sig, opacify, env);
|
802
|
+
register_function(ctx, fade_in_sig, opacify, env);
|
803
|
+
register_function(ctx, transparentize_sig, transparentize, env);
|
804
|
+
register_function(ctx, fade_out_sig, transparentize, env);
|
805
|
+
// Other Color Functions
|
806
|
+
register_function(ctx, adjust_color_sig, adjust_color, env);
|
807
|
+
register_function(ctx, scale_color_sig, scale_color, env);
|
808
|
+
register_function(ctx, change_color_sig, change_color, env);
|
809
|
+
register_function(ctx, ie_hex_str_sig, ie_hex_str, env);
|
810
|
+
// String Functions
|
811
|
+
register_function(ctx, unquote_sig, sass_unquote, env);
|
812
|
+
register_function(ctx, quote_sig, sass_quote, env);
|
813
|
+
register_function(ctx, str_length_sig, str_length, env);
|
814
|
+
register_function(ctx, str_insert_sig, str_insert, env);
|
815
|
+
register_function(ctx, str_index_sig, str_index, env);
|
816
|
+
register_function(ctx, str_slice_sig, str_slice, env);
|
817
|
+
register_function(ctx, to_upper_case_sig, to_upper_case, env);
|
818
|
+
register_function(ctx, to_lower_case_sig, to_lower_case, env);
|
819
|
+
// Number Functions
|
820
|
+
register_function(ctx, percentage_sig, percentage, env);
|
821
|
+
register_function(ctx, round_sig, round, env);
|
822
|
+
register_function(ctx, ceil_sig, ceil, env);
|
823
|
+
register_function(ctx, floor_sig, floor, env);
|
824
|
+
register_function(ctx, abs_sig, abs, env);
|
825
|
+
register_function(ctx, min_sig, min, env);
|
826
|
+
register_function(ctx, max_sig, max, env);
|
827
|
+
register_function(ctx, random_sig, random, env);
|
828
|
+
// List Functions
|
829
|
+
register_function(ctx, length_sig, length, env);
|
830
|
+
register_function(ctx, nth_sig, nth, env);
|
831
|
+
register_function(ctx, set_nth_sig, set_nth, env);
|
832
|
+
register_function(ctx, index_sig, index, env);
|
833
|
+
register_function(ctx, join_sig, join, env);
|
834
|
+
register_function(ctx, append_sig, append, env);
|
835
|
+
register_function(ctx, zip_sig, zip, env);
|
836
|
+
register_function(ctx, list_separator_sig, list_separator, env);
|
837
|
+
register_function(ctx, is_bracketed_sig, is_bracketed, env);
|
838
|
+
// Map Functions
|
839
|
+
register_function(ctx, map_get_sig, map_get, env);
|
840
|
+
register_function(ctx, map_merge_sig, map_merge, env);
|
841
|
+
register_function(ctx, map_remove_sig, map_remove, env);
|
842
|
+
register_function(ctx, map_keys_sig, map_keys, env);
|
843
|
+
register_function(ctx, map_values_sig, map_values, env);
|
844
|
+
register_function(ctx, map_has_key_sig, map_has_key, env);
|
845
|
+
register_function(ctx, keywords_sig, keywords, env);
|
846
|
+
// Introspection Functions
|
847
|
+
register_function(ctx, type_of_sig, type_of, env);
|
848
|
+
register_function(ctx, unit_sig, unit, env);
|
849
|
+
register_function(ctx, unitless_sig, unitless, env);
|
850
|
+
register_function(ctx, comparable_sig, comparable, env);
|
851
|
+
register_function(ctx, variable_exists_sig, variable_exists, env);
|
852
|
+
register_function(ctx, global_variable_exists_sig, global_variable_exists, env);
|
853
|
+
register_function(ctx, function_exists_sig, function_exists, env);
|
854
|
+
register_function(ctx, mixin_exists_sig, mixin_exists, env);
|
855
|
+
register_function(ctx, feature_exists_sig, feature_exists, env);
|
856
|
+
register_function(ctx, call_sig, call, env);
|
857
|
+
register_function(ctx, content_exists_sig, content_exists, env);
|
858
|
+
register_function(ctx, get_function_sig, get_function, env);
|
859
|
+
// Boolean Functions
|
860
|
+
register_function(ctx, not_sig, sass_not, env);
|
861
|
+
register_function(ctx, if_sig, sass_if, env);
|
862
|
+
// Misc Functions
|
863
|
+
register_function(ctx, inspect_sig, inspect, env);
|
864
|
+
register_function(ctx, unique_id_sig, unique_id, env);
|
865
|
+
// Selector functions
|
866
|
+
register_function(ctx, selector_nest_sig, selector_nest, env);
|
867
|
+
register_function(ctx, selector_append_sig, selector_append, env);
|
868
|
+
register_function(ctx, selector_extend_sig, selector_extend, env);
|
869
|
+
register_function(ctx, selector_replace_sig, selector_replace, env);
|
870
|
+
register_function(ctx, selector_unify_sig, selector_unify, env);
|
871
|
+
register_function(ctx, is_superselector_sig, is_superselector, env);
|
872
|
+
register_function(ctx, simple_selectors_sig, simple_selectors, env);
|
873
|
+
register_function(ctx, selector_parse_sig, selector_parse, env);
|
874
|
+
}
|
875
|
+
|
876
|
+
void register_c_functions(Context& ctx, Env* env, Sass_Function_List descrs)
|
877
|
+
{
|
878
|
+
while (descrs && *descrs) {
|
879
|
+
register_c_function(ctx, env, *descrs);
|
880
|
+
++descrs;
|
881
|
+
}
|
882
|
+
}
|
883
|
+
void register_c_function(Context& ctx, Env* env, Sass_Function_Entry descr)
|
884
|
+
{
|
885
|
+
Definition* def = make_c_function(descr, ctx);
|
886
|
+
def->environment(env);
|
887
|
+
(*env)[def->name() + "[f]"] = def;
|
888
|
+
}
|
889
|
+
|
890
|
+
}
|