sass-rails3 4.0.1

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 (242) hide show
  1. data/.gitignore +7 -0
  2. data/.travis.yml +22 -0
  3. data/CHANGELOG.md +40 -0
  4. data/Gemfile +8 -0
  5. data/MIT-LICENSE +21 -0
  6. data/README.md +98 -0
  7. data/Rakefile +29 -0
  8. data/lib/rails/generators/sass/assets/assets_generator.rb +13 -0
  9. data/lib/rails/generators/sass/assets/templates/stylesheet.css.sass +3 -0
  10. data/lib/rails/generators/sass/scaffold/scaffold_generator.rb +9 -0
  11. data/lib/rails/generators/sass_scaffold.rb +16 -0
  12. data/lib/rails/generators/scss/assets/assets_generator.rb +13 -0
  13. data/lib/rails/generators/scss/assets/templates/stylesheet.css.scss +3 -0
  14. data/lib/rails/generators/scss/scaffold/scaffold_generator.rb +10 -0
  15. data/lib/sass-rails3.rb +1 -0
  16. data/lib/sass/rails.rb +10 -0
  17. data/lib/sass/rails/helpers.rb +30 -0
  18. data/lib/sass/rails/importer.rb +91 -0
  19. data/lib/sass/rails/logger.rb +21 -0
  20. data/lib/sass/rails/railtie.rb +62 -0
  21. data/lib/sass/rails/version.rb +5 -0
  22. data/sass-rails3.gemspec +26 -0
  23. data/sass-rails3.gemspec.erb +26 -0
  24. data/test/fixtures/alternate_config_project/.gitignore +5 -0
  25. data/test/fixtures/alternate_config_project/Gemfile +7 -0
  26. data/test/fixtures/alternate_config_project/README +261 -0
  27. data/test/fixtures/alternate_config_project/Rakefile +7 -0
  28. data/test/fixtures/alternate_config_project/app/assets/images/1x1.png +0 -0
  29. data/test/fixtures/alternate_config_project/app/assets/images/rails.png +0 -0
  30. data/test/fixtures/alternate_config_project/app/assets/javascripts/application.js +9 -0
  31. data/test/fixtures/alternate_config_project/app/assets/stylesheets/_top_level_partial.css.scss +3 -0
  32. data/test/fixtures/alternate_config_project/app/assets/stylesheets/application.css.scss +32 -0
  33. data/test/fixtures/alternate_config_project/app/assets/stylesheets/css_application.css +7 -0
  34. data/test/fixtures/alternate_config_project/app/assets/stylesheets/globbed/globbed.css.scss +3 -0
  35. data/test/fixtures/alternate_config_project/app/assets/stylesheets/globbed/nested/nested_glob.css.scss +3 -0
  36. data/test/fixtures/alternate_config_project/app/assets/stylesheets/partials/_sass_import.css.sass +5 -0
  37. data/test/fixtures/alternate_config_project/app/assets/stylesheets/partials/_scss_import.css.scss +9 -0
  38. data/test/fixtures/alternate_config_project/app/assets/stylesheets/partials/_without_css_ext.scss +3 -0
  39. data/test/fixtures/alternate_config_project/app/assets/stylesheets/partials/subfolder/_relative_sass.css.sass +2 -0
  40. data/test/fixtures/alternate_config_project/app/assets/stylesheets/partials/subfolder/_relative_scss.css.scss +3 -0
  41. data/test/fixtures/alternate_config_project/app/assets/stylesheets/partials/subfolder/relative_not_a_partial.css.scss +3 -0
  42. data/test/fixtures/alternate_config_project/app/assets/stylesheets/subfolder/another_plain.css +3 -0
  43. data/test/fixtures/alternate_config_project/app/assets/stylesheets/subfolder/plain.css +3 -0
  44. data/test/fixtures/alternate_config_project/app/assets/stylesheets/subfolder/second_level.css.scss +1 -0
  45. data/test/fixtures/alternate_config_project/app/controllers/application_controller.rb +3 -0
  46. data/test/fixtures/alternate_config_project/app/helpers/application_helper.rb +2 -0
  47. data/test/fixtures/alternate_config_project/app/mailers/.gitkeep +0 -0
  48. data/test/fixtures/alternate_config_project/app/models/.gitkeep +0 -0
  49. data/test/fixtures/alternate_config_project/app/views/layouts/application.html.erb +14 -0
  50. data/test/fixtures/alternate_config_project/config.ru +4 -0
  51. data/test/fixtures/alternate_config_project/config/application.rb +49 -0
  52. data/test/fixtures/alternate_config_project/config/boot.rb +6 -0
  53. data/test/fixtures/alternate_config_project/config/database.yml +25 -0
  54. data/test/fixtures/alternate_config_project/config/environment.rb +5 -0
  55. data/test/fixtures/alternate_config_project/config/environments/development.rb +27 -0
  56. data/test/fixtures/alternate_config_project/config/environments/production.rb +56 -0
  57. data/test/fixtures/alternate_config_project/config/environments/test.rb +38 -0
  58. data/test/fixtures/alternate_config_project/config/initializers/backtrace_silencers.rb +7 -0
  59. data/test/fixtures/alternate_config_project/config/initializers/inflections.rb +10 -0
  60. data/test/fixtures/alternate_config_project/config/initializers/mime_types.rb +5 -0
  61. data/test/fixtures/alternate_config_project/config/initializers/secret_token.rb +7 -0
  62. data/test/fixtures/alternate_config_project/config/initializers/session_store.rb +8 -0
  63. data/test/fixtures/alternate_config_project/config/initializers/wrap_parameters.rb +12 -0
  64. data/test/fixtures/alternate_config_project/config/locales/en.yml +5 -0
  65. data/test/fixtures/alternate_config_project/config/routes.rb +58 -0
  66. data/test/fixtures/alternate_config_project/db/seeds.rb +7 -0
  67. data/test/fixtures/alternate_config_project/doc/README_FOR_APP +2 -0
  68. data/test/fixtures/alternate_config_project/lib/tasks/.gitkeep +0 -0
  69. data/test/fixtures/alternate_config_project/log/.gitkeep +0 -0
  70. data/test/fixtures/alternate_config_project/public/404.html +26 -0
  71. data/test/fixtures/alternate_config_project/public/422.html +26 -0
  72. data/test/fixtures/alternate_config_project/public/500.html +26 -0
  73. data/test/fixtures/alternate_config_project/public/favicon.ico +0 -0
  74. data/test/fixtures/alternate_config_project/public/index.html +241 -0
  75. data/test/fixtures/alternate_config_project/public/robots.txt +5 -0
  76. data/test/fixtures/alternate_config_project/script/rails +6 -0
  77. data/test/fixtures/alternate_config_project/vendor/assets/stylesheets/.gitkeep +0 -0
  78. data/test/fixtures/alternate_config_project/vendor/plugins/.gitkeep +0 -0
  79. data/test/fixtures/engine_project/.gitignore +8 -0
  80. data/test/fixtures/engine_project/Gemfile +14 -0
  81. data/test/fixtures/engine_project/MIT-LICENSE +20 -0
  82. data/test/fixtures/engine_project/README.rdoc +3 -0
  83. data/test/fixtures/engine_project/Rakefile +34 -0
  84. data/test/fixtures/engine_project/app/assets/images/engine_project/.keep +0 -0
  85. data/test/fixtures/engine_project/app/assets/javascripts/engine_project/application.js +16 -0
  86. data/test/fixtures/engine_project/app/assets/stylesheets/engine_project/application.css +13 -0
  87. data/test/fixtures/engine_project/app/controllers/engine_project/application_controller.rb +4 -0
  88. data/test/fixtures/engine_project/app/helpers/engine_project/application_helper.rb +4 -0
  89. data/test/fixtures/engine_project/app/views/layouts/engine_project/application.html.erb +14 -0
  90. data/test/fixtures/engine_project/config/routes.rb +2 -0
  91. data/test/fixtures/engine_project/engine_project.gemspec +23 -0
  92. data/test/fixtures/engine_project/lib/engine_project.rb +4 -0
  93. data/test/fixtures/engine_project/lib/engine_project/engine.rb +5 -0
  94. data/test/fixtures/engine_project/lib/engine_project/version.rb +3 -0
  95. data/test/fixtures/engine_project/lib/tasks/engine_project_tasks.rake +4 -0
  96. data/test/fixtures/engine_project/script/rails +8 -0
  97. data/test/fixtures/engine_project/test/dummy/README.rdoc +28 -0
  98. data/test/fixtures/engine_project/test/dummy/Rakefile +6 -0
  99. data/test/fixtures/engine_project/test/dummy/app/assets/javascripts/application.js +16 -0
  100. data/test/fixtures/engine_project/test/dummy/app/assets/stylesheets/application.css +13 -0
  101. data/test/fixtures/engine_project/test/dummy/app/controllers/application_controller.rb +5 -0
  102. data/test/fixtures/engine_project/test/dummy/app/controllers/concerns/.keep +0 -0
  103. data/test/fixtures/engine_project/test/dummy/app/helpers/application_helper.rb +2 -0
  104. data/test/fixtures/engine_project/test/dummy/app/mailers/.keep +0 -0
  105. data/test/fixtures/engine_project/test/dummy/app/models/.keep +0 -0
  106. data/test/fixtures/engine_project/test/dummy/app/models/concerns/.keep +0 -0
  107. data/test/fixtures/engine_project/test/dummy/app/views/layouts/application.html.erb +14 -0
  108. data/test/fixtures/engine_project/test/dummy/bin/bundle +3 -0
  109. data/test/fixtures/engine_project/test/dummy/bin/rails +4 -0
  110. data/test/fixtures/engine_project/test/dummy/bin/rake +4 -0
  111. data/test/fixtures/engine_project/test/dummy/config.ru +4 -0
  112. data/test/fixtures/engine_project/test/dummy/config/application.rb +23 -0
  113. data/test/fixtures/engine_project/test/dummy/config/boot.rb +9 -0
  114. data/test/fixtures/engine_project/test/dummy/config/database.yml +25 -0
  115. data/test/fixtures/engine_project/test/dummy/config/environment.rb +5 -0
  116. data/test/fixtures/engine_project/test/dummy/config/environments/development.rb +27 -0
  117. data/test/fixtures/engine_project/test/dummy/config/environments/production.rb +80 -0
  118. data/test/fixtures/engine_project/test/dummy/config/environments/test.rb +36 -0
  119. data/test/fixtures/engine_project/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  120. data/test/fixtures/engine_project/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  121. data/test/fixtures/engine_project/test/dummy/config/initializers/inflections.rb +16 -0
  122. data/test/fixtures/engine_project/test/dummy/config/initializers/mime_types.rb +5 -0
  123. data/test/fixtures/engine_project/test/dummy/config/initializers/secret_token.rb +12 -0
  124. data/test/fixtures/engine_project/test/dummy/config/initializers/session_store.rb +3 -0
  125. data/test/fixtures/engine_project/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  126. data/test/fixtures/engine_project/test/dummy/config/locales/en.yml +23 -0
  127. data/test/fixtures/engine_project/test/dummy/config/routes.rb +4 -0
  128. data/test/fixtures/engine_project/test/dummy/lib/assets/.keep +0 -0
  129. data/test/fixtures/engine_project/test/dummy/log/.keep +0 -0
  130. data/test/fixtures/engine_project/test/dummy/public/404.html +27 -0
  131. data/test/fixtures/engine_project/test/dummy/public/422.html +26 -0
  132. data/test/fixtures/engine_project/test/dummy/public/500.html +26 -0
  133. data/test/fixtures/engine_project/test/dummy/public/favicon.ico +0 -0
  134. data/test/fixtures/sass_project/.gitignore +5 -0
  135. data/test/fixtures/sass_project/Gemfile +7 -0
  136. data/test/fixtures/sass_project/README +261 -0
  137. data/test/fixtures/sass_project/Rakefile +7 -0
  138. data/test/fixtures/sass_project/app/assets/images/rails.png +0 -0
  139. data/test/fixtures/sass_project/app/assets/javascripts/application.js +9 -0
  140. data/test/fixtures/sass_project/app/assets/stylesheets/application.css +7 -0
  141. data/test/fixtures/sass_project/app/controllers/application_controller.rb +3 -0
  142. data/test/fixtures/sass_project/app/helpers/application_helper.rb +2 -0
  143. data/test/fixtures/sass_project/app/mailers/.gitkeep +0 -0
  144. data/test/fixtures/sass_project/app/models/.gitkeep +0 -0
  145. data/test/fixtures/sass_project/app/views/layouts/application.html.erb +14 -0
  146. data/test/fixtures/sass_project/config.ru +4 -0
  147. data/test/fixtures/sass_project/config/application.rb +52 -0
  148. data/test/fixtures/sass_project/config/boot.rb +6 -0
  149. data/test/fixtures/sass_project/config/database.yml +25 -0
  150. data/test/fixtures/sass_project/config/environment.rb +5 -0
  151. data/test/fixtures/sass_project/config/environments/development.rb +21 -0
  152. data/test/fixtures/sass_project/config/environments/production.rb +51 -0
  153. data/test/fixtures/sass_project/config/environments/test.rb +36 -0
  154. data/test/fixtures/sass_project/config/initializers/backtrace_silencers.rb +7 -0
  155. data/test/fixtures/sass_project/config/initializers/inflections.rb +10 -0
  156. data/test/fixtures/sass_project/config/initializers/mime_types.rb +5 -0
  157. data/test/fixtures/sass_project/config/initializers/secret_token.rb +7 -0
  158. data/test/fixtures/sass_project/config/initializers/session_store.rb +8 -0
  159. data/test/fixtures/sass_project/config/initializers/wrap_parameters.rb +12 -0
  160. data/test/fixtures/sass_project/config/locales/en.yml +5 -0
  161. data/test/fixtures/sass_project/config/routes.rb +58 -0
  162. data/test/fixtures/sass_project/db/seeds.rb +7 -0
  163. data/test/fixtures/sass_project/doc/README_FOR_APP +2 -0
  164. data/test/fixtures/sass_project/lib/tasks/.gitkeep +0 -0
  165. data/test/fixtures/sass_project/log/.gitkeep +0 -0
  166. data/test/fixtures/sass_project/public/404.html +26 -0
  167. data/test/fixtures/sass_project/public/422.html +26 -0
  168. data/test/fixtures/sass_project/public/500.html +26 -0
  169. data/test/fixtures/sass_project/public/favicon.ico +0 -0
  170. data/test/fixtures/sass_project/public/index.html +241 -0
  171. data/test/fixtures/sass_project/public/robots.txt +5 -0
  172. data/test/fixtures/sass_project/script/rails +6 -0
  173. data/test/fixtures/sass_project/vendor/assets/stylesheets/.gitkeep +0 -0
  174. data/test/fixtures/sass_project/vendor/plugins/.gitkeep +0 -0
  175. data/test/fixtures/scss_project/.gitignore +5 -0
  176. data/test/fixtures/scss_project/Gemfile +7 -0
  177. data/test/fixtures/scss_project/README +261 -0
  178. data/test/fixtures/scss_project/Rakefile +7 -0
  179. data/test/fixtures/scss_project/app/assets/images/1x1.png +0 -0
  180. data/test/fixtures/scss_project/app/assets/images/rails.png +0 -0
  181. data/test/fixtures/scss_project/app/assets/javascripts/application.js +9 -0
  182. data/test/fixtures/scss_project/app/assets/stylesheets/_top_level_partial.css.scss +3 -0
  183. data/test/fixtures/scss_project/app/assets/stylesheets/application.css.scss +37 -0
  184. data/test/fixtures/scss_project/app/assets/stylesheets/css_application.css +7 -0
  185. data/test/fixtures/scss_project/app/assets/stylesheets/css_erb_handler.css.erb +3 -0
  186. data/test/fixtures/scss_project/app/assets/stylesheets/css_sass_erb_handler.css.sass.erb +2 -0
  187. data/test/fixtures/scss_project/app/assets/stylesheets/css_scss_erb_handler.css.scss.erb +3 -0
  188. data/test/fixtures/scss_project/app/assets/stylesheets/globbed/globbed.css.scss +3 -0
  189. data/test/fixtures/scss_project/app/assets/stylesheets/globbed/nested/nested_glob.css.scss +3 -0
  190. data/test/fixtures/scss_project/app/assets/stylesheets/partials/_sass_import.css.sass +5 -0
  191. data/test/fixtures/scss_project/app/assets/stylesheets/partials/_scss_import.css.scss +9 -0
  192. data/test/fixtures/scss_project/app/assets/stylesheets/partials/_without_css_ext.scss +3 -0
  193. data/test/fixtures/scss_project/app/assets/stylesheets/partials/subfolder/_relative_sass.css.sass +2 -0
  194. data/test/fixtures/scss_project/app/assets/stylesheets/partials/subfolder/_relative_scss.css.scss +3 -0
  195. data/test/fixtures/scss_project/app/assets/stylesheets/partials/subfolder/relative_not_a_partial.css.scss +3 -0
  196. data/test/fixtures/scss_project/app/assets/stylesheets/sass_erb_handler.sass.erb +2 -0
  197. data/test/fixtures/scss_project/app/assets/stylesheets/scss_erb_handler.scss.erb +3 -0
  198. data/test/fixtures/scss_project/app/assets/stylesheets/subfolder/_defaults.css.scss +3 -0
  199. data/test/fixtures/scss_project/app/assets/stylesheets/subfolder/another_plain.css +3 -0
  200. data/test/fixtures/scss_project/app/assets/stylesheets/subfolder/plain.css +3 -0
  201. data/test/fixtures/scss_project/app/assets/stylesheets/subfolder/second_level.css.scss +2 -0
  202. data/test/fixtures/scss_project/app/controllers/application_controller.rb +3 -0
  203. data/test/fixtures/scss_project/app/helpers/application_helper.rb +2 -0
  204. data/test/fixtures/scss_project/app/mailers/.gitkeep +0 -0
  205. data/test/fixtures/scss_project/app/models/.gitkeep +0 -0
  206. data/test/fixtures/scss_project/app/views/layouts/application.html.erb +14 -0
  207. data/test/fixtures/scss_project/config.ru +4 -0
  208. data/test/fixtures/scss_project/config/application.rb +49 -0
  209. data/test/fixtures/scss_project/config/boot.rb +6 -0
  210. data/test/fixtures/scss_project/config/database.yml +25 -0
  211. data/test/fixtures/scss_project/config/environment.rb +5 -0
  212. data/test/fixtures/scss_project/config/environments/development.rb +23 -0
  213. data/test/fixtures/scss_project/config/environments/production.rb +53 -0
  214. data/test/fixtures/scss_project/config/environments/test.rb +38 -0
  215. data/test/fixtures/scss_project/config/initializers/backtrace_silencers.rb +7 -0
  216. data/test/fixtures/scss_project/config/initializers/inflections.rb +10 -0
  217. data/test/fixtures/scss_project/config/initializers/mime_types.rb +5 -0
  218. data/test/fixtures/scss_project/config/initializers/postprocessor.rb +3 -0
  219. data/test/fixtures/scss_project/config/initializers/secret_token.rb +7 -0
  220. data/test/fixtures/scss_project/config/initializers/session_store.rb +8 -0
  221. data/test/fixtures/scss_project/config/initializers/wrap_parameters.rb +12 -0
  222. data/test/fixtures/scss_project/config/locales/en.yml +5 -0
  223. data/test/fixtures/scss_project/config/routes.rb +58 -0
  224. data/test/fixtures/scss_project/db/seeds.rb +7 -0
  225. data/test/fixtures/scss_project/doc/README_FOR_APP +2 -0
  226. data/test/fixtures/scss_project/lib/tasks/.gitkeep +0 -0
  227. data/test/fixtures/scss_project/log/.gitkeep +0 -0
  228. data/test/fixtures/scss_project/public/404.html +26 -0
  229. data/test/fixtures/scss_project/public/422.html +26 -0
  230. data/test/fixtures/scss_project/public/500.html +26 -0
  231. data/test/fixtures/scss_project/public/favicon.ico +0 -0
  232. data/test/fixtures/scss_project/public/index.html +241 -0
  233. data/test/fixtures/scss_project/public/robots.txt +5 -0
  234. data/test/fixtures/scss_project/script/rails +6 -0
  235. data/test/fixtures/scss_project/vendor/assets/stylesheets/.gitkeep +0 -0
  236. data/test/fixtures/scss_project/vendor/plugins/.gitkeep +0 -0
  237. data/test/sass_rails_generators_test.rb +62 -0
  238. data/test/sass_rails_logger_test.rb +24 -0
  239. data/test/sass_rails_test.rb +116 -0
  240. data/test/support/sass_rails_test_case.rb +162 -0
  241. data/test/test_helper.rb +25 -0
  242. metadata +581 -0
@@ -0,0 +1,7 @@
1
+ .DS_Store
2
+ .idea/*
3
+ *.gem
4
+ .bundle
5
+ *.lock
6
+ pkg/*
7
+ .sass-cache
@@ -0,0 +1,22 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.3
4
+ - 2.0.0
5
+ - 2.1.0
6
+ gemfile:
7
+ - test/gemfiles/Gemfile-master
8
+ - Gemfile
9
+ before_install: gem install bundler
10
+ script: bundle exec rake test
11
+ notifications:
12
+ email: false
13
+ irc:
14
+ on_success: change
15
+ on_failure: always
16
+ channels:
17
+ - "irc.freenode.org#rails-contrib"
18
+ campfire:
19
+ on_success: change
20
+ on_failure: always
21
+ rooms:
22
+ - secure: "CGWvthGkBKNnTnk9YSmf9AXKoiRI33fCl5D3jU4nx3cOPu6kv2R9nMjt9EAo\nOuS4Q85qNSf4VNQ2cUPNiNYSWQ+XiTfivKvDUw/QW9r1FejYyeWarMsSBWA+\n0fADjF1M2dkDIVLgYPfwoXEv7l+j654F1KLKB69F0F/netwP9CQ="
@@ -0,0 +1,40 @@
1
+ # CHANGELOG
2
+
3
+ ## 4.0.1 (Oct 15, 2013)
4
+
5
+ * Remove Post Processors from asset evaluation.
6
+
7
+ ## 4.0.0 (Jun 25, 2013)
8
+
9
+ * Add support for importing ERB files.
10
+ * Remove `Sass::Rails::Compressor`. Use `Sprockets::SassCompressor` (`:sass` option) instead.
11
+ * Remove `tilt` dependency.
12
+ * Bump `sprockets-rails` to `2.0.0.rc4`.
13
+
14
+ ## 4.0.0.rc1 (Apr 18, 2013)
15
+
16
+ * No changes.
17
+
18
+ ## 4.0.0.beta1 (Feb 25, 2013)
19
+
20
+ * Remove `compress` option from `config.assets`. Instead, turn on
21
+ compression for all environments except development.
22
+ * Deprecate `asset_path` and `asset_url` with two arguments.
23
+ * Add Rails 4 support.
24
+ * Drop Ruby 1.8 support.
25
+
26
+ ## 3.1.5.rc.1 (Oct 16, 2011)
27
+
28
+ * Several bug fixes.
29
+ * Performance and bug fixes when compressing stylesheets.
30
+ * Update dependency to latest sass stable release to fix caching issues.
31
+
32
+ ## 3.1.2 (Sept 15, 2011)
33
+
34
+ * Add `asset-data-url` helper for base-64 encoding of assets within stylesheets.
35
+ * Add explicit dependency on sprockets.
36
+
37
+ ## 3.1.1 (Sept 13, 2011)
38
+
39
+ * Add explicit version dependency on tilt.
40
+ * Add MIT License.
data/Gemfile ADDED
@@ -0,0 +1,8 @@
1
+ source "https://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in sass-rails3.gemspec
4
+ gemspec
5
+
6
+ gem "rails"
7
+
8
+ gem "sqlite3"
@@ -0,0 +1,21 @@
1
+ Copyright (c) 2011 Christopher Eppstein
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
+
@@ -0,0 +1,98 @@
1
+ # Official Ruby-on-Rails Integration with Sass
2
+
3
+ This gem provides official integration for Ruby on Rails projects with the Sass stylesheet language.
4
+
5
+ ## Installing
6
+
7
+ Since Rails 3.1, new Rails projects will be already configured to use Sass. If you are upgrading to Rails 3.1 you will need to add the following to your Gemfile:
8
+
9
+ gem 'sass-rails3'
10
+
11
+ ## Configuration
12
+
13
+ To configure Sass via Rails set use `config.sass` in your
14
+ application and/or environment files to set configuration
15
+ properties that will be passed to Sass.
16
+
17
+ ### Options
18
+
19
+ The [list of supported options](http://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#options)
20
+ can be found on the Sass Website with the following caveats:
21
+
22
+ 1. `:style` - This option is not supported. This is determined by the Rails environment. It's `:expanded` only on development, otherwise it's `:compressed`.
23
+ 2. `:never_update` - This option is not supported. Instead set `config.assets.enabled = false`
24
+ 3. `:always_update` - This option is not supported. Sprockets uses a controller to access stylesheets in development mode instead of a full scan for changed files.
25
+ 4. `:always_check` - This option is not supported. Sprockets always checks in development.
26
+ 5. `:syntax` - This is determined by the file's extensions.
27
+ 6. `:filename` - This is determined by the file's name.
28
+ 7. `:line` - This is provided by the template handler.
29
+
30
+ ### Example
31
+
32
+ MyProject::Application.configure do
33
+ config.sass.line_comments = false
34
+ config.sass.cache = false
35
+ end
36
+
37
+ ## Important Note
38
+
39
+ Sprockets provides some directives that are placed inside of comments called `require`, `require_tree`, and
40
+ `require_self`. **<span style="color:#c00">DO NOT USE THEM IN YOUR SASS/SCSS FILES.</span>** They are very
41
+ primitive and do not work well with Sass files. Instead, use Sass's native `@import` directive which
42
+ `sass-rails3` has customized to integrate with the conventions of your Rails projects.
43
+
44
+ ## Features
45
+
46
+ ### Glob Imports
47
+
48
+ When in Rails, there is a special import syntax that allows you to
49
+ glob imports relative to the folder of the stylesheet that is doing the importing.
50
+
51
+ * `@import "mixins/*"` will import all the files in the mixins folder
52
+ * `@import "mixins/**/*"` will import all the files in the mixins tree
53
+
54
+ Any valid ruby glob may be used. The imports are sorted alphabetically.
55
+
56
+ **NOTE:** It is recommended that you only use this when importing pure library
57
+ files (containing mixins and variables) because it is difficult to control the
58
+ cascade ordering for imports that contain styles using this approach.
59
+
60
+ ### Asset Helpers
61
+ When using the asset pipeline, paths to assets must be rewritten.
62
+ When referencing assets use the following asset helpers (underscored in Ruby, hyphenated
63
+ in Sass):
64
+
65
+ #### `asset-path($relative-asset-path)`
66
+ Returns a string to the asset.
67
+
68
+ * `asset-path("rails.png")` becomes `"/assets/rails.png"`
69
+
70
+ #### `asset-url($relative-asset-path)`
71
+ Returns a url reference to the asset.
72
+
73
+ * `asset-url("rails.png")` becomes `url(/assets/rails.png)`
74
+
75
+ As a convenience, for each of the following asset classes there are
76
+ corresponding `-path` and `-url` helpers:
77
+ image, font, video, audio, javascript, stylesheet.
78
+
79
+ * `image-path("rails.png")` becomes `"/assets/rails.png"`
80
+ * `image-url("rails.png")` becomes `url(/assets/rails.png)`
81
+
82
+ #### `asset-data-url($relative-asset-path)`
83
+ Returns a url reference to the Base64-encoded asset at the specified path.
84
+
85
+ * `asset-data-url("rails.png")` becomes `url(data:image/png;base64,iVBORw0K...)`
86
+
87
+ ## Running Tests
88
+
89
+ $ bundle install
90
+ $ bundle exec rake test
91
+
92
+ If you need to test against local gems, use Bundler's gem :path option in the Gemfile and also edit `test/support/test_helper.rb` and tell the tests where the gem is checked out.
93
+
94
+ ## Code Status
95
+
96
+ * [![Travis CI](https://api.travis-ci.org/rails/sass-rails.png)](http://travis-ci.org/rails/sass-rails3)
97
+ * [![Gem Version](https://badge.fury.io/rb/sass-rails.png)](http://badge.fury.io/rb/sass-rails3)
98
+ * [![Dependencies](https://gemnasium.com/rails/sass-rails.png)](https://gemnasium.com/rails/sass-rails3)
@@ -0,0 +1,29 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
3
+
4
+ require 'rake/testtask'
5
+
6
+ Rake::TestTask.new(:test) do |t|
7
+ t.libs << 'lib'
8
+ t.libs << 'test'
9
+ t.pattern = 'test/**/*_test.rb'
10
+ t.verbose = false
11
+ end
12
+
13
+ desc 'Default: run unit tests.'
14
+ task default: :test
15
+
16
+ specname = "sass-rails3.gemspec"
17
+ deps = `git ls-files`.split("\n") - [specname]
18
+
19
+ file specname => deps do
20
+ files = `git ls-files`.split("\n")
21
+ test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
22
+ executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
23
+
24
+ require 'erb'
25
+
26
+ File.open specname, 'w:utf-8' do |f|
27
+ f.write ERB.new(File.read("#{specname}.erb")).result(binding)
28
+ end
29
+ end
@@ -0,0 +1,13 @@
1
+ require "rails/generators/named_base"
2
+
3
+ module Sass
4
+ module Generators
5
+ class AssetsGenerator < ::Rails::Generators::NamedBase
6
+ source_root File.expand_path("../templates", __FILE__)
7
+
8
+ def copy_sass
9
+ template "stylesheet.css.sass", File.join('app/assets/stylesheets', class_path, "#{file_name}.css.sass")
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,3 @@
1
+ // Place all the styles related to the <%= name %> controller here.
2
+ // They will automatically be included in application.css.
3
+ // You can use Sass here: http://sass-lang.com/
@@ -0,0 +1,9 @@
1
+ require "rails/generators/sass_scaffold"
2
+
3
+ module Sass
4
+ module Generators
5
+ class ScaffoldGenerator < ::Sass::Generators::ScaffoldBase
6
+ def syntax() :sass end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,16 @@
1
+ require "sass/css"
2
+ require "rails/generators/named_base"
3
+
4
+ module Sass
5
+ module Generators
6
+ class ScaffoldBase < ::Rails::Generators::NamedBase
7
+ def copy_stylesheet
8
+ dir = ::Rails::Generators::ScaffoldGenerator.source_root
9
+ file = File.join(dir, "scaffold.css")
10
+ converted_contents = ::Sass::CSS.new(File.read(file)).render(syntax)
11
+ create_file "app/assets/stylesheets/scaffolds.css.#{syntax}", converted_contents
12
+ end
13
+ end
14
+ end
15
+ end
16
+
@@ -0,0 +1,13 @@
1
+ require "rails/generators/named_base"
2
+
3
+ module Scss
4
+ module Generators
5
+ class AssetsGenerator < ::Rails::Generators::NamedBase
6
+ source_root File.expand_path("../templates", __FILE__)
7
+
8
+ def copy_scss
9
+ template "stylesheet.css.scss", File.join('app/assets/stylesheets', class_path, "#{file_name}.css.scss")
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,3 @@
1
+ // Place all the styles related to the <%= name %> controller here.
2
+ // They will automatically be included in application.css.
3
+ // You can use Sass (SCSS) here: http://sass-lang.com/
@@ -0,0 +1,10 @@
1
+ require "rails/generators/sass_scaffold"
2
+
3
+ module Scss
4
+ module Generators
5
+ class ScaffoldGenerator < ::Sass::Generators::ScaffoldBase
6
+ def syntax() :scss end
7
+ end
8
+ end
9
+ end
10
+
@@ -0,0 +1 @@
1
+ require 'sass/rails'
@@ -0,0 +1,10 @@
1
+ module Sass
2
+ module Rails
3
+ autoload :Logger, 'sass/rails/logger'
4
+ end
5
+ end
6
+
7
+ require 'sass/rails/version'
8
+ require 'sass/rails/helpers'
9
+ require 'sass/rails/importer'
10
+ require 'sass/rails/railtie'
@@ -0,0 +1,30 @@
1
+ require 'sprockets/sass_functions'
2
+ require 'active_support/deprecation'
3
+
4
+ module Sprockets
5
+ module SassFunctions
6
+ if instance_methods.map(&:to_sym).include?(:asset_path)
7
+ undef_method :asset_path
8
+ end
9
+
10
+ def asset_path(path, kind = nil)
11
+ ActiveSupport::Deprecation.warn "asset_path with two arguments is deprecated. Use asset_path(#{path}) instead." if kind
12
+
13
+ Sass::Script::String.new(sprockets_context.asset_path(path.value), :string)
14
+ end
15
+
16
+ if instance_methods.map(&:to_sym).include?(:asset_url)
17
+ undef_method :asset_url
18
+ end
19
+
20
+ def asset_url(path, kind = nil)
21
+ ActiveSupport::Deprecation.warn "asset_url with two arguments is deprecated. Use asset_url(#{path}) instead." if kind
22
+
23
+ Sass::Script::String.new("url(" + sprockets_context.asset_path(path.value) + ")")
24
+ end
25
+
26
+ def asset_data_url(path)
27
+ Sass::Script::String.new("url(" + sprockets_context.asset_data_uri(path.value) + ")")
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,91 @@
1
+ require 'sprockets/sass_importer'
2
+
3
+ module Sprockets
4
+ class SassImporter < Sass::Importers::Filesystem
5
+ GLOB = /\*|\[.+\]/
6
+
7
+ attr_reader :context
8
+ private :context
9
+
10
+ def extensions
11
+ {
12
+ 'css' => :scss,
13
+ 'css.scss' => :scss,
14
+ 'css.sass' => :sass,
15
+ 'css.erb' => :scss,
16
+ 'scss.erb' => :scss,
17
+ 'sass.erb' => :sass,
18
+ 'css.scss.erb' => :scss,
19
+ 'css.sass.erb' => :sass
20
+ }.merge!(super)
21
+ end
22
+
23
+ def find_relative(name, base, options)
24
+ if name =~ GLOB
25
+ glob_imports(name, Pathname.new(base), options)
26
+ else
27
+ engine_from_path(name, File.dirname(base), options)
28
+ end
29
+ end
30
+
31
+ def find(name, options)
32
+ if name =~ GLOB
33
+ nil # globs must be relative
34
+ else
35
+ engine_from_path(name, root, options)
36
+ end
37
+ end
38
+
39
+ def each_globbed_file(glob, base_pathname, options)
40
+ Dir["#{base_pathname}/#{glob}"].sort.each do |filename|
41
+ next if filename == options[:filename]
42
+ yield filename if File.directory?(filename) || context.asset_requirable?(filename)
43
+ end
44
+ end
45
+
46
+ def glob_imports(glob, base_pathname, options)
47
+ contents = ""
48
+ each_globbed_file(glob, base_pathname.dirname, options) do |filename|
49
+ if File.directory?(filename)
50
+ context.depend_on(filename)
51
+ elsif context.asset_requirable?(filename)
52
+ context.depend_on(filename)
53
+ contents << "@import #{Pathname.new(filename).relative_path_from(base_pathname.dirname).to_s.inspect};\n"
54
+ end
55
+ end
56
+ return nil if contents.empty?
57
+ Sass::Engine.new(contents, options.merge(
58
+ :filename => base_pathname.to_s,
59
+ :importer => self,
60
+ :syntax => :scss
61
+ ))
62
+ end
63
+
64
+ private
65
+
66
+ def engine_from_path(name, dir, options)
67
+ full_filename, syntax = Sass::Util.destructure(find_real_file(dir, name, options))
68
+ return unless full_filename && File.readable?(full_filename)
69
+
70
+ engine = Sass::Engine.new(evaluate(full_filename), options.merge(
71
+ syntax: syntax,
72
+ filename: full_filename,
73
+ importer: self
74
+ ))
75
+
76
+ if engine && (filename = engine.options[:filename])
77
+ @context.depend_on(filename)
78
+ end
79
+
80
+ engine
81
+ end
82
+
83
+ def evaluate(filename)
84
+ attributes = context.environment.attributes_for(filename)
85
+ processors = context.environment.preprocessors(attributes.content_type) +
86
+ attributes.engines.reverse - [Sprockets::ScssTemplate, Sprockets::SassTemplate]
87
+
88
+ context.evaluate(filename, processors: processors)
89
+ end
90
+ end
91
+ end