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.
Files changed (449) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/zuora_connect_ui.js +1 -0
  3. data/app/assets/javascripts/zuora_connect_ui/util.js +51 -0
  4. data/app/assets/stylesheets/_zuora_connect_ui.scss +4 -6
  5. data/app/assets/stylesheets/zuora_connect_ui/datatables.scss +3 -3
  6. data/app/helpers/zuora_connect_ui/application_helper.rb +28 -4
  7. data/app/views/partials/_table.html.erb +16 -7
  8. data/lib/zuora_connect_ui/version.rb +1 -1
  9. data/vendor/ruby/2.6.0/cache/autoprefixer-rails-9.6.1.1.gem +0 -0
  10. data/vendor/ruby/2.6.0/cache/parser-2.6.4.1.gem +0 -0
  11. data/vendor/ruby/2.6.0/cache/sassc-2.2.0.gem +0 -0
  12. data/vendor/ruby/2.6.0/cache/zeitwerk-2.1.10.gem +0 -0
  13. data/vendor/ruby/2.6.0/extensions/x86_64-linux/2.6.0/sassc-2.2.0/gem.build_complete +0 -0
  14. data/vendor/ruby/2.6.0/extensions/x86_64-linux/2.6.0/sassc-2.2.0/gem_make.out +75 -0
  15. data/vendor/ruby/2.6.0/extensions/x86_64-linux/2.6.0/sassc-2.2.0/sassc/libsass.so +0 -0
  16. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/CHANGELOG.md +1085 -0
  17. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/Gemfile +10 -0
  18. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/LICENSE +20 -0
  19. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/README.md +237 -0
  20. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/Rakefile +53 -0
  21. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/autoprefixer-rails.gemspec +32 -0
  22. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/lib/autoprefixer-rails.rb +41 -0
  23. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/lib/autoprefixer-rails/processor.rb +194 -0
  24. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/lib/autoprefixer-rails/railtie.rb +50 -0
  25. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/lib/autoprefixer-rails/result.rb +24 -0
  26. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/lib/autoprefixer-rails/sprockets.rb +62 -0
  27. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/lib/autoprefixer-rails/version.rb +3 -0
  28. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/lib/rake/autoprefixer_tasks.rb +28 -0
  29. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/spec/app/Rakefile +2 -0
  30. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/spec/app/app/assets/config/manifest.js +0 -0
  31. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/spec/app/app/assets/stylesheets/evaluate.css.erb +1 -0
  32. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/spec/app/app/assets/stylesheets/loaded.sass +2 -0
  33. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/spec/app/app/assets/stylesheets/sass.sass +1 -0
  34. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/spec/app/app/assets/stylesheets/test.css +3 -0
  35. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/spec/app/app/assets/stylesheets/wrong.css +2 -0
  36. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/spec/app/app/controllers/application_controller.rb +2 -0
  37. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/spec/app/app/controllers/css_controller.rb +6 -0
  38. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/spec/app/config.ru +2 -0
  39. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/spec/app/config/application.rb +16 -0
  40. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/spec/app/config/autoprefixer.yml +2 -0
  41. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/spec/app/config/boot.rb +2 -0
  42. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/spec/app/config/environment.rb +3 -0
  43. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/spec/app/config/environments/test.rb +9 -0
  44. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/spec/app/config/initializers/secret_token.rb +1 -0
  45. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/spec/app/config/routes.rb +3 -0
  46. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/spec/autoprefixer_spec.rb +121 -0
  47. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/spec/processor_spec.rb +25 -0
  48. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/spec/rails_spec.rb +40 -0
  49. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/spec/railtie_spec.rb +29 -0
  50. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/spec/spec_helper.rb +16 -0
  51. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.1.1/vendor/autoprefixer.js +67195 -0
  52. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/CHANGELOG.md +909 -0
  53. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/CONTRIBUTING.md +17 -0
  54. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/Gemfile +10 -0
  55. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/LICENSE.txt +25 -0
  56. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/README.md +301 -0
  57. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/Rakefile +166 -0
  58. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/bin/ruby-parse +7 -0
  59. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/bin/ruby-rewrite +7 -0
  60. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/ci/run_rubocop_specs +14 -0
  61. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/doc/AST_FORMAT.md +1816 -0
  62. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/doc/CUSTOMIZATION.md +37 -0
  63. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/doc/INTERNALS.md +21 -0
  64. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/doc/css/common.css +68 -0
  65. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/gauntlet_parser.rb +123 -0
  66. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser.rb +82 -0
  67. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/all.rb +12 -0
  68. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/ast/node.rb +40 -0
  69. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/ast/processor.rb +264 -0
  70. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/base.rb +270 -0
  71. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/builders/default.rb +1741 -0
  72. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/clobbering_error.rb +13 -0
  73. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/color.rb +32 -0
  74. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/context.rb +59 -0
  75. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/current.rb +92 -0
  76. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/deprecation.rb +13 -0
  77. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/diagnostic.rb +163 -0
  78. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/diagnostic/engine.rb +105 -0
  79. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/lexer.rb +23546 -0
  80. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/lexer.rl +2503 -0
  81. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/lexer/dedenter.rb +79 -0
  82. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/lexer/explanation.rb +55 -0
  83. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/lexer/literal.rb +269 -0
  84. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/lexer/max_numparam_stack.rb +42 -0
  85. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/lexer/stack_state.rb +49 -0
  86. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/macruby.rb +6124 -0
  87. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/macruby.y +2198 -0
  88. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/messages.rb +90 -0
  89. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/meta.rb +33 -0
  90. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/rewriter.rb +105 -0
  91. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/ruby18.rb +5661 -0
  92. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/ruby18.y +1934 -0
  93. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/ruby19.rb +6084 -0
  94. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/ruby19.y +2175 -0
  95. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/ruby20.rb +6511 -0
  96. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/ruby20.y +2353 -0
  97. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/ruby21.rb +6570 -0
  98. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/ruby21.y +2357 -0
  99. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/ruby22.rb +6605 -0
  100. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/ruby22.y +2364 -0
  101. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/ruby23.rb +6624 -0
  102. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/ruby23.y +2370 -0
  103. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/ruby24.rb +6689 -0
  104. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/ruby24.y +2408 -0
  105. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/ruby25.rb +6656 -0
  106. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/ruby25.y +2405 -0
  107. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/ruby26.rb +6670 -0
  108. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/ruby26.y +2413 -0
  109. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/ruby27.rb +6893 -0
  110. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/ruby27.y +2470 -0
  111. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/rubymotion.rb +6078 -0
  112. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/rubymotion.y +2182 -0
  113. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/runner.rb +253 -0
  114. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/runner/ruby_parse.rb +157 -0
  115. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/runner/ruby_rewrite.rb +101 -0
  116. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/source/buffer.rb +330 -0
  117. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/source/comment.rb +121 -0
  118. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/source/comment/associator.rb +210 -0
  119. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/source/map.rb +186 -0
  120. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/source/map/collection.rb +18 -0
  121. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/source/map/condition.rb +21 -0
  122. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/source/map/constant.rb +32 -0
  123. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/source/map/definition.rb +23 -0
  124. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/source/map/for.rb +19 -0
  125. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/source/map/heredoc.rb +19 -0
  126. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/source/map/index.rb +33 -0
  127. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/source/map/keyword.rb +20 -0
  128. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/source/map/objc_kwarg.rb +19 -0
  129. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/source/map/operator.rb +17 -0
  130. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/source/map/rescue_body.rb +21 -0
  131. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/source/map/send.rb +36 -0
  132. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/source/map/ternary.rb +18 -0
  133. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/source/map/variable.rb +31 -0
  134. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/source/range.rb +310 -0
  135. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/source/rewriter.rb +513 -0
  136. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/source/rewriter/action.rb +44 -0
  137. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/source/tree_rewriter.rb +301 -0
  138. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/source/tree_rewriter/action.rb +133 -0
  139. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/static_environment.rb +46 -0
  140. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/syntax_error.rb +21 -0
  141. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/tree_rewriter.rb +134 -0
  142. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/lib/parser/version.rb +5 -0
  143. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/parser.gemspec +51 -0
  144. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/test/bug_163/fixtures/input.rb +5 -0
  145. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/test/bug_163/fixtures/output.rb +5 -0
  146. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/test/bug_163/rewriter.rb +20 -0
  147. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/test/helper.rb +59 -0
  148. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/test/parse_helper.rb +316 -0
  149. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/test/racc_coverage_helper.rb +133 -0
  150. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/test/test_base.rb +31 -0
  151. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/test/test_current.rb +29 -0
  152. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/test/test_diagnostic.rb +96 -0
  153. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/test/test_diagnostic_engine.rb +62 -0
  154. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/test/test_encoding.rb +99 -0
  155. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/test/test_lexer.rb +3659 -0
  156. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/test/test_lexer_stack_state.rb +78 -0
  157. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/test/test_parse_helper.rb +80 -0
  158. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/test/test_parser.rb +7579 -0
  159. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/test/test_runner_parse.rb +35 -0
  160. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/test/test_runner_rewrite.rb +47 -0
  161. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/test/test_source_buffer.rb +162 -0
  162. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/test/test_source_comment.rb +36 -0
  163. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/test/test_source_comment_associator.rb +367 -0
  164. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/test/test_source_map.rb +15 -0
  165. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/test/test_source_range.rb +172 -0
  166. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/test/test_source_rewriter.rb +541 -0
  167. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/test/test_source_rewriter_action.rb +46 -0
  168. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/test/test_source_tree_rewriter.rb +173 -0
  169. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/test/test_static_environment.rb +45 -0
  170. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/test/using_tree_rewriter/fixtures/input.rb +3 -0
  171. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/test/using_tree_rewriter/fixtures/output.rb +3 -0
  172. data/vendor/ruby/2.6.0/gems/parser-2.6.4.1/test/using_tree_rewriter/using_tree_rewriter.rb +9 -0
  173. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/CHANGELOG.md +77 -0
  174. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/CODE_OF_CONDUCT.md +10 -0
  175. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/Gemfile +2 -0
  176. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/LICENSE.txt +22 -0
  177. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/README.md +68 -0
  178. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/Rakefile +53 -0
  179. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/Makefile +271 -0
  180. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/SharedPtr.o +0 -0
  181. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/ast.o +0 -0
  182. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/ast2c.o +0 -0
  183. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/ast_fwd_decl.o +0 -0
  184. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/ast_sel_cmp.o +0 -0
  185. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/ast_sel_unify.o +0 -0
  186. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/ast_selectors.o +0 -0
  187. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/ast_supports.o +0 -0
  188. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/ast_values.o +0 -0
  189. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/backtrace.o +0 -0
  190. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/base64vlq.o +0 -0
  191. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/bind.o +0 -0
  192. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/c2ast.o +0 -0
  193. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/c99func.o +0 -0
  194. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/cencode.o +0 -0
  195. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/check_nesting.o +0 -0
  196. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/color_maps.o +0 -0
  197. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/constants.o +0 -0
  198. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/context.o +0 -0
  199. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/cssize.o +0 -0
  200. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/depend +4 -0
  201. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/emitter.o +0 -0
  202. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/environment.o +0 -0
  203. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/error_handling.o +0 -0
  204. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/eval.o +0 -0
  205. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/expand.o +0 -0
  206. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/extconf.rb +84 -0
  207. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/extend.o +0 -0
  208. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/file.o +0 -0
  209. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/fn_colors.o +0 -0
  210. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/fn_lists.o +0 -0
  211. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/fn_maps.o +0 -0
  212. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/fn_miscs.o +0 -0
  213. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/fn_numbers.o +0 -0
  214. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/fn_selectors.o +0 -0
  215. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/fn_strings.o +0 -0
  216. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/fn_utils.o +0 -0
  217. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/inspect.o +0 -0
  218. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/json.o +0 -0
  219. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/lexer.o +0 -0
  220. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass.so +0 -0
  221. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/VERSION +1 -0
  222. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/contrib/plugin.cpp +60 -0
  223. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/include/sass.h +15 -0
  224. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/include/sass/base.h +96 -0
  225. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/include/sass/context.h +170 -0
  226. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/include/sass/functions.h +139 -0
  227. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/include/sass/values.h +145 -0
  228. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/include/sass/version.h +12 -0
  229. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/include/sass2scss.h +120 -0
  230. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/ast.cpp +963 -0
  231. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/ast.hpp +905 -0
  232. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/ast2c.cpp +80 -0
  233. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/ast2c.hpp +39 -0
  234. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/ast_def_macros.hpp +132 -0
  235. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/ast_fwd_decl.cpp +30 -0
  236. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/ast_fwd_decl.hpp +341 -0
  237. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/ast_sel_cmp.cpp +909 -0
  238. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/ast_sel_unify.cpp +280 -0
  239. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/ast_selectors.cpp +1475 -0
  240. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/ast_selectors.hpp +568 -0
  241. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/ast_supports.cpp +130 -0
  242. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/ast_supports.hpp +121 -0
  243. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/ast_values.cpp +967 -0
  244. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/ast_values.hpp +489 -0
  245. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/b64/cencode.h +32 -0
  246. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/b64/encode.h +79 -0
  247. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/backtrace.cpp +50 -0
  248. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/backtrace.hpp +29 -0
  249. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/base64vlq.cpp +47 -0
  250. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/base64vlq.hpp +30 -0
  251. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/bind.cpp +312 -0
  252. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/bind.hpp +15 -0
  253. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/c2ast.cpp +64 -0
  254. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/c2ast.hpp +14 -0
  255. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/c99func.c +54 -0
  256. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/cencode.c +108 -0
  257. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/check_nesting.cpp +394 -0
  258. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/check_nesting.hpp +66 -0
  259. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/color_maps.cpp +651 -0
  260. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/color_maps.hpp +331 -0
  261. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/constants.cpp +194 -0
  262. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/constants.hpp +194 -0
  263. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/context.cpp +890 -0
  264. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/context.hpp +152 -0
  265. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/cssize.cpp +604 -0
  266. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/cssize.hpp +77 -0
  267. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/debug.hpp +43 -0
  268. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/debugger.hpp +807 -0
  269. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/emitter.cpp +298 -0
  270. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/emitter.hpp +103 -0
  271. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/environment.cpp +260 -0
  272. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/environment.hpp +119 -0
  273. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/error_handling.cpp +212 -0
  274. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/error_handling.hpp +229 -0
  275. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/eval.cpp +1657 -0
  276. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/eval.hpp +112 -0
  277. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/expand.cpp +822 -0
  278. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/expand.hpp +78 -0
  279. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/extend.cpp +2132 -0
  280. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/extend.hpp +86 -0
  281. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/file.cpp +522 -0
  282. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/file.hpp +133 -0
  283. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/fn_colors.cpp +594 -0
  284. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/fn_colors.hpp +85 -0
  285. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/fn_lists.cpp +284 -0
  286. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/fn_lists.hpp +34 -0
  287. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/fn_maps.cpp +94 -0
  288. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/fn_maps.hpp +30 -0
  289. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/fn_miscs.cpp +256 -0
  290. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/fn_miscs.hpp +40 -0
  291. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/fn_numbers.cpp +220 -0
  292. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/fn_numbers.hpp +45 -0
  293. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/fn_selectors.cpp +235 -0
  294. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/fn_selectors.hpp +35 -0
  295. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/fn_strings.cpp +254 -0
  296. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/fn_strings.hpp +34 -0
  297. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/fn_utils.cpp +156 -0
  298. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/fn_utils.hpp +56 -0
  299. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/inspect.cpp +1087 -0
  300. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/inspect.hpp +99 -0
  301. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/json.cpp +1436 -0
  302. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/json.hpp +117 -0
  303. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/kwd_arg_macros.hpp +28 -0
  304. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/lexer.cpp +184 -0
  305. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/lexer.hpp +315 -0
  306. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/listize.cpp +84 -0
  307. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/listize.hpp +38 -0
  308. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/mapping.hpp +18 -0
  309. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/memory/SharedPtr.cpp +33 -0
  310. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/memory/SharedPtr.hpp +286 -0
  311. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/node.cpp +322 -0
  312. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/node.hpp +118 -0
  313. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/operation.hpp +213 -0
  314. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/operators.cpp +266 -0
  315. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/operators.hpp +30 -0
  316. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/output.cpp +339 -0
  317. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/output.hpp +47 -0
  318. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/parser.cpp +3153 -0
  319. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/parser.hpp +402 -0
  320. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/paths.hpp +71 -0
  321. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/plugins.cpp +188 -0
  322. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/plugins.hpp +57 -0
  323. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/position.cpp +184 -0
  324. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/position.hpp +124 -0
  325. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/prelexer.cpp +1780 -0
  326. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/prelexer.hpp +484 -0
  327. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/remove_placeholders.cpp +87 -0
  328. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/remove_placeholders.hpp +34 -0
  329. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/sass.cpp +155 -0
  330. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/sass.hpp +142 -0
  331. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/sass2scss.cpp +895 -0
  332. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/sass_context.cpp +772 -0
  333. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/sass_context.hpp +129 -0
  334. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/sass_functions.cpp +210 -0
  335. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/sass_functions.hpp +50 -0
  336. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/sass_util.cpp +152 -0
  337. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/sass_util.hpp +256 -0
  338. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/sass_values.cpp +365 -0
  339. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/sass_values.hpp +82 -0
  340. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/source_map.cpp +198 -0
  341. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/source_map.hpp +62 -0
  342. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/subset_map.cpp +58 -0
  343. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/subset_map.hpp +76 -0
  344. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/to_value.cpp +114 -0
  345. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/to_value.hpp +46 -0
  346. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/units.cpp +505 -0
  347. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/units.hpp +110 -0
  348. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/utf8.h +34 -0
  349. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/utf8/checked.h +336 -0
  350. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/utf8/core.h +332 -0
  351. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/utf8/unchecked.h +235 -0
  352. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/utf8_string.cpp +105 -0
  353. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/utf8_string.hpp +37 -0
  354. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/util.cpp +725 -0
  355. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/util.hpp +106 -0
  356. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/util_string.cpp +75 -0
  357. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/util_string.hpp +19 -0
  358. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/values.cpp +140 -0
  359. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/libsass/src/values.hpp +12 -0
  360. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/listize.o +0 -0
  361. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/node.o +0 -0
  362. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/operators.o +0 -0
  363. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/output.o +0 -0
  364. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/parser.o +0 -0
  365. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/plugins.o +0 -0
  366. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/position.o +0 -0
  367. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/prelexer.o +0 -0
  368. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/remove_placeholders.o +0 -0
  369. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/sass.o +0 -0
  370. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/sass2scss.o +0 -0
  371. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/sass_context.o +0 -0
  372. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/sass_functions.o +0 -0
  373. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/sass_util.o +0 -0
  374. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/sass_values.o +0 -0
  375. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/source_map.o +0 -0
  376. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/subset_map.o +0 -0
  377. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/to_value.o +0 -0
  378. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/units.o +0 -0
  379. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/utf8_string.o +0 -0
  380. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/util.o +0 -0
  381. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/util_string.o +0 -0
  382. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/ext/values.o +0 -0
  383. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc.rb +57 -0
  384. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/dependency.rb +17 -0
  385. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/engine.rb +139 -0
  386. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/error.rb +37 -0
  387. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/functions_handler.rb +73 -0
  388. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/import_handler.rb +50 -0
  389. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/importer.rb +31 -0
  390. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/libsass.so +0 -0
  391. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/native.rb +62 -0
  392. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/native/lib_c.rb +21 -0
  393. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/native/native_context_api.rb +147 -0
  394. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/native/native_functions_api.rb +159 -0
  395. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/native/sass2scss_api.rb +10 -0
  396. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/native/sass_input_style.rb +13 -0
  397. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/native/sass_output_style.rb +12 -0
  398. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/native/sass_value.rb +97 -0
  399. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/native/string_list.rb +10 -0
  400. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/sass_2_scss.rb +9 -0
  401. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/script.rb +17 -0
  402. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/script/functions.rb +8 -0
  403. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/script/value.rb +137 -0
  404. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/script/value/bool.rb +32 -0
  405. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/script/value/color.rb +95 -0
  406. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/script/value/list.rb +136 -0
  407. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/script/value/map.rb +69 -0
  408. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/script/value/number.rb +389 -0
  409. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/script/value/string.rb +96 -0
  410. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/script/value_conversion.rb +69 -0
  411. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/script/value_conversion/base.rb +13 -0
  412. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/script/value_conversion/bool.rb +13 -0
  413. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/script/value_conversion/color.rb +18 -0
  414. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/script/value_conversion/list.rb +25 -0
  415. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/script/value_conversion/map.rb +21 -0
  416. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/script/value_conversion/number.rb +13 -0
  417. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/script/value_conversion/string.rb +17 -0
  418. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/util.rb +231 -0
  419. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/util/normalized_map.rb +117 -0
  420. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/lib/sassc/version.rb +5 -0
  421. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/sassc.gemspec +69 -0
  422. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/test/custom_importer_test.rb +127 -0
  423. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/test/engine_test.rb +314 -0
  424. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/test/error_test.rb +29 -0
  425. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/test/fixtures/paths.scss +10 -0
  426. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/test/functions_test.rb +323 -0
  427. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/test/native_test.rb +213 -0
  428. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/test/output_style_test.rb +107 -0
  429. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/test/sass_2_scss_test.rb +14 -0
  430. data/vendor/ruby/2.6.0/gems/sassc-2.2.0/test/test_helper.rb +45 -0
  431. data/vendor/ruby/2.6.0/gems/zeitwerk-2.1.10/README.md +533 -0
  432. data/vendor/ruby/2.6.0/gems/zeitwerk-2.1.10/lib/zeitwerk.rb +12 -0
  433. data/vendor/ruby/2.6.0/gems/zeitwerk-2.1.10/lib/zeitwerk/error.rb +10 -0
  434. data/vendor/ruby/2.6.0/gems/zeitwerk-2.1.10/lib/zeitwerk/explicit_namespace.rb +80 -0
  435. data/vendor/ruby/2.6.0/gems/zeitwerk-2.1.10/lib/zeitwerk/gem_inflector.rb +19 -0
  436. data/vendor/ruby/2.6.0/gems/zeitwerk-2.1.10/lib/zeitwerk/inflector.rb +19 -0
  437. data/vendor/ruby/2.6.0/gems/zeitwerk-2.1.10/lib/zeitwerk/kernel.rb +33 -0
  438. data/vendor/ruby/2.6.0/gems/zeitwerk-2.1.10/lib/zeitwerk/loader.rb +759 -0
  439. data/vendor/ruby/2.6.0/gems/zeitwerk-2.1.10/lib/zeitwerk/loader/callbacks.rb +71 -0
  440. data/vendor/ruby/2.6.0/gems/zeitwerk-2.1.10/lib/zeitwerk/real_mod_name.rb +15 -0
  441. data/vendor/ruby/2.6.0/gems/zeitwerk-2.1.10/lib/zeitwerk/registry.rb +147 -0
  442. data/vendor/ruby/2.6.0/gems/zeitwerk-2.1.10/lib/zeitwerk/version.rb +5 -0
  443. data/vendor/ruby/2.6.0/specifications/autoprefixer-rails-9.6.1.1.gemspec +47 -0
  444. data/vendor/ruby/2.6.0/specifications/parser-2.6.4.1.gemspec +62 -0
  445. data/vendor/ruby/2.6.0/specifications/sassc-2.2.0.gemspec +60 -0
  446. data/vendor/ruby/2.6.0/specifications/zeitwerk-2.1.10.gemspec +21 -0
  447. metadata +441 -4
  448. data/vendor/assets/anjuna/css/anjuna-application.css +0 -2
  449. data/vendor/assets/anjuna/css/anjuna-theme.css +0 -2
@@ -0,0 +1,34 @@
1
+ #ifndef SASS_FN_STRINGS_H
2
+ #define SASS_FN_STRINGS_H
3
+
4
+ #include "fn_utils.hpp"
5
+
6
+ namespace Sass {
7
+
8
+ namespace Functions {
9
+
10
+ extern Signature unquote_sig;
11
+ extern Signature quote_sig;
12
+ extern Signature str_length_sig;
13
+ extern Signature str_insert_sig;
14
+ extern Signature str_index_sig;
15
+ extern Signature str_slice_sig;
16
+ extern Signature to_upper_case_sig;
17
+ extern Signature to_lower_case_sig;
18
+ extern Signature length_sig;
19
+
20
+ BUILT_IN(sass_unquote);
21
+ BUILT_IN(sass_quote);
22
+ BUILT_IN(str_length);
23
+ BUILT_IN(str_insert);
24
+ BUILT_IN(str_index);
25
+ BUILT_IN(str_slice);
26
+ BUILT_IN(to_upper_case);
27
+ BUILT_IN(to_lower_case);
28
+ BUILT_IN(length);
29
+
30
+ }
31
+
32
+ }
33
+
34
+ #endif
@@ -0,0 +1,156 @@
1
+ // sass.hpp must go before all system headers to get the
2
+ // __EXTENSIONS__ fix on Solaris.
3
+ #include "sass.hpp"
4
+
5
+ #include "parser.hpp"
6
+ #include "fn_utils.hpp"
7
+ #include "util_string.hpp"
8
+
9
+ namespace Sass {
10
+
11
+ Definition* make_native_function(Signature sig, Native_Function func, Context& ctx)
12
+ {
13
+ Parser sig_parser = Parser::from_c_str(sig, ctx, ctx.traces, ParserState("[built-in function]"));
14
+ sig_parser.lex<Prelexer::identifier>();
15
+ std::string name(Util::normalize_underscores(sig_parser.lexed));
16
+ Parameters_Obj params = sig_parser.parse_parameters();
17
+ return SASS_MEMORY_NEW(Definition,
18
+ ParserState("[built-in function]"),
19
+ sig,
20
+ name,
21
+ params,
22
+ func,
23
+ false);
24
+ }
25
+
26
+ Definition* make_c_function(Sass_Function_Entry c_func, Context& ctx)
27
+ {
28
+ using namespace Prelexer;
29
+
30
+ const char* sig = sass_function_get_signature(c_func);
31
+ Parser sig_parser = Parser::from_c_str(sig, ctx, ctx.traces, ParserState("[c function]"));
32
+ // allow to overload generic callback plus @warn, @error and @debug with custom functions
33
+ sig_parser.lex < alternatives < identifier, exactly <'*'>,
34
+ exactly < Constants::warn_kwd >,
35
+ exactly < Constants::error_kwd >,
36
+ exactly < Constants::debug_kwd >
37
+ > >();
38
+ std::string name(Util::normalize_underscores(sig_parser.lexed));
39
+ Parameters_Obj params = sig_parser.parse_parameters();
40
+ return SASS_MEMORY_NEW(Definition,
41
+ ParserState("[c function]"),
42
+ sig,
43
+ name,
44
+ params,
45
+ c_func);
46
+ }
47
+
48
+ namespace Functions {
49
+
50
+ std::string function_name(Signature sig)
51
+ {
52
+ std::string str(sig);
53
+ return str.substr(0, str.find('('));
54
+ }
55
+
56
+ Map* get_arg_m(const std::string& argname, Env& env, Signature sig, ParserState pstate, Backtraces traces)
57
+ {
58
+ AST_Node* value = env[argname];
59
+ if (Map* map = Cast<Map>(value)) return map;
60
+ List* list = Cast<List>(value);
61
+ if (list && list->length() == 0) {
62
+ return SASS_MEMORY_NEW(Map, pstate, 0);
63
+ }
64
+ return get_arg<Map>(argname, env, sig, pstate, traces);
65
+ }
66
+
67
+ double get_arg_r(const std::string& argname, Env& env, Signature sig, ParserState pstate, Backtraces traces, double lo, double hi)
68
+ {
69
+ Number* val = get_arg<Number>(argname, env, sig, pstate, traces);
70
+ Number tmpnr(val);
71
+ tmpnr.reduce();
72
+ double v = tmpnr.value();
73
+ if (!(lo <= v && v <= hi)) {
74
+ std::stringstream msg;
75
+ msg << "argument `" << argname << "` of `" << sig << "` must be between ";
76
+ msg << lo << " and " << hi;
77
+ error(msg.str(), pstate, traces);
78
+ }
79
+ return v;
80
+ }
81
+
82
+ Number* get_arg_n(const std::string& argname, Env& env, Signature sig, ParserState pstate, Backtraces traces)
83
+ {
84
+ Number* val = get_arg<Number>(argname, env, sig, pstate, traces);
85
+ val = SASS_MEMORY_COPY(val);
86
+ val->reduce();
87
+ return val;
88
+ }
89
+
90
+ double get_arg_val(const std::string& argname, Env& env, Signature sig, ParserState pstate, Backtraces traces)
91
+ {
92
+ Number* val = get_arg<Number>(argname, env, sig, pstate, traces);
93
+ Number tmpnr(val);
94
+ tmpnr.reduce();
95
+ return tmpnr.value();
96
+ }
97
+
98
+ double color_num(const std::string& argname, Env& env, Signature sig, ParserState pstate, Backtraces traces)
99
+ {
100
+ Number* val = get_arg<Number>(argname, env, sig, pstate, traces);
101
+ Number tmpnr(val);
102
+ tmpnr.reduce();
103
+ if (tmpnr.unit() == "%") {
104
+ return std::min(std::max(tmpnr.value() * 255 / 100.0, 0.0), 255.0);
105
+ } else {
106
+ return std::min(std::max(tmpnr.value(), 0.0), 255.0);
107
+ }
108
+ }
109
+
110
+ double alpha_num(const std::string& argname, Env& env, Signature sig, ParserState pstate, Backtraces traces) {
111
+ Number* val = get_arg<Number>(argname, env, sig, pstate, traces);
112
+ Number tmpnr(val);
113
+ tmpnr.reduce();
114
+ if (tmpnr.unit() == "%") {
115
+ return std::min(std::max(tmpnr.value(), 0.0), 100.0);
116
+ } else {
117
+ return std::min(std::max(tmpnr.value(), 0.0), 1.0);
118
+ }
119
+ }
120
+
121
+ Selector_List_Obj get_arg_sels(const std::string& argname, Env& env, Signature sig, ParserState pstate, Backtraces traces, Context& ctx) {
122
+ Expression_Obj exp = ARG(argname, Expression);
123
+ if (exp->concrete_type() == Expression::NULL_VAL) {
124
+ std::stringstream msg;
125
+ msg << argname << ": null is not a valid selector: it must be a string,\n";
126
+ msg << "a list of strings, or a list of lists of strings for `" << function_name(sig) << "'";
127
+ error(msg.str(), exp->pstate(), traces);
128
+ }
129
+ if (String_Constant* str = Cast<String_Constant>(exp)) {
130
+ str->quote_mark(0);
131
+ }
132
+ std::string exp_src = exp->to_string(ctx.c_options);
133
+ return Parser::parse_selector(exp_src.c_str(), ctx, traces, exp->pstate(), pstate.src, /*allow_parent=*/false);
134
+ }
135
+
136
+ Compound_Selector_Obj get_arg_sel(const std::string& argname, Env& env, Signature sig, ParserState pstate, Backtraces traces, Context& ctx) {
137
+ Expression_Obj exp = ARG(argname, Expression);
138
+ if (exp->concrete_type() == Expression::NULL_VAL) {
139
+ std::stringstream msg;
140
+ msg << argname << ": null is not a string for `" << function_name(sig) << "'";
141
+ error(msg.str(), exp->pstate(), traces);
142
+ }
143
+ if (String_Constant* str = Cast<String_Constant>(exp)) {
144
+ str->quote_mark(0);
145
+ }
146
+ std::string exp_src = exp->to_string(ctx.c_options);
147
+ Selector_List_Obj sel_list = Parser::parse_selector(exp_src.c_str(), ctx, traces, exp->pstate(), pstate.src, /*allow_parent=*/false);
148
+ if (sel_list->length() == 0) return {};
149
+ Complex_Selector_Obj first = sel_list->first();
150
+ if (!first->tail()) return first->head();
151
+ return first->tail()->head();
152
+ }
153
+
154
+ }
155
+
156
+ }
@@ -0,0 +1,56 @@
1
+ #ifndef SASS_FN_UTILS_H
2
+ #define SASS_FN_UTILS_H
3
+ #include "units.hpp"
4
+ #include "backtrace.hpp"
5
+ #include "environment.hpp"
6
+ #include "ast_fwd_decl.hpp"
7
+ #include "error_handling.hpp"
8
+
9
+ namespace Sass {
10
+
11
+ #define FN_PROTOTYPE \
12
+ Env& env, \
13
+ Env& d_env, \
14
+ Context& ctx, \
15
+ Signature sig, \
16
+ ParserState pstate, \
17
+ Backtraces& traces, \
18
+ SelectorStack& selector_stack
19
+
20
+ typedef const char* Signature;
21
+ typedef PreValue* (*Native_Function)(FN_PROTOTYPE);
22
+ #define BUILT_IN(name) PreValue* name(FN_PROTOTYPE)
23
+
24
+ #define ARG(argname, argtype) get_arg<argtype>(argname, env, sig, pstate, traces)
25
+ // special function for weird hsla percent (10px == 10% == 10 != 0.1)
26
+ #define ARGVAL(argname) get_arg_val(argname, env, sig, pstate, traces) // double
27
+
28
+ Definition* make_native_function(Signature, Native_Function, Context& ctx);
29
+ Definition* make_c_function(Sass_Function_Entry c_func, Context& ctx);
30
+
31
+ namespace Functions {
32
+
33
+ template <typename T>
34
+ T* get_arg(const std::string& argname, Env& env, Signature sig, ParserState pstate, Backtraces traces)
35
+ {
36
+ T* val = Cast<T>(env[argname]);
37
+ if (!val) {
38
+ error("argument `" + argname + "` of `" + sig + "` must be a " + T::type_name(), pstate, traces);
39
+ }
40
+ return val;
41
+ }
42
+
43
+ Map* get_arg_m(const std::string& argname, Env& env, Signature sig, ParserState pstate, Backtraces traces); // maps only
44
+ Number* get_arg_n(const std::string& argname, Env& env, Signature sig, ParserState pstate, Backtraces traces); // numbers only
45
+ double alpha_num(const std::string& argname, Env& env, Signature sig, ParserState pstate, Backtraces traces); // colors only
46
+ double color_num(const std::string& argname, Env& env, Signature sig, ParserState pstate, Backtraces traces); // colors only
47
+ double get_arg_r(const std::string& argname, Env& env, Signature sig, ParserState pstate, Backtraces traces, double lo, double hi); // colors only
48
+ double get_arg_val(const std::string& argname, Env& env, Signature sig, ParserState pstate, Backtraces traces); // shared
49
+ Selector_List_Obj get_arg_sels(const std::string& argname, Env& env, Signature sig, ParserState pstate, Backtraces traces, Context& ctx); // selectors only
50
+ Compound_Selector_Obj get_arg_sel(const std::string& argname, Env& env, Signature sig, ParserState pstate, Backtraces traces, Context& ctx); // selectors only
51
+
52
+ }
53
+
54
+ }
55
+
56
+ #endif
@@ -0,0 +1,1087 @@
1
+ // sass.hpp must go before all system headers to get the
2
+ // __EXTENSIONS__ fix on Solaris.
3
+ #include "sass.hpp"
4
+
5
+ #include <cmath>
6
+ #include <string>
7
+ #include <iostream>
8
+ #include <iomanip>
9
+ #include <stdint.h>
10
+ #include <stdint.h>
11
+
12
+ #include "ast.hpp"
13
+ #include "inspect.hpp"
14
+ #include "context.hpp"
15
+ #include "listize.hpp"
16
+ #include "color_maps.hpp"
17
+ #include "utf8/checked.h"
18
+
19
+ namespace Sass {
20
+
21
+ Inspect::Inspect(const Emitter& emi)
22
+ : Emitter(emi)
23
+ { }
24
+ Inspect::~Inspect() { }
25
+
26
+ // statements
27
+ void Inspect::operator()(Block* block)
28
+ {
29
+ if (!block->is_root()) {
30
+ add_open_mapping(block);
31
+ append_scope_opener();
32
+ }
33
+ if (output_style() == NESTED) indentation += block->tabs();
34
+ for (size_t i = 0, L = block->length(); i < L; ++i) {
35
+ (*block)[i]->perform(this);
36
+ }
37
+ if (output_style() == NESTED) indentation -= block->tabs();
38
+ if (!block->is_root()) {
39
+ append_scope_closer();
40
+ add_close_mapping(block);
41
+ }
42
+
43
+ }
44
+
45
+ void Inspect::operator()(Ruleset* ruleset)
46
+ {
47
+ if (ruleset->selector()) {
48
+ ruleset->selector()->perform(this);
49
+ }
50
+ if (ruleset->block()) {
51
+ ruleset->block()->perform(this);
52
+ }
53
+ }
54
+
55
+ void Inspect::operator()(Keyframe_Rule* rule)
56
+ {
57
+ if (rule->name()) rule->name()->perform(this);
58
+ if (rule->block()) rule->block()->perform(this);
59
+ }
60
+
61
+ void Inspect::operator()(Bubble* bubble)
62
+ {
63
+ append_indentation();
64
+ append_token("::BUBBLE", bubble);
65
+ append_scope_opener();
66
+ bubble->node()->perform(this);
67
+ append_scope_closer();
68
+ }
69
+
70
+ void Inspect::operator()(Media_Block* media_block)
71
+ {
72
+ append_indentation();
73
+ append_token("@media", media_block);
74
+ append_mandatory_space();
75
+ in_media_block = true;
76
+ media_block->media_queries()->perform(this);
77
+ in_media_block = false;
78
+ media_block->block()->perform(this);
79
+ }
80
+
81
+ void Inspect::operator()(Supports_Block* feature_block)
82
+ {
83
+ append_indentation();
84
+ append_token("@supports", feature_block);
85
+ append_mandatory_space();
86
+ feature_block->condition()->perform(this);
87
+ feature_block->block()->perform(this);
88
+ }
89
+
90
+ void Inspect::operator()(At_Root_Block* at_root_block)
91
+ {
92
+ append_indentation();
93
+ append_token("@at-root ", at_root_block);
94
+ append_mandatory_space();
95
+ if(at_root_block->expression()) at_root_block->expression()->perform(this);
96
+ if(at_root_block->block()) at_root_block->block()->perform(this);
97
+ }
98
+
99
+ void Inspect::operator()(Directive* at_rule)
100
+ {
101
+ append_indentation();
102
+ append_token(at_rule->keyword(), at_rule);
103
+ if (at_rule->selector()) {
104
+ append_mandatory_space();
105
+ bool was_wrapped = in_wrapped;
106
+ in_wrapped = true;
107
+ at_rule->selector()->perform(this);
108
+ in_wrapped = was_wrapped;
109
+ }
110
+ if (at_rule->value()) {
111
+ append_mandatory_space();
112
+ at_rule->value()->perform(this);
113
+ }
114
+ if (at_rule->block()) {
115
+ at_rule->block()->perform(this);
116
+ }
117
+ else {
118
+ append_delimiter();
119
+ }
120
+ }
121
+
122
+ void Inspect::operator()(Declaration* dec)
123
+ {
124
+ if (dec->value()->concrete_type() == Expression::NULL_VAL) return;
125
+ bool was_decl = in_declaration;
126
+ in_declaration = true;
127
+ LOCAL_FLAG(in_custom_property, dec->is_custom_property());
128
+
129
+ if (output_style() == NESTED)
130
+ indentation += dec->tabs();
131
+ append_indentation();
132
+ if (dec->property())
133
+ dec->property()->perform(this);
134
+ append_colon_separator();
135
+
136
+ if (dec->value()->concrete_type() == Expression::SELECTOR) {
137
+ Listize listize;
138
+ Expression_Obj ls = dec->value()->perform(&listize);
139
+ ls->perform(this);
140
+ } else {
141
+ dec->value()->perform(this);
142
+ }
143
+
144
+ if (dec->is_important()) {
145
+ append_optional_space();
146
+ append_string("!important");
147
+ }
148
+ append_delimiter();
149
+ if (output_style() == NESTED)
150
+ indentation -= dec->tabs();
151
+ in_declaration = was_decl;
152
+ }
153
+
154
+ void Inspect::operator()(Assignment* assn)
155
+ {
156
+ append_token(assn->variable(), assn);
157
+ append_colon_separator();
158
+ assn->value()->perform(this);
159
+ if (assn->is_default()) {
160
+ append_optional_space();
161
+ append_string("!default");
162
+ }
163
+ append_delimiter();
164
+ }
165
+
166
+ void Inspect::operator()(Import* import)
167
+ {
168
+ if (!import->urls().empty()) {
169
+ append_token("@import", import);
170
+ append_mandatory_space();
171
+
172
+ import->urls().front()->perform(this);
173
+ if (import->urls().size() == 1) {
174
+ if (import->import_queries()) {
175
+ append_mandatory_space();
176
+ import->import_queries()->perform(this);
177
+ }
178
+ }
179
+ append_delimiter();
180
+ for (size_t i = 1, S = import->urls().size(); i < S; ++i) {
181
+ append_mandatory_linefeed();
182
+ append_token("@import", import);
183
+ append_mandatory_space();
184
+
185
+ import->urls()[i]->perform(this);
186
+ if (import->urls().size() - 1 == i) {
187
+ if (import->import_queries()) {
188
+ append_mandatory_space();
189
+ import->import_queries()->perform(this);
190
+ }
191
+ }
192
+ append_delimiter();
193
+ }
194
+ }
195
+ }
196
+
197
+ void Inspect::operator()(Import_Stub* import)
198
+ {
199
+ append_indentation();
200
+ append_token("@import", import);
201
+ append_mandatory_space();
202
+ append_string(import->imp_path());
203
+ append_delimiter();
204
+ }
205
+
206
+ void Inspect::operator()(Warning* warning)
207
+ {
208
+ append_indentation();
209
+ append_token("@warn", warning);
210
+ append_mandatory_space();
211
+ warning->message()->perform(this);
212
+ append_delimiter();
213
+ }
214
+
215
+ void Inspect::operator()(Error* error)
216
+ {
217
+ append_indentation();
218
+ append_token("@error", error);
219
+ append_mandatory_space();
220
+ error->message()->perform(this);
221
+ append_delimiter();
222
+ }
223
+
224
+ void Inspect::operator()(Debug* debug)
225
+ {
226
+ append_indentation();
227
+ append_token("@debug", debug);
228
+ append_mandatory_space();
229
+ debug->value()->perform(this);
230
+ append_delimiter();
231
+ }
232
+
233
+ void Inspect::operator()(Comment* comment)
234
+ {
235
+ in_comment = true;
236
+ comment->text()->perform(this);
237
+ in_comment = false;
238
+ }
239
+
240
+ void Inspect::operator()(If* cond)
241
+ {
242
+ append_indentation();
243
+ append_token("@if", cond);
244
+ append_mandatory_space();
245
+ cond->predicate()->perform(this);
246
+ cond->block()->perform(this);
247
+ if (cond->alternative()) {
248
+ append_optional_linefeed();
249
+ append_indentation();
250
+ append_string("else");
251
+ cond->alternative()->perform(this);
252
+ }
253
+ }
254
+
255
+ void Inspect::operator()(For* loop)
256
+ {
257
+ append_indentation();
258
+ append_token("@for", loop);
259
+ append_mandatory_space();
260
+ append_string(loop->variable());
261
+ append_string(" from ");
262
+ loop->lower_bound()->perform(this);
263
+ append_string(loop->is_inclusive() ? " through " : " to ");
264
+ loop->upper_bound()->perform(this);
265
+ loop->block()->perform(this);
266
+ }
267
+
268
+ void Inspect::operator()(Each* loop)
269
+ {
270
+ append_indentation();
271
+ append_token("@each", loop);
272
+ append_mandatory_space();
273
+ append_string(loop->variables()[0]);
274
+ for (size_t i = 1, L = loop->variables().size(); i < L; ++i) {
275
+ append_comma_separator();
276
+ append_string(loop->variables()[i]);
277
+ }
278
+ append_string(" in ");
279
+ loop->list()->perform(this);
280
+ loop->block()->perform(this);
281
+ }
282
+
283
+ void Inspect::operator()(While* loop)
284
+ {
285
+ append_indentation();
286
+ append_token("@while", loop);
287
+ append_mandatory_space();
288
+ loop->predicate()->perform(this);
289
+ loop->block()->perform(this);
290
+ }
291
+
292
+ void Inspect::operator()(Return* ret)
293
+ {
294
+ append_indentation();
295
+ append_token("@return", ret);
296
+ append_mandatory_space();
297
+ ret->value()->perform(this);
298
+ append_delimiter();
299
+ }
300
+
301
+ void Inspect::operator()(Extension* extend)
302
+ {
303
+ append_indentation();
304
+ append_token("@extend", extend);
305
+ append_mandatory_space();
306
+ extend->selector()->perform(this);
307
+ append_delimiter();
308
+ }
309
+
310
+ void Inspect::operator()(Definition* def)
311
+ {
312
+ append_indentation();
313
+ if (def->type() == Definition::MIXIN) {
314
+ append_token("@mixin", def);
315
+ append_mandatory_space();
316
+ } else {
317
+ append_token("@function", def);
318
+ append_mandatory_space();
319
+ }
320
+ append_string(def->name());
321
+ def->parameters()->perform(this);
322
+ def->block()->perform(this);
323
+ }
324
+
325
+ void Inspect::operator()(Mixin_Call* call)
326
+ {
327
+ append_indentation();
328
+ append_token("@include", call);
329
+ append_mandatory_space();
330
+ append_string(call->name());
331
+ if (call->arguments()) {
332
+ call->arguments()->perform(this);
333
+ }
334
+ if (call->block()) {
335
+ append_optional_space();
336
+ call->block()->perform(this);
337
+ }
338
+ if (!call->block()) append_delimiter();
339
+ }
340
+
341
+ void Inspect::operator()(Content* content)
342
+ {
343
+ append_indentation();
344
+ append_token("@content", content);
345
+ append_delimiter();
346
+ }
347
+
348
+ void Inspect::operator()(Map* map)
349
+ {
350
+ if (output_style() == TO_SASS && map->empty()) {
351
+ append_string("()");
352
+ return;
353
+ }
354
+ if (map->empty()) return;
355
+ if (map->is_invisible()) return;
356
+ bool items_output = false;
357
+ append_string("(");
358
+ for (auto key : map->keys()) {
359
+ if (items_output) append_comma_separator();
360
+ key->perform(this);
361
+ append_colon_separator();
362
+ LOCAL_FLAG(in_space_array, true);
363
+ LOCAL_FLAG(in_comma_array, true);
364
+ map->at(key)->perform(this);
365
+ items_output = true;
366
+ }
367
+ append_string(")");
368
+ }
369
+
370
+ std::string Inspect::lbracket(List* list) {
371
+ return list->is_bracketed() ? "[" : "(";
372
+ }
373
+
374
+ std::string Inspect::rbracket(List* list) {
375
+ return list->is_bracketed() ? "]" : ")";
376
+ }
377
+
378
+ void Inspect::operator()(List* list)
379
+ {
380
+ if (list->empty() && (output_style() == TO_SASS || list->is_bracketed())) {
381
+ append_string(lbracket(list));
382
+ append_string(rbracket(list));
383
+ return;
384
+ }
385
+ std::string sep(list->separator() == SASS_SPACE ? " " : ",");
386
+ if ((output_style() != COMPRESSED) && sep == ",") sep += " ";
387
+ else if (in_media_block && sep != " ") sep += " "; // verified
388
+ if (list->empty()) return;
389
+ bool items_output = false;
390
+
391
+ bool was_space_array = in_space_array;
392
+ bool was_comma_array = in_comma_array;
393
+ // if the list is bracketed, always include the left bracket
394
+ if (list->is_bracketed()) {
395
+ append_string(lbracket(list));
396
+ }
397
+ // probably ruby sass eqivalent of element_needs_parens
398
+ else if (output_style() == TO_SASS &&
399
+ list->length() == 1 &&
400
+ !list->from_selector() &&
401
+ !Cast<List>(list->at(0)) &&
402
+ !Cast<Selector_List>(list->at(0))
403
+ ) {
404
+ append_string(lbracket(list));
405
+ }
406
+ else if (!in_declaration && (list->separator() == SASS_HASH ||
407
+ (list->separator() == SASS_SPACE && in_space_array) ||
408
+ (list->separator() == SASS_COMMA && in_comma_array)
409
+ )) {
410
+ append_string(lbracket(list));
411
+ }
412
+
413
+ if (list->separator() == SASS_SPACE) in_space_array = true;
414
+ else if (list->separator() == SASS_COMMA) in_comma_array = true;
415
+
416
+ for (size_t i = 0, L = list->size(); i < L; ++i) {
417
+ if (list->separator() == SASS_HASH)
418
+ { sep[0] = i % 2 ? ':' : ','; }
419
+ Expression_Obj list_item = list->at(i);
420
+ if (output_style() != TO_SASS) {
421
+ if (list_item->is_invisible()) {
422
+ // this fixes an issue with "" in a list
423
+ if (!Cast<String_Constant>(list_item)) {
424
+ continue;
425
+ }
426
+ }
427
+ }
428
+ if (items_output) {
429
+ append_string(sep);
430
+ }
431
+ if (items_output && sep != " ")
432
+ append_optional_space();
433
+ list_item->perform(this);
434
+ items_output = true;
435
+ }
436
+
437
+ in_comma_array = was_comma_array;
438
+ in_space_array = was_space_array;
439
+
440
+ // if the list is bracketed, always include the right bracket
441
+ if (list->is_bracketed()) {
442
+ if (list->separator() == SASS_COMMA && list->size() == 1) {
443
+ append_string(",");
444
+ }
445
+ append_string(rbracket(list));
446
+ }
447
+ // probably ruby sass eqivalent of element_needs_parens
448
+ else if (output_style() == TO_SASS &&
449
+ list->length() == 1 &&
450
+ !list->from_selector() &&
451
+ !Cast<List>(list->at(0)) &&
452
+ !Cast<Selector_List>(list->at(0))
453
+ ) {
454
+ append_string(",");
455
+ append_string(rbracket(list));
456
+ }
457
+ else if (!in_declaration && (list->separator() == SASS_HASH ||
458
+ (list->separator() == SASS_SPACE && in_space_array) ||
459
+ (list->separator() == SASS_COMMA && in_comma_array)
460
+ )) {
461
+ append_string(rbracket(list));
462
+ }
463
+
464
+ }
465
+
466
+ void Inspect::operator()(Binary_Expression* expr)
467
+ {
468
+ expr->left()->perform(this);
469
+ if ( in_media_block ||
470
+ (output_style() == INSPECT) || (
471
+ expr->op().ws_before
472
+ && (!expr->is_interpolant())
473
+ && (expr->is_left_interpolant() ||
474
+ expr->is_right_interpolant())
475
+
476
+ )) append_string(" ");
477
+ switch (expr->optype()) {
478
+ case Sass_OP::AND: append_string("&&"); break;
479
+ case Sass_OP::OR: append_string("||"); break;
480
+ case Sass_OP::EQ: append_string("=="); break;
481
+ case Sass_OP::NEQ: append_string("!="); break;
482
+ case Sass_OP::GT: append_string(">"); break;
483
+ case Sass_OP::GTE: append_string(">="); break;
484
+ case Sass_OP::LT: append_string("<"); break;
485
+ case Sass_OP::LTE: append_string("<="); break;
486
+ case Sass_OP::ADD: append_string("+"); break;
487
+ case Sass_OP::SUB: append_string("-"); break;
488
+ case Sass_OP::MUL: append_string("*"); break;
489
+ case Sass_OP::DIV: append_string("/"); break;
490
+ case Sass_OP::MOD: append_string("%"); break;
491
+ default: break; // shouldn't get here
492
+ }
493
+ if ( in_media_block ||
494
+ (output_style() == INSPECT) || (
495
+ expr->op().ws_after
496
+ && (!expr->is_interpolant())
497
+ && (expr->is_left_interpolant() ||
498
+ expr->is_right_interpolant())
499
+ )) append_string(" ");
500
+ expr->right()->perform(this);
501
+ }
502
+
503
+ void Inspect::operator()(Unary_Expression* expr)
504
+ {
505
+ if (expr->optype() == Unary_Expression::PLUS) append_string("+");
506
+ else if (expr->optype() == Unary_Expression::SLASH) append_string("/");
507
+ else append_string("-");
508
+ expr->operand()->perform(this);
509
+ }
510
+
511
+ void Inspect::operator()(Function_Call* call)
512
+ {
513
+ append_token(call->name(), call);
514
+ call->arguments()->perform(this);
515
+ }
516
+
517
+ void Inspect::operator()(Variable* var)
518
+ {
519
+ append_token(var->name(), var);
520
+ }
521
+
522
+ void Inspect::operator()(Number* n)
523
+ {
524
+
525
+ // reduce units
526
+ n->reduce();
527
+
528
+ std::stringstream ss;
529
+ ss.precision(opt.precision);
530
+ ss << std::fixed << n->value();
531
+
532
+ std::string res = ss.str();
533
+ int s = res.length();
534
+
535
+ // delete trailing zeros
536
+ for(s = s - 1; s > 0; --s)
537
+ {
538
+ if(res[s] == '0') {
539
+ res.erase(s, 1);
540
+ }
541
+ else break;
542
+ }
543
+
544
+ // delete trailing decimal separator
545
+ if(res[s] == '.') res.erase(s, 1);
546
+
547
+ // some final cosmetics
548
+ if (res == "0.0") res = "0";
549
+ else if (res == "") res = "0";
550
+ else if (res == "-0") res = "0";
551
+ else if (res == "-0.0") res = "0";
552
+ else if (opt.output_style == COMPRESSED)
553
+ {
554
+ if (n->zero()) {
555
+ // check if handling negative nr
556
+ size_t off = res[0] == '-' ? 1 : 0;
557
+ // remove leading zero from floating point in compressed mode
558
+ if (res[off] == '0' && res[off+1] == '.') res.erase(off, 1);
559
+ }
560
+ }
561
+
562
+ // add unit now
563
+ res += n->unit();
564
+
565
+ // output the final token
566
+ append_token(res, n);
567
+ }
568
+
569
+ // helper function for serializing colors
570
+ template <size_t range>
571
+ static double cap_channel(double c) {
572
+ if (c > range) return range;
573
+ else if (c < 0) return 0;
574
+ else return c;
575
+ }
576
+
577
+ void Inspect::operator()(Color_RGBA* c)
578
+ {
579
+ // output the final token
580
+ std::stringstream ss;
581
+
582
+ // original color name
583
+ // maybe an unknown token
584
+ std::string name = c->disp();
585
+
586
+ // resolved color
587
+ std::string res_name = name;
588
+
589
+ double r = Sass::round(cap_channel<0xff>(c->r()), opt.precision);
590
+ double g = Sass::round(cap_channel<0xff>(c->g()), opt.precision);
591
+ double b = Sass::round(cap_channel<0xff>(c->b()), opt.precision);
592
+ double a = cap_channel<1> (c->a());
593
+
594
+ // get color from given name (if one was given at all)
595
+ if (name != "" && name_to_color(name)) {
596
+ const Color_RGBA* n = name_to_color(name);
597
+ r = Sass::round(cap_channel<0xff>(n->r()), opt.precision);
598
+ g = Sass::round(cap_channel<0xff>(n->g()), opt.precision);
599
+ b = Sass::round(cap_channel<0xff>(n->b()), opt.precision);
600
+ a = cap_channel<1> (n->a());
601
+ }
602
+ // otherwise get the possible resolved color name
603
+ else {
604
+ double numval = r * 0x10000 + g * 0x100 + b;
605
+ if (color_to_name(numval))
606
+ res_name = color_to_name(numval);
607
+ }
608
+
609
+ std::stringstream hexlet;
610
+ // dart sass compressed all colors in regular css always
611
+ // ruby sass and libsass does it only when not delayed
612
+ // since color math is going to be removed, this can go too
613
+ bool compressed = opt.output_style == COMPRESSED;
614
+ hexlet << '#' << std::setw(1) << std::setfill('0');
615
+ // create a short color hexlet if there is any need for it
616
+ if (compressed && is_color_doublet(r, g, b) && a == 1) {
617
+ hexlet << std::hex << std::setw(1) << (static_cast<unsigned long>(r) >> 4);
618
+ hexlet << std::hex << std::setw(1) << (static_cast<unsigned long>(g) >> 4);
619
+ hexlet << std::hex << std::setw(1) << (static_cast<unsigned long>(b) >> 4);
620
+ } else {
621
+ hexlet << std::hex << std::setw(2) << static_cast<unsigned long>(r);
622
+ hexlet << std::hex << std::setw(2) << static_cast<unsigned long>(g);
623
+ hexlet << std::hex << std::setw(2) << static_cast<unsigned long>(b);
624
+ }
625
+
626
+ if (compressed && !c->is_delayed()) name = "";
627
+ if (opt.output_style == INSPECT && a >= 1) {
628
+ append_token(hexlet.str(), c);
629
+ return;
630
+ }
631
+
632
+ // retain the originally specified color definition if unchanged
633
+ if (name != "") {
634
+ ss << name;
635
+ }
636
+ else if (a >= 1) {
637
+ if (res_name != "") {
638
+ if (compressed && hexlet.str().size() < res_name.size()) {
639
+ ss << hexlet.str();
640
+ } else {
641
+ ss << res_name;
642
+ }
643
+ }
644
+ else {
645
+ ss << hexlet.str();
646
+ }
647
+ }
648
+ else {
649
+ ss << "rgba(";
650
+ ss << static_cast<unsigned long>(r) << ",";
651
+ if (!compressed) ss << " ";
652
+ ss << static_cast<unsigned long>(g) << ",";
653
+ if (!compressed) ss << " ";
654
+ ss << static_cast<unsigned long>(b) << ",";
655
+ if (!compressed) ss << " ";
656
+ ss << a << ')';
657
+ }
658
+
659
+ append_token(ss.str(), c);
660
+
661
+ }
662
+
663
+ void Inspect::operator()(Color_HSLA* c)
664
+ {
665
+ Color_RGBA_Obj rgba = c->toRGBA();
666
+ operator()(rgba);
667
+ }
668
+
669
+ void Inspect::operator()(Boolean* b)
670
+ {
671
+ // output the final token
672
+ append_token(b->value() ? "true" : "false", b);
673
+ }
674
+
675
+ void Inspect::operator()(String_Schema* ss)
676
+ {
677
+ // Evaluation should turn these into String_Constants,
678
+ // so this method is only for inspection purposes.
679
+ for (size_t i = 0, L = ss->length(); i < L; ++i) {
680
+ if ((*ss)[i]->is_interpolant()) append_string("#{");
681
+ (*ss)[i]->perform(this);
682
+ if ((*ss)[i]->is_interpolant()) append_string("}");
683
+ }
684
+ }
685
+
686
+ void Inspect::operator()(String_Constant* s)
687
+ {
688
+ append_token(s->value(), s);
689
+ }
690
+
691
+ void Inspect::operator()(String_Quoted* s)
692
+ {
693
+ if (const char q = s->quote_mark()) {
694
+ append_token(quote(s->value(), q), s);
695
+ } else {
696
+ append_token(s->value(), s);
697
+ }
698
+ }
699
+
700
+ void Inspect::operator()(Custom_Error* e)
701
+ {
702
+ append_token(e->message(), e);
703
+ }
704
+
705
+ void Inspect::operator()(Custom_Warning* w)
706
+ {
707
+ append_token(w->message(), w);
708
+ }
709
+
710
+ void Inspect::operator()(Supports_Operator* so)
711
+ {
712
+
713
+ if (so->needs_parens(so->left())) append_string("(");
714
+ so->left()->perform(this);
715
+ if (so->needs_parens(so->left())) append_string(")");
716
+
717
+ if (so->operand() == Supports_Operator::AND) {
718
+ append_mandatory_space();
719
+ append_token("and", so);
720
+ append_mandatory_space();
721
+ } else if (so->operand() == Supports_Operator::OR) {
722
+ append_mandatory_space();
723
+ append_token("or", so);
724
+ append_mandatory_space();
725
+ }
726
+
727
+ if (so->needs_parens(so->right())) append_string("(");
728
+ so->right()->perform(this);
729
+ if (so->needs_parens(so->right())) append_string(")");
730
+ }
731
+
732
+ void Inspect::operator()(Supports_Negation* sn)
733
+ {
734
+ append_token("not", sn);
735
+ append_mandatory_space();
736
+ if (sn->needs_parens(sn->condition())) append_string("(");
737
+ sn->condition()->perform(this);
738
+ if (sn->needs_parens(sn->condition())) append_string(")");
739
+ }
740
+
741
+ void Inspect::operator()(Supports_Declaration* sd)
742
+ {
743
+ append_string("(");
744
+ sd->feature()->perform(this);
745
+ append_string(": ");
746
+ sd->value()->perform(this);
747
+ append_string(")");
748
+ }
749
+
750
+ void Inspect::operator()(Supports_Interpolation* sd)
751
+ {
752
+ sd->value()->perform(this);
753
+ }
754
+
755
+ void Inspect::operator()(Media_Query* mq)
756
+ {
757
+ size_t i = 0;
758
+ if (mq->media_type()) {
759
+ if (mq->is_negated()) append_string("not ");
760
+ else if (mq->is_restricted()) append_string("only ");
761
+ mq->media_type()->perform(this);
762
+ }
763
+ else {
764
+ (*mq)[i++]->perform(this);
765
+ }
766
+ for (size_t L = mq->length(); i < L; ++i) {
767
+ append_string(" and ");
768
+ (*mq)[i]->perform(this);
769
+ }
770
+ }
771
+
772
+ void Inspect::operator()(Media_Query_Expression* mqe)
773
+ {
774
+ if (mqe->is_interpolated()) {
775
+ mqe->feature()->perform(this);
776
+ }
777
+ else {
778
+ append_string("(");
779
+ mqe->feature()->perform(this);
780
+ if (mqe->value()) {
781
+ append_string(": "); // verified
782
+ mqe->value()->perform(this);
783
+ }
784
+ append_string(")");
785
+ }
786
+ }
787
+
788
+ void Inspect::operator()(At_Root_Query* ae)
789
+ {
790
+ if (ae->feature()) {
791
+ append_string("(");
792
+ ae->feature()->perform(this);
793
+ if (ae->value()) {
794
+ append_colon_separator();
795
+ ae->value()->perform(this);
796
+ }
797
+ append_string(")");
798
+ }
799
+ }
800
+
801
+ void Inspect::operator()(Function* f)
802
+ {
803
+ append_token("get-function", f);
804
+ append_string("(");
805
+ append_string(quote(f->name()));
806
+ append_string(")");
807
+ }
808
+
809
+ void Inspect::operator()(Null* n)
810
+ {
811
+ // output the final token
812
+ append_token("null", n);
813
+ }
814
+
815
+ // parameters and arguments
816
+ void Inspect::operator()(Parameter* p)
817
+ {
818
+ append_token(p->name(), p);
819
+ if (p->default_value()) {
820
+ append_colon_separator();
821
+ p->default_value()->perform(this);
822
+ }
823
+ else if (p->is_rest_parameter()) {
824
+ append_string("...");
825
+ }
826
+ }
827
+
828
+ void Inspect::operator()(Parameters* p)
829
+ {
830
+ append_string("(");
831
+ if (!p->empty()) {
832
+ (*p)[0]->perform(this);
833
+ for (size_t i = 1, L = p->length(); i < L; ++i) {
834
+ append_comma_separator();
835
+ (*p)[i]->perform(this);
836
+ }
837
+ }
838
+ append_string(")");
839
+ }
840
+
841
+ void Inspect::operator()(Argument* a)
842
+ {
843
+ if (!a->name().empty()) {
844
+ append_token(a->name(), a);
845
+ append_colon_separator();
846
+ }
847
+ if (!a->value()) return;
848
+ // Special case: argument nulls can be ignored
849
+ if (a->value()->concrete_type() == Expression::NULL_VAL) {
850
+ return;
851
+ }
852
+ if (a->value()->concrete_type() == Expression::STRING) {
853
+ String_Constant* s = Cast<String_Constant>(a->value());
854
+ if (s) s->perform(this);
855
+ } else {
856
+ a->value()->perform(this);
857
+ }
858
+ if (a->is_rest_argument()) {
859
+ append_string("...");
860
+ }
861
+ }
862
+
863
+ void Inspect::operator()(Arguments* a)
864
+ {
865
+ append_string("(");
866
+ if (!a->empty()) {
867
+ (*a)[0]->perform(this);
868
+ for (size_t i = 1, L = a->length(); i < L; ++i) {
869
+ append_string(", "); // verified
870
+ // Sass Bug? append_comma_separator();
871
+ (*a)[i]->perform(this);
872
+ }
873
+ }
874
+ append_string(")");
875
+ }
876
+
877
+ void Inspect::operator()(Selector_Schema* s)
878
+ {
879
+ s->contents()->perform(this);
880
+ }
881
+
882
+ void Inspect::operator()(Parent_Selector* p)
883
+ {
884
+ if (p->real()) append_string("&");
885
+ }
886
+
887
+ void Inspect::operator()(Placeholder_Selector* s)
888
+ {
889
+ append_token(s->name(), s);
890
+ if (s->has_line_break()) append_optional_linefeed();
891
+ if (s->has_line_break()) append_indentation();
892
+
893
+ }
894
+
895
+ void Inspect::operator()(Type_Selector* s)
896
+ {
897
+ append_token(s->ns_name(), s);
898
+ }
899
+
900
+ void Inspect::operator()(Class_Selector* s)
901
+ {
902
+ append_token(s->ns_name(), s);
903
+ if (s->has_line_break()) append_optional_linefeed();
904
+ if (s->has_line_break()) append_indentation();
905
+ }
906
+
907
+ void Inspect::operator()(Id_Selector* s)
908
+ {
909
+ append_token(s->ns_name(), s);
910
+ if (s->has_line_break()) append_optional_linefeed();
911
+ if (s->has_line_break()) append_indentation();
912
+ }
913
+
914
+ void Inspect::operator()(Attribute_Selector* s)
915
+ {
916
+ append_string("[");
917
+ add_open_mapping(s);
918
+ append_token(s->ns_name(), s);
919
+ if (!s->matcher().empty()) {
920
+ append_string(s->matcher());
921
+ if (s->value() && *s->value()) {
922
+ s->value()->perform(this);
923
+ }
924
+ }
925
+ add_close_mapping(s);
926
+ if (s->modifier() != 0) {
927
+ append_mandatory_space();
928
+ append_char(s->modifier());
929
+ }
930
+ append_string("]");
931
+ }
932
+
933
+ void Inspect::operator()(Pseudo_Selector* s)
934
+ {
935
+ append_token(s->ns_name(), s);
936
+ if (s->expression()) {
937
+ append_string("(");
938
+ s->expression()->perform(this);
939
+ append_string(")");
940
+ }
941
+ }
942
+
943
+ void Inspect::operator()(Wrapped_Selector* s)
944
+ {
945
+ if (s->name() == " ") {
946
+ append_string("");
947
+ } else {
948
+ bool was = in_wrapped;
949
+ in_wrapped = true;
950
+ append_token(s->name(), s);
951
+ append_string("(");
952
+ bool was_comma_array = in_comma_array;
953
+ in_comma_array = false;
954
+ s->selector()->perform(this);
955
+ in_comma_array = was_comma_array;
956
+ append_string(")");
957
+ in_wrapped = was;
958
+ }
959
+ }
960
+
961
+ void Inspect::operator()(Compound_Selector* s)
962
+ {
963
+ for (size_t i = 0, L = s->length(); i < L; ++i) {
964
+ (*s)[i]->perform(this);
965
+ }
966
+ if (s->has_line_break()) {
967
+ if (output_style() != COMPACT) {
968
+ append_optional_linefeed();
969
+ }
970
+ }
971
+ }
972
+
973
+ void Inspect::operator()(Complex_Selector* c)
974
+ {
975
+ Compound_Selector_Obj head = c->head();
976
+ Complex_Selector_Obj tail = c->tail();
977
+ Complex_Selector::Combinator comb = c->combinator();
978
+
979
+ if (comb == Complex_Selector::ANCESTOR_OF && (!head || head->empty())) {
980
+ if (tail) tail->perform(this);
981
+ return;
982
+ }
983
+
984
+ if (c->has_line_feed()) {
985
+ if (!(c->has_parent_ref())) {
986
+ append_optional_linefeed();
987
+ append_indentation();
988
+ }
989
+ }
990
+
991
+ if (head && head->length() != 0) head->perform(this);
992
+ bool is_empty = !head || head->length() == 0 || head->is_empty_reference();
993
+ bool is_tail = head && !head->is_empty_reference() && tail;
994
+ if (output_style() == COMPRESSED && comb != Complex_Selector::ANCESTOR_OF) scheduled_space = 0;
995
+
996
+ switch (comb) {
997
+ case Complex_Selector::ANCESTOR_OF:
998
+ if (is_tail) append_mandatory_space();
999
+ break;
1000
+ case Complex_Selector::PARENT_OF:
1001
+ append_optional_space();
1002
+ append_string(">");
1003
+ append_optional_space();
1004
+ break;
1005
+ case Complex_Selector::ADJACENT_TO:
1006
+ append_optional_space();
1007
+ append_string("+");
1008
+ append_optional_space();
1009
+ break;
1010
+ case Complex_Selector::REFERENCE:
1011
+ append_mandatory_space();
1012
+ append_string("/");
1013
+ if (c->reference()) c->reference()->perform(this);
1014
+ append_string("/");
1015
+ append_mandatory_space();
1016
+ break;
1017
+ case Complex_Selector::PRECEDES:
1018
+ if (is_empty) append_optional_space();
1019
+ else append_mandatory_space();
1020
+ append_string("~");
1021
+ if (tail) append_mandatory_space();
1022
+ else append_optional_space();
1023
+ break;
1024
+ default: break;
1025
+ }
1026
+ if (tail && comb != Complex_Selector::ANCESTOR_OF) {
1027
+ if (c->has_line_break()) append_optional_linefeed();
1028
+ }
1029
+ if (tail) tail->perform(this);
1030
+ if (!tail && c->has_line_break()) {
1031
+ if (output_style() == COMPACT) {
1032
+ append_mandatory_space();
1033
+ }
1034
+ }
1035
+ }
1036
+
1037
+ void Inspect::operator()(Selector_List* g)
1038
+ {
1039
+
1040
+ if (g->empty()) {
1041
+ if (output_style() == TO_SASS) {
1042
+ append_token("()", g);
1043
+ }
1044
+ return;
1045
+ }
1046
+
1047
+
1048
+ bool was_comma_array = in_comma_array;
1049
+ // probably ruby sass eqivalent of element_needs_parens
1050
+ if (output_style() == TO_SASS && g->length() == 1 &&
1051
+ (!Cast<List>((*g)[0]) &&
1052
+ !Cast<Selector_List>((*g)[0]))) {
1053
+ append_string("(");
1054
+ }
1055
+ else if (!in_declaration && in_comma_array) {
1056
+ append_string("(");
1057
+ }
1058
+
1059
+ if (in_declaration) in_comma_array = true;
1060
+
1061
+ for (size_t i = 0, L = g->length(); i < L; ++i) {
1062
+ if (!in_wrapped && i == 0) append_indentation();
1063
+ if ((*g)[i] == nullptr) continue;
1064
+ schedule_mapping(g->at(i)->last());
1065
+ // add_open_mapping((*g)[i]->last());
1066
+ (*g)[i]->perform(this);
1067
+ // add_close_mapping((*g)[i]->last());
1068
+ if (i < L - 1) {
1069
+ scheduled_space = 0;
1070
+ append_comma_separator();
1071
+ }
1072
+ }
1073
+
1074
+ in_comma_array = was_comma_array;
1075
+ // probably ruby sass eqivalent of element_needs_parens
1076
+ if (output_style() == TO_SASS && g->length() == 1 &&
1077
+ (!Cast<List>((*g)[0]) &&
1078
+ !Cast<Selector_List>((*g)[0]))) {
1079
+ append_string(",)");
1080
+ }
1081
+ else if (!in_declaration && in_comma_array) {
1082
+ append_string(")");
1083
+ }
1084
+
1085
+ }
1086
+
1087
+ }