zuora_connect_ui 0.8.3 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1423) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +45 -36
  3. data/app/assets/javascripts/zuora_connect_ui/input.js +0 -16
  4. data/app/assets/stylesheets/_zuora_connect_ui.scss +2 -1
  5. data/app/assets/stylesheets/zuora_connect_ui/datepicker.scss +2 -1
  6. data/app/assets/stylesheets/zuora_connect_ui/input.scss +34 -38
  7. data/app/helpers/zuora_connect_ui/input_helper.rb +2 -1
  8. data/lib/zuora_connect_ui/version.rb +1 -1
  9. data/vendor/assets/contextMenu/js/jquery.contextMenu.min.js +0 -1
  10. data/vendor/ruby/2.6.0/cache/autoprefixer-rails-9.6.4.gem +0 -0
  11. data/vendor/ruby/2.6.0/cache/erubi-1.9.0.gem +0 -0
  12. data/vendor/ruby/2.6.0/cache/i18n-1.7.0.gem +0 -0
  13. data/vendor/ruby/2.6.0/cache/loofah-2.3.0.gem +0 -0
  14. data/vendor/ruby/2.6.0/cache/minitest-5.12.2.gem +0 -0
  15. data/vendor/ruby/2.6.0/cache/parallel-1.18.0.gem +0 -0
  16. data/vendor/ruby/2.6.0/cache/parser-2.6.5.0.gem +0 -0
  17. data/vendor/ruby/2.6.0/cache/peek-1.1.0.gem +0 -0
  18. data/vendor/ruby/2.6.0/cache/rails-html-sanitizer-1.3.0.gem +0 -0
  19. data/vendor/ruby/2.6.0/cache/rspec-expectations-3.8.6.gem +0 -0
  20. data/vendor/ruby/2.6.0/cache/rspec-mocks-3.8.2.gem +0 -0
  21. data/vendor/ruby/2.6.0/cache/rspec-support-3.8.3.gem +0 -0
  22. data/vendor/ruby/2.6.0/cache/rubocop-0.75.0.gem +0 -0
  23. data/vendor/ruby/2.6.0/cache/sassc-2.2.1.gem +0 -0
  24. data/vendor/ruby/2.6.0/cache/tilt-2.0.10.gem +0 -0
  25. data/vendor/ruby/2.6.0/extensions/x86_64-linux/2.6.0/sassc-2.2.1/gem.build_complete +0 -0
  26. data/vendor/ruby/2.6.0/extensions/x86_64-linux/2.6.0/sassc-2.2.1/gem_make.out +75 -0
  27. data/vendor/ruby/2.6.0/extensions/x86_64-linux/2.6.0/sassc-2.2.1/sassc/libsass.so +0 -0
  28. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.4/CHANGELOG.md +1094 -0
  29. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.4/Gemfile +10 -0
  30. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.4/LICENSE +20 -0
  31. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.4/README.md +237 -0
  32. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.4/Rakefile +53 -0
  33. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.4/autoprefixer-rails.gemspec +32 -0
  34. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.4/lib/autoprefixer-rails.rb +41 -0
  35. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.4/lib/autoprefixer-rails/processor.rb +194 -0
  36. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.4/lib/autoprefixer-rails/railtie.rb +50 -0
  37. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.4/lib/autoprefixer-rails/result.rb +24 -0
  38. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.4/lib/autoprefixer-rails/sprockets.rb +62 -0
  39. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.4/lib/autoprefixer-rails/version.rb +3 -0
  40. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.4/lib/rake/autoprefixer_tasks.rb +28 -0
  41. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.4/spec/app/Rakefile +2 -0
  42. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.4/spec/app/app/assets/config/manifest.js +0 -0
  43. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.4/spec/app/app/assets/stylesheets/evaluate.css.erb +1 -0
  44. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.4/spec/app/app/assets/stylesheets/loaded.sass +2 -0
  45. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.4/spec/app/app/assets/stylesheets/sass.sass +1 -0
  46. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.4/spec/app/app/assets/stylesheets/test.css +3 -0
  47. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.4/spec/app/app/assets/stylesheets/wrong.css +2 -0
  48. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.4/spec/app/app/controllers/application_controller.rb +2 -0
  49. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.4/spec/app/app/controllers/css_controller.rb +6 -0
  50. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.4/spec/app/config.ru +2 -0
  51. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.4/spec/app/config/application.rb +16 -0
  52. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.4/spec/app/config/autoprefixer.yml +2 -0
  53. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.4/spec/app/config/boot.rb +2 -0
  54. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.4/spec/app/config/environment.rb +3 -0
  55. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.4/spec/app/config/environments/test.rb +9 -0
  56. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.4/spec/app/config/initializers/secret_token.rb +1 -0
  57. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.4/spec/app/config/routes.rb +3 -0
  58. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.4/spec/autoprefixer_spec.rb +121 -0
  59. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.4/spec/processor_spec.rb +25 -0
  60. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.4/spec/rails_spec.rb +40 -0
  61. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.4/spec/railtie_spec.rb +29 -0
  62. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.4/spec/spec_helper.rb +16 -0
  63. data/vendor/ruby/2.6.0/gems/autoprefixer-rails-9.6.4/vendor/autoprefixer.js +67521 -0
  64. data/vendor/ruby/2.6.0/gems/erubi-1.9.0/CHANGELOG +79 -0
  65. data/vendor/ruby/2.6.0/gems/erubi-1.9.0/MIT-LICENSE +21 -0
  66. data/vendor/ruby/2.6.0/gems/erubi-1.9.0/README.rdoc +109 -0
  67. data/vendor/ruby/2.6.0/gems/erubi-1.9.0/Rakefile +78 -0
  68. data/vendor/ruby/2.6.0/gems/erubi-1.9.0/lib/erubi.rb +211 -0
  69. data/vendor/ruby/2.6.0/gems/erubi-1.9.0/lib/erubi/capture_end.rb +52 -0
  70. data/vendor/ruby/2.6.0/gems/erubi-1.9.0/test/test.rb +780 -0
  71. data/vendor/ruby/2.6.0/gems/i18n-1.7.0/MIT-LICENSE +20 -0
  72. data/vendor/ruby/2.6.0/gems/i18n-1.7.0/README.md +125 -0
  73. data/vendor/ruby/2.6.0/gems/i18n-1.7.0/lib/i18n.rb +398 -0
  74. data/vendor/ruby/2.6.0/gems/i18n-1.7.0/lib/i18n/backend.rb +21 -0
  75. data/vendor/ruby/2.6.0/gems/i18n-1.7.0/lib/i18n/backend/base.rb +284 -0
  76. data/vendor/ruby/2.6.0/gems/i18n-1.7.0/lib/i18n/backend/cache.rb +113 -0
  77. data/vendor/ruby/2.6.0/gems/i18n-1.7.0/lib/i18n/backend/cache_file.rb +36 -0
  78. data/vendor/ruby/2.6.0/gems/i18n-1.7.0/lib/i18n/backend/cascade.rb +56 -0
  79. data/vendor/ruby/2.6.0/gems/i18n-1.7.0/lib/i18n/backend/chain.rb +131 -0
  80. data/vendor/ruby/2.6.0/gems/i18n-1.7.0/lib/i18n/backend/fallbacks.rb +84 -0
  81. data/vendor/ruby/2.6.0/gems/i18n-1.7.0/lib/i18n/backend/flatten.rb +115 -0
  82. data/vendor/ruby/2.6.0/gems/i18n-1.7.0/lib/i18n/backend/gettext.rb +85 -0
  83. data/vendor/ruby/2.6.0/gems/i18n-1.7.0/lib/i18n/backend/interpolation_compiler.rb +123 -0
  84. data/vendor/ruby/2.6.0/gems/i18n-1.7.0/lib/i18n/backend/key_value.rb +206 -0
  85. data/vendor/ruby/2.6.0/gems/i18n-1.7.0/lib/i18n/backend/memoize.rb +54 -0
  86. data/vendor/ruby/2.6.0/gems/i18n-1.7.0/lib/i18n/backend/metadata.rb +71 -0
  87. data/vendor/ruby/2.6.0/gems/i18n-1.7.0/lib/i18n/backend/pluralization.rb +55 -0
  88. data/vendor/ruby/2.6.0/gems/i18n-1.7.0/lib/i18n/backend/simple.rb +109 -0
  89. data/vendor/ruby/2.6.0/gems/i18n-1.7.0/lib/i18n/backend/transliterator.rb +108 -0
  90. data/vendor/ruby/2.6.0/gems/i18n-1.7.0/lib/i18n/config.rb +165 -0
  91. data/vendor/ruby/2.6.0/gems/i18n-1.7.0/lib/i18n/core_ext/hash.rb +47 -0
  92. data/vendor/ruby/2.6.0/gems/i18n-1.7.0/lib/i18n/exceptions.rb +111 -0
  93. data/vendor/ruby/2.6.0/gems/i18n-1.7.0/lib/i18n/gettext.rb +28 -0
  94. data/vendor/ruby/2.6.0/gems/i18n-1.7.0/lib/i18n/gettext/helpers.rb +75 -0
  95. data/vendor/ruby/2.6.0/gems/i18n-1.7.0/lib/i18n/gettext/po_parser.rb +329 -0
  96. data/vendor/ruby/2.6.0/gems/i18n-1.7.0/lib/i18n/interpolate/ruby.rb +39 -0
  97. data/vendor/ruby/2.6.0/gems/i18n-1.7.0/lib/i18n/locale.rb +8 -0
  98. data/vendor/ruby/2.6.0/gems/i18n-1.7.0/lib/i18n/locale/fallbacks.rb +97 -0
  99. data/vendor/ruby/2.6.0/gems/i18n-1.7.0/lib/i18n/locale/tag.rb +28 -0
  100. data/vendor/ruby/2.6.0/gems/i18n-1.7.0/lib/i18n/locale/tag/parents.rb +22 -0
  101. data/vendor/ruby/2.6.0/gems/i18n-1.7.0/lib/i18n/locale/tag/rfc4646.rb +74 -0
  102. data/vendor/ruby/2.6.0/gems/i18n-1.7.0/lib/i18n/locale/tag/simple.rb +39 -0
  103. data/vendor/ruby/2.6.0/gems/i18n-1.7.0/lib/i18n/middleware.rb +17 -0
  104. data/vendor/ruby/2.6.0/gems/i18n-1.7.0/lib/i18n/tests.rb +14 -0
  105. data/vendor/ruby/2.6.0/gems/i18n-1.7.0/lib/i18n/tests/basics.rb +60 -0
  106. data/vendor/ruby/2.6.0/gems/i18n-1.7.0/lib/i18n/tests/defaults.rb +52 -0
  107. data/vendor/ruby/2.6.0/gems/i18n-1.7.0/lib/i18n/tests/interpolation.rb +163 -0
  108. data/vendor/ruby/2.6.0/gems/i18n-1.7.0/lib/i18n/tests/link.rb +56 -0
  109. data/vendor/ruby/2.6.0/gems/i18n-1.7.0/lib/i18n/tests/localization.rb +19 -0
  110. data/vendor/ruby/2.6.0/gems/i18n-1.7.0/lib/i18n/tests/localization/date.rb +117 -0
  111. data/vendor/ruby/2.6.0/gems/i18n-1.7.0/lib/i18n/tests/localization/date_time.rb +103 -0
  112. data/vendor/ruby/2.6.0/gems/i18n-1.7.0/lib/i18n/tests/localization/procs.rb +116 -0
  113. data/vendor/ruby/2.6.0/gems/i18n-1.7.0/lib/i18n/tests/localization/time.rb +103 -0
  114. data/vendor/ruby/2.6.0/gems/i18n-1.7.0/lib/i18n/tests/lookup.rb +81 -0
  115. data/vendor/ruby/2.6.0/gems/i18n-1.7.0/lib/i18n/tests/pluralization.rb +35 -0
  116. data/vendor/ruby/2.6.0/gems/i18n-1.7.0/lib/i18n/tests/procs.rb +55 -0
  117. data/vendor/ruby/2.6.0/gems/i18n-1.7.0/lib/i18n/version.rb +5 -0
  118. data/vendor/ruby/2.6.0/gems/loofah-2.3.0/CHANGELOG.md +327 -0
  119. data/vendor/ruby/2.6.0/gems/loofah-2.3.0/Gemfile +22 -0
  120. data/vendor/ruby/2.6.0/gems/loofah-2.3.0/MIT-LICENSE.txt +23 -0
  121. data/vendor/ruby/2.6.0/gems/loofah-2.3.0/Manifest.txt +41 -0
  122. data/vendor/ruby/2.6.0/gems/loofah-2.3.0/README.md +369 -0
  123. data/vendor/ruby/2.6.0/gems/loofah-2.3.0/Rakefile +81 -0
  124. data/vendor/ruby/2.6.0/gems/loofah-2.3.0/SECURITY.md +18 -0
  125. data/vendor/ruby/2.6.0/gems/loofah-2.3.0/benchmark/benchmark.rb +149 -0
  126. data/vendor/ruby/2.6.0/gems/loofah-2.3.0/benchmark/fragment.html +96 -0
  127. data/vendor/ruby/2.6.0/gems/loofah-2.3.0/benchmark/helper.rb +73 -0
  128. data/vendor/ruby/2.6.0/gems/loofah-2.3.0/benchmark/www.slashdot.com.html +2560 -0
  129. data/vendor/ruby/2.6.0/gems/loofah-2.3.0/lib/loofah.rb +83 -0
  130. data/vendor/ruby/2.6.0/gems/loofah-2.3.0/lib/loofah/elements.rb +92 -0
  131. data/vendor/ruby/2.6.0/gems/loofah-2.3.0/lib/loofah/helpers.rb +103 -0
  132. data/vendor/ruby/2.6.0/gems/loofah-2.3.0/lib/loofah/html/document.rb +18 -0
  133. data/vendor/ruby/2.6.0/gems/loofah-2.3.0/lib/loofah/html/document_fragment.rb +40 -0
  134. data/vendor/ruby/2.6.0/gems/loofah-2.3.0/lib/loofah/html5/libxml2_workarounds.rb +26 -0
  135. data/vendor/ruby/2.6.0/gems/loofah-2.3.0/lib/loofah/html5/safelist.rb +800 -0
  136. data/vendor/ruby/2.6.0/gems/loofah-2.3.0/lib/loofah/html5/scrub.rb +133 -0
  137. data/vendor/ruby/2.6.0/gems/loofah-2.3.0/lib/loofah/instance_methods.rb +127 -0
  138. data/vendor/ruby/2.6.0/gems/loofah-2.3.0/lib/loofah/metahelpers.rb +13 -0
  139. data/vendor/ruby/2.6.0/gems/loofah-2.3.0/lib/loofah/scrubber.rb +133 -0
  140. data/vendor/ruby/2.6.0/gems/loofah-2.3.0/lib/loofah/scrubbers.rb +297 -0
  141. data/vendor/ruby/2.6.0/gems/loofah-2.3.0/lib/loofah/xml/document.rb +13 -0
  142. data/vendor/ruby/2.6.0/gems/loofah-2.3.0/lib/loofah/xml/document_fragment.rb +23 -0
  143. data/vendor/ruby/2.6.0/gems/loofah-2.3.0/test/assets/msword.html +63 -0
  144. data/vendor/ruby/2.6.0/gems/loofah-2.3.0/test/assets/testdata_sanitizer_tests1.dat +502 -0
  145. data/vendor/ruby/2.6.0/gems/loofah-2.3.0/test/helper.rb +18 -0
  146. data/vendor/ruby/2.6.0/gems/loofah-2.3.0/test/html5/test_sanitizer.rb +401 -0
  147. data/vendor/ruby/2.6.0/gems/loofah-2.3.0/test/html5/test_scrub.rb +10 -0
  148. data/vendor/ruby/2.6.0/gems/loofah-2.3.0/test/integration/test_ad_hoc.rb +204 -0
  149. data/vendor/ruby/2.6.0/gems/loofah-2.3.0/test/integration/test_helpers.rb +43 -0
  150. data/vendor/ruby/2.6.0/gems/loofah-2.3.0/test/integration/test_html.rb +72 -0
  151. data/vendor/ruby/2.6.0/gems/loofah-2.3.0/test/integration/test_scrubbers.rb +400 -0
  152. data/vendor/ruby/2.6.0/gems/loofah-2.3.0/test/integration/test_xml.rb +55 -0
  153. data/vendor/ruby/2.6.0/gems/loofah-2.3.0/test/unit/test_api.rb +142 -0
  154. data/vendor/ruby/2.6.0/gems/loofah-2.3.0/test/unit/test_encoding.rb +20 -0
  155. data/vendor/ruby/2.6.0/gems/loofah-2.3.0/test/unit/test_helpers.rb +62 -0
  156. data/vendor/ruby/2.6.0/gems/loofah-2.3.0/test/unit/test_scrubber.rb +229 -0
  157. data/vendor/ruby/2.6.0/gems/loofah-2.3.0/test/unit/test_scrubbers.rb +14 -0
  158. data/vendor/ruby/2.6.0/gems/minitest-5.12.2/History.rdoc +1347 -0
  159. data/vendor/ruby/2.6.0/gems/minitest-5.12.2/Manifest.txt +27 -0
  160. data/vendor/ruby/2.6.0/gems/minitest-5.12.2/README.rdoc +763 -0
  161. data/vendor/ruby/2.6.0/gems/minitest-5.12.2/Rakefile +72 -0
  162. data/vendor/ruby/2.6.0/gems/minitest-5.12.2/design_rationale.rb +52 -0
  163. data/vendor/ruby/2.6.0/gems/minitest-5.12.2/lib/hoe/minitest.rb +32 -0
  164. data/vendor/ruby/2.6.0/gems/minitest-5.12.2/lib/minitest.rb +1041 -0
  165. data/vendor/ruby/2.6.0/gems/minitest-5.12.2/lib/minitest/assertions.rb +726 -0
  166. data/vendor/ruby/2.6.0/gems/minitest-5.12.2/lib/minitest/autorun.rb +13 -0
  167. data/vendor/ruby/2.6.0/gems/minitest-5.12.2/lib/minitest/benchmark.rb +455 -0
  168. data/vendor/ruby/2.6.0/gems/minitest-5.12.2/lib/minitest/expectations.rb +284 -0
  169. data/vendor/ruby/2.6.0/gems/minitest-5.12.2/lib/minitest/hell.rb +11 -0
  170. data/vendor/ruby/2.6.0/gems/minitest-5.12.2/lib/minitest/mock.rb +240 -0
  171. data/vendor/ruby/2.6.0/gems/minitest-5.12.2/lib/minitest/parallel.rb +70 -0
  172. data/vendor/ruby/2.6.0/gems/minitest-5.12.2/lib/minitest/pride.rb +4 -0
  173. data/vendor/ruby/2.6.0/gems/minitest-5.12.2/lib/minitest/pride_plugin.rb +142 -0
  174. data/vendor/ruby/2.6.0/gems/minitest-5.12.2/lib/minitest/spec.rb +335 -0
  175. data/vendor/ruby/2.6.0/gems/minitest-5.12.2/lib/minitest/test.rb +220 -0
  176. data/vendor/ruby/2.6.0/gems/minitest-5.12.2/lib/minitest/unit.rb +45 -0
  177. data/vendor/ruby/2.6.0/gems/minitest-5.12.2/test/minitest/metametameta.rb +105 -0
  178. data/vendor/ruby/2.6.0/gems/minitest-5.12.2/test/minitest/test_minitest_assertions.rb +1389 -0
  179. data/vendor/ruby/2.6.0/gems/minitest-5.12.2/test/minitest/test_minitest_benchmark.rb +137 -0
  180. data/vendor/ruby/2.6.0/gems/minitest-5.12.2/test/minitest/test_minitest_mock.rb +874 -0
  181. data/vendor/ruby/2.6.0/gems/minitest-5.12.2/test/minitest/test_minitest_reporter.rb +299 -0
  182. data/vendor/ruby/2.6.0/gems/minitest-5.12.2/test/minitest/test_minitest_spec.rb +1021 -0
  183. data/vendor/ruby/2.6.0/gems/minitest-5.12.2/test/minitest/test_minitest_test.rb +1055 -0
  184. data/vendor/ruby/2.6.0/gems/parallel-1.18.0/MIT-LICENSE.txt +20 -0
  185. data/vendor/ruby/2.6.0/gems/parallel-1.18.0/lib/parallel.rb +520 -0
  186. data/vendor/ruby/2.6.0/gems/parallel-1.18.0/lib/parallel/processor_count.rb +42 -0
  187. data/vendor/ruby/2.6.0/gems/parallel-1.18.0/lib/parallel/version.rb +3 -0
  188. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/CHANGELOG.md +997 -0
  189. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/CONTRIBUTING.md +17 -0
  190. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/Gemfile +10 -0
  191. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/LICENSE.txt +25 -0
  192. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/README.md +301 -0
  193. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/Rakefile +166 -0
  194. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/bin/ruby-parse +7 -0
  195. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/bin/ruby-rewrite +7 -0
  196. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/ci/run_rubocop_specs +14 -0
  197. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/doc/AST_FORMAT.md +1816 -0
  198. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/doc/CUSTOMIZATION.md +37 -0
  199. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/doc/INTERNALS.md +21 -0
  200. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/doc/css/common.css +68 -0
  201. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/gauntlet_parser.rb +123 -0
  202. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser.rb +82 -0
  203. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/all.rb +12 -0
  204. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/ast/node.rb +40 -0
  205. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/ast/processor.rb +264 -0
  206. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/base.rb +270 -0
  207. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/builders/default.rb +1741 -0
  208. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/clobbering_error.rb +13 -0
  209. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/color.rb +32 -0
  210. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/context.rb +59 -0
  211. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/current.rb +92 -0
  212. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/deprecation.rb +13 -0
  213. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/diagnostic.rb +163 -0
  214. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/diagnostic/engine.rb +105 -0
  215. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/lexer.rb +23730 -0
  216. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/lexer.rl +2533 -0
  217. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/lexer/dedenter.rb +79 -0
  218. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/lexer/explanation.rb +55 -0
  219. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/lexer/literal.rb +269 -0
  220. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/lexer/max_numparam_stack.rb +42 -0
  221. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/lexer/stack_state.rb +49 -0
  222. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/macruby.rb +6124 -0
  223. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/macruby.y +2198 -0
  224. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/messages.rb +90 -0
  225. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/meta.rb +33 -0
  226. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/rewriter.rb +105 -0
  227. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/ruby18.rb +5661 -0
  228. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/ruby18.y +1934 -0
  229. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/ruby19.rb +6084 -0
  230. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/ruby19.y +2175 -0
  231. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/ruby20.rb +6511 -0
  232. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/ruby20.y +2353 -0
  233. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/ruby21.rb +6570 -0
  234. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/ruby21.y +2357 -0
  235. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/ruby22.rb +6605 -0
  236. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/ruby22.y +2364 -0
  237. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/ruby23.rb +6624 -0
  238. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/ruby23.y +2370 -0
  239. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/ruby24.rb +6689 -0
  240. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/ruby24.y +2408 -0
  241. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/ruby25.rb +6656 -0
  242. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/ruby25.y +2405 -0
  243. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/ruby26.rb +6670 -0
  244. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/ruby26.y +2413 -0
  245. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/ruby27.rb +6893 -0
  246. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/ruby27.y +2470 -0
  247. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/rubymotion.rb +6078 -0
  248. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/rubymotion.y +2182 -0
  249. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/runner.rb +253 -0
  250. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/runner/ruby_parse.rb +157 -0
  251. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/runner/ruby_rewrite.rb +101 -0
  252. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/source/buffer.rb +330 -0
  253. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/source/comment.rb +121 -0
  254. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/source/comment/associator.rb +210 -0
  255. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/source/map.rb +186 -0
  256. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/source/map/collection.rb +18 -0
  257. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/source/map/condition.rb +21 -0
  258. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/source/map/constant.rb +32 -0
  259. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/source/map/definition.rb +23 -0
  260. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/source/map/for.rb +19 -0
  261. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/source/map/heredoc.rb +19 -0
  262. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/source/map/index.rb +33 -0
  263. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/source/map/keyword.rb +20 -0
  264. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/source/map/objc_kwarg.rb +19 -0
  265. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/source/map/operator.rb +17 -0
  266. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/source/map/rescue_body.rb +21 -0
  267. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/source/map/send.rb +36 -0
  268. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/source/map/ternary.rb +18 -0
  269. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/source/map/variable.rb +31 -0
  270. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/source/range.rb +310 -0
  271. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/source/rewriter.rb +513 -0
  272. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/source/rewriter/action.rb +44 -0
  273. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/source/tree_rewriter.rb +301 -0
  274. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/source/tree_rewriter/action.rb +133 -0
  275. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/static_environment.rb +46 -0
  276. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/syntax_error.rb +21 -0
  277. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/tree_rewriter.rb +134 -0
  278. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/lib/parser/version.rb +5 -0
  279. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/parser.gemspec +51 -0
  280. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/test/bug_163/fixtures/input.rb +5 -0
  281. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/test/bug_163/fixtures/output.rb +5 -0
  282. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/test/bug_163/rewriter.rb +20 -0
  283. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/test/helper.rb +59 -0
  284. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/test/parse_helper.rb +316 -0
  285. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/test/racc_coverage_helper.rb +133 -0
  286. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/test/test_base.rb +31 -0
  287. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/test/test_current.rb +29 -0
  288. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/test/test_diagnostic.rb +96 -0
  289. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/test/test_diagnostic_engine.rb +62 -0
  290. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/test/test_encoding.rb +99 -0
  291. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/test/test_lexer.rb +3667 -0
  292. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/test/test_lexer_stack_state.rb +78 -0
  293. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/test/test_parse_helper.rb +80 -0
  294. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/test/test_parser.rb +7644 -0
  295. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/test/test_runner_parse.rb +35 -0
  296. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/test/test_runner_rewrite.rb +47 -0
  297. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/test/test_source_buffer.rb +162 -0
  298. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/test/test_source_comment.rb +36 -0
  299. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/test/test_source_comment_associator.rb +367 -0
  300. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/test/test_source_map.rb +15 -0
  301. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/test/test_source_range.rb +172 -0
  302. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/test/test_source_rewriter.rb +541 -0
  303. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/test/test_source_rewriter_action.rb +46 -0
  304. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/test/test_source_tree_rewriter.rb +173 -0
  305. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/test/test_static_environment.rb +45 -0
  306. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/test/using_tree_rewriter/fixtures/input.rb +3 -0
  307. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/test/using_tree_rewriter/fixtures/output.rb +3 -0
  308. data/vendor/ruby/2.6.0/gems/parser-2.6.5.0/test/using_tree_rewriter/using_tree_rewriter.rb +9 -0
  309. data/vendor/ruby/2.6.0/gems/peek-1.1.0/CHANGELOG.md +97 -0
  310. data/vendor/ruby/2.6.0/gems/peek-1.1.0/Gemfile +30 -0
  311. data/vendor/ruby/2.6.0/gems/peek-1.1.0/Gemfile-rails42 +27 -0
  312. data/vendor/ruby/2.6.0/gems/peek-1.1.0/LICENSE.txt +22 -0
  313. data/vendor/ruby/2.6.0/gems/peek-1.1.0/README.md +243 -0
  314. data/vendor/ruby/2.6.0/gems/peek-1.1.0/Rakefile +13 -0
  315. data/vendor/ruby/2.6.0/gems/peek-1.1.0/app/assets/javascripts/peek.js +86 -0
  316. data/vendor/ruby/2.6.0/gems/peek-1.1.0/app/assets/javascripts/peek/vendor/jquery.tipsy.js +258 -0
  317. data/vendor/ruby/2.6.0/gems/peek-1.1.0/app/assets/stylesheets/peek.scss +85 -0
  318. data/vendor/ruby/2.6.0/gems/peek-1.1.0/app/assets/stylesheets/peek/vendor/tipsy.scss +22 -0
  319. data/vendor/ruby/2.6.0/gems/peek-1.1.0/app/controllers/peek/results_controller.rb +25 -0
  320. data/vendor/ruby/2.6.0/gems/peek-1.1.0/app/views/peek/_bar.html.erb +11 -0
  321. data/vendor/ruby/2.6.0/gems/peek-1.1.0/config/routes.rb +3 -0
  322. data/vendor/ruby/2.6.0/gems/peek-1.1.0/lib/peek.rb +93 -0
  323. data/vendor/ruby/2.6.0/gems/peek-1.1.0/lib/peek/adapters/base.rb +17 -0
  324. data/vendor/ruby/2.6.0/gems/peek-1.1.0/lib/peek/adapters/elasticsearch.rb +35 -0
  325. data/vendor/ruby/2.6.0/gems/peek-1.1.0/lib/peek/adapters/memcache.rb +27 -0
  326. data/vendor/ruby/2.6.0/gems/peek-1.1.0/lib/peek/adapters/memory.rb +27 -0
  327. data/vendor/ruby/2.6.0/gems/peek-1.1.0/lib/peek/adapters/redis.rb +23 -0
  328. data/vendor/ruby/2.6.0/gems/peek-1.1.0/lib/peek/controller_helpers.rb +22 -0
  329. data/vendor/ruby/2.6.0/gems/peek-1.1.0/lib/peek/railtie.rb +39 -0
  330. data/vendor/ruby/2.6.0/gems/peek-1.1.0/lib/peek/version.rb +3 -0
  331. data/vendor/ruby/2.6.0/gems/peek-1.1.0/lib/peek/views/view.rb +124 -0
  332. data/vendor/ruby/2.6.0/gems/peek-1.1.0/peek.gemspec +22 -0
  333. data/vendor/ruby/2.6.0/gems/peek-1.1.0/test/controllers/requests_test.rb +33 -0
  334. data/vendor/ruby/2.6.0/gems/peek-1.1.0/test/dummy/README.rdoc +28 -0
  335. data/vendor/ruby/2.6.0/gems/peek-1.1.0/test/dummy/Rakefile +6 -0
  336. data/vendor/ruby/2.6.0/gems/peek-1.1.0/test/dummy/app/assets/javascripts/application.js +16 -0
  337. data/vendor/ruby/2.6.0/gems/peek-1.1.0/test/dummy/app/assets/stylesheets/application.css +14 -0
  338. data/vendor/ruby/2.6.0/gems/peek-1.1.0/test/dummy/app/controllers/application_controller.rb +13 -0
  339. data/vendor/ruby/2.6.0/gems/peek-1.1.0/test/dummy/app/controllers/home_controller.rb +11 -0
  340. data/vendor/ruby/2.6.0/gems/peek-1.1.0/test/dummy/app/helpers/application_helper.rb +2 -0
  341. data/vendor/ruby/2.6.0/gems/peek-1.1.0/test/dummy/app/views/home/show.html.erb +5 -0
  342. data/vendor/ruby/2.6.0/gems/peek-1.1.0/test/dummy/app/views/layouts/application.html.erb +14 -0
  343. data/vendor/ruby/2.6.0/gems/peek-1.1.0/test/dummy/app/views/peek/_test_view.html.erb +1 -0
  344. data/vendor/ruby/2.6.0/gems/peek-1.1.0/test/dummy/bin/bundle +3 -0
  345. data/vendor/ruby/2.6.0/gems/peek-1.1.0/test/dummy/bin/rails +4 -0
  346. data/vendor/ruby/2.6.0/gems/peek-1.1.0/test/dummy/bin/rake +4 -0
  347. data/vendor/ruby/2.6.0/gems/peek-1.1.0/test/dummy/config.ru +4 -0
  348. data/vendor/ruby/2.6.0/gems/peek-1.1.0/test/dummy/config/application.rb +25 -0
  349. data/vendor/ruby/2.6.0/gems/peek-1.1.0/test/dummy/config/boot.rb +5 -0
  350. data/vendor/ruby/2.6.0/gems/peek-1.1.0/test/dummy/config/environment.rb +5 -0
  351. data/vendor/ruby/2.6.0/gems/peek-1.1.0/test/dummy/config/environments/development.rb +23 -0
  352. data/vendor/ruby/2.6.0/gems/peek-1.1.0/test/dummy/config/environments/test.rb +36 -0
  353. data/vendor/ruby/2.6.0/gems/peek-1.1.0/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  354. data/vendor/ruby/2.6.0/gems/peek-1.1.0/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  355. data/vendor/ruby/2.6.0/gems/peek-1.1.0/test/dummy/config/initializers/inflections.rb +16 -0
  356. data/vendor/ruby/2.6.0/gems/peek-1.1.0/test/dummy/config/initializers/mime_types.rb +5 -0
  357. data/vendor/ruby/2.6.0/gems/peek-1.1.0/test/dummy/config/initializers/peek.rb +3 -0
  358. data/vendor/ruby/2.6.0/gems/peek-1.1.0/test/dummy/config/initializers/secret_token.rb +12 -0
  359. data/vendor/ruby/2.6.0/gems/peek-1.1.0/test/dummy/config/initializers/session_store.rb +3 -0
  360. data/vendor/ruby/2.6.0/gems/peek-1.1.0/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  361. data/vendor/ruby/2.6.0/gems/peek-1.1.0/test/dummy/config/locales/en.yml +23 -0
  362. data/vendor/ruby/2.6.0/gems/peek-1.1.0/test/dummy/config/routes.rb +8 -0
  363. data/vendor/ruby/2.6.0/gems/peek-1.1.0/test/dummy/lib/test_view.rb +18 -0
  364. data/vendor/ruby/2.6.0/gems/peek-1.1.0/test/dummy/public/404.html +58 -0
  365. data/vendor/ruby/2.6.0/gems/peek-1.1.0/test/dummy/public/422.html +58 -0
  366. data/vendor/ruby/2.6.0/gems/peek-1.1.0/test/dummy/public/500.html +57 -0
  367. data/vendor/ruby/2.6.0/gems/peek-1.1.0/test/dummy/public/favicon.ico +0 -0
  368. data/vendor/ruby/2.6.0/gems/peek-1.1.0/test/peek/views/view_test.rb +37 -0
  369. data/vendor/ruby/2.6.0/gems/peek-1.1.0/test/peek_test.rb +69 -0
  370. data/vendor/ruby/2.6.0/gems/peek-1.1.0/test/test_helper.rb +22 -0
  371. data/vendor/ruby/2.6.0/gems/rails-html-sanitizer-1.3.0/CHANGELOG.md +44 -0
  372. data/vendor/ruby/2.6.0/gems/rails-html-sanitizer-1.3.0/MIT-LICENSE +23 -0
  373. data/vendor/ruby/2.6.0/gems/rails-html-sanitizer-1.3.0/README.md +140 -0
  374. data/vendor/ruby/2.6.0/gems/rails-html-sanitizer-1.3.0/lib/rails-html-sanitizer.rb +77 -0
  375. data/vendor/ruby/2.6.0/gems/rails-html-sanitizer-1.3.0/lib/rails/html/sanitizer.rb +155 -0
  376. data/vendor/ruby/2.6.0/gems/rails-html-sanitizer-1.3.0/lib/rails/html/sanitizer/version.rb +7 -0
  377. data/vendor/ruby/2.6.0/gems/rails-html-sanitizer-1.3.0/lib/rails/html/scrubbers.rb +201 -0
  378. data/vendor/ruby/2.6.0/gems/rails-html-sanitizer-1.3.0/test/sanitizer_test.rb +568 -0
  379. data/vendor/ruby/2.6.0/gems/rails-html-sanitizer-1.3.0/test/scrubbers_test.rb +174 -0
  380. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.8.6/Changelog.md +1156 -0
  381. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.8.6/LICENSE.md +25 -0
  382. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.8.6/README.md +305 -0
  383. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.8.6/lib/rspec/expectations.rb +82 -0
  384. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.8.6/lib/rspec/expectations/block_snippet_extractor.rb +253 -0
  385. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.8.6/lib/rspec/expectations/configuration.rb +215 -0
  386. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.8.6/lib/rspec/expectations/expectation_target.rb +127 -0
  387. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.8.6/lib/rspec/expectations/fail_with.rb +39 -0
  388. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.8.6/lib/rspec/expectations/failure_aggregator.rb +194 -0
  389. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.8.6/lib/rspec/expectations/handler.rb +170 -0
  390. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.8.6/lib/rspec/expectations/minitest_integration.rb +58 -0
  391. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.8.6/lib/rspec/expectations/syntax.rb +132 -0
  392. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.8.6/lib/rspec/expectations/version.rb +8 -0
  393. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.8.6/lib/rspec/matchers.rb +1034 -0
  394. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.8.6/lib/rspec/matchers/aliased_matcher.rb +116 -0
  395. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.8.6/lib/rspec/matchers/built_in.rb +52 -0
  396. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.8.6/lib/rspec/matchers/built_in/all.rb +86 -0
  397. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.8.6/lib/rspec/matchers/built_in/base_matcher.rb +193 -0
  398. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.8.6/lib/rspec/matchers/built_in/be.rb +288 -0
  399. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.8.6/lib/rspec/matchers/built_in/be_between.rb +77 -0
  400. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.8.6/lib/rspec/matchers/built_in/be_instance_of.rb +26 -0
  401. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.8.6/lib/rspec/matchers/built_in/be_kind_of.rb +20 -0
  402. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.8.6/lib/rspec/matchers/built_in/be_within.rb +72 -0
  403. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.8.6/lib/rspec/matchers/built_in/change.rb +428 -0
  404. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.8.6/lib/rspec/matchers/built_in/compound.rb +271 -0
  405. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.8.6/lib/rspec/matchers/built_in/contain_exactly.rb +302 -0
  406. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.8.6/lib/rspec/matchers/built_in/cover.rb +24 -0
  407. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.8.6/lib/rspec/matchers/built_in/eq.rb +40 -0
  408. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.8.6/lib/rspec/matchers/built_in/eql.rb +34 -0
  409. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.8.6/lib/rspec/matchers/built_in/equal.rb +81 -0
  410. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.8.6/lib/rspec/matchers/built_in/exist.rb +90 -0
  411. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.8.6/lib/rspec/matchers/built_in/has.rb +103 -0
  412. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.8.6/lib/rspec/matchers/built_in/have_attributes.rb +114 -0
  413. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.8.6/lib/rspec/matchers/built_in/include.rb +149 -0
  414. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.8.6/lib/rspec/matchers/built_in/match.rb +106 -0
  415. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.8.6/lib/rspec/matchers/built_in/operators.rb +128 -0
  416. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.8.6/lib/rspec/matchers/built_in/output.rb +200 -0
  417. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.8.6/lib/rspec/matchers/built_in/raise_error.rb +230 -0
  418. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.8.6/lib/rspec/matchers/built_in/respond_to.rb +165 -0
  419. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.8.6/lib/rspec/matchers/built_in/satisfy.rb +60 -0
  420. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.8.6/lib/rspec/matchers/built_in/start_or_end_with.rb +94 -0
  421. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.8.6/lib/rspec/matchers/built_in/throw_symbol.rb +132 -0
  422. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.8.6/lib/rspec/matchers/built_in/yield.rb +432 -0
  423. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.8.6/lib/rspec/matchers/composable.rb +171 -0
  424. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.8.6/lib/rspec/matchers/dsl.rb +527 -0
  425. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.8.6/lib/rspec/matchers/english_phrasing.rb +58 -0
  426. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.8.6/lib/rspec/matchers/expecteds_for_multiple_diffs.rb +73 -0
  427. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.8.6/lib/rspec/matchers/fail_matchers.rb +42 -0
  428. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.8.6/lib/rspec/matchers/generated_descriptions.rb +41 -0
  429. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.8.6/lib/rspec/matchers/matcher_delegator.rb +35 -0
  430. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.8.6/lib/rspec/matchers/matcher_protocol.rb +99 -0
  431. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.8.2/Changelog.md +1114 -0
  432. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.8.2/LICENSE.md +25 -0
  433. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.8.2/README.md +460 -0
  434. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.8.2/lib/rspec/mocks.rb +130 -0
  435. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.8.2/lib/rspec/mocks/any_instance.rb +11 -0
  436. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.8.2/lib/rspec/mocks/any_instance/chain.rb +110 -0
  437. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.8.2/lib/rspec/mocks/any_instance/error_generator.rb +31 -0
  438. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.8.2/lib/rspec/mocks/any_instance/expect_chain_chain.rb +31 -0
  439. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.8.2/lib/rspec/mocks/any_instance/expectation_chain.rb +50 -0
  440. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.8.2/lib/rspec/mocks/any_instance/message_chains.rb +83 -0
  441. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.8.2/lib/rspec/mocks/any_instance/proxy.rb +116 -0
  442. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.8.2/lib/rspec/mocks/any_instance/recorder.rb +289 -0
  443. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.8.2/lib/rspec/mocks/any_instance/stub_chain.rb +51 -0
  444. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.8.2/lib/rspec/mocks/any_instance/stub_chain_chain.rb +23 -0
  445. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.8.2/lib/rspec/mocks/argument_list_matcher.rb +100 -0
  446. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.8.2/lib/rspec/mocks/argument_matchers.rb +322 -0
  447. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.8.2/lib/rspec/mocks/configuration.rb +212 -0
  448. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.8.2/lib/rspec/mocks/error_generator.rb +369 -0
  449. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.8.2/lib/rspec/mocks/example_methods.rb +434 -0
  450. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.8.2/lib/rspec/mocks/instance_method_stasher.rb +146 -0
  451. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.8.2/lib/rspec/mocks/marshal_extension.rb +41 -0
  452. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.8.2/lib/rspec/mocks/matchers/expectation_customization.rb +20 -0
  453. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.8.2/lib/rspec/mocks/matchers/have_received.rb +134 -0
  454. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.8.2/lib/rspec/mocks/matchers/receive.rb +132 -0
  455. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.8.2/lib/rspec/mocks/matchers/receive_message_chain.rb +82 -0
  456. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.8.2/lib/rspec/mocks/matchers/receive_messages.rb +77 -0
  457. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.8.2/lib/rspec/mocks/message_chain.rb +87 -0
  458. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.8.2/lib/rspec/mocks/message_expectation.rb +741 -0
  459. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.8.2/lib/rspec/mocks/method_double.rb +287 -0
  460. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.8.2/lib/rspec/mocks/method_reference.rb +202 -0
  461. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.8.2/lib/rspec/mocks/minitest_integration.rb +68 -0
  462. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.8.2/lib/rspec/mocks/mutate_const.rb +339 -0
  463. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.8.2/lib/rspec/mocks/object_reference.rb +149 -0
  464. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.8.2/lib/rspec/mocks/order_group.rb +81 -0
  465. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.8.2/lib/rspec/mocks/proxy.rb +485 -0
  466. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.8.2/lib/rspec/mocks/space.rb +238 -0
  467. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.8.2/lib/rspec/mocks/standalone.rb +3 -0
  468. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.8.2/lib/rspec/mocks/syntax.rb +325 -0
  469. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.8.2/lib/rspec/mocks/targets.rb +124 -0
  470. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.8.2/lib/rspec/mocks/test_double.rb +171 -0
  471. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.8.2/lib/rspec/mocks/verifying_double.rb +129 -0
  472. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.8.2/lib/rspec/mocks/verifying_message_expectation.rb +54 -0
  473. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.8.2/lib/rspec/mocks/verifying_proxy.rb +220 -0
  474. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.8.2/lib/rspec/mocks/version.rb +9 -0
  475. data/vendor/ruby/2.6.0/gems/rspec-support-3.8.3/Changelog.md +269 -0
  476. data/vendor/ruby/2.6.0/gems/rspec-support-3.8.3/LICENSE.md +23 -0
  477. data/vendor/ruby/2.6.0/gems/rspec-support-3.8.3/README.md +40 -0
  478. data/vendor/ruby/2.6.0/gems/rspec-support-3.8.3/lib/rspec/support.rb +149 -0
  479. data/vendor/ruby/2.6.0/gems/rspec-support-3.8.3/lib/rspec/support/caller_filter.rb +83 -0
  480. data/vendor/ruby/2.6.0/gems/rspec-support-3.8.3/lib/rspec/support/comparable_version.rb +46 -0
  481. data/vendor/ruby/2.6.0/gems/rspec-support-3.8.3/lib/rspec/support/differ.rb +215 -0
  482. data/vendor/ruby/2.6.0/gems/rspec-support-3.8.3/lib/rspec/support/directory_maker.rb +63 -0
  483. data/vendor/ruby/2.6.0/gems/rspec-support-3.8.3/lib/rspec/support/encoded_string.rb +165 -0
  484. data/vendor/ruby/2.6.0/gems/rspec-support-3.8.3/lib/rspec/support/fuzzy_matcher.rb +48 -0
  485. data/vendor/ruby/2.6.0/gems/rspec-support-3.8.3/lib/rspec/support/hunk_generator.rb +47 -0
  486. data/vendor/ruby/2.6.0/gems/rspec-support-3.8.3/lib/rspec/support/matcher_definition.rb +42 -0
  487. data/vendor/ruby/2.6.0/gems/rspec-support-3.8.3/lib/rspec/support/method_signature_verifier.rb +438 -0
  488. data/vendor/ruby/2.6.0/gems/rspec-support-3.8.3/lib/rspec/support/mutex.rb +73 -0
  489. data/vendor/ruby/2.6.0/gems/rspec-support-3.8.3/lib/rspec/support/object_formatter.rb +275 -0
  490. data/vendor/ruby/2.6.0/gems/rspec-support-3.8.3/lib/rspec/support/recursive_const_methods.rb +76 -0
  491. data/vendor/ruby/2.6.0/gems/rspec-support-3.8.3/lib/rspec/support/reentrant_mutex.rb +53 -0
  492. data/vendor/ruby/2.6.0/gems/rspec-support-3.8.3/lib/rspec/support/ruby_features.rb +176 -0
  493. data/vendor/ruby/2.6.0/gems/rspec-support-3.8.3/lib/rspec/support/source.rb +75 -0
  494. data/vendor/ruby/2.6.0/gems/rspec-support-3.8.3/lib/rspec/support/source/location.rb +21 -0
  495. data/vendor/ruby/2.6.0/gems/rspec-support-3.8.3/lib/rspec/support/source/node.rb +110 -0
  496. data/vendor/ruby/2.6.0/gems/rspec-support-3.8.3/lib/rspec/support/source/token.rb +87 -0
  497. data/vendor/ruby/2.6.0/gems/rspec-support-3.8.3/lib/rspec/support/spec.rb +81 -0
  498. data/vendor/ruby/2.6.0/gems/rspec-support-3.8.3/lib/rspec/support/spec/deprecation_helpers.rb +64 -0
  499. data/vendor/ruby/2.6.0/gems/rspec-support-3.8.3/lib/rspec/support/spec/formatting_support.rb +9 -0
  500. data/vendor/ruby/2.6.0/gems/rspec-support-3.8.3/lib/rspec/support/spec/in_sub_process.rb +69 -0
  501. data/vendor/ruby/2.6.0/gems/rspec-support-3.8.3/lib/rspec/support/spec/library_wide_checks.rb +150 -0
  502. data/vendor/ruby/2.6.0/gems/rspec-support-3.8.3/lib/rspec/support/spec/shell_out.rb +89 -0
  503. data/vendor/ruby/2.6.0/gems/rspec-support-3.8.3/lib/rspec/support/spec/stderr_splitter.rb +63 -0
  504. data/vendor/ruby/2.6.0/gems/rspec-support-3.8.3/lib/rspec/support/spec/string_matcher.rb +46 -0
  505. data/vendor/ruby/2.6.0/gems/rspec-support-3.8.3/lib/rspec/support/spec/with_isolated_directory.rb +13 -0
  506. data/vendor/ruby/2.6.0/gems/rspec-support-3.8.3/lib/rspec/support/spec/with_isolated_stderr.rb +13 -0
  507. data/vendor/ruby/2.6.0/gems/rspec-support-3.8.3/lib/rspec/support/version.rb +7 -0
  508. data/vendor/ruby/2.6.0/gems/rspec-support-3.8.3/lib/rspec/support/warnings.rb +39 -0
  509. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/LICENSE.txt +20 -0
  510. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/README.md +217 -0
  511. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/assets/logo.png +0 -0
  512. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/assets/output.html.erb +261 -0
  513. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/bin/console +10 -0
  514. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/bin/setup +7 -0
  515. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/config/default.yml +3939 -0
  516. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/exe/rubocop +17 -0
  517. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop.rb +608 -0
  518. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/ast/builder.rb +81 -0
  519. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/ast/node.rb +640 -0
  520. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/ast/node/alias_node.rb +24 -0
  521. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/ast/node/and_node.rb +29 -0
  522. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/ast/node/args_node.rb +29 -0
  523. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/ast/node/array_node.rb +57 -0
  524. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/ast/node/block_node.rb +115 -0
  525. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/ast/node/break_node.rb +17 -0
  526. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/ast/node/case_node.rb +56 -0
  527. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/ast/node/class_node.rb +31 -0
  528. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/ast/node/def_node.rb +71 -0
  529. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/ast/node/defined_node.rb +17 -0
  530. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/ast/node/ensure_node.rb +17 -0
  531. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/ast/node/float_node.rb +12 -0
  532. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/ast/node/for_node.rb +53 -0
  533. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/ast/node/hash_node.rb +109 -0
  534. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/ast/node/if_node.rb +175 -0
  535. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/ast/node/int_node.rb +12 -0
  536. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/ast/node/keyword_splat_node.rb +45 -0
  537. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/ast/node/mixin/basic_literal_node.rb +16 -0
  538. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/ast/node/mixin/binary_operator_node.rb +43 -0
  539. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/ast/node/mixin/collection_node.rb +15 -0
  540. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/ast/node/mixin/conditional_node.rb +45 -0
  541. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/ast/node/mixin/hash_element_node.rb +125 -0
  542. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/ast/node/mixin/method_dispatch_node.rb +261 -0
  543. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/ast/node/mixin/method_identifier_predicates.rb +114 -0
  544. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/ast/node/mixin/modifier_node.rb +17 -0
  545. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/ast/node/mixin/numeric_node.rb +21 -0
  546. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/ast/node/mixin/parameterized_node.rb +61 -0
  547. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/ast/node/mixin/predicate_operator_node.rb +35 -0
  548. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/ast/node/module_node.rb +24 -0
  549. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/ast/node/or_node.rb +29 -0
  550. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/ast/node/pair_node.rb +63 -0
  551. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/ast/node/range_node.rb +18 -0
  552. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/ast/node/regexp_node.rb +35 -0
  553. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/ast/node/resbody_node.rb +24 -0
  554. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/ast/node/retry_node.rb +17 -0
  555. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/ast/node/self_class_node.rb +24 -0
  556. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/ast/node/send_node.rb +13 -0
  557. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/ast/node/str_node.rb +16 -0
  558. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/ast/node/super_node.rb +21 -0
  559. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/ast/node/symbol_node.rb +12 -0
  560. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/ast/node/until_node.rb +35 -0
  561. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/ast/node/when_node.rb +53 -0
  562. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/ast/node/while_node.rb +35 -0
  563. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/ast/node/yield_node.rb +21 -0
  564. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/ast/sexp.rb +16 -0
  565. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/ast/traversal.rb +183 -0
  566. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cached_data.rb +58 -0
  567. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cli.rb +343 -0
  568. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/comment_config.rb +201 -0
  569. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/config.rb +244 -0
  570. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/config_loader.rb +273 -0
  571. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/config_loader_resolver.rb +194 -0
  572. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/config_obsoletion.rb +213 -0
  573. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/config_store.rb +48 -0
  574. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/config_validator.rb +239 -0
  575. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/autocorrect_logic.rb +103 -0
  576. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/badge.rb +73 -0
  577. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/bundler/duplicated_gem.rb +73 -0
  578. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/bundler/gem_comment.rb +64 -0
  579. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/bundler/insecure_protocol_source.rb +69 -0
  580. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/bundler/ordered_gems.rb +73 -0
  581. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/commissioner.rb +137 -0
  582. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/cop.rb +271 -0
  583. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/corrector.rb +171 -0
  584. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/correctors/alignment_corrector.rb +146 -0
  585. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/correctors/condition_corrector.rb +28 -0
  586. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/correctors/each_to_for_corrector.rb +53 -0
  587. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/correctors/empty_line_corrector.rb +26 -0
  588. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/correctors/for_to_each_corrector.rb +73 -0
  589. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/correctors/lambda_literal_to_method_corrector.rb +136 -0
  590. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/correctors/line_break_corrector.rb +61 -0
  591. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/correctors/multiline_literal_brace_corrector.rb +68 -0
  592. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/correctors/ordered_gem_corrector.rb +44 -0
  593. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/correctors/parentheses_corrector.rb +31 -0
  594. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/correctors/percent_literal_corrector.rb +117 -0
  595. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/correctors/punctuation_corrector.rb +29 -0
  596. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/correctors/space_corrector.rb +49 -0
  597. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/correctors/string_literal_corrector.rb +25 -0
  598. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/correctors/unused_arg_corrector.rb +43 -0
  599. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/force.rb +42 -0
  600. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/gemspec/duplicated_assignment.rb +104 -0
  601. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/gemspec/ordered_dependencies.rb +106 -0
  602. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/gemspec/required_ruby_version.rb +85 -0
  603. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/gemspec/ruby_version_globals_usage.rb +55 -0
  604. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/generator.rb +223 -0
  605. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/generator/configuration_injector.rb +66 -0
  606. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/generator/require_file_injector.rb +78 -0
  607. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/ignored_node.rb +38 -0
  608. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/internal_affairs.rb +8 -0
  609. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/internal_affairs/node_destructuring.rb +44 -0
  610. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/internal_affairs/node_type_predicate.rb +44 -0
  611. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/internal_affairs/offense_location_keyword.rb +54 -0
  612. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/internal_affairs/redundant_location_argument.rb +48 -0
  613. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/internal_affairs/redundant_message_argument.rb +73 -0
  614. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/internal_affairs/useless_message_assertion.rb +52 -0
  615. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/access_modifier_indentation.rb +98 -0
  616. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/align_arguments.rb +93 -0
  617. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/align_array.rb +39 -0
  618. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/align_hash.rb +358 -0
  619. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/align_parameters.rb +118 -0
  620. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/block_alignment.rb +244 -0
  621. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/block_end_newline.rb +62 -0
  622. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/case_indentation.rb +161 -0
  623. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/class_structure.rb +340 -0
  624. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/closing_heredoc_indentation.rb +126 -0
  625. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/closing_parenthesis_indentation.rb +203 -0
  626. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/comment_indentation.rb +144 -0
  627. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/condition_position.rb +56 -0
  628. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/def_end_alignment.rb +74 -0
  629. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/dot_position.rb +105 -0
  630. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/else_alignment.rb +134 -0
  631. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/empty_comment.rb +160 -0
  632. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/empty_line_after_guard_clause.rb +142 -0
  633. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/empty_line_after_magic_comment.rb +64 -0
  634. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/empty_line_between_defs.rb +151 -0
  635. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/empty_lines.rb +76 -0
  636. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +215 -0
  637. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/empty_lines_around_arguments.rb +99 -0
  638. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/empty_lines_around_begin_body.rb +45 -0
  639. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/empty_lines_around_block_body.rb +41 -0
  640. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/empty_lines_around_class_body.rb +88 -0
  641. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/empty_lines_around_exception_handling_keywords.rb +136 -0
  642. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/empty_lines_around_method_body.rb +45 -0
  643. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/empty_lines_around_module_body.rb +62 -0
  644. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/end_alignment.rb +189 -0
  645. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/end_of_line.rb +87 -0
  646. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/extra_spacing.rb +201 -0
  647. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/first_array_element_line_break.rb +45 -0
  648. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/first_hash_element_line_break.rb +37 -0
  649. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/first_method_argument_line_break.rb +55 -0
  650. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/first_method_parameter_line_break.rb +46 -0
  651. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +289 -0
  652. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/indent_assignment.rb +54 -0
  653. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/indent_first_argument.rb +247 -0
  654. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/indent_first_array_element.rb +167 -0
  655. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/indent_first_hash_element.rb +184 -0
  656. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/indent_first_parameter.rb +100 -0
  657. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/indent_heredoc.rb +256 -0
  658. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/indentation_consistency.rb +202 -0
  659. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/indentation_width.rb +364 -0
  660. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/initial_indentation.rb +59 -0
  661. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/leading_blank_lines.rb +53 -0
  662. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/leading_comment_space.rb +88 -0
  663. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/multiline_array_brace_layout.rb +118 -0
  664. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/multiline_array_line_breaks.rb +39 -0
  665. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/multiline_assignment_layout.rb +95 -0
  666. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/multiline_block_layout.rb +146 -0
  667. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/multiline_hash_brace_layout.rb +122 -0
  668. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/multiline_hash_key_line_breaks.rb +50 -0
  669. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/multiline_method_argument_line_breaks.rb +54 -0
  670. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/multiline_method_call_brace_layout.rb +134 -0
  671. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +220 -0
  672. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/multiline_method_definition_brace_layout.rb +131 -0
  673. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/multiline_operation_indentation.rb +114 -0
  674. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +189 -0
  675. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/space_after_colon.rb +47 -0
  676. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/space_after_comma.rb +35 -0
  677. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/space_after_method_name.rb +42 -0
  678. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/space_after_not.rb +40 -0
  679. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/space_after_semicolon.rb +32 -0
  680. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/space_around_block_parameters.rb +169 -0
  681. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/space_around_equals_in_parameter_default.rb +92 -0
  682. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/space_around_keyword.rb +232 -0
  683. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/space_around_operators.rb +182 -0
  684. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/space_before_block_braces.rb +119 -0
  685. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/space_before_comma.rb +31 -0
  686. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/space_before_comment.rb +35 -0
  687. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/space_before_first_arg.rb +67 -0
  688. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/space_before_semicolon.rb +27 -0
  689. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/space_in_lambda_literal.rb +80 -0
  690. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +228 -0
  691. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/space_inside_array_percent_literal.rb +53 -0
  692. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/space_inside_block_braces.rb +248 -0
  693. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/space_inside_hash_literal_braces.rb +207 -0
  694. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/space_inside_parens.rb +113 -0
  695. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/space_inside_percent_literal_delimiters.rb +65 -0
  696. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/space_inside_range_literal.rb +63 -0
  697. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/space_inside_reference_brackets.rb +150 -0
  698. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/space_inside_string_interpolation.rb +65 -0
  699. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/tab.rb +75 -0
  700. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/trailing_blank_lines.rb +113 -0
  701. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/layout/trailing_whitespace.rb +61 -0
  702. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/ambiguous_block_association.rb +62 -0
  703. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/ambiguous_operator.rb +55 -0
  704. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/ambiguous_regexp_literal.rb +43 -0
  705. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/assignment_in_condition.rb +97 -0
  706. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/big_decimal_new.rb +44 -0
  707. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/boolean_symbol.rb +38 -0
  708. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/circular_argument_reference.rb +72 -0
  709. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/debugger.rb +77 -0
  710. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/deprecated_class_methods.rb +111 -0
  711. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/disjunctive_assignment_in_constructor.rb +81 -0
  712. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/duplicate_case_condition.rb +53 -0
  713. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/duplicate_methods.rb +239 -0
  714. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/duplicated_key.rb +38 -0
  715. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/each_with_object_argument.rb +42 -0
  716. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/else_layout.rb +66 -0
  717. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/empty_ensure.rb +60 -0
  718. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/empty_expression.rb +42 -0
  719. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/empty_interpolation.rb +36 -0
  720. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/empty_when.rb +38 -0
  721. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/end_in_method.rb +40 -0
  722. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/ensure_return.rb +46 -0
  723. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/erb_new_arguments.rb +163 -0
  724. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/flip_flop.rb +32 -0
  725. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/float_out_of_range.rb +35 -0
  726. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/format_parameter_mismatch.rb +159 -0
  727. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/handle_exceptions.rb +95 -0
  728. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/heredoc_method_call_position.rb +156 -0
  729. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/implicit_string_concatenation.rb +101 -0
  730. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/ineffective_access_modifier.rb +127 -0
  731. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/inherit_exception.rb +100 -0
  732. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/interpolation_check.rb +40 -0
  733. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/literal_as_condition.rb +138 -0
  734. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/literal_in_interpolation.rb +98 -0
  735. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/loop.rb +63 -0
  736. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/missing_cop_enable_directive.rb +84 -0
  737. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/multiple_compare.rb +48 -0
  738. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/nested_method_definition.rb +104 -0
  739. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/nested_percent_literal.rb +51 -0
  740. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/next_without_accumulator.rb +50 -0
  741. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/non_local_exit_from_iterator.rb +83 -0
  742. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/number_conversion.rb +81 -0
  743. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/ordered_magic_comments.rb +86 -0
  744. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +64 -0
  745. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/percent_string_array.rb +73 -0
  746. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/percent_symbol_array.rb +69 -0
  747. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/rand_one.rb +45 -0
  748. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/redundant_with_index.rb +82 -0
  749. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/redundant_with_object.rb +83 -0
  750. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/regexp_as_condition.rb +29 -0
  751. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/require_parentheses.rb +66 -0
  752. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/rescue_exception.rb +46 -0
  753. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/rescue_type.rb +94 -0
  754. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/return_in_void_context.rb +74 -0
  755. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/safe_navigation_chain.rb +66 -0
  756. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/safe_navigation_consistency.rb +94 -0
  757. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/safe_navigation_with_empty.rb +38 -0
  758. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/script_permission.rb +70 -0
  759. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/send_with_mixin_argument.rb +91 -0
  760. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/shadowed_argument.rb +182 -0
  761. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/shadowed_exception.rb +178 -0
  762. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/shadowing_outer_local_variable.rb +53 -0
  763. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/string_conversion_in_interpolation.rb +59 -0
  764. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/syntax.rb +59 -0
  765. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/to_json.rb +41 -0
  766. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/underscore_prefixed_variable_name.rb +82 -0
  767. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/unified_integer.rb +45 -0
  768. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/unneeded_cop_disable_directive.rb +263 -0
  769. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/unneeded_cop_enable_directive.rb +116 -0
  770. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/unneeded_require_statement.rb +50 -0
  771. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/unneeded_splat_expansion.rb +172 -0
  772. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/unreachable_code.rb +99 -0
  773. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/unused_block_argument.rb +149 -0
  774. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/unused_method_argument.rb +68 -0
  775. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/uri_escape_unescape.rb +76 -0
  776. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/uri_regexp.rb +73 -0
  777. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/useless_access_modifier.rb +240 -0
  778. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/useless_assignment.rb +129 -0
  779. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/useless_comparison.rb +28 -0
  780. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/useless_else_without_rescue.rb +49 -0
  781. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/useless_setter_call.rb +164 -0
  782. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/lint/void.rb +170 -0
  783. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/message_annotator.rb +129 -0
  784. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/metrics/abc_size.rb +24 -0
  785. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/metrics/block_length.rb +50 -0
  786. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/metrics/block_nesting.rb +65 -0
  787. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/metrics/class_length.rb +36 -0
  788. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/metrics/cyclomatic_complexity.rb +32 -0
  789. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/metrics/line_length.rb +321 -0
  790. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/metrics/method_length.rb +36 -0
  791. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/metrics/module_length.rb +36 -0
  792. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/metrics/parameter_lists.rb +54 -0
  793. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/metrics/perceived_complexity.rb +61 -0
  794. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/metrics/utils/abc_size_calculator.rb +67 -0
  795. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/migration/department_name.rb +44 -0
  796. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/alignment.rb +74 -0
  797. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/annotation_comment.rb +37 -0
  798. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/array_min_size.rb +59 -0
  799. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/array_syntax.rb +17 -0
  800. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/check_assignment.rb +44 -0
  801. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/check_line_breakable.rb +190 -0
  802. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/classish_length.rb +37 -0
  803. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/code_length.rb +38 -0
  804. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/configurable_enforced_style.rb +98 -0
  805. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/configurable_formatting.rb +47 -0
  806. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/configurable_max.rb +23 -0
  807. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/configurable_naming.rb +16 -0
  808. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/configurable_numbering.rb +17 -0
  809. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/def_node.rb +33 -0
  810. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/documentation_comment.rb +52 -0
  811. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/duplication.rb +46 -0
  812. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/empty_lines_around_body.rb +172 -0
  813. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/empty_parameter.rb +24 -0
  814. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/end_keyword_alignment.rb +67 -0
  815. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/enforce_superclass.rb +30 -0
  816. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/first_element_line_break.rb +46 -0
  817. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/frozen_string_literal.rb +53 -0
  818. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/hash_alignment.rb +147 -0
  819. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/heredoc.rb +32 -0
  820. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/ignored_methods.rb +19 -0
  821. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/ignored_pattern.rb +29 -0
  822. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/integer_node.rb +14 -0
  823. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/interpolation.rb +27 -0
  824. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/match_range.rb +26 -0
  825. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/method_complexity.rb +56 -0
  826. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/method_preference.rb +31 -0
  827. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/min_body_length.rb +21 -0
  828. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/multiline_element_indentation.rb +86 -0
  829. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/multiline_element_line_breaks.rb +33 -0
  830. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/multiline_expression_indentation.rb +255 -0
  831. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/multiline_literal_brace_layout.rb +141 -0
  832. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/negative_conditional.rb +32 -0
  833. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/nil_methods.rb +25 -0
  834. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/on_normal_if_unless.rb +14 -0
  835. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/ordered_gem_node.rb +56 -0
  836. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/parentheses.rb +17 -0
  837. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/parser_diagnostic.rb +37 -0
  838. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/percent_array.rb +52 -0
  839. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/percent_literal.rb +38 -0
  840. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/preceding_following_alignment.rb +181 -0
  841. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/preferred_delimiters.rb +53 -0
  842. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/range_help.rb +117 -0
  843. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/rescue_node.rb +22 -0
  844. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/safe_assignment.rb +23 -0
  845. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/safe_mode.rb +24 -0
  846. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/space_after_punctuation.rb +55 -0
  847. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/space_before_punctuation.rb +49 -0
  848. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/statement_modifier.rb +68 -0
  849. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/string_help.rb +35 -0
  850. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/string_literals_help.rb +23 -0
  851. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/surrounding_space.rb +146 -0
  852. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/target_ruby_version.rb +16 -0
  853. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/too_many_lines.rb +35 -0
  854. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/trailing_body.rb +26 -0
  855. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/trailing_comma.rb +216 -0
  856. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/uncommunicative_name.rb +111 -0
  857. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/unused_argument.rb +33 -0
  858. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/naming/accessor_method_name.rb +55 -0
  859. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/naming/ascii_identifiers.rb +72 -0
  860. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/naming/binary_operator_parameter_name.rb +43 -0
  861. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/naming/class_and_module_camel_case.rb +33 -0
  862. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/naming/constant_name.rb +81 -0
  863. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/naming/file_name.rb +205 -0
  864. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/naming/heredoc_delimiter_case.rb +62 -0
  865. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/naming/heredoc_delimiter_naming.rb +55 -0
  866. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +171 -0
  867. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/naming/method_name.rb +53 -0
  868. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/naming/predicate_name.rb +108 -0
  869. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +112 -0
  870. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/naming/uncommunicative_block_param_name.rb +49 -0
  871. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/naming/uncommunicative_method_param_name.rb +58 -0
  872. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/naming/variable_name.rb +52 -0
  873. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/naming/variable_number.rb +61 -0
  874. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/offense.rb +205 -0
  875. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/registry.rb +211 -0
  876. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/security/eval.rb +31 -0
  877. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/security/json_load.rb +46 -0
  878. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/security/marshal_load.rb +39 -0
  879. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/security/open.rb +71 -0
  880. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/security/yaml_load.rb +37 -0
  881. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/severity.rb +77 -0
  882. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/access_modifier_declarations.rb +112 -0
  883. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/alias.rb +147 -0
  884. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/and_or.rb +146 -0
  885. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/array_join.rb +39 -0
  886. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/ascii_comments.rb +61 -0
  887. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/attr.rb +62 -0
  888. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/auto_resource_cleanup.rb +51 -0
  889. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/bare_percent_literals.rb +78 -0
  890. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/begin_block.rb +22 -0
  891. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/block_comments.rb +70 -0
  892. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/block_delimiters.rb +331 -0
  893. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/braces_around_hash_parameters.rb +209 -0
  894. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/case_equality.rb +30 -0
  895. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/character_literal.rb +53 -0
  896. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/class_and_module_children.rb +151 -0
  897. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/class_check.rb +59 -0
  898. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/class_methods.rb +60 -0
  899. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/class_vars.rb +48 -0
  900. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/collection_methods.rb +77 -0
  901. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/colon_method_call.rb +48 -0
  902. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/colon_method_definition.rb +37 -0
  903. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/command_literal.rb +187 -0
  904. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/comment_annotation.rb +97 -0
  905. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/commented_keyword.rb +73 -0
  906. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/conditional_assignment.rb +668 -0
  907. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/constant_visibility.rb +77 -0
  908. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/copyright.rb +95 -0
  909. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/date_time.rb +77 -0
  910. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/def_with_parentheses.rb +57 -0
  911. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/dir.rb +48 -0
  912. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/documentation.rb +97 -0
  913. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/documentation_method.rb +81 -0
  914. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/double_cop_disable_directive.rb +55 -0
  915. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/double_negation.rb +35 -0
  916. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/each_for_simple_loop.rb +58 -0
  917. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/each_with_object.rb +110 -0
  918. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/empty_block_parameter.rb +48 -0
  919. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/empty_case_condition.rb +107 -0
  920. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/empty_else.rb +175 -0
  921. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/empty_lambda_parameter.rb +45 -0
  922. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/empty_literal.rb +123 -0
  923. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/empty_method.rb +115 -0
  924. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/encoding.rb +56 -0
  925. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/end_block.rb +25 -0
  926. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/eval_with_location.rb +148 -0
  927. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/even_odd.rb +58 -0
  928. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/expand_path_arguments.rb +194 -0
  929. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/float_division.rb +94 -0
  930. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/for.rb +88 -0
  931. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/format_string.rb +124 -0
  932. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/format_string_token.rb +140 -0
  933. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/frozen_string_literal_comment.rb +149 -0
  934. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/global_vars.rb +80 -0
  935. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/guard_clause.rb +121 -0
  936. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/hash_syntax.rb +214 -0
  937. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/identical_conditional_branches.rb +130 -0
  938. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/if_inside_else.rb +87 -0
  939. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/if_unless_modifier.rb +127 -0
  940. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/if_unless_modifier_of_if_unless.rb +39 -0
  941. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/if_with_semicolon.rb +30 -0
  942. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/implicit_runtime_error.rb +32 -0
  943. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/infinite_loop.rb +127 -0
  944. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/inline_comment.rb +34 -0
  945. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/inverse_methods.rb +187 -0
  946. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/ip_addresses.rb +76 -0
  947. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/lambda.rb +131 -0
  948. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/lambda_call.rb +93 -0
  949. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/line_end_concatenation.rb +121 -0
  950. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +388 -0
  951. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +77 -0
  952. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/method_called_on_do_end_block.rb +46 -0
  953. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/method_def_parentheses.rb +158 -0
  954. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/method_missing_super.rb +34 -0
  955. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/min_max.rb +68 -0
  956. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/missing_else.rb +180 -0
  957. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/missing_respond_to_missing.rb +46 -0
  958. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/mixin_grouping.rb +148 -0
  959. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/mixin_usage.rb +90 -0
  960. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/module_function.rb +104 -0
  961. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/multiline_block_chain.rb +40 -0
  962. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/multiline_if_modifier.rb +67 -0
  963. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/multiline_if_then.rb +50 -0
  964. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/multiline_memoization.rb +94 -0
  965. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/multiline_method_signature.rb +61 -0
  966. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/multiline_ternary_operator.rb +38 -0
  967. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/multiline_when_then.rb +55 -0
  968. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/multiple_comparison.rb +92 -0
  969. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/mutable_constant.rb +174 -0
  970. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/negated_if.rb +99 -0
  971. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/negated_unless.rb +89 -0
  972. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/negated_while.rb +48 -0
  973. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/nested_modifier.rb +105 -0
  974. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/nested_parenthesized_calls.rb +67 -0
  975. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/nested_ternary_operator.rb +32 -0
  976. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/next.rb +244 -0
  977. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/nil_comparison.rb +75 -0
  978. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/non_nil_check.rb +124 -0
  979. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/not.rb +82 -0
  980. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/numeric_literal_prefix.rb +124 -0
  981. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/numeric_literals.rb +110 -0
  982. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/numeric_predicate.rb +137 -0
  983. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/one_line_conditional.rb +101 -0
  984. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/option_hash.rb +55 -0
  985. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/optional_arguments.rb +58 -0
  986. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/or_assignment.rb +95 -0
  987. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/parallel_assignment.rb +287 -0
  988. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/parentheses_around_condition.rb +117 -0
  989. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/percent_literal_delimiters.rb +127 -0
  990. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/percent_q_literals.rb +73 -0
  991. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/perl_backrefs.rb +38 -0
  992. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/preferred_hash_methods.rb +75 -0
  993. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/proc.rb +34 -0
  994. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/raise_args.rb +145 -0
  995. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/random_with_offset.rb +158 -0
  996. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/redundant_begin.rb +91 -0
  997. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/redundant_conditional.rb +97 -0
  998. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/redundant_exception.rb +60 -0
  999. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/redundant_freeze.rb +67 -0
  1000. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/redundant_parentheses.rb +231 -0
  1001. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/redundant_return.rb +161 -0
  1002. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/redundant_self.rb +171 -0
  1003. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/redundant_sort_by.rb +50 -0
  1004. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/regexp_literal.rb +228 -0
  1005. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/rescue_modifier.rb +73 -0
  1006. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/rescue_standard_error.rb +124 -0
  1007. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/return_nil.rb +89 -0
  1008. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/safe_navigation.rb +264 -0
  1009. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/sample.rb +144 -0
  1010. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/self_assignment.rb +97 -0
  1011. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/semicolon.rb +90 -0
  1012. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/send.rb +31 -0
  1013. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/signal_exception.rb +211 -0
  1014. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/single_line_block_params.rb +95 -0
  1015. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/single_line_methods.rb +83 -0
  1016. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/special_global_vars.rb +213 -0
  1017. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/stabby_lambda_parentheses.rb +86 -0
  1018. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/stderr_puts.rb +61 -0
  1019. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/string_hash_keys.rb +50 -0
  1020. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/string_literals.rb +129 -0
  1021. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/string_literals_in_interpolation.rb +49 -0
  1022. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/string_methods.rb +46 -0
  1023. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/strip.rb +46 -0
  1024. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/struct_inheritance.rb +39 -0
  1025. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/symbol_array.rb +119 -0
  1026. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/symbol_literal.rb +32 -0
  1027. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/symbol_proc.rb +110 -0
  1028. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/ternary_parentheses.rb +223 -0
  1029. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/trailing_body_on_class.rb +43 -0
  1030. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/trailing_body_on_method_definition.rb +54 -0
  1031. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/trailing_body_on_module.rb +43 -0
  1032. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/trailing_comma_in_arguments.rb +96 -0
  1033. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/trailing_comma_in_array_literal.rb +58 -0
  1034. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/trailing_comma_in_hash_literal.rb +56 -0
  1035. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/trailing_method_end_statement.rb +91 -0
  1036. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/trailing_underscore_variable.rb +161 -0
  1037. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/trivial_accessors.rb +191 -0
  1038. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/unless_else.rb +55 -0
  1039. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/unneeded_capital_w.rb +51 -0
  1040. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/unneeded_condition.rb +112 -0
  1041. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/unneeded_interpolation.rb +98 -0
  1042. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/unneeded_percent_q.rb +112 -0
  1043. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/unneeded_sort.rb +165 -0
  1044. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/unpack_first.rb +65 -0
  1045. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/variable_interpolation.rb +48 -0
  1046. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/when_then.rb +37 -0
  1047. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/while_until_do.rb +59 -0
  1048. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/while_until_modifier.rb +61 -0
  1049. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/word_array.rb +102 -0
  1050. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/yoda_condition.rb +141 -0
  1051. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/style/zero_length_predicate.rb +117 -0
  1052. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/team.rb +191 -0
  1053. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/util.rb +127 -0
  1054. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/utils/format_string.rb +128 -0
  1055. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/variable_force.rb +464 -0
  1056. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/variable_force/assignment.rb +96 -0
  1057. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/variable_force/branch.rb +322 -0
  1058. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/variable_force/branchable.rb +23 -0
  1059. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/variable_force/reference.rb +49 -0
  1060. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/variable_force/scope.rb +109 -0
  1061. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/variable_force/variable.rb +117 -0
  1062. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/variable_force/variable_table.rb +129 -0
  1063. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/core_ext/string.rb +23 -0
  1064. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/error.rb +34 -0
  1065. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/file_finder.rb +42 -0
  1066. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/formatter/auto_gen_config_formatter.rb +16 -0
  1067. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/formatter/base_formatter.rb +123 -0
  1068. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/formatter/clang_style_formatter.rb +54 -0
  1069. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/formatter/colorizable.rb +41 -0
  1070. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/formatter/disabled_config_formatter.rb +224 -0
  1071. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/formatter/disabled_lines_formatter.rb +57 -0
  1072. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/formatter/emacs_style_formatter.rb +27 -0
  1073. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/formatter/file_list_formatter.rb +20 -0
  1074. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/formatter/formatter_set.rb +106 -0
  1075. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/formatter/fuubar_style_formatter.rb +80 -0
  1076. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/formatter/html_formatter.rb +141 -0
  1077. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/formatter/json_formatter.rb +80 -0
  1078. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/formatter/offense_count_formatter.rb +74 -0
  1079. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/formatter/pacman_formatter.rb +80 -0
  1080. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/formatter/progress_formatter.rb +63 -0
  1081. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/formatter/quiet_formatter.rb +13 -0
  1082. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/formatter/simple_text_formatter.rb +134 -0
  1083. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/formatter/tap_formatter.rb +79 -0
  1084. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/formatter/text_util.rb +20 -0
  1085. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/formatter/worst_offenders_formatter.rb +62 -0
  1086. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/magic_comment.rb +214 -0
  1087. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/name_similarity.rb +21 -0
  1088. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/node_pattern.rb +799 -0
  1089. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/options.rb +466 -0
  1090. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/path_util.rb +85 -0
  1091. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/platform.rb +11 -0
  1092. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/processed_source.rb +216 -0
  1093. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/rake_task.rb +79 -0
  1094. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/remote_config.rb +106 -0
  1095. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/result_cache.rb +191 -0
  1096. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/rspec/cop_helper.rb +94 -0
  1097. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/rspec/expect_offense.rb +240 -0
  1098. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/rspec/host_environment_simulation_helper.rb +28 -0
  1099. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/rspec/shared_contexts.rb +90 -0
  1100. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/rspec/support.rb +13 -0
  1101. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/runner.rb +358 -0
  1102. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/string_interpreter.rb +57 -0
  1103. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/string_util.rb +14 -0
  1104. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/target_finder.rb +190 -0
  1105. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/token.rb +114 -0
  1106. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/version.rb +21 -0
  1107. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/warning.rb +11 -0
  1108. data/vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/yaml_duplication_checker.rb +39 -0
  1109. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/CHANGELOG.md +79 -0
  1110. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/CODE_OF_CONDUCT.md +10 -0
  1111. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/Gemfile +2 -0
  1112. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/LICENSE.txt +22 -0
  1113. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/README.md +68 -0
  1114. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/Rakefile +53 -0
  1115. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/Makefile +271 -0
  1116. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/SharedPtr.o +0 -0
  1117. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/ast.o +0 -0
  1118. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/ast2c.o +0 -0
  1119. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/ast_fwd_decl.o +0 -0
  1120. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/ast_sel_cmp.o +0 -0
  1121. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/ast_sel_unify.o +0 -0
  1122. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/ast_selectors.o +0 -0
  1123. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/ast_supports.o +0 -0
  1124. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/ast_values.o +0 -0
  1125. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/backtrace.o +0 -0
  1126. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/base64vlq.o +0 -0
  1127. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/bind.o +0 -0
  1128. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/c2ast.o +0 -0
  1129. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/c99func.o +0 -0
  1130. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/cencode.o +0 -0
  1131. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/check_nesting.o +0 -0
  1132. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/color_maps.o +0 -0
  1133. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/constants.o +0 -0
  1134. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/context.o +0 -0
  1135. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/cssize.o +0 -0
  1136. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/depend +4 -0
  1137. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/emitter.o +0 -0
  1138. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/environment.o +0 -0
  1139. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/error_handling.o +0 -0
  1140. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/eval.o +0 -0
  1141. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/expand.o +0 -0
  1142. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/extconf.rb +84 -0
  1143. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/extend.o +0 -0
  1144. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/file.o +0 -0
  1145. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/fn_colors.o +0 -0
  1146. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/fn_lists.o +0 -0
  1147. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/fn_maps.o +0 -0
  1148. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/fn_miscs.o +0 -0
  1149. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/fn_numbers.o +0 -0
  1150. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/fn_selectors.o +0 -0
  1151. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/fn_strings.o +0 -0
  1152. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/fn_utils.o +0 -0
  1153. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/inspect.o +0 -0
  1154. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/json.o +0 -0
  1155. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/lexer.o +0 -0
  1156. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass.so +0 -0
  1157. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/VERSION +1 -0
  1158. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/contrib/plugin.cpp +60 -0
  1159. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/include/sass.h +15 -0
  1160. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/include/sass/base.h +96 -0
  1161. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/include/sass/context.h +170 -0
  1162. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/include/sass/functions.h +139 -0
  1163. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/include/sass/values.h +145 -0
  1164. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/include/sass/version.h +12 -0
  1165. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/include/sass2scss.h +120 -0
  1166. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/ast.cpp +963 -0
  1167. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/ast.hpp +905 -0
  1168. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/ast2c.cpp +80 -0
  1169. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/ast2c.hpp +39 -0
  1170. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/ast_def_macros.hpp +132 -0
  1171. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/ast_fwd_decl.cpp +30 -0
  1172. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/ast_fwd_decl.hpp +341 -0
  1173. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/ast_sel_cmp.cpp +909 -0
  1174. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/ast_sel_unify.cpp +280 -0
  1175. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/ast_selectors.cpp +1475 -0
  1176. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/ast_selectors.hpp +568 -0
  1177. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/ast_supports.cpp +130 -0
  1178. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/ast_supports.hpp +121 -0
  1179. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/ast_values.cpp +967 -0
  1180. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/ast_values.hpp +489 -0
  1181. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/b64/cencode.h +32 -0
  1182. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/b64/encode.h +79 -0
  1183. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/backtrace.cpp +50 -0
  1184. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/backtrace.hpp +29 -0
  1185. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/base64vlq.cpp +47 -0
  1186. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/base64vlq.hpp +30 -0
  1187. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/bind.cpp +312 -0
  1188. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/bind.hpp +15 -0
  1189. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/c2ast.cpp +64 -0
  1190. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/c2ast.hpp +14 -0
  1191. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/c99func.c +54 -0
  1192. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/cencode.c +108 -0
  1193. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/check_nesting.cpp +394 -0
  1194. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/check_nesting.hpp +66 -0
  1195. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/color_maps.cpp +651 -0
  1196. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/color_maps.hpp +331 -0
  1197. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/constants.cpp +194 -0
  1198. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/constants.hpp +194 -0
  1199. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/context.cpp +890 -0
  1200. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/context.hpp +152 -0
  1201. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/cssize.cpp +604 -0
  1202. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/cssize.hpp +77 -0
  1203. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/debug.hpp +43 -0
  1204. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/debugger.hpp +807 -0
  1205. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/emitter.cpp +298 -0
  1206. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/emitter.hpp +103 -0
  1207. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/environment.cpp +260 -0
  1208. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/environment.hpp +119 -0
  1209. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/error_handling.cpp +212 -0
  1210. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/error_handling.hpp +229 -0
  1211. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/eval.cpp +1657 -0
  1212. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/eval.hpp +112 -0
  1213. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/expand.cpp +822 -0
  1214. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/expand.hpp +78 -0
  1215. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/extend.cpp +2132 -0
  1216. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/extend.hpp +86 -0
  1217. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/file.cpp +522 -0
  1218. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/file.hpp +133 -0
  1219. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/fn_colors.cpp +594 -0
  1220. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/fn_colors.hpp +85 -0
  1221. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/fn_lists.cpp +284 -0
  1222. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/fn_lists.hpp +34 -0
  1223. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/fn_maps.cpp +94 -0
  1224. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/fn_maps.hpp +30 -0
  1225. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/fn_miscs.cpp +256 -0
  1226. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/fn_miscs.hpp +40 -0
  1227. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/fn_numbers.cpp +220 -0
  1228. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/fn_numbers.hpp +45 -0
  1229. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/fn_selectors.cpp +235 -0
  1230. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/fn_selectors.hpp +35 -0
  1231. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/fn_strings.cpp +254 -0
  1232. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/fn_strings.hpp +34 -0
  1233. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/fn_utils.cpp +156 -0
  1234. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/fn_utils.hpp +56 -0
  1235. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/inspect.cpp +1087 -0
  1236. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/inspect.hpp +99 -0
  1237. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/json.cpp +1436 -0
  1238. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/json.hpp +117 -0
  1239. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/kwd_arg_macros.hpp +28 -0
  1240. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/lexer.cpp +184 -0
  1241. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/lexer.hpp +315 -0
  1242. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/listize.cpp +84 -0
  1243. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/listize.hpp +38 -0
  1244. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/mapping.hpp +18 -0
  1245. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/memory/SharedPtr.cpp +33 -0
  1246. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/memory/SharedPtr.hpp +286 -0
  1247. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/node.cpp +322 -0
  1248. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/node.hpp +118 -0
  1249. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/operation.hpp +213 -0
  1250. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/operators.cpp +266 -0
  1251. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/operators.hpp +30 -0
  1252. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/output.cpp +339 -0
  1253. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/output.hpp +47 -0
  1254. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/parser.cpp +3153 -0
  1255. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/parser.hpp +402 -0
  1256. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/paths.hpp +71 -0
  1257. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/plugins.cpp +188 -0
  1258. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/plugins.hpp +57 -0
  1259. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/position.cpp +184 -0
  1260. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/position.hpp +124 -0
  1261. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/prelexer.cpp +1780 -0
  1262. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/prelexer.hpp +484 -0
  1263. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/remove_placeholders.cpp +87 -0
  1264. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/remove_placeholders.hpp +34 -0
  1265. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/sass.cpp +155 -0
  1266. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/sass.hpp +142 -0
  1267. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/sass2scss.cpp +895 -0
  1268. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/sass_context.cpp +772 -0
  1269. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/sass_context.hpp +129 -0
  1270. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/sass_functions.cpp +210 -0
  1271. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/sass_functions.hpp +50 -0
  1272. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/sass_util.cpp +152 -0
  1273. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/sass_util.hpp +256 -0
  1274. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/sass_values.cpp +365 -0
  1275. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/sass_values.hpp +82 -0
  1276. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/source_map.cpp +198 -0
  1277. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/source_map.hpp +62 -0
  1278. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/subset_map.cpp +58 -0
  1279. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/subset_map.hpp +76 -0
  1280. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/to_value.cpp +114 -0
  1281. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/to_value.hpp +46 -0
  1282. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/units.cpp +505 -0
  1283. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/units.hpp +110 -0
  1284. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/utf8.h +34 -0
  1285. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/utf8/checked.h +336 -0
  1286. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/utf8/core.h +332 -0
  1287. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/utf8/unchecked.h +235 -0
  1288. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/utf8_string.cpp +105 -0
  1289. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/utf8_string.hpp +37 -0
  1290. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/util.cpp +725 -0
  1291. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/util.hpp +106 -0
  1292. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/util_string.cpp +75 -0
  1293. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/util_string.hpp +19 -0
  1294. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/values.cpp +140 -0
  1295. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/libsass/src/values.hpp +12 -0
  1296. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/listize.o +0 -0
  1297. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/node.o +0 -0
  1298. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/operators.o +0 -0
  1299. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/output.o +0 -0
  1300. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/parser.o +0 -0
  1301. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/plugins.o +0 -0
  1302. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/position.o +0 -0
  1303. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/prelexer.o +0 -0
  1304. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/remove_placeholders.o +0 -0
  1305. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/sass.o +0 -0
  1306. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/sass2scss.o +0 -0
  1307. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/sass_context.o +0 -0
  1308. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/sass_functions.o +0 -0
  1309. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/sass_util.o +0 -0
  1310. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/sass_values.o +0 -0
  1311. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/source_map.o +0 -0
  1312. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/subset_map.o +0 -0
  1313. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/to_value.o +0 -0
  1314. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/units.o +0 -0
  1315. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/utf8_string.o +0 -0
  1316. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/util.o +0 -0
  1317. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/util_string.o +0 -0
  1318. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/ext/values.o +0 -0
  1319. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/lib/sassc.rb +57 -0
  1320. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/lib/sassc/dependency.rb +17 -0
  1321. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/lib/sassc/engine.rb +139 -0
  1322. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/lib/sassc/error.rb +37 -0
  1323. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/lib/sassc/functions_handler.rb +73 -0
  1324. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/lib/sassc/import_handler.rb +50 -0
  1325. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/lib/sassc/importer.rb +31 -0
  1326. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/lib/sassc/libsass.so +0 -0
  1327. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/lib/sassc/native.rb +66 -0
  1328. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/lib/sassc/native/lib_c.rb +21 -0
  1329. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/lib/sassc/native/native_context_api.rb +147 -0
  1330. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/lib/sassc/native/native_functions_api.rb +159 -0
  1331. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/lib/sassc/native/sass2scss_api.rb +10 -0
  1332. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/lib/sassc/native/sass_input_style.rb +13 -0
  1333. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/lib/sassc/native/sass_output_style.rb +12 -0
  1334. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/lib/sassc/native/sass_value.rb +97 -0
  1335. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/lib/sassc/native/string_list.rb +10 -0
  1336. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/lib/sassc/sass_2_scss.rb +9 -0
  1337. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/lib/sassc/script.rb +17 -0
  1338. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/lib/sassc/script/functions.rb +8 -0
  1339. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/lib/sassc/script/value.rb +137 -0
  1340. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/lib/sassc/script/value/bool.rb +32 -0
  1341. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/lib/sassc/script/value/color.rb +95 -0
  1342. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/lib/sassc/script/value/list.rb +136 -0
  1343. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/lib/sassc/script/value/map.rb +69 -0
  1344. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/lib/sassc/script/value/number.rb +389 -0
  1345. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/lib/sassc/script/value/string.rb +96 -0
  1346. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/lib/sassc/script/value_conversion.rb +69 -0
  1347. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/lib/sassc/script/value_conversion/base.rb +13 -0
  1348. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/lib/sassc/script/value_conversion/bool.rb +13 -0
  1349. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/lib/sassc/script/value_conversion/color.rb +18 -0
  1350. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/lib/sassc/script/value_conversion/list.rb +25 -0
  1351. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/lib/sassc/script/value_conversion/map.rb +21 -0
  1352. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/lib/sassc/script/value_conversion/number.rb +13 -0
  1353. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/lib/sassc/script/value_conversion/string.rb +17 -0
  1354. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/lib/sassc/util.rb +231 -0
  1355. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/lib/sassc/util/normalized_map.rb +117 -0
  1356. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/lib/sassc/version.rb +5 -0
  1357. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/sassc.gemspec +69 -0
  1358. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/test/custom_importer_test.rb +127 -0
  1359. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/test/engine_test.rb +314 -0
  1360. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/test/error_test.rb +29 -0
  1361. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/test/fixtures/paths.scss +10 -0
  1362. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/test/functions_test.rb +323 -0
  1363. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/test/native_test.rb +213 -0
  1364. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/test/output_style_test.rb +107 -0
  1365. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/test/sass_2_scss_test.rb +14 -0
  1366. data/vendor/ruby/2.6.0/gems/sassc-2.2.1/test/test_helper.rb +45 -0
  1367. data/vendor/ruby/2.6.0/gems/tilt-2.0.10/COPYING +18 -0
  1368. data/vendor/ruby/2.6.0/gems/tilt-2.0.10/bin/tilt +122 -0
  1369. data/vendor/ruby/2.6.0/gems/tilt-2.0.10/lib/tilt.rb +166 -0
  1370. data/vendor/ruby/2.6.0/gems/tilt-2.0.10/lib/tilt/asciidoc.rb +27 -0
  1371. data/vendor/ruby/2.6.0/gems/tilt-2.0.10/lib/tilt/babel.rb +16 -0
  1372. data/vendor/ruby/2.6.0/gems/tilt-2.0.10/lib/tilt/bluecloth.rb +24 -0
  1373. data/vendor/ruby/2.6.0/gems/tilt-2.0.10/lib/tilt/builder.rb +37 -0
  1374. data/vendor/ruby/2.6.0/gems/tilt-2.0.10/lib/tilt/coffee.rb +58 -0
  1375. data/vendor/ruby/2.6.0/gems/tilt-2.0.10/lib/tilt/commonmarker.rb +78 -0
  1376. data/vendor/ruby/2.6.0/gems/tilt-2.0.10/lib/tilt/creole.rb +25 -0
  1377. data/vendor/ruby/2.6.0/gems/tilt-2.0.10/lib/tilt/csv.rb +65 -0
  1378. data/vendor/ruby/2.6.0/gems/tilt-2.0.10/lib/tilt/dummy.rb +3 -0
  1379. data/vendor/ruby/2.6.0/gems/tilt-2.0.10/lib/tilt/erb.rb +63 -0
  1380. data/vendor/ruby/2.6.0/gems/tilt-2.0.10/lib/tilt/erubi.rb +32 -0
  1381. data/vendor/ruby/2.6.0/gems/tilt-2.0.10/lib/tilt/erubis.rb +43 -0
  1382. data/vendor/ruby/2.6.0/gems/tilt-2.0.10/lib/tilt/etanni.rb +27 -0
  1383. data/vendor/ruby/2.6.0/gems/tilt-2.0.10/lib/tilt/haml.rb +86 -0
  1384. data/vendor/ruby/2.6.0/gems/tilt-2.0.10/lib/tilt/kramdown.rb +25 -0
  1385. data/vendor/ruby/2.6.0/gems/tilt-2.0.10/lib/tilt/less.rb +30 -0
  1386. data/vendor/ruby/2.6.0/gems/tilt-2.0.10/lib/tilt/liquid.rb +44 -0
  1387. data/vendor/ruby/2.6.0/gems/tilt-2.0.10/lib/tilt/livescript.rb +23 -0
  1388. data/vendor/ruby/2.6.0/gems/tilt-2.0.10/lib/tilt/mapping.rb +293 -0
  1389. data/vendor/ruby/2.6.0/gems/tilt-2.0.10/lib/tilt/markaby.rb +45 -0
  1390. data/vendor/ruby/2.6.0/gems/tilt-2.0.10/lib/tilt/maruku.rb +22 -0
  1391. data/vendor/ruby/2.6.0/gems/tilt-2.0.10/lib/tilt/nokogiri.rb +36 -0
  1392. data/vendor/ruby/2.6.0/gems/tilt-2.0.10/lib/tilt/pandoc.rb +49 -0
  1393. data/vendor/ruby/2.6.0/gems/tilt-2.0.10/lib/tilt/plain.rb +16 -0
  1394. data/vendor/ruby/2.6.0/gems/tilt-2.0.10/lib/tilt/prawn.rb +43 -0
  1395. data/vendor/ruby/2.6.0/gems/tilt-2.0.10/lib/tilt/radius.rb +48 -0
  1396. data/vendor/ruby/2.6.0/gems/tilt-2.0.10/lib/tilt/rdiscount.rb +39 -0
  1397. data/vendor/ruby/2.6.0/gems/tilt-2.0.10/lib/tilt/rdoc.rb +40 -0
  1398. data/vendor/ruby/2.6.0/gems/tilt-2.0.10/lib/tilt/redcarpet.rb +83 -0
  1399. data/vendor/ruby/2.6.0/gems/tilt-2.0.10/lib/tilt/redcloth.rb +23 -0
  1400. data/vendor/ruby/2.6.0/gems/tilt-2.0.10/lib/tilt/rst-pandoc.rb +18 -0
  1401. data/vendor/ruby/2.6.0/gems/tilt-2.0.10/lib/tilt/sass.rb +52 -0
  1402. data/vendor/ruby/2.6.0/gems/tilt-2.0.10/lib/tilt/sigil.rb +34 -0
  1403. data/vendor/ruby/2.6.0/gems/tilt-2.0.10/lib/tilt/string.rb +21 -0
  1404. data/vendor/ruby/2.6.0/gems/tilt-2.0.10/lib/tilt/template.rb +297 -0
  1405. data/vendor/ruby/2.6.0/gems/tilt-2.0.10/lib/tilt/typescript.rb +26 -0
  1406. data/vendor/ruby/2.6.0/gems/tilt-2.0.10/lib/tilt/wikicloth.rb +22 -0
  1407. data/vendor/ruby/2.6.0/gems/tilt-2.0.10/lib/tilt/yajl.rb +87 -0
  1408. data/vendor/ruby/2.6.0/specifications/autoprefixer-rails-9.6.4.gemspec +47 -0
  1409. data/vendor/ruby/2.6.0/specifications/erubi-1.9.0.gemspec +38 -0
  1410. data/vendor/ruby/2.6.0/specifications/i18n-1.7.0.gemspec +35 -0
  1411. data/vendor/ruby/2.6.0/specifications/loofah-2.3.0.gemspec +71 -0
  1412. data/vendor/ruby/2.6.0/specifications/minitest-5.12.2.gemspec +40 -0
  1413. data/vendor/ruby/2.6.0/specifications/parallel-1.18.0.gemspec +20 -0
  1414. data/vendor/ruby/2.6.0/specifications/parser-2.6.5.0.gemspec +62 -0
  1415. data/vendor/ruby/2.6.0/specifications/peek-1.1.0.gemspec +32 -0
  1416. data/vendor/ruby/2.6.0/specifications/rails-html-sanitizer-1.3.0.gemspec +44 -0
  1417. data/vendor/ruby/2.6.0/specifications/rspec-expectations-3.8.6.gemspec +48 -0
  1418. data/vendor/ruby/2.6.0/specifications/rspec-mocks-3.8.2.gemspec +51 -0
  1419. data/vendor/ruby/2.6.0/specifications/rspec-support-3.8.3.gemspec +39 -0
  1420. data/vendor/ruby/2.6.0/specifications/rubocop-0.75.0.gemspec +56 -0
  1421. data/vendor/ruby/2.6.0/specifications/sassc-2.2.1.gemspec +60 -0
  1422. data/vendor/ruby/2.6.0/specifications/tilt-2.0.10.gemspec +23 -0
  1423. metadata +1415 -2
@@ -0,0 +1,78 @@
1
+ #ifndef SASS_EXPAND_H
2
+ #define SASS_EXPAND_H
3
+
4
+ #include <vector>
5
+
6
+ #include "ast.hpp"
7
+ #include "eval.hpp"
8
+ #include "operation.hpp"
9
+ #include "environment.hpp"
10
+
11
+ namespace Sass {
12
+
13
+ class Listize;
14
+ class Context;
15
+ class Eval;
16
+ struct Backtrace;
17
+
18
+ class Expand : public Operation_CRTP<Statement*, Expand> {
19
+ public:
20
+
21
+ Env* environment();
22
+ Selector_List_Obj selector();
23
+
24
+ Context& ctx;
25
+ Backtraces& traces;
26
+ Eval eval;
27
+ size_t recursions;
28
+ bool in_keyframes;
29
+ bool at_root_without_rule;
30
+ bool old_at_root_without_rule;
31
+
32
+ // it's easier to work with vectors
33
+ EnvStack env_stack;
34
+ BlockStack block_stack;
35
+ CallStack call_stack;
36
+ SelectorStack selector_stack;
37
+ MediaStack media_stack;
38
+
39
+ Boolean_Obj bool_true;
40
+
41
+ private:
42
+ void expand_selector_list(Selector_Obj, Selector_List_Obj extender);
43
+
44
+ public:
45
+ Expand(Context&, Env*, SelectorStack* stack = NULL);
46
+ ~Expand() { }
47
+
48
+ Block* operator()(Block*);
49
+ Statement* operator()(Ruleset*);
50
+ Statement* operator()(Media_Block*);
51
+ Statement* operator()(Supports_Block*);
52
+ Statement* operator()(At_Root_Block*);
53
+ Statement* operator()(Directive*);
54
+ Statement* operator()(Declaration*);
55
+ Statement* operator()(Assignment*);
56
+ Statement* operator()(Import*);
57
+ Statement* operator()(Import_Stub*);
58
+ Statement* operator()(Warning*);
59
+ Statement* operator()(Error*);
60
+ Statement* operator()(Debug*);
61
+ Statement* operator()(Comment*);
62
+ Statement* operator()(If*);
63
+ Statement* operator()(For*);
64
+ Statement* operator()(Each*);
65
+ Statement* operator()(While*);
66
+ Statement* operator()(Return*);
67
+ Statement* operator()(Extension*);
68
+ Statement* operator()(Definition*);
69
+ Statement* operator()(Mixin_Call*);
70
+ Statement* operator()(Content*);
71
+
72
+ void append_block(Block*);
73
+
74
+ };
75
+
76
+ }
77
+
78
+ #endif
@@ -0,0 +1,2132 @@
1
+ // sass.hpp must go before all system headers to get the
2
+ // __EXTENSIONS__ fix on Solaris.
3
+ #include "sass.hpp"
4
+
5
+ #include "extend.hpp"
6
+ #include "context.hpp"
7
+ #include "backtrace.hpp"
8
+ #include "paths.hpp"
9
+ #include "parser.hpp"
10
+ #include "expand.hpp"
11
+ #include "node.hpp"
12
+ #include "sass_util.hpp"
13
+ #include "remove_placeholders.hpp"
14
+ #include "debug.hpp"
15
+ #include <iostream>
16
+ #include <deque>
17
+ #include <set>
18
+
19
+ /*
20
+ NOTES:
21
+
22
+ - The print* functions print to cerr. This allows our testing frameworks (like sass-spec) to ignore the output, which
23
+ is very helpful when debugging. The format of the output is mainly to wrap things in square brackets to match what
24
+ ruby already outputs (to make comparisons easier).
25
+
26
+ - For the direct porting effort, we're trying to port method-for-method until we get all the tests passing.
27
+ Where applicable, I've tried to include the ruby code above the function for reference until all our tests pass.
28
+ The ruby code isn't always directly portable, so I've tried to include any modified ruby code that was actually
29
+ used for the porting.
30
+
31
+ - DO NOT try to optimize yet. We get a tremendous benefit out of comparing the output of each stage of the extend to the ruby
32
+ output at the same stage. This makes it much easier to determine where problems are. Try to keep as close to
33
+ the ruby code as you can until we have all the sass-spec tests passing. Then, we should optimize. However, if you see
34
+ something that could probably be optimized, let's not forget it. Add a // TODO: or // IMPROVEMENT: comment.
35
+
36
+ - Coding conventions in this file (these may need to be changed before merging back into master)
37
+ - Very basic hungarian notation:
38
+ p prefix for pointers (pSelector)
39
+ no prefix for value types and references (selector)
40
+ - Use STL iterators where possible
41
+ - prefer verbose naming over terse naming
42
+ - use typedefs for STL container types for make maintenance easier
43
+
44
+ - You may see a lot of comments that say "// TODO: is this the correct combinator?". See the comment referring to combinators
45
+ in extendCompoundSelector for a more extensive explanation of my confusion. I think our divergence in data model from ruby
46
+ sass causes this to be necessary.
47
+
48
+
49
+ GLOBAL TODOS:
50
+
51
+ - wrap the contents of the print functions in DEBUG preprocesser conditionals so they will be optimized away in non-debug mode.
52
+
53
+ - consider making the extend* functions member functions to avoid passing around ctx and subset_map map around. This has the
54
+ drawback that the implementation details of the operator are then exposed to the outside world, which is not ideal and
55
+ can cause additional compile time dependencies.
56
+
57
+ - mark the helper methods in this file static to given them compilation unit linkage.
58
+
59
+ - implement parent directive matching
60
+
61
+ - fix compilation warnings for unused Extend members if we really don't need those references anymore.
62
+ */
63
+
64
+
65
+ namespace Sass {
66
+
67
+
68
+
69
+ #ifdef DEBUG
70
+
71
+ // TODO: move the ast specific ostream operators into ast.hpp/ast.cpp
72
+ std::ostream& operator<<(std::ostream& os, const Complex_Selector::Combinator combinator) {
73
+ switch (combinator) {
74
+ case Complex_Selector::ANCESTOR_OF: os << "\" \""; break;
75
+ case Complex_Selector::PARENT_OF: os << "\">\""; break;
76
+ case Complex_Selector::PRECEDES: os << "\"~\""; break;
77
+ case Complex_Selector::ADJACENT_TO: os << "\"+\""; break;
78
+ case Complex_Selector::REFERENCE: os << "\"/\""; break;
79
+ }
80
+
81
+ return os;
82
+ }
83
+
84
+
85
+ std::ostream& operator<<(std::ostream& os, Compound_Selector& compoundSelector) {
86
+ for (size_t i = 0, L = compoundSelector.length(); i < L; ++i) {
87
+ if (i > 0) os << ", ";
88
+ os << compoundSelector[i]->to_string();
89
+ }
90
+ return os;
91
+ }
92
+
93
+ std::ostream& operator<<(std::ostream& os, Simple_Selector& simpleSelector) {
94
+ os << simpleSelector.to_string();
95
+ return os;
96
+ }
97
+
98
+ // Print a string representation of a Compound_Selector
99
+ static void printSimpleSelector(Simple_Selector* pSimpleSelector, const char* message=NULL, bool newline=true) {
100
+
101
+ if (message) {
102
+ std::cerr << message;
103
+ }
104
+
105
+ if (pSimpleSelector) {
106
+ std::cerr << "[" << *pSimpleSelector << "]";
107
+ } else {
108
+ std::cerr << "NULL";
109
+ }
110
+
111
+ if (newline) {
112
+ std::cerr << std::endl;
113
+ }
114
+ }
115
+
116
+ // Print a string representation of a Compound_Selector
117
+ static void printCompoundSelector(Compound_Selector* pCompoundSelector, const char* message=NULL, bool newline=true) {
118
+
119
+ if (message) {
120
+ std::cerr << message;
121
+ }
122
+
123
+ if (pCompoundSelector) {
124
+ std::cerr << "[" << *pCompoundSelector << "]";
125
+ } else {
126
+ std::cerr << "NULL";
127
+ }
128
+
129
+ if (newline) {
130
+ std::cerr << std::endl;
131
+ }
132
+ }
133
+
134
+
135
+ std::ostream& operator<<(std::ostream& os, Complex_Selector& complexSelector) {
136
+
137
+ os << "[";
138
+ Complex_Selector* pIter = &complexSelector;
139
+ bool first = true;
140
+ while (pIter) {
141
+ if (pIter->combinator() != Complex_Selector::ANCESTOR_OF) {
142
+ if (!first) {
143
+ os << ", ";
144
+ }
145
+ first = false;
146
+ os << pIter->combinator();
147
+ }
148
+
149
+ if (!first) {
150
+ os << ", ";
151
+ }
152
+ first = false;
153
+
154
+ if (pIter->head()) {
155
+ os << pIter->head()->to_string();
156
+ } else {
157
+ os << "NULL_HEAD";
158
+ }
159
+
160
+ pIter = pIter->tail();
161
+ }
162
+ os << "]";
163
+
164
+ return os;
165
+ }
166
+
167
+
168
+ // Print a string representation of a Complex_Selector
169
+ static void printComplexSelector(Complex_Selector* pComplexSelector, const char* message=NULL, bool newline=true) {
170
+
171
+ if (message) {
172
+ std::cerr << message;
173
+ }
174
+
175
+ if (pComplexSelector) {
176
+ std::cerr << *pComplexSelector;
177
+ } else {
178
+ std::cerr << "NULL";
179
+ }
180
+
181
+ if (newline) {
182
+ std::cerr << std::endl;
183
+ }
184
+ }
185
+
186
+ static void printSelsNewSeqPairCollection(SubSetMapLookups& collection, const char* message=NULL, bool newline=true) {
187
+
188
+ if (message) {
189
+ std::cerr << message;
190
+ }
191
+ bool first = true;
192
+ std::cerr << "[";
193
+ for(SubSetMapLookup& pair : collection) {
194
+ if (first) {
195
+ first = false;
196
+ } else {
197
+ std::cerr << ", ";
198
+ }
199
+ std::cerr << "[";
200
+ Compound_Selector* pSels = pair.first;
201
+ Complex_Selector* pNewSelector = pair.second;
202
+ std::cerr << "[" << *pSels << "], ";
203
+ printComplexSelector(pNewSelector, NULL, false);
204
+ }
205
+ std::cerr << "]";
206
+
207
+ if (newline) {
208
+ std::cerr << std::endl;
209
+ }
210
+ }
211
+
212
+ // Print a string representation of a ComplexSelectorSet
213
+ static void printSourcesSet(ComplexSelectorSet& sources, const char* message=NULL, bool newline=true) {
214
+
215
+ if (message) {
216
+ std::cerr << message;
217
+ }
218
+
219
+ // Convert to a deque of strings so we can sort since order doesn't matter in a set. This should cut down on
220
+ // the differences we see when debug printing.
221
+ typedef std::deque<std::string> SourceStrings;
222
+ SourceStrings sourceStrings;
223
+ for (ComplexSelectorSet::iterator iterator = sources.begin(), iteratorEnd = sources.end(); iterator != iteratorEnd; ++iterator) {
224
+ Complex_Selector* pSource = *iterator;
225
+ std::stringstream sstream;
226
+ sstream << complexSelectorToNode(pSource);
227
+ sourceStrings.push_back(sstream.str());
228
+ }
229
+
230
+ // Sort to get consistent output
231
+ std::sort(sourceStrings.begin(), sourceStrings.end());
232
+
233
+ std::cerr << "ComplexSelectorSet[";
234
+ for (SourceStrings::iterator iterator = sourceStrings.begin(), iteratorEnd = sourceStrings.end(); iterator != iteratorEnd; ++iterator) {
235
+ std::string source = *iterator;
236
+ if (iterator != sourceStrings.begin()) {
237
+ std::cerr << ", ";
238
+ }
239
+ std::cerr << source;
240
+ }
241
+ std::cerr << "]";
242
+
243
+ if (newline) {
244
+ std::cerr << std::endl;
245
+ }
246
+ }
247
+
248
+
249
+ std::ostream& operator<<(std::ostream& os, SubSetMapPairs& entries) {
250
+ os << "SUBSET_MAP_ENTRIES[";
251
+
252
+ for (SubSetMapPairs::iterator iterator = entries.begin(), endIterator = entries.end(); iterator != endIterator; ++iterator) {
253
+ Complex_Selector_Obj pExtComplexSelector = iterator->first; // The selector up to where the @extend is (ie, the thing to merge)
254
+ Compound_Selector_Obj pExtCompoundSelector = iterator->second; // The stuff after the @extend
255
+
256
+ if (iterator != entries.begin()) {
257
+ os << ", ";
258
+ }
259
+
260
+ os << "(";
261
+
262
+ if (pExtComplexSelector) {
263
+ std::cerr << *pExtComplexSelector;
264
+ } else {
265
+ std::cerr << "NULL";
266
+ }
267
+
268
+ os << " -> ";
269
+
270
+ if (pExtCompoundSelector) {
271
+ std::cerr << *pExtCompoundSelector;
272
+ } else {
273
+ std::cerr << "NULL";
274
+ }
275
+
276
+ os << ")";
277
+
278
+ }
279
+
280
+ os << "]";
281
+
282
+ return os;
283
+ }
284
+ #endif
285
+
286
+ static bool parentSuperselector(Complex_Selector* pOne, Complex_Selector* pTwo) {
287
+ // TODO: figure out a better way to create a Complex_Selector from scratch
288
+ // TODO: There's got to be a better way. This got ugly quick...
289
+ Type_Selector_Obj fakeParent = SASS_MEMORY_NEW(Type_Selector, ParserState("[FAKE]"), "temp");
290
+ Compound_Selector_Obj fakeHead = SASS_MEMORY_NEW(Compound_Selector, ParserState("[FAKE]"), 1 /*size*/);
291
+ fakeHead->elements().push_back(fakeParent);
292
+ Complex_Selector_Obj fakeParentContainer = SASS_MEMORY_NEW(Complex_Selector, ParserState("[FAKE]"), Complex_Selector::ANCESTOR_OF, fakeHead /*head*/, {} /*tail*/);
293
+
294
+ pOne->set_innermost(fakeParentContainer, Complex_Selector::ANCESTOR_OF);
295
+ pTwo->set_innermost(fakeParentContainer, Complex_Selector::ANCESTOR_OF);
296
+
297
+ bool isSuperselector = pOne->is_superselector_of(pTwo);
298
+
299
+ pOne->clear_innermost();
300
+ pTwo->clear_innermost();
301
+
302
+ return isSuperselector;
303
+ }
304
+
305
+ void nodeToComplexSelectorDeque(const Node& node, ComplexSelectorDeque& out) {
306
+ for (NodeDeque::iterator iter = node.collection()->begin(), iterEnd = node.collection()->end(); iter != iterEnd; iter++) {
307
+ Node& child = *iter;
308
+ out.push_back(nodeToComplexSelector(child));
309
+ }
310
+ }
311
+
312
+ Node complexSelectorDequeToNode(const ComplexSelectorDeque& deque) {
313
+ Node result = Node::createCollection();
314
+
315
+ for (ComplexSelectorDeque::const_iterator iter = deque.begin(), iterEnd = deque.end(); iter != iterEnd; iter++) {
316
+ Complex_Selector_Obj pChild = *iter;
317
+ result.collection()->push_back(complexSelectorToNode(pChild));
318
+ }
319
+
320
+ return result;
321
+ }
322
+
323
+ class LcsCollectionComparator {
324
+ public:
325
+ LcsCollectionComparator() {}
326
+
327
+ bool operator()(Complex_Selector_Obj pOne, Complex_Selector_Obj pTwo, Complex_Selector_Obj& pOut) const {
328
+ /*
329
+ This code is based on the following block from ruby sass' subweave
330
+ do |s1, s2|
331
+ next s1 if s1 == s2
332
+ next unless s1.first.is_a?(SimpleSequence) && s2.first.is_a?(SimpleSequence)
333
+ next s2 if parent_superselector?(s1, s2)
334
+ next s1 if parent_superselector?(s2, s1)
335
+ end
336
+ */
337
+
338
+ if (*pOne == *pTwo) {
339
+ pOut = pOne;
340
+ return true;
341
+ }
342
+
343
+ if (pOne->combinator() != Complex_Selector::ANCESTOR_OF || pTwo->combinator() != Complex_Selector::ANCESTOR_OF) {
344
+ return false;
345
+ }
346
+
347
+ if (parentSuperselector(pOne, pTwo)) {
348
+ pOut = pTwo;
349
+ return true;
350
+ }
351
+
352
+ if (parentSuperselector(pTwo, pOne)) {
353
+ pOut = pOne;
354
+ return true;
355
+ }
356
+
357
+ return false;
358
+ }
359
+ };
360
+
361
+
362
+ /*
363
+ This is the equivalent of ruby's Sass::Util.lcs_backtrace.
364
+
365
+ # Computes a single longest common subsequence for arrays x and y.
366
+ # Algorithm from http://en.wikipedia.org/wiki/Longest_common_subsequence_problem#Reading_out_an_LCS
367
+ */
368
+ void lcs_backtrace(const LCSTable& c, ComplexSelectorDeque& x, ComplexSelectorDeque& y, int i, int j, const LcsCollectionComparator& comparator, ComplexSelectorDeque& out) {
369
+ //DEBUG_PRINTLN(LCS, "LCSBACK: X=" << x << " Y=" << y << " I=" << i << " J=" << j)
370
+ // TODO: make printComplexSelectorDeque and use DEBUG_EXEC AND DEBUG_PRINTLN HERE to get equivalent output
371
+
372
+ if (i == 0 || j == 0) {
373
+ DEBUG_PRINTLN(LCS, "RETURNING EMPTY")
374
+ return;
375
+ }
376
+
377
+
378
+ Complex_Selector_Obj pCompareOut;
379
+ if (comparator(x[i], y[j], pCompareOut)) {
380
+ DEBUG_PRINTLN(LCS, "RETURNING AFTER ELEM COMPARE")
381
+ lcs_backtrace(c, x, y, i - 1, j - 1, comparator, out);
382
+ out.push_back(pCompareOut);
383
+ return;
384
+ }
385
+
386
+ if (c[i][j - 1] > c[i - 1][j]) {
387
+ DEBUG_PRINTLN(LCS, "RETURNING AFTER TABLE COMPARE")
388
+ lcs_backtrace(c, x, y, i, j - 1, comparator, out);
389
+ return;
390
+ }
391
+
392
+ DEBUG_PRINTLN(LCS, "FINAL RETURN")
393
+ lcs_backtrace(c, x, y, i - 1, j, comparator, out);
394
+ return;
395
+ }
396
+
397
+ /*
398
+ This is the equivalent of ruby's Sass::Util.lcs_table.
399
+
400
+ # Calculates the memoization table for the Least Common Subsequence algorithm.
401
+ # Algorithm from http://en.wikipedia.org/wiki/Longest_common_subsequence_problem#Computing_the_length_of_the_LCS
402
+ */
403
+ void lcs_table(const ComplexSelectorDeque& x, const ComplexSelectorDeque& y, const LcsCollectionComparator& comparator, LCSTable& out) {
404
+ //DEBUG_PRINTLN(LCS, "LCSTABLE: X=" << x << " Y=" << y)
405
+ // TODO: make printComplexSelectorDeque and use DEBUG_EXEC AND DEBUG_PRINTLN HERE to get equivalent output
406
+
407
+ LCSTable c(x.size(), std::vector<int>(y.size()));
408
+
409
+ // These shouldn't be necessary since the vector will be initialized to 0 already.
410
+ // x.size.times {|i| c[i][0] = 0}
411
+ // y.size.times {|j| c[0][j] = 0}
412
+
413
+ for (size_t i = 1; i < x.size(); i++) {
414
+ for (size_t j = 1; j < y.size(); j++) {
415
+ Complex_Selector_Obj pCompareOut;
416
+
417
+ if (comparator(x[i], y[j], pCompareOut)) {
418
+ c[i][j] = c[i - 1][j - 1] + 1;
419
+ } else {
420
+ c[i][j] = std::max(c[i][j - 1], c[i - 1][j]);
421
+ }
422
+ }
423
+ }
424
+
425
+ out = c;
426
+ }
427
+
428
+ /*
429
+ This is the equivalent of ruby's Sass::Util.lcs.
430
+
431
+ # Computes a single longest common subsequence for `x` and `y`.
432
+ # If there are more than one longest common subsequences,
433
+ # the one returned is that which starts first in `x`.
434
+
435
+ # @param x [NodeCollection]
436
+ # @param y [NodeCollection]
437
+ # @comparator An equality check between elements of `x` and `y`.
438
+ # @return [NodeCollection] The LCS
439
+
440
+ http://en.wikipedia.org/wiki/Longest_common_subsequence_problem
441
+ */
442
+ void lcs(ComplexSelectorDeque& x, ComplexSelectorDeque& y, const LcsCollectionComparator& comparator, ComplexSelectorDeque& out) {
443
+ //DEBUG_PRINTLN(LCS, "LCS: X=" << x << " Y=" << y)
444
+ // TODO: make printComplexSelectorDeque and use DEBUG_EXEC AND DEBUG_PRINTLN HERE to get equivalent output
445
+
446
+ x.push_front({});
447
+ y.push_front({});
448
+
449
+ LCSTable table;
450
+ lcs_table(x, y, comparator, table);
451
+
452
+ return lcs_backtrace(table, x, y, static_cast<int>(x.size()) - 1, static_cast<int>(y.size()) - 1, comparator, out);
453
+ }
454
+
455
+
456
+ /*
457
+ This is the equivalent of ruby's Sequence.trim.
458
+
459
+ The following is the modified version of the ruby code that was more portable to C++. You
460
+ should be able to drop it into ruby 3.2.19 and get the same results from ruby sass.
461
+
462
+ # Avoid truly horrific quadratic behavior. TODO: I think there
463
+ # may be a way to get perfect trimming without going quadratic.
464
+ return seqses if seqses.size > 100
465
+
466
+ # Keep the results in a separate array so we can be sure we aren't
467
+ # comparing against an already-trimmed selector. This ensures that two
468
+ # identical selectors don't mutually trim one another.
469
+ result = seqses.dup
470
+
471
+ # This is n^2 on the sequences, but only comparing between
472
+ # separate sequences should limit the quadratic behavior.
473
+ seqses.each_with_index do |seqs1, i|
474
+ tempResult = []
475
+
476
+ for seq1 in seqs1 do
477
+ max_spec = 0
478
+ for seq in _sources(seq1) do
479
+ max_spec = [max_spec, seq.specificity].max
480
+ end
481
+
482
+
483
+ isMoreSpecificOuter = false
484
+ for seqs2 in result do
485
+ if seqs1.equal?(seqs2) then
486
+ next
487
+ end
488
+
489
+ # Second Law of Extend: the specificity of a generated selector
490
+ # should never be less than the specificity of the extending
491
+ # selector.
492
+ #
493
+ # See https://github.com/nex3/sass/issues/324.
494
+ isMoreSpecificInner = false
495
+ for seq2 in seqs2 do
496
+ isMoreSpecificInner = _specificity(seq2) >= max_spec && _superselector?(seq2, seq1)
497
+ if isMoreSpecificInner then
498
+ break
499
+ end
500
+ end
501
+
502
+ if isMoreSpecificInner then
503
+ isMoreSpecificOuter = true
504
+ break
505
+ end
506
+ end
507
+
508
+ if !isMoreSpecificOuter then
509
+ tempResult.push(seq1)
510
+ end
511
+ end
512
+
513
+ result[i] = tempResult
514
+
515
+ end
516
+
517
+ result
518
+ */
519
+ /*
520
+ - IMPROVEMENT: We could probably work directly in the output trimmed deque.
521
+ */
522
+ Node Extend::trim(Node& seqses, bool isReplace) {
523
+ // See the comments in the above ruby code before embarking on understanding this function.
524
+
525
+ // Avoid poor performance in extreme cases.
526
+ if (seqses.collection()->size() > 100) {
527
+ return seqses;
528
+ }
529
+
530
+
531
+ DEBUG_PRINTLN(TRIM, "TRIM: " << seqses)
532
+
533
+
534
+ Node result = Node::createCollection();
535
+ result.plus(seqses);
536
+
537
+ DEBUG_PRINTLN(TRIM, "RESULT INITIAL: " << result)
538
+
539
+ // Normally we use the standard STL iterators, but in this case, we need to access the result collection by index since we're
540
+ // iterating the input collection, computing a value, and then setting the result in the output collection. We have to keep track
541
+ // of the index manually.
542
+ int toTrimIndex = 0;
543
+
544
+ for (NodeDeque::iterator seqsesIter = seqses.collection()->begin(), seqsesIterEnd = seqses.collection()->end(); seqsesIter != seqsesIterEnd; ++seqsesIter) {
545
+ Node& seqs1 = *seqsesIter;
546
+
547
+ DEBUG_PRINTLN(TRIM, "SEQS1: " << seqs1 << " " << toTrimIndex)
548
+
549
+ Node tempResult = Node::createCollection();
550
+ tempResult.got_line_feed = seqs1.got_line_feed;
551
+
552
+ for (NodeDeque::iterator seqs1Iter = seqs1.collection()->begin(), seqs1EndIter = seqs1.collection()->end(); seqs1Iter != seqs1EndIter; ++seqs1Iter) {
553
+ Node& seq1 = *seqs1Iter;
554
+
555
+ Complex_Selector_Obj pSeq1 = nodeToComplexSelector(seq1);
556
+
557
+ // Compute the maximum specificity. This requires looking at the "sources" of the sequence. See SimpleSequence.sources in the ruby code
558
+ // for a good description of sources.
559
+ //
560
+ // TODO: I'm pretty sure there's a bug in the sources code. It was implemented for sass-spec's 182_test_nested_extend_loop test.
561
+ // While the test passes, I compared the state of each trim call to verify correctness. The last trim call had incorrect sources. We
562
+ // had an extra source that the ruby version did not have. Without a failing test case, this is going to be extra hard to find. My
563
+ // best guess at this point is that we're cloning an object somewhere and maintaining the sources when we shouldn't be. This is purely
564
+ // a guess though.
565
+ unsigned long maxSpecificity = isReplace ? pSeq1->specificity() : 0;
566
+ ComplexSelectorSet sources = pSeq1->sources();
567
+
568
+ DEBUG_PRINTLN(TRIM, "TRIM SEQ1: " << seq1)
569
+ DEBUG_EXEC(TRIM, printSourcesSet(sources, "TRIM SOURCES: "))
570
+
571
+ for (ComplexSelectorSet::iterator sourcesSetIterator = sources.begin(), sourcesSetIteratorEnd = sources.end(); sourcesSetIterator != sourcesSetIteratorEnd; ++sourcesSetIterator) {
572
+ const Complex_Selector_Obj& pCurrentSelector = *sourcesSetIterator;
573
+ maxSpecificity = std::max(maxSpecificity, pCurrentSelector->specificity());
574
+ }
575
+
576
+ DEBUG_PRINTLN(TRIM, "MAX SPECIFICITY: " << maxSpecificity)
577
+
578
+ bool isMoreSpecificOuter = false;
579
+
580
+ int resultIndex = 0;
581
+
582
+ for (NodeDeque::iterator resultIter = result.collection()->begin(), resultIterEnd = result.collection()->end(); resultIter != resultIterEnd; ++resultIter) {
583
+ Node& seqs2 = *resultIter;
584
+
585
+ DEBUG_PRINTLN(TRIM, "SEQS1: " << seqs1)
586
+ DEBUG_PRINTLN(TRIM, "SEQS2: " << seqs2)
587
+
588
+ // Do not compare the same sequence to itself. The ruby call we're trying to
589
+ // emulate is: seqs1.equal?(seqs2). equal? is an object comparison, not an equivalency comparision.
590
+ // Since we have the same pointers in seqes and results, we can do a pointer comparision. seqs1 is
591
+ // derived from seqses and seqs2 is derived from result.
592
+ if (seqs1.collection() == seqs2.collection()) {
593
+ DEBUG_PRINTLN(TRIM, "CONTINUE")
594
+ continue;
595
+ }
596
+
597
+ bool isMoreSpecificInner = false;
598
+
599
+ for (NodeDeque::iterator seqs2Iter = seqs2.collection()->begin(), seqs2IterEnd = seqs2.collection()->end(); seqs2Iter != seqs2IterEnd; ++seqs2Iter) {
600
+ Node& seq2 = *seqs2Iter;
601
+
602
+ Complex_Selector_Obj pSeq2 = nodeToComplexSelector(seq2);
603
+
604
+ DEBUG_PRINTLN(TRIM, "SEQ2 SPEC: " << pSeq2->specificity())
605
+ DEBUG_PRINTLN(TRIM, "IS SPEC: " << pSeq2->specificity() << " >= " << maxSpecificity << " " << (pSeq2->specificity() >= maxSpecificity ? "true" : "false"))
606
+ DEBUG_PRINTLN(TRIM, "IS SUPER: " << (pSeq2->is_superselector_of(pSeq1) ? "true" : "false"))
607
+
608
+ isMoreSpecificInner = pSeq2->specificity() >= maxSpecificity && pSeq2->is_superselector_of(pSeq1);
609
+
610
+ if (isMoreSpecificInner) {
611
+ DEBUG_PRINTLN(TRIM, "FOUND MORE SPECIFIC")
612
+ break;
613
+ }
614
+ }
615
+
616
+ // If we found something more specific, we're done. Let the outer loop know and stop iterating.
617
+ if (isMoreSpecificInner) {
618
+ isMoreSpecificOuter = true;
619
+ break;
620
+ }
621
+
622
+ resultIndex++;
623
+ }
624
+
625
+ if (!isMoreSpecificOuter) {
626
+ DEBUG_PRINTLN(TRIM, "PUSHING: " << seq1)
627
+ tempResult.collection()->push_back(seq1);
628
+ }
629
+
630
+ }
631
+
632
+ DEBUG_PRINTLN(TRIM, "RESULT BEFORE ASSIGN: " << result)
633
+ DEBUG_PRINTLN(TRIM, "TEMP RESULT: " << toTrimIndex << " " << tempResult)
634
+ (*result.collection())[toTrimIndex] = tempResult;
635
+
636
+ toTrimIndex++;
637
+
638
+ DEBUG_PRINTLN(TRIM, "RESULT: " << result)
639
+ }
640
+
641
+ return result;
642
+ }
643
+
644
+
645
+
646
+ static bool parentSuperselector(const Node& one, const Node& two) {
647
+ // TODO: figure out a better way to create a Complex_Selector from scratch
648
+ // TODO: There's got to be a better way. This got ugly quick...
649
+ Type_Selector_Obj fakeParent = SASS_MEMORY_NEW(Type_Selector, ParserState("[FAKE]"), "temp");
650
+ Compound_Selector_Obj fakeHead = SASS_MEMORY_NEW(Compound_Selector, ParserState("[FAKE]"), 1 /*size*/);
651
+ fakeHead->elements().push_back(fakeParent);
652
+ Complex_Selector_Obj fakeParentContainer = SASS_MEMORY_NEW(Complex_Selector, ParserState("[FAKE]"), Complex_Selector::ANCESTOR_OF, fakeHead /*head*/, {} /*tail*/);
653
+
654
+ Complex_Selector_Obj pOneWithFakeParent = nodeToComplexSelector(one);
655
+ pOneWithFakeParent->set_innermost(fakeParentContainer, Complex_Selector::ANCESTOR_OF);
656
+ Complex_Selector_Obj pTwoWithFakeParent = nodeToComplexSelector(two);
657
+ pTwoWithFakeParent->set_innermost(fakeParentContainer, Complex_Selector::ANCESTOR_OF);
658
+
659
+ return pOneWithFakeParent->is_superselector_of(pTwoWithFakeParent);
660
+ }
661
+
662
+
663
+ class ParentSuperselectorChunker {
664
+ public:
665
+ ParentSuperselectorChunker(Node& lcs) : mLcs(lcs) {}
666
+ Node& mLcs;
667
+
668
+ bool operator()(const Node& seq) const {
669
+ // {|s| parent_superselector?(s.first, lcs.first)}
670
+ if (seq.collection()->size() == 0) return false;
671
+ return parentSuperselector(seq.collection()->front(), mLcs.collection()->front());
672
+ }
673
+ };
674
+
675
+ class SubweaveEmptyChunker {
676
+ public:
677
+ bool operator()(const Node& seq) const {
678
+ // {|s| s.empty?}
679
+
680
+ return seq.collection()->empty();
681
+ }
682
+ };
683
+
684
+ /*
685
+ # Takes initial subsequences of `seq1` and `seq2` and returns all
686
+ # orderings of those subsequences. The initial subsequences are determined
687
+ # by a block.
688
+ #
689
+ # Destructively removes the initial subsequences of `seq1` and `seq2`.
690
+ #
691
+ # For example, given `(A B C | D E)` and `(1 2 | 3 4 5)` (with `|`
692
+ # denoting the boundary of the initial subsequence), this would return
693
+ # `[(A B C 1 2), (1 2 A B C)]`. The sequences would then be `(D E)` and
694
+ # `(3 4 5)`.
695
+ #
696
+ # @param seq1 [Array]
697
+ # @param seq2 [Array]
698
+ # @yield [a] Used to determine when to cut off the initial subsequences.
699
+ # Called repeatedly for each sequence until it returns true.
700
+ # @yieldparam a [Array] A final subsequence of one input sequence after
701
+ # cutting off some initial subsequence.
702
+ # @yieldreturn [Boolean] Whether or not to cut off the initial subsequence
703
+ # here.
704
+ # @return [Array<Array>] All possible orderings of the initial subsequences.
705
+ def chunks(seq1, seq2)
706
+ chunk1 = []
707
+ chunk1 << seq1.shift until yield seq1
708
+ chunk2 = []
709
+ chunk2 << seq2.shift until yield seq2
710
+ return [] if chunk1.empty? && chunk2.empty?
711
+ return [chunk2] if chunk1.empty?
712
+ return [chunk1] if chunk2.empty?
713
+ [chunk1 + chunk2, chunk2 + chunk1]
714
+ end
715
+ */
716
+ template<typename ChunkerType>
717
+ static Node chunks(Node& seq1, Node& seq2, const ChunkerType& chunker) {
718
+ Node chunk1 = Node::createCollection();
719
+ while (seq1.collection()->size() && !chunker(seq1)) {
720
+ chunk1.collection()->push_back(seq1.collection()->front());
721
+ seq1.collection()->pop_front();
722
+ }
723
+
724
+ Node chunk2 = Node::createCollection();
725
+ while (!seq2.collection()->empty() && !chunker(seq2)) {
726
+ chunk2.collection()->push_back(seq2.collection()->front());
727
+ seq2.collection()->pop_front();
728
+ }
729
+
730
+ if (chunk1.collection()->empty() && chunk2.collection()->empty()) {
731
+ DEBUG_PRINTLN(CHUNKS, "RETURNING BOTH EMPTY")
732
+ return Node::createCollection();
733
+ }
734
+
735
+ if (chunk1.collection()->empty()) {
736
+ Node chunk2Wrapper = Node::createCollection();
737
+ chunk2Wrapper.collection()->push_back(chunk2);
738
+ DEBUG_PRINTLN(CHUNKS, "RETURNING ONE EMPTY")
739
+ return chunk2Wrapper;
740
+ }
741
+
742
+ if (chunk2.collection()->empty()) {
743
+ Node chunk1Wrapper = Node::createCollection();
744
+ chunk1Wrapper.collection()->push_back(chunk1);
745
+ DEBUG_PRINTLN(CHUNKS, "RETURNING TWO EMPTY")
746
+ return chunk1Wrapper;
747
+ }
748
+
749
+ Node perms = Node::createCollection();
750
+
751
+ Node firstPermutation = Node::createCollection();
752
+ firstPermutation.collection()->insert(firstPermutation.collection()->end(), chunk1.collection()->begin(), chunk1.collection()->end());
753
+ firstPermutation.collection()->insert(firstPermutation.collection()->end(), chunk2.collection()->begin(), chunk2.collection()->end());
754
+ perms.collection()->push_back(firstPermutation);
755
+
756
+ Node secondPermutation = Node::createCollection();
757
+ secondPermutation.collection()->insert(secondPermutation.collection()->end(), chunk2.collection()->begin(), chunk2.collection()->end());
758
+ secondPermutation.collection()->insert(secondPermutation.collection()->end(), chunk1.collection()->begin(), chunk1.collection()->end());
759
+ perms.collection()->push_back(secondPermutation);
760
+
761
+ DEBUG_PRINTLN(CHUNKS, "RETURNING PERM")
762
+
763
+ return perms;
764
+ }
765
+
766
+
767
+ static Node groupSelectors(Node& seq) {
768
+ Node newSeq = Node::createCollection();
769
+
770
+ Node tail = Node::createCollection();
771
+ tail.plus(seq);
772
+
773
+ while (!tail.collection()->empty()) {
774
+ Node head = Node::createCollection();
775
+
776
+ do {
777
+ head.collection()->push_back(tail.collection()->front());
778
+ tail.collection()->pop_front();
779
+ } while (!tail.collection()->empty() && (head.collection()->back().isCombinator() || tail.collection()->front().isCombinator()));
780
+
781
+ newSeq.collection()->push_back(head);
782
+ }
783
+
784
+ return newSeq;
785
+ }
786
+
787
+
788
+ static void getAndRemoveInitialOps(Node& seq, Node& ops) {
789
+ NodeDeque& seqCollection = *(seq.collection());
790
+ NodeDeque& opsCollection = *(ops.collection());
791
+
792
+ while (seqCollection.size() > 0 && seqCollection.front().isCombinator()) {
793
+ opsCollection.push_back(seqCollection.front());
794
+ seqCollection.pop_front();
795
+ }
796
+ }
797
+
798
+
799
+ static void getAndRemoveFinalOps(Node& seq, Node& ops) {
800
+ NodeDeque& seqCollection = *(seq.collection());
801
+ NodeDeque& opsCollection = *(ops.collection());
802
+
803
+ while (seqCollection.size() > 0 && seqCollection.back().isCombinator()) {
804
+ opsCollection.push_back(seqCollection.back()); // Purposefully reversed to match ruby code
805
+ seqCollection.pop_back();
806
+ }
807
+ }
808
+
809
+
810
+ /*
811
+ def merge_initial_ops(seq1, seq2)
812
+ ops1, ops2 = [], []
813
+ ops1 << seq1.shift while seq1.first.is_a?(String)
814
+ ops2 << seq2.shift while seq2.first.is_a?(String)
815
+
816
+ newline = false
817
+ newline ||= !!ops1.shift if ops1.first == "\n"
818
+ newline ||= !!ops2.shift if ops2.first == "\n"
819
+
820
+ # If neither sequence is a subsequence of the other, they cannot be
821
+ # merged successfully
822
+ lcs = Sass::Util.lcs(ops1, ops2)
823
+ return unless lcs == ops1 || lcs == ops2
824
+ return (newline ? ["\n"] : []) + (ops1.size > ops2.size ? ops1 : ops2)
825
+ end
826
+ */
827
+ static Node mergeInitialOps(Node& seq1, Node& seq2) {
828
+ Node ops1 = Node::createCollection();
829
+ Node ops2 = Node::createCollection();
830
+
831
+ getAndRemoveInitialOps(seq1, ops1);
832
+ getAndRemoveInitialOps(seq2, ops2);
833
+
834
+ // TODO: Do we have this information available to us?
835
+ // newline = false
836
+ // newline ||= !!ops1.shift if ops1.first == "\n"
837
+ // newline ||= !!ops2.shift if ops2.first == "\n"
838
+
839
+ // If neither sequence is a subsequence of the other, they cannot be merged successfully
840
+ DefaultLcsComparator lcsDefaultComparator;
841
+ Node opsLcs = lcs(ops1, ops2, lcsDefaultComparator);
842
+
843
+ if (!(opsLcs == ops1 || opsLcs == ops2)) {
844
+ return Node::createNil();
845
+ }
846
+
847
+ // TODO: more newline logic
848
+ // return (newline ? ["\n"] : []) + (ops1.size > ops2.size ? ops1 : ops2)
849
+
850
+ return (ops1.collection()->size() > ops2.collection()->size() ? ops1 : ops2);
851
+ }
852
+
853
+
854
+ /*
855
+ def merge_final_ops(seq1, seq2, res = [])
856
+
857
+
858
+ # This code looks complicated, but it's actually just a bunch of special
859
+ # cases for interactions between different combinators.
860
+ op1, op2 = ops1.first, ops2.first
861
+ if op1 && op2
862
+ sel1 = seq1.pop
863
+ sel2 = seq2.pop
864
+ if op1 == '~' && op2 == '~'
865
+ if sel1.superselector?(sel2)
866
+ res.unshift sel2, '~'
867
+ elsif sel2.superselector?(sel1)
868
+ res.unshift sel1, '~'
869
+ else
870
+ merged = sel1.unify(sel2.members, sel2.subject?)
871
+ res.unshift [
872
+ [sel1, '~', sel2, '~'],
873
+ [sel2, '~', sel1, '~'],
874
+ ([merged, '~'] if merged)
875
+ ].compact
876
+ end
877
+ elsif (op1 == '~' && op2 == '+') || (op1 == '+' && op2 == '~')
878
+ if op1 == '~'
879
+ tilde_sel, plus_sel = sel1, sel2
880
+ else
881
+ tilde_sel, plus_sel = sel2, sel1
882
+ end
883
+
884
+ if tilde_sel.superselector?(plus_sel)
885
+ res.unshift plus_sel, '+'
886
+ else
887
+ merged = plus_sel.unify(tilde_sel.members, tilde_sel.subject?)
888
+ res.unshift [
889
+ [tilde_sel, '~', plus_sel, '+'],
890
+ ([merged, '+'] if merged)
891
+ ].compact
892
+ end
893
+ elsif op1 == '>' && %w[~ +].include?(op2)
894
+ res.unshift sel2, op2
895
+ seq1.push sel1, op1
896
+ elsif op2 == '>' && %w[~ +].include?(op1)
897
+ res.unshift sel1, op1
898
+ seq2.push sel2, op2
899
+ elsif op1 == op2
900
+ return unless merged = sel1.unify(sel2.members, sel2.subject?)
901
+ res.unshift merged, op1
902
+ else
903
+ # Unknown selector combinators can't be unified
904
+ return
905
+ end
906
+ return merge_final_ops(seq1, seq2, res)
907
+ elsif op1
908
+ seq2.pop if op1 == '>' && seq2.last && seq2.last.superselector?(seq1.last)
909
+ res.unshift seq1.pop, op1
910
+ return merge_final_ops(seq1, seq2, res)
911
+ else # op2
912
+ seq1.pop if op2 == '>' && seq1.last && seq1.last.superselector?(seq2.last)
913
+ res.unshift seq2.pop, op2
914
+ return merge_final_ops(seq1, seq2, res)
915
+ end
916
+ end
917
+ */
918
+ static Node mergeFinalOps(Node& seq1, Node& seq2, Node& res) {
919
+
920
+ Node ops1 = Node::createCollection();
921
+ Node ops2 = Node::createCollection();
922
+
923
+ getAndRemoveFinalOps(seq1, ops1);
924
+ getAndRemoveFinalOps(seq2, ops2);
925
+
926
+ // TODO: do we have newlines to remove?
927
+ // ops1.reject! {|o| o == "\n"}
928
+ // ops2.reject! {|o| o == "\n"}
929
+
930
+ if (ops1.collection()->empty() && ops2.collection()->empty()) {
931
+ return res;
932
+ }
933
+
934
+ if (ops1.collection()->size() > 1 || ops2.collection()->size() > 1) {
935
+ DefaultLcsComparator lcsDefaultComparator;
936
+ Node opsLcs = lcs(ops1, ops2, lcsDefaultComparator);
937
+
938
+ // If there are multiple operators, something hacky's going on. If one is a supersequence of the other, use that, otherwise give up.
939
+
940
+ if (!(opsLcs == ops1 || opsLcs == ops2)) {
941
+ return Node::createNil();
942
+ }
943
+
944
+ if (ops1.collection()->size() > ops2.collection()->size()) {
945
+ res.collection()->insert(res.collection()->begin(), ops1.collection()->rbegin(), ops1.collection()->rend());
946
+ } else {
947
+ res.collection()->insert(res.collection()->begin(), ops2.collection()->rbegin(), ops2.collection()->rend());
948
+ }
949
+
950
+ return res;
951
+ }
952
+
953
+ if (!ops1.collection()->empty() && !ops2.collection()->empty()) {
954
+
955
+ Node op1 = ops1.collection()->front();
956
+ Node op2 = ops2.collection()->front();
957
+
958
+ Node sel1 = seq1.collection()->back();
959
+ seq1.collection()->pop_back();
960
+
961
+ Node sel2 = seq2.collection()->back();
962
+ seq2.collection()->pop_back();
963
+
964
+ if (op1.combinator() == Complex_Selector::PRECEDES && op2.combinator() == Complex_Selector::PRECEDES) {
965
+
966
+ if (sel1.selector()->is_superselector_of(sel2.selector())) {
967
+
968
+ res.collection()->push_front(op1 /*PRECEDES - could have been op2 as well*/);
969
+ res.collection()->push_front(sel2);
970
+
971
+ } else if (sel2.selector()->is_superselector_of(sel1.selector())) {
972
+
973
+ res.collection()->push_front(op1 /*PRECEDES - could have been op2 as well*/);
974
+ res.collection()->push_front(sel1);
975
+
976
+ } else {
977
+
978
+ DEBUG_PRINTLN(ALL, "sel1: " << sel1)
979
+ DEBUG_PRINTLN(ALL, "sel2: " << sel2)
980
+
981
+ Complex_Selector_Obj pMergedWrapper = SASS_MEMORY_CLONE(sel1.selector()); // Clone the Complex_Selector to get back to something we can transform to a node once we replace the head with the unification result
982
+ // TODO: does subject matter? Ruby: return unless merged = sel1.unify(sel2.members, sel2.subject?)
983
+ Compound_Selector* pMerged = sel1.selector()->head()->unify_with(sel2.selector()->head());
984
+ pMergedWrapper->head(pMerged);
985
+
986
+ DEBUG_EXEC(ALL, printCompoundSelector(pMerged, "MERGED: "))
987
+
988
+ Node newRes = Node::createCollection();
989
+
990
+ Node firstPerm = Node::createCollection();
991
+ firstPerm.collection()->push_back(sel1);
992
+ firstPerm.collection()->push_back(Node::createCombinator(Complex_Selector::PRECEDES));
993
+ firstPerm.collection()->push_back(sel2);
994
+ firstPerm.collection()->push_back(Node::createCombinator(Complex_Selector::PRECEDES));
995
+ newRes.collection()->push_back(firstPerm);
996
+
997
+ Node secondPerm = Node::createCollection();
998
+ secondPerm.collection()->push_back(sel2);
999
+ secondPerm.collection()->push_back(Node::createCombinator(Complex_Selector::PRECEDES));
1000
+ secondPerm.collection()->push_back(sel1);
1001
+ secondPerm.collection()->push_back(Node::createCombinator(Complex_Selector::PRECEDES));
1002
+ newRes.collection()->push_back(secondPerm);
1003
+
1004
+ if (pMerged) {
1005
+ Node mergedPerm = Node::createCollection();
1006
+ mergedPerm.collection()->push_back(Node::createSelector(pMergedWrapper));
1007
+ mergedPerm.collection()->push_back(Node::createCombinator(Complex_Selector::PRECEDES));
1008
+ newRes.collection()->push_back(mergedPerm);
1009
+ }
1010
+
1011
+ res.collection()->push_front(newRes);
1012
+
1013
+ DEBUG_PRINTLN(ALL, "RESULT: " << res)
1014
+
1015
+ }
1016
+
1017
+ } else if (((op1.combinator() == Complex_Selector::PRECEDES && op2.combinator() == Complex_Selector::ADJACENT_TO)) || ((op1.combinator() == Complex_Selector::ADJACENT_TO && op2.combinator() == Complex_Selector::PRECEDES))) {
1018
+
1019
+ Node tildeSel = sel1;
1020
+ Node plusSel = sel2;
1021
+ Node plusOp = op2;
1022
+ if (op1.combinator() != Complex_Selector::PRECEDES) {
1023
+ tildeSel = sel2;
1024
+ plusSel = sel1;
1025
+ plusOp = op1;
1026
+ }
1027
+
1028
+ if (tildeSel.selector()->is_superselector_of(plusSel.selector())) {
1029
+
1030
+ res.collection()->push_front(plusOp);
1031
+ res.collection()->push_front(plusSel);
1032
+
1033
+ } else {
1034
+
1035
+ DEBUG_PRINTLN(ALL, "PLUS SEL: " << plusSel)
1036
+ DEBUG_PRINTLN(ALL, "TILDE SEL: " << tildeSel)
1037
+
1038
+ Complex_Selector_Obj pMergedWrapper = SASS_MEMORY_CLONE(plusSel.selector()); // Clone the Complex_Selector to get back to something we can transform to a node once we replace the head with the unification result
1039
+ // TODO: does subject matter? Ruby: merged = plus_sel.unify(tilde_sel.members, tilde_sel.subject?)
1040
+ Compound_Selector* pMerged = plusSel.selector()->head()->unify_with(tildeSel.selector()->head());
1041
+ pMergedWrapper->head(pMerged);
1042
+
1043
+ DEBUG_EXEC(ALL, printCompoundSelector(pMerged, "MERGED: "))
1044
+
1045
+ Node newRes = Node::createCollection();
1046
+
1047
+ Node firstPerm = Node::createCollection();
1048
+ firstPerm.collection()->push_back(tildeSel);
1049
+ firstPerm.collection()->push_back(Node::createCombinator(Complex_Selector::PRECEDES));
1050
+ firstPerm.collection()->push_back(plusSel);
1051
+ firstPerm.collection()->push_back(Node::createCombinator(Complex_Selector::ADJACENT_TO));
1052
+ newRes.collection()->push_back(firstPerm);
1053
+
1054
+ if (pMerged) {
1055
+ Node mergedPerm = Node::createCollection();
1056
+ mergedPerm.collection()->push_back(Node::createSelector(pMergedWrapper));
1057
+ mergedPerm.collection()->push_back(Node::createCombinator(Complex_Selector::ADJACENT_TO));
1058
+ newRes.collection()->push_back(mergedPerm);
1059
+ }
1060
+
1061
+ res.collection()->push_front(newRes);
1062
+
1063
+ DEBUG_PRINTLN(ALL, "RESULT: " << res)
1064
+
1065
+ }
1066
+ } else if (op1.combinator() == Complex_Selector::PARENT_OF && (op2.combinator() == Complex_Selector::PRECEDES || op2.combinator() == Complex_Selector::ADJACENT_TO)) {
1067
+
1068
+ res.collection()->push_front(op2);
1069
+ res.collection()->push_front(sel2);
1070
+
1071
+ seq1.collection()->push_back(sel1);
1072
+ seq1.collection()->push_back(op1);
1073
+
1074
+ } else if (op2.combinator() == Complex_Selector::PARENT_OF && (op1.combinator() == Complex_Selector::PRECEDES || op1.combinator() == Complex_Selector::ADJACENT_TO)) {
1075
+
1076
+ res.collection()->push_front(op1);
1077
+ res.collection()->push_front(sel1);
1078
+
1079
+ seq2.collection()->push_back(sel2);
1080
+ seq2.collection()->push_back(op2);
1081
+
1082
+ } else if (op1.combinator() == op2.combinator()) {
1083
+
1084
+ DEBUG_PRINTLN(ALL, "sel1: " << sel1)
1085
+ DEBUG_PRINTLN(ALL, "sel2: " << sel2)
1086
+
1087
+ Complex_Selector_Obj pMergedWrapper = SASS_MEMORY_CLONE(sel1.selector()); // Clone the Complex_Selector to get back to something we can transform to a node once we replace the head with the unification result
1088
+ // TODO: does subject matter? Ruby: return unless merged = sel1.unify(sel2.members, sel2.subject?)
1089
+ Compound_Selector* pMerged = sel1.selector()->head()->unify_with(sel2.selector()->head());
1090
+ pMergedWrapper->head(pMerged);
1091
+
1092
+ DEBUG_EXEC(ALL, printCompoundSelector(pMerged, "MERGED: "))
1093
+
1094
+ if (!pMerged) {
1095
+ return Node::createNil();
1096
+ }
1097
+
1098
+ res.collection()->push_front(op1);
1099
+ res.collection()->push_front(Node::createSelector(pMergedWrapper));
1100
+
1101
+ DEBUG_PRINTLN(ALL, "RESULT: " << res)
1102
+
1103
+ } else {
1104
+ return Node::createNil();
1105
+ }
1106
+
1107
+ return mergeFinalOps(seq1, seq2, res);
1108
+
1109
+ } else if (!ops1.collection()->empty()) {
1110
+
1111
+ Node op1 = ops1.collection()->front();
1112
+
1113
+ if (op1.combinator() == Complex_Selector::PARENT_OF && !seq2.collection()->empty() && seq2.collection()->back().selector()->is_superselector_of(seq1.collection()->back().selector())) {
1114
+ seq2.collection()->pop_back();
1115
+ }
1116
+
1117
+ // TODO: consider unshift(NodeCollection, Node)
1118
+ res.collection()->push_front(op1);
1119
+ res.collection()->push_front(seq1.collection()->back());
1120
+ seq1.collection()->pop_back();
1121
+
1122
+ return mergeFinalOps(seq1, seq2, res);
1123
+
1124
+ } else { // !ops2.collection()->empty()
1125
+
1126
+ Node op2 = ops2.collection()->front();
1127
+
1128
+ if (op2.combinator() == Complex_Selector::PARENT_OF && !seq1.collection()->empty() && seq1.collection()->back().selector()->is_superselector_of(seq2.collection()->back().selector())) {
1129
+ seq1.collection()->pop_back();
1130
+ }
1131
+
1132
+ res.collection()->push_front(op2);
1133
+ res.collection()->push_front(seq2.collection()->back());
1134
+ seq2.collection()->pop_back();
1135
+
1136
+ return mergeFinalOps(seq1, seq2, res);
1137
+
1138
+ }
1139
+
1140
+ }
1141
+
1142
+
1143
+ /*
1144
+ This is the equivalent of ruby's Sequence.subweave.
1145
+
1146
+ Here is the original subweave code for reference during porting.
1147
+
1148
+ def subweave(seq1, seq2)
1149
+ return [seq2] if seq1.empty?
1150
+ return [seq1] if seq2.empty?
1151
+
1152
+ seq1, seq2 = seq1.dup, seq2.dup
1153
+ return unless init = merge_initial_ops(seq1, seq2)
1154
+ return unless fin = merge_final_ops(seq1, seq2)
1155
+ seq1 = group_selectors(seq1)
1156
+ seq2 = group_selectors(seq2)
1157
+ lcs = Sass::Util.lcs(seq2, seq1) do |s1, s2|
1158
+ next s1 if s1 == s2
1159
+ next unless s1.first.is_a?(SimpleSequence) && s2.first.is_a?(SimpleSequence)
1160
+ next s2 if parent_superselector?(s1, s2)
1161
+ next s1 if parent_superselector?(s2, s1)
1162
+ end
1163
+
1164
+ diff = [[init]]
1165
+ until lcs.empty?
1166
+ diff << chunks(seq1, seq2) {|s| parent_superselector?(s.first, lcs.first)} << [lcs.shift]
1167
+ seq1.shift
1168
+ seq2.shift
1169
+ end
1170
+ diff << chunks(seq1, seq2) {|s| s.empty?}
1171
+ diff += fin.map {|sel| sel.is_a?(Array) ? sel : [sel]}
1172
+ diff.reject! {|c| c.empty?}
1173
+
1174
+ result = Sass::Util.paths(diff).map {|p| p.flatten}.reject {|p| path_has_two_subjects?(p)}
1175
+
1176
+ result
1177
+ end
1178
+ */
1179
+ Node subweave(Node& one, Node& two) {
1180
+ // Check for the simple cases
1181
+ if (one.collection()->size() == 0) {
1182
+ Node out = Node::createCollection();
1183
+ out.collection()->push_back(two);
1184
+ return out;
1185
+ }
1186
+ if (two.collection()->size() == 0) {
1187
+ Node out = Node::createCollection();
1188
+ out.collection()->push_back(one);
1189
+ return out;
1190
+ }
1191
+
1192
+ Node seq1 = Node::createCollection();
1193
+ seq1.plus(one);
1194
+ Node seq2 = Node::createCollection();
1195
+ seq2.plus(two);
1196
+
1197
+ DEBUG_PRINTLN(SUBWEAVE, "SUBWEAVE ONE: " << seq1)
1198
+ DEBUG_PRINTLN(SUBWEAVE, "SUBWEAVE TWO: " << seq2)
1199
+
1200
+ Node init = mergeInitialOps(seq1, seq2);
1201
+ if (init.isNil()) {
1202
+ return Node::createNil();
1203
+ }
1204
+
1205
+ DEBUG_PRINTLN(SUBWEAVE, "INIT: " << init)
1206
+
1207
+ Node res = Node::createCollection();
1208
+ Node fin = mergeFinalOps(seq1, seq2, res);
1209
+ if (fin.isNil()) {
1210
+ return Node::createNil();
1211
+ }
1212
+
1213
+ DEBUG_PRINTLN(SUBWEAVE, "FIN: " << fin)
1214
+
1215
+
1216
+ // Moving this line up since fin isn't modified between now and when it happened before
1217
+ // fin.map {|sel| sel.is_a?(Array) ? sel : [sel]}
1218
+
1219
+ for (NodeDeque::iterator finIter = fin.collection()->begin(), finEndIter = fin.collection()->end();
1220
+ finIter != finEndIter; ++finIter) {
1221
+
1222
+ Node& childNode = *finIter;
1223
+
1224
+ if (!childNode.isCollection()) {
1225
+ Node wrapper = Node::createCollection();
1226
+ wrapper.collection()->push_back(childNode);
1227
+ childNode = wrapper;
1228
+ }
1229
+
1230
+ }
1231
+
1232
+ DEBUG_PRINTLN(SUBWEAVE, "FIN MAPPED: " << fin)
1233
+
1234
+
1235
+
1236
+ Node groupSeq1 = groupSelectors(seq1);
1237
+ DEBUG_PRINTLN(SUBWEAVE, "SEQ1: " << groupSeq1)
1238
+
1239
+ Node groupSeq2 = groupSelectors(seq2);
1240
+ DEBUG_PRINTLN(SUBWEAVE, "SEQ2: " << groupSeq2)
1241
+
1242
+
1243
+ ComplexSelectorDeque groupSeq1Converted;
1244
+ nodeToComplexSelectorDeque(groupSeq1, groupSeq1Converted);
1245
+
1246
+ ComplexSelectorDeque groupSeq2Converted;
1247
+ nodeToComplexSelectorDeque(groupSeq2, groupSeq2Converted);
1248
+
1249
+ ComplexSelectorDeque out;
1250
+ LcsCollectionComparator collectionComparator;
1251
+ lcs(groupSeq2Converted, groupSeq1Converted, collectionComparator, out);
1252
+ Node seqLcs = complexSelectorDequeToNode(out);
1253
+
1254
+ DEBUG_PRINTLN(SUBWEAVE, "SEQLCS: " << seqLcs)
1255
+
1256
+
1257
+ Node initWrapper = Node::createCollection();
1258
+ initWrapper.collection()->push_back(init);
1259
+ Node diff = Node::createCollection();
1260
+ diff.collection()->push_back(initWrapper);
1261
+
1262
+ DEBUG_PRINTLN(SUBWEAVE, "DIFF INIT: " << diff)
1263
+
1264
+
1265
+ while (!seqLcs.collection()->empty()) {
1266
+ ParentSuperselectorChunker superselectorChunker(seqLcs);
1267
+ Node chunksResult = chunks(groupSeq1, groupSeq2, superselectorChunker);
1268
+ diff.collection()->push_back(chunksResult);
1269
+
1270
+ Node lcsWrapper = Node::createCollection();
1271
+ lcsWrapper.collection()->push_back(seqLcs.collection()->front());
1272
+ seqLcs.collection()->pop_front();
1273
+ diff.collection()->push_back(lcsWrapper);
1274
+
1275
+ if (groupSeq1.collection()->size()) groupSeq1.collection()->pop_front();
1276
+ if (groupSeq2.collection()->size()) groupSeq2.collection()->pop_front();
1277
+ }
1278
+
1279
+ DEBUG_PRINTLN(SUBWEAVE, "DIFF POST LCS: " << diff)
1280
+
1281
+
1282
+ DEBUG_PRINTLN(SUBWEAVE, "CHUNKS: ONE=" << groupSeq1 << " TWO=" << groupSeq2)
1283
+
1284
+
1285
+ SubweaveEmptyChunker emptyChunker;
1286
+ Node chunksResult = chunks(groupSeq1, groupSeq2, emptyChunker);
1287
+ diff.collection()->push_back(chunksResult);
1288
+
1289
+
1290
+ DEBUG_PRINTLN(SUBWEAVE, "DIFF POST CHUNKS: " << diff)
1291
+
1292
+
1293
+ diff.collection()->insert(diff.collection()->end(), fin.collection()->begin(), fin.collection()->end());
1294
+
1295
+ DEBUG_PRINTLN(SUBWEAVE, "DIFF POST FIN MAPPED: " << diff)
1296
+
1297
+ // JMA - filter out the empty nodes (use a new collection, since iterator erase() invalidates the old collection)
1298
+ Node diffFiltered = Node::createCollection();
1299
+ for (NodeDeque::iterator diffIter = diff.collection()->begin(), diffEndIter = diff.collection()->end();
1300
+ diffIter != diffEndIter; ++diffIter) {
1301
+ Node& node = *diffIter;
1302
+ if (node.collection() && !node.collection()->empty()) {
1303
+ diffFiltered.collection()->push_back(node);
1304
+ }
1305
+ }
1306
+ diff = diffFiltered;
1307
+
1308
+ DEBUG_PRINTLN(SUBWEAVE, "DIFF POST REJECT: " << diff)
1309
+
1310
+
1311
+ Node pathsResult = paths(diff);
1312
+
1313
+ DEBUG_PRINTLN(SUBWEAVE, "PATHS: " << pathsResult)
1314
+
1315
+
1316
+ // We're flattening in place
1317
+ for (NodeDeque::iterator pathsIter = pathsResult.collection()->begin(), pathsEndIter = pathsResult.collection()->end();
1318
+ pathsIter != pathsEndIter; ++pathsIter) {
1319
+
1320
+ Node& child = *pathsIter;
1321
+ child = flatten(child);
1322
+ }
1323
+
1324
+ DEBUG_PRINTLN(SUBWEAVE, "FLATTENED: " << pathsResult)
1325
+
1326
+
1327
+ /*
1328
+ TODO: implement
1329
+ rejected = mapped.reject {|p| path_has_two_subjects?(p)}
1330
+ $stderr.puts "REJECTED: #{rejected}"
1331
+ */
1332
+
1333
+
1334
+ return pathsResult;
1335
+
1336
+ }
1337
+ /*
1338
+ // disabled to avoid clang warning [-Wunused-function]
1339
+ static Node subweaveNaive(const Node& one, const Node& two) {
1340
+ Node out = Node::createCollection();
1341
+
1342
+ // Check for the simple cases
1343
+ if (one.isNil()) {
1344
+ out.collection()->push_back(two.klone());
1345
+ } else if (two.isNil()) {
1346
+ out.collection()->push_back(one.klone());
1347
+ } else {
1348
+ // Do the naive implementation. pOne = A B and pTwo = C D ...yields... A B C D and C D A B
1349
+ // See https://gist.github.com/nex3/7609394 for details.
1350
+
1351
+ Node firstPerm = one.klone();
1352
+ Node twoCloned = two.klone();
1353
+ firstPerm.plus(twoCloned);
1354
+ out.collection()->push_back(firstPerm);
1355
+
1356
+ Node secondPerm = two.klone();
1357
+ Node oneCloned = one.klone();
1358
+ secondPerm.plus(oneCloned );
1359
+ out.collection()->push_back(secondPerm);
1360
+ }
1361
+
1362
+ return out;
1363
+ }
1364
+ */
1365
+
1366
+
1367
+ /*
1368
+ This is the equivalent of ruby's Sequence.weave.
1369
+
1370
+ The following is the modified version of the ruby code that was more portable to C++. You
1371
+ should be able to drop it into ruby 3.2.19 and get the same results from ruby sass.
1372
+
1373
+ def weave(path)
1374
+ # This function works by moving through the selector path left-to-right,
1375
+ # building all possible prefixes simultaneously. These prefixes are
1376
+ # `befores`, while the remaining parenthesized suffixes is `afters`.
1377
+ befores = [[]]
1378
+ afters = path.dup
1379
+
1380
+ until afters.empty?
1381
+ current = afters.shift.dup
1382
+ last_current = [current.pop]
1383
+
1384
+ tempResult = []
1385
+
1386
+ for before in befores do
1387
+ sub = subweave(before, current)
1388
+ if sub.nil?
1389
+ next
1390
+ end
1391
+
1392
+ for seqs in sub do
1393
+ tempResult.push(seqs + last_current)
1394
+ end
1395
+ end
1396
+
1397
+ befores = tempResult
1398
+
1399
+ end
1400
+
1401
+ return befores
1402
+ end
1403
+ */
1404
+ /*
1405
+ def weave(path)
1406
+ befores = [[]]
1407
+ afters = path.dup
1408
+
1409
+ until afters.empty?
1410
+ current = afters.shift.dup
1411
+
1412
+ last_current = [current.pop]
1413
+
1414
+
1415
+ tempResult = []
1416
+
1417
+ for before in befores do
1418
+ sub = subweave(before, current)
1419
+
1420
+ if sub.nil?
1421
+ next []
1422
+ end
1423
+
1424
+
1425
+ for seqs in sub do
1426
+ toPush = seqs + last_current
1427
+
1428
+ tempResult.push(seqs + last_current)
1429
+ end
1430
+
1431
+ end
1432
+
1433
+ befores = tempResult
1434
+
1435
+ end
1436
+
1437
+ return befores
1438
+ end
1439
+ */
1440
+ Node Extend::weave(Node& path) {
1441
+
1442
+ DEBUG_PRINTLN(WEAVE, "WEAVE: " << path)
1443
+
1444
+ Node befores = Node::createCollection();
1445
+ befores.collection()->push_back(Node::createCollection());
1446
+
1447
+ Node afters = Node::createCollection();
1448
+ afters.plus(path);
1449
+
1450
+ while (!afters.collection()->empty()) {
1451
+ Node current = afters.collection()->front().klone();
1452
+ afters.collection()->pop_front();
1453
+ DEBUG_PRINTLN(WEAVE, "CURRENT: " << current)
1454
+ if (current.collection()->size() == 0) continue;
1455
+
1456
+ Node last_current = Node::createCollection();
1457
+ last_current.collection()->push_back(current.collection()->back());
1458
+ current.collection()->pop_back();
1459
+ DEBUG_PRINTLN(WEAVE, "CURRENT POST POP: " << current)
1460
+ DEBUG_PRINTLN(WEAVE, "LAST CURRENT: " << last_current)
1461
+
1462
+ Node tempResult = Node::createCollection();
1463
+
1464
+ for (NodeDeque::iterator beforesIter = befores.collection()->begin(), beforesEndIter = befores.collection()->end(); beforesIter != beforesEndIter; beforesIter++) {
1465
+ Node& before = *beforesIter;
1466
+
1467
+ Node sub = subweave(before, current);
1468
+
1469
+ DEBUG_PRINTLN(WEAVE, "SUB: " << sub)
1470
+
1471
+ if (sub.isNil()) {
1472
+ return Node::createCollection();
1473
+ }
1474
+
1475
+ for (NodeDeque::iterator subIter = sub.collection()->begin(), subEndIter = sub.collection()->end(); subIter != subEndIter; subIter++) {
1476
+ Node& seqs = *subIter;
1477
+
1478
+ Node toPush = Node::createCollection();
1479
+ toPush.plus(seqs);
1480
+ toPush.plus(last_current);
1481
+
1482
+ // move line feed from inner to outer selector (very hacky indeed)
1483
+ if (last_current.collection() && last_current.collection()->front().selector()) {
1484
+ toPush.got_line_feed = last_current.collection()->front().got_line_feed;
1485
+ last_current.collection()->front().selector()->has_line_feed(false);
1486
+ last_current.collection()->front().got_line_feed = false;
1487
+ }
1488
+
1489
+ tempResult.collection()->push_back(toPush);
1490
+
1491
+ }
1492
+ }
1493
+
1494
+ befores = tempResult;
1495
+
1496
+ }
1497
+
1498
+ return befores;
1499
+ }
1500
+
1501
+
1502
+
1503
+ /*
1504
+ This is the equivalent of ruby's SimpleSequence.do_extend.
1505
+
1506
+ // TODO: I think I have some modified ruby code to put here. Check.
1507
+ */
1508
+ /*
1509
+ ISSUES:
1510
+ - Previous TODO: Do we need to group the results by extender?
1511
+ - What does subject do in?: next unless unified = seq.members.last.unify(self_without_sel, subject?)
1512
+ - IMPROVEMENT: The search for uniqueness at the end is not ideal since it's has to loop over everything...
1513
+ - IMPROVEMENT: Check if the final search for uniqueness is doing anything that extendComplexSelector isn't already doing...
1514
+ */
1515
+ template<typename KeyType>
1516
+ class GroupByToAFunctor {
1517
+ public:
1518
+ KeyType operator()(SubSetMapPair& extPair) const {
1519
+ Complex_Selector_Obj pSelector = extPair.first;
1520
+ return pSelector;
1521
+ }
1522
+ };
1523
+ Node Extend::extendCompoundSelector(Compound_Selector* pSelector, CompoundSelectorSet& seen, bool isReplace) {
1524
+
1525
+ /* this turned out to be too much overhead
1526
+ probably due to holding a "Node" object
1527
+ // check if we already extended this selector
1528
+ // we can do this since subset_map is "static"
1529
+ auto memoized = memoizeCompound.find(pSelector);
1530
+ if (memoized != memoizeCompound.end()) {
1531
+ return memoized->second.klone();
1532
+ }
1533
+ */
1534
+
1535
+ DEBUG_EXEC(EXTEND_COMPOUND, printCompoundSelector(pSelector, "EXTEND COMPOUND: "))
1536
+ // TODO: Ruby has another loop here to skip certain members?
1537
+
1538
+ // let RESULTS be an empty list of complex selectors
1539
+ Node results = Node::createCollection();
1540
+ // extendedSelectors.got_line_feed = true;
1541
+
1542
+ SubSetMapPairs entries = subset_map.get_v(pSelector);
1543
+
1544
+ GroupByToAFunctor<Complex_Selector_Obj> extPairKeyFunctor;
1545
+ SubSetMapResults arr;
1546
+ group_by_to_a(entries, extPairKeyFunctor, arr);
1547
+
1548
+ SubSetMapLookups holder;
1549
+
1550
+ // for each (EXTENDER, TARGET) in MAP.get(COMPOUND):
1551
+ for (SubSetMapResult& groupedPair : arr) {
1552
+
1553
+ Complex_Selector_Obj seq = groupedPair.first;
1554
+ SubSetMapPairs& group = groupedPair.second;
1555
+
1556
+ DEBUG_EXEC(EXTEND_COMPOUND, printComplexSelector(seq, "SEQ: "))
1557
+
1558
+ Compound_Selector_Obj pSels = SASS_MEMORY_NEW(Compound_Selector, pSelector->pstate());
1559
+ for (SubSetMapPair& pair : group) {
1560
+ pair.second->extended(true);
1561
+ pSels->concat(pair.second);
1562
+ }
1563
+
1564
+ DEBUG_EXEC(EXTEND_COMPOUND, printCompoundSelector(pSels, "SELS: "))
1565
+
1566
+ // The selector up to where the @extend is (ie, the thing to merge)
1567
+ Complex_Selector* pExtComplexSelector = seq;
1568
+
1569
+ // TODO: This can return a Compound_Selector with no elements. Should that just be returning NULL?
1570
+ // RUBY: self_without_sel = Sass::Util.array_minus(members, sels)
1571
+ Compound_Selector_Obj pSelectorWithoutExtendSelectors = pSelector->minus(pSels);
1572
+
1573
+ DEBUG_EXEC(EXTEND_COMPOUND, printCompoundSelector(pSelector, "MEMBERS: "))
1574
+ DEBUG_EXEC(EXTEND_COMPOUND, printCompoundSelector(pSelectorWithoutExtendSelectors, "SELF_WO_SEL: "))
1575
+
1576
+ Compound_Selector_Obj pInnermostCompoundSelector = pExtComplexSelector->last()->head();
1577
+
1578
+ if (!pInnermostCompoundSelector) {
1579
+ pInnermostCompoundSelector = SASS_MEMORY_NEW(Compound_Selector, pSelector->pstate());
1580
+ }
1581
+ Compound_Selector_Obj pUnifiedSelector = pInnermostCompoundSelector->unify_with(pSelectorWithoutExtendSelectors);
1582
+
1583
+ DEBUG_EXEC(EXTEND_COMPOUND, printCompoundSelector(pInnermostCompoundSelector, "LHS: "))
1584
+ DEBUG_EXEC(EXTEND_COMPOUND, printCompoundSelector(pSelectorWithoutExtendSelectors, "RHS: "))
1585
+ DEBUG_EXEC(EXTEND_COMPOUND, printCompoundSelector(pUnifiedSelector, "UNIFIED: "))
1586
+
1587
+ // RUBY: next unless unified
1588
+ if (!pUnifiedSelector || pUnifiedSelector->length() == 0) {
1589
+ continue;
1590
+ }
1591
+
1592
+ // TODO: implement the parent directive match (if necessary based on test failures)
1593
+ // next if group.map {|e, _| check_directives_match!(e, parent_directives)}.none?
1594
+
1595
+ // TODO: This seems a little fishy to me. See if it causes any problems. From the ruby, we should be able to just
1596
+ // get rid of the last Compound_Selector and replace it with this one. I think the reason this code is more
1597
+ // complex is that Complex_Selector contains a combinator, but in ruby combinators have already been filtered
1598
+ // out and aren't operated on.
1599
+ Complex_Selector_Obj pNewSelector = SASS_MEMORY_CLONE(pExtComplexSelector); // ->first();
1600
+
1601
+ Complex_Selector_Obj pNewInnerMost = SASS_MEMORY_NEW(Complex_Selector, pSelector->pstate(), Complex_Selector::ANCESTOR_OF, pUnifiedSelector, {});
1602
+
1603
+ Complex_Selector::Combinator combinator = pNewSelector->clear_innermost();
1604
+ pNewSelector->set_innermost(pNewInnerMost, combinator);
1605
+
1606
+ #ifdef DEBUG
1607
+ ComplexSelectorSet debugSet;
1608
+ debugSet = pNewSelector->sources();
1609
+ if (debugSet.size() > 0) {
1610
+ throw std::runtime_error("The new selector should start with no sources. Something needs to be cloned to fix this.");
1611
+ }
1612
+ debugSet = pExtComplexSelector->sources();
1613
+ if (debugSet.size() > 0) {
1614
+ throw std::runtime_error("The extension selector from our subset map should not have sources. These will bleed to the new selector. Something needs to be cloned to fix this.");
1615
+ }
1616
+ #endif
1617
+
1618
+
1619
+ // if (pSelector && pSelector->has_line_feed()) pNewInnerMost->has_line_feed(true);
1620
+ // Set the sources on our new Complex_Selector to the sources of this simple sequence plus the thing we're extending.
1621
+ DEBUG_PRINTLN(EXTEND_COMPOUND, "SOURCES SETTING ON NEW SEQ: " << complexSelectorToNode(pNewSelector))
1622
+
1623
+ DEBUG_EXEC(EXTEND_COMPOUND, ComplexSelectorSet oldSet = pNewSelector->sources(); printSourcesSet(oldSet, "SOURCES NEW SEQ BEGIN: "))
1624
+
1625
+ // I actually want to create a copy here (performance!)
1626
+ ComplexSelectorSet newSourcesSet = pSelector->sources(); // XXX
1627
+ DEBUG_EXEC(EXTEND_COMPOUND, printSourcesSet(newSourcesSet, "SOURCES THIS EXTEND: "))
1628
+
1629
+ newSourcesSet.insert(pExtComplexSelector);
1630
+ DEBUG_EXEC(EXTEND_COMPOUND, printSourcesSet(newSourcesSet, "SOURCES WITH NEW SOURCE: "))
1631
+
1632
+ // RUBY: new_seq.add_sources!(sources + [seq])
1633
+ pNewSelector->addSources(newSourcesSet);
1634
+
1635
+ DEBUG_EXEC(EXTEND_COMPOUND, ComplexSelectorSet newSet = pNewSelector->sources(); printSourcesSet(newSet, "SOURCES ON NEW SELECTOR AFTER ADD: "))
1636
+ DEBUG_EXEC(EXTEND_COMPOUND, printSourcesSet(pSelector->sources(), "SOURCES THIS EXTEND WHICH SHOULD BE SAME STILL: "))
1637
+
1638
+
1639
+ if (pSels->has_line_feed()) pNewSelector->has_line_feed(true);
1640
+
1641
+ holder.push_back(std::make_pair(pSels, pNewSelector));
1642
+ }
1643
+
1644
+
1645
+ for (SubSetMapLookup& pair : holder) {
1646
+
1647
+ Compound_Selector_Obj pSels = pair.first;
1648
+ Complex_Selector_Obj pNewSelector = pair.second;
1649
+
1650
+
1651
+ // RUBY??: next [] if seen.include?(sels)
1652
+ if (seen.find(pSels) != seen.end()) {
1653
+ continue;
1654
+ }
1655
+
1656
+
1657
+ CompoundSelectorSet recurseSeen(seen);
1658
+ recurseSeen.insert(pSels);
1659
+
1660
+
1661
+ DEBUG_PRINTLN(EXTEND_COMPOUND, "RECURSING DO EXTEND: " << complexSelectorToNode(pNewSelector))
1662
+ Node recurseExtendedSelectors = extendComplexSelector(pNewSelector, recurseSeen, isReplace, false); // !:isOriginal
1663
+
1664
+ DEBUG_PRINTLN(EXTEND_COMPOUND, "RECURSING DO EXTEND RETURN: " << recurseExtendedSelectors)
1665
+
1666
+ for (NodeDeque::iterator iterator = recurseExtendedSelectors.collection()->begin(), endIterator = recurseExtendedSelectors.collection()->end();
1667
+ iterator != endIterator; ++iterator) {
1668
+ Node newSelector = *iterator;
1669
+
1670
+ // DEBUG_PRINTLN(EXTEND_COMPOUND, "EXTENDED AT THIS POINT: " << results)
1671
+ // DEBUG_PRINTLN(EXTEND_COMPOUND, "SELECTOR EXISTS ALREADY: " << newSelector << " " << results.contains(newSelector, false /*simpleSelectorOrderDependent*/));
1672
+
1673
+ if (!results.contains(newSelector)) {
1674
+ // DEBUG_PRINTLN(EXTEND_COMPOUND, "ADDING NEW SELECTOR")
1675
+ results.collection()->push_back(newSelector);
1676
+ }
1677
+ }
1678
+ }
1679
+
1680
+ DEBUG_EXEC(EXTEND_COMPOUND, printCompoundSelector(pSelector, "EXTEND COMPOUND END: "))
1681
+
1682
+ // this turned out to be too much overhead
1683
+ // memory results in a map table - since extending is very expensive
1684
+ // memoizeCompound.insert(std::pair<Compound_Selector_Obj, Node>(pSelector, results));
1685
+
1686
+ return results;
1687
+ }
1688
+
1689
+
1690
+ // check if selector has something to be extended by subset_map
1691
+ bool Extend::complexSelectorHasExtension(Complex_Selector* selector, CompoundSelectorSet& seen) {
1692
+
1693
+ bool hasExtension = false;
1694
+
1695
+ Complex_Selector_Obj pIter = selector;
1696
+
1697
+ while (!hasExtension && pIter) {
1698
+ Compound_Selector_Obj pHead = pIter->head();
1699
+
1700
+ if (pHead) {
1701
+ SubSetMapPairs entries = subset_map.get_v(pHead);
1702
+ for (SubSetMapPair ext : entries) {
1703
+ // check if both selectors have the same media block parent
1704
+ // if (ext.first->media_block() == pComplexSelector->media_block()) continue;
1705
+ if (ext.second->media_block() == 0) continue;
1706
+ if (pHead->media_block() &&
1707
+ ext.second->media_block()->media_queries() &&
1708
+ pHead->media_block()->media_queries()
1709
+ ) {
1710
+ std::string query_left(ext.second->media_block()->media_queries()->to_string());
1711
+ std::string query_right(pHead->media_block()->media_queries()->to_string());
1712
+ if (query_left == query_right) continue;
1713
+ }
1714
+
1715
+ // fail if one goes across media block boundaries
1716
+ std::stringstream err;
1717
+ std::string cwd(Sass::File::get_cwd());
1718
+ ParserState pstate(ext.second->pstate());
1719
+ std::string rel_path(Sass::File::abs2rel(pstate.path, cwd, cwd));
1720
+ err << "You may not @extend an outer selector from within @media.\n";
1721
+ err << "You may only @extend selectors within the same directive.\n";
1722
+ err << "From \"@extend " << ext.second->to_string() << "\"";
1723
+ err << " on line " << pstate.line+1 << " of " << rel_path << "\n";
1724
+ error(err.str(), selector->pstate(), eval->exp.traces);
1725
+ }
1726
+ if (entries.size() > 0) hasExtension = true;
1727
+ }
1728
+
1729
+ pIter = pIter->tail();
1730
+ }
1731
+
1732
+ return hasExtension;
1733
+ }
1734
+
1735
+
1736
+ /*
1737
+ This is the equivalent of ruby's Sequence.do_extend.
1738
+
1739
+ // TODO: I think I have some modified ruby code to put here. Check.
1740
+ */
1741
+ /*
1742
+ ISSUES:
1743
+ - check to automatically include combinators doesn't transfer over to libsass' data model where
1744
+ the combinator and compound selector are one unit
1745
+ next [[sseq_or_op]] unless sseq_or_op.is_a?(SimpleSequence)
1746
+ */
1747
+ Node Extend::extendComplexSelector(Complex_Selector* selector, CompoundSelectorSet& seen, bool isReplace, bool isOriginal) {
1748
+
1749
+ // check if we already extended this selector
1750
+ // we can do this since subset_map is "static"
1751
+ auto memoized = memoizeComplex.find(selector);
1752
+ if (memoized != memoizeComplex.end()) {
1753
+ return memoized->second;
1754
+ }
1755
+
1756
+ // convert the input selector to extend node format
1757
+ Node complexSelector = complexSelectorToNode(selector);
1758
+ DEBUG_PRINTLN(EXTEND_COMPLEX, "EXTEND COMPLEX: " << complexSelector)
1759
+
1760
+ // let CHOICES be an empty list of selector-lists
1761
+ // create new collection to hold the results
1762
+ Node choices = Node::createCollection();
1763
+
1764
+ // for each compound selector COMPOUND in COMPLEX:
1765
+ for (Node& sseqOrOp : *complexSelector.collection()) {
1766
+
1767
+ DEBUG_PRINTLN(EXTEND_COMPLEX, "LOOP: " << sseqOrOp)
1768
+
1769
+ // If it's not a selector (meaning it's a combinator), just include it automatically
1770
+ // RUBY: next [[sseq_or_op]] unless sseq_or_op.is_a?(SimpleSequence)
1771
+ if (!sseqOrOp.isSelector()) {
1772
+ // Wrap our Combinator in two collections to match ruby. This is essentially making a collection Node
1773
+ // with one collection child. The collection child represents a Complex_Selector that is only a combinator.
1774
+ Node outer = Node::createCollection();
1775
+ Node inner = Node::createCollection();
1776
+ outer.collection()->push_back(inner);
1777
+ inner.collection()->push_back(sseqOrOp);
1778
+ choices.collection()->push_back(outer);
1779
+ continue;
1780
+ }
1781
+
1782
+ // verified now that node is a valid selector
1783
+ Complex_Selector_Obj sseqSel = sseqOrOp.selector();
1784
+ Compound_Selector_Obj sseqHead = sseqSel->head();
1785
+
1786
+ // let EXTENDED be extend_compound(COMPOUND, SEEN)
1787
+ // extend the compound selector against the given subset_map
1788
+ // RUBY: extended = sseq_or_op.do_extend(extends, parent_directives, replace, seen)
1789
+ Node extended = extendCompoundSelector(sseqHead, seen, isReplace); // slow(17%)!
1790
+ if (sseqOrOp.got_line_feed) extended.got_line_feed = true;
1791
+ DEBUG_PRINTLN(EXTEND_COMPLEX, "EXTENDED: " << extended)
1792
+
1793
+ // Prepend the Compound_Selector based on the choices logic; choices seems to be extend but with a ruby
1794
+ // Array instead of a Sequence due to the member mapping: choices = extended.map {|seq| seq.members}
1795
+ // RUBY: extended.first.add_sources!([self]) if original && !has_placeholder?
1796
+ if (isOriginal && !selector->has_placeholder()) {
1797
+ ComplexSelectorSet srcset;
1798
+ srcset.insert(selector);
1799
+ sseqSel->addSources(srcset);
1800
+ // DEBUG_PRINTLN(EXTEND_COMPLEX, "ADD SOURCES: " << *pComplexSelector)
1801
+ }
1802
+
1803
+ bool isSuperselector = false;
1804
+ // if no complex selector in EXTENDED is a superselector of COMPOUND:
1805
+ for (Node& childNode : *extended.collection()) {
1806
+ Complex_Selector_Obj pExtensionSelector = nodeToComplexSelector(childNode);
1807
+ if (pExtensionSelector->is_superselector_of(sseqSel)) {
1808
+ isSuperselector = true;
1809
+ break;
1810
+ }
1811
+ }
1812
+
1813
+ if (!isSuperselector) {
1814
+ // add a complex selector composed only of COMPOUND to EXTENDED
1815
+ if (sseqOrOp.got_line_feed) sseqSel->has_line_feed(sseqOrOp.got_line_feed);
1816
+ extended.collection()->push_front(complexSelectorToNode(sseqSel));
1817
+ }
1818
+
1819
+ DEBUG_PRINTLN(EXTEND_COMPLEX, "CHOICES UNSHIFTED: " << extended)
1820
+
1821
+ // add EXTENDED to CHOICES
1822
+ // Aggregate our current extensions
1823
+ choices.collection()->push_back(extended);
1824
+ }
1825
+
1826
+
1827
+ DEBUG_PRINTLN(EXTEND_COMPLEX, "EXTENDED NOT EXPANDED: " << choices)
1828
+
1829
+
1830
+
1831
+ // Ruby Equivalent: paths
1832
+ Node paths = Sass::paths(choices);
1833
+
1834
+ DEBUG_PRINTLN(EXTEND_COMPLEX, "PATHS: " << paths)
1835
+
1836
+ // let WEAVES be an empty list of selector lists
1837
+ Node weaves = Node::createCollection();
1838
+
1839
+ // for each list of complex selectors PATH in paths(CHOICES):
1840
+ for (Node& path : *paths.collection()) {
1841
+ // add weave(PATH) to WEAVES
1842
+ Node weaved = weave(path); // slow(12%)!
1843
+ weaved.got_line_feed = path.got_line_feed;
1844
+ weaves.collection()->push_back(weaved);
1845
+ }
1846
+
1847
+ DEBUG_PRINTLN(EXTEND_COMPLEX, "WEAVES: " << weaves)
1848
+
1849
+ // Ruby Equivalent: trim
1850
+ Node trimmed(trim(weaves, isReplace)); // slow(19%)!
1851
+
1852
+ DEBUG_PRINTLN(EXTEND_COMPLEX, "TRIMMED: " << trimmed)
1853
+
1854
+ // Ruby Equivalent: flatten
1855
+ Node flattened(flatten(trimmed, 1));
1856
+
1857
+ DEBUG_PRINTLN(EXTEND_COMPLEX, "FLATTENED: " << flattened)
1858
+
1859
+ // memory results in a map table - since extending is very expensive
1860
+ memoizeComplex.insert(std::pair<Complex_Selector_Obj, Node>(selector, flattened));
1861
+
1862
+ // return trim(WEAVES)
1863
+ return flattened;
1864
+ }
1865
+
1866
+
1867
+
1868
+ /*
1869
+ This is the equivalent of ruby's CommaSequence.do_extend.
1870
+ */
1871
+ // We get a selector list with has something to extend and a subset_map with
1872
+ // all extenders. Pick the ones that match our selectors in the list.
1873
+ Selector_List* Extend::extendSelectorList(Selector_List_Obj pSelectorList, bool isReplace, bool& extendedSomething, CompoundSelectorSet& seen) {
1874
+
1875
+ Selector_List_Obj pNewSelectors = SASS_MEMORY_NEW(Selector_List, pSelectorList->pstate(), pSelectorList->length());
1876
+
1877
+ // check if we already extended this selector
1878
+ // we can do this since subset_map is "static"
1879
+ auto memoized = memoizeList.find(pSelectorList);
1880
+ if (memoized != memoizeList.end()) {
1881
+ extendedSomething = true;
1882
+ return memoized->second;
1883
+ }
1884
+
1885
+ extendedSomething = false;
1886
+ // process each comlplex selector in the selector list.
1887
+ // Find the ones that can be extended by given subset_map.
1888
+ for (size_t index = 0, length = pSelectorList->length(); index < length; index++) {
1889
+ Complex_Selector_Obj pSelector = (*pSelectorList)[index];
1890
+
1891
+ // ruby sass seems to keep a list of things that have extensions and then only extend those. We don't currently do that.
1892
+ // Since it's not that expensive to check if an extension exists in the subset map and since it can be relatively expensive to
1893
+ // run through the extend code (which does a data model transformation), check if there is anything to extend before doing
1894
+ // the extend. We might be able to optimize extendComplexSelector, but this approach keeps us closer to ruby sass (which helps
1895
+ // when debugging).
1896
+ if (!complexSelectorHasExtension(pSelector, seen)) {
1897
+ pNewSelectors->append(pSelector);
1898
+ continue;
1899
+ }
1900
+
1901
+ // complexSelectorHasExtension was true!
1902
+ extendedSomething = true;
1903
+
1904
+ // now do the actual extension of the complex selector
1905
+ Node extendedSelectors = extendComplexSelector(pSelector, seen, isReplace, true);
1906
+
1907
+ if (!pSelector->has_placeholder()) {
1908
+ Node nSelector(complexSelectorToNode(pSelector));
1909
+ if (!extendedSelectors.contains(nSelector)) {
1910
+ pNewSelectors->append(pSelector);
1911
+ continue;
1912
+ }
1913
+ }
1914
+
1915
+ bool doReplace = isReplace;
1916
+ for (Node& childNode : *extendedSelectors.collection()) {
1917
+ // When it is a replace, skip the first one, unless there is only one
1918
+ if(doReplace && extendedSelectors.collection()->size() > 1 ) {
1919
+ doReplace = false;
1920
+ continue;
1921
+ }
1922
+ pNewSelectors->append(nodeToComplexSelector(childNode));
1923
+ }
1924
+ }
1925
+
1926
+ Remove_Placeholders remove_placeholders;
1927
+ // it seems that we have to remove the place holders early here
1928
+ // normally we do this as the very last step (compare to ruby sass)
1929
+ pNewSelectors = remove_placeholders.remove_placeholders(pNewSelectors);
1930
+
1931
+ // unwrap all wrapped selectors with inner lists
1932
+ for (Complex_Selector_Obj cur : pNewSelectors->elements()) {
1933
+ // process tails
1934
+ while (cur) {
1935
+ // process header
1936
+ if (cur->head() && seen.find(cur->head()) == seen.end()) {
1937
+ CompoundSelectorSet recseen(seen);
1938
+ recseen.insert(cur->head());
1939
+ // create a copy since we add multiple items if stuff get unwrapped
1940
+ Compound_Selector_Obj cpy_head = SASS_MEMORY_NEW(Compound_Selector, cur->pstate());
1941
+ for (Simple_Selector_Obj hs : *cur->head()) {
1942
+ if (Wrapped_Selector_Obj ws = Cast<Wrapped_Selector>(hs)) {
1943
+ ws->selector(SASS_MEMORY_CLONE(ws->selector()));
1944
+ if (Selector_List_Obj sl = Cast<Selector_List>(ws->selector())) {
1945
+ // special case for ruby ass
1946
+ if (sl->empty()) {
1947
+ // this seems inconsistent but it is how ruby sass seems to remove parentheses
1948
+ cpy_head->append(SASS_MEMORY_NEW(Type_Selector, hs->pstate(), ws->name()));
1949
+ }
1950
+ // has wrapped not selectors
1951
+ else if (ws->name() == ":not") {
1952
+ // extend the inner list of wrapped selector
1953
+ bool extended = false;
1954
+ Selector_List_Obj ext_sl = extendSelectorList(sl, false, extended, recseen);
1955
+ for (size_t i = 0; i < ext_sl->length(); i += 1) {
1956
+ if (Complex_Selector_Obj ext_cs = ext_sl->at(i)) {
1957
+ // create clones for wrapped selector and the inner list
1958
+ Wrapped_Selector_Obj cpy_ws = SASS_MEMORY_COPY(ws);
1959
+ Selector_List_Obj cpy_ws_sl = SASS_MEMORY_NEW(Selector_List, sl->pstate());
1960
+ // remove parent selectors from inner selector
1961
+ Compound_Selector_Obj ext_head;
1962
+ if (ext_cs->first()) ext_head = ext_cs->first()->head();
1963
+ if (ext_head && ext_head && ext_head->length() > 0) {
1964
+ cpy_ws_sl->append(ext_cs->mutable_first());
1965
+ }
1966
+ // assign list to clone
1967
+ cpy_ws->selector(cpy_ws_sl);
1968
+ // append the clone
1969
+ cpy_head->append(cpy_ws);
1970
+ }
1971
+ }
1972
+ if (eval && extended) {
1973
+ eval->exp.selector_stack.push_back(pNewSelectors);
1974
+ cpy_head->perform(eval);
1975
+ eval->exp.selector_stack.pop_back();
1976
+ }
1977
+ }
1978
+ // has wrapped selectors
1979
+ else {
1980
+ Wrapped_Selector_Obj cpy_ws = SASS_MEMORY_COPY(ws);
1981
+ Selector_List_Obj ext_sl = extendSelectorList(sl, recseen);
1982
+ cpy_ws->selector(ext_sl);
1983
+ cpy_head->append(cpy_ws);
1984
+ }
1985
+ } else {
1986
+ cpy_head->append(hs);
1987
+ }
1988
+ } else {
1989
+ cpy_head->append(hs);
1990
+ }
1991
+ }
1992
+ // replace header
1993
+ cur->head(cpy_head);
1994
+ }
1995
+ // process tail
1996
+ cur = cur->tail();
1997
+ }
1998
+ }
1999
+
2000
+ // memory results in a map table - since extending is very expensive
2001
+ memoizeList.insert(std::pair<Selector_List_Obj, Selector_List_Obj>(pSelectorList, pNewSelectors));
2002
+
2003
+ return pNewSelectors.detach();
2004
+
2005
+ }
2006
+
2007
+
2008
+ bool shouldExtendBlock(Block_Obj b) {
2009
+
2010
+ // If a block is empty, there's no reason to extend it since any rules placed on this block
2011
+ // won't have any output. The main benefit of this is for structures like:
2012
+ //
2013
+ // .a {
2014
+ // .b {
2015
+ // x: y;
2016
+ // }
2017
+ // }
2018
+ //
2019
+ // We end up visiting two rulesets (one with the selector .a and the other with the selector .a .b).
2020
+ // In this case, we don't want to try to pull rules onto .a since they won't get output anyway since
2021
+ // there are no child statements. However .a .b should have extensions applied.
2022
+
2023
+ for (size_t i = 0, L = b->length(); i < L; ++i) {
2024
+ Statement_Obj stm = b->at(i);
2025
+
2026
+ if (Cast<Ruleset>(stm)) {
2027
+ // Do nothing. This doesn't count as a statement that causes extension since we'll
2028
+ // iterate over this rule set in a future visit and try to extend it.
2029
+ }
2030
+ else {
2031
+ return true;
2032
+ }
2033
+ }
2034
+
2035
+ return false;
2036
+
2037
+ }
2038
+
2039
+
2040
+ // Extend a ruleset by extending the selectors and updating them on the ruleset. The block's rules don't need to change.
2041
+ // Every Ruleset in the whole tree is calling this function. We decide if there
2042
+ // was is @extend that matches our selector. If we find one, we will go further
2043
+ // and call the extend magic for our selector. The subset_map contains all blocks
2044
+ // where @extend was found. Pick the ones that match our selector!
2045
+ void Extend::extendObjectWithSelectorAndBlock(Ruleset* pObject) {
2046
+
2047
+ DEBUG_PRINTLN(EXTEND_OBJECT, "FOUND SELECTOR: " << Cast<Selector_List>(pObject->selector())->to_string())
2048
+
2049
+ // Ruby sass seems to filter nodes that don't have any content well before we get here.
2050
+ // I'm not sure the repercussions of doing so, so for now, let's just not extend things
2051
+ // that won't be output later. Profiling shows this may us 0.2% or so.
2052
+ if (!shouldExtendBlock(pObject->block())) {
2053
+ DEBUG_PRINTLN(EXTEND_OBJECT, "RETURNING WITHOUT EXTEND ATTEMPT")
2054
+ return;
2055
+ }
2056
+
2057
+ bool extendedSomething = false;
2058
+
2059
+ CompoundSelectorSet seen;
2060
+ Selector_List_Obj pNewSelectorList = extendSelectorList(pObject->selector(), false, extendedSomething, seen);
2061
+
2062
+ if (extendedSomething && pNewSelectorList) {
2063
+ DEBUG_PRINTLN(EXTEND_OBJECT, "EXTEND ORIGINAL SELECTORS: " << pObject->selector()->to_string())
2064
+ DEBUG_PRINTLN(EXTEND_OBJECT, "EXTEND SETTING NEW SELECTORS: " << pNewSelectorList->to_string())
2065
+ pNewSelectorList->remove_parent_selectors();
2066
+ pObject->selector(pNewSelectorList);
2067
+ } else {
2068
+ DEBUG_PRINTLN(EXTEND_OBJECT, "EXTEND DID NOT TRY TO EXTEND ANYTHING")
2069
+ }
2070
+ }
2071
+
2072
+ Extend::Extend(Subset_Map& ssm)
2073
+ : subset_map(ssm), eval(NULL)
2074
+ { }
2075
+
2076
+ void Extend::setEval(Eval& e) {
2077
+ eval = &e;
2078
+ }
2079
+
2080
+ void Extend::operator()(Block* b)
2081
+ {
2082
+ for (size_t i = 0, L = b->length(); i < L; ++i) {
2083
+ Statement_Obj stm = b->at(i);
2084
+ stm->perform(this);
2085
+ }
2086
+ // do final check if everything was extended
2087
+ // we set `extended` flag on extended selectors
2088
+ if (b->is_root()) {
2089
+ // debug_subset_map(subset_map);
2090
+ for(auto const &it : subset_map.values()) {
2091
+ const Complex_Selector* sel = nullptr;
2092
+ const Compound_Selector* ext = nullptr;
2093
+ if (it.first) sel = it.first->first();
2094
+ if (it.second) ext = it.second;
2095
+ if (ext && (ext->extended() || ext->is_optional())) continue;
2096
+ std::string str_sel(sel ? sel->to_string({ NESTED, 5 }) : "NULL");
2097
+ std::string str_ext(ext ? ext->to_string({ NESTED, 5 }) : "NULL");
2098
+ // debug_ast(sel, "sel: ");
2099
+ // debug_ast(ext, "ext: ");
2100
+ error("\"" + str_sel + "\" failed to @extend \"" + str_ext + "\".\n"
2101
+ "The selector \"" + str_ext + "\" was not found.\n"
2102
+ "Use \"@extend " + str_ext + " !optional\" if the"
2103
+ " extend should be able to fail.", (ext ? ext->pstate() : NULL), eval->exp.traces);
2104
+ }
2105
+ }
2106
+
2107
+ }
2108
+
2109
+ void Extend::operator()(Ruleset* pRuleset)
2110
+ {
2111
+ extendObjectWithSelectorAndBlock( pRuleset );
2112
+ pRuleset->block()->perform(this);
2113
+ }
2114
+
2115
+ void Extend::operator()(Supports_Block* pFeatureBlock)
2116
+ {
2117
+ pFeatureBlock->block()->perform(this);
2118
+ }
2119
+
2120
+ void Extend::operator()(Media_Block* pMediaBlock)
2121
+ {
2122
+ pMediaBlock->block()->perform(this);
2123
+ }
2124
+
2125
+ void Extend::operator()(Directive* a)
2126
+ {
2127
+ // Selector_List* ls = Cast<Selector_List>(a->selector());
2128
+ // selector_stack.push_back(ls);
2129
+ if (a->block()) a->block()->perform(this);
2130
+ // exp.selector_stack.pop_back();
2131
+ }
2132
+ }