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,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
+ }