oreorenasass 3.4.4 → 3.4.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (176) hide show
  1. checksums.yaml +4 -4
  2. data/MIT-LICENSE +1 -1
  3. data/README.md +50 -70
  4. data/Rakefile +5 -26
  5. data/VERSION +1 -1
  6. data/VERSION_NAME +1 -1
  7. data/bin/sass +1 -1
  8. data/bin/scss +1 -1
  9. data/lib/sass.rb +12 -19
  10. data/lib/sass/cache_stores/base.rb +2 -2
  11. data/lib/sass/cache_stores/chain.rb +1 -2
  12. data/lib/sass/cache_stores/filesystem.rb +5 -1
  13. data/lib/sass/cache_stores/memory.rb +1 -1
  14. data/lib/sass/cache_stores/null.rb +2 -2
  15. data/lib/sass/callbacks.rb +0 -1
  16. data/lib/sass/css.rb +13 -11
  17. data/lib/sass/engine.rb +173 -424
  18. data/lib/sass/environment.rb +58 -148
  19. data/lib/sass/error.rb +14 -11
  20. data/lib/sass/exec.rb +703 -5
  21. data/lib/sass/importers/base.rb +6 -49
  22. data/lib/sass/importers/filesystem.rb +19 -44
  23. data/lib/sass/logger.rb +4 -1
  24. data/lib/sass/logger/base.rb +4 -2
  25. data/lib/sass/logger/log_level.rb +7 -3
  26. data/lib/sass/media.rb +23 -20
  27. data/lib/sass/plugin.rb +7 -7
  28. data/lib/sass/plugin/compiler.rb +145 -304
  29. data/lib/sass/plugin/configuration.rb +23 -18
  30. data/lib/sass/plugin/merb.rb +1 -1
  31. data/lib/sass/plugin/staleness_checker.rb +3 -3
  32. data/lib/sass/repl.rb +3 -3
  33. data/lib/sass/script.rb +8 -35
  34. data/lib/sass/script/{value/arg_list.rb → arg_list.rb} +25 -9
  35. data/lib/sass/script/bool.rb +18 -0
  36. data/lib/sass/script/color.rb +606 -0
  37. data/lib/sass/script/css_lexer.rb +4 -8
  38. data/lib/sass/script/css_parser.rb +2 -5
  39. data/lib/sass/script/funcall.rb +245 -0
  40. data/lib/sass/script/functions.rb +408 -1491
  41. data/lib/sass/script/interpolation.rb +79 -0
  42. data/lib/sass/script/lexer.rb +68 -172
  43. data/lib/sass/script/list.rb +85 -0
  44. data/lib/sass/script/literal.rb +221 -0
  45. data/lib/sass/script/{tree/node.rb → node.rb} +12 -22
  46. data/lib/sass/script/{value/null.rb → null.rb} +7 -14
  47. data/lib/sass/script/{value/number.rb → number.rb} +75 -152
  48. data/lib/sass/script/{tree/operation.rb → operation.rb} +24 -17
  49. data/lib/sass/script/parser.rb +110 -245
  50. data/lib/sass/script/string.rb +51 -0
  51. data/lib/sass/script/{tree/string_interpolation.rb → string_interpolation.rb} +4 -5
  52. data/lib/sass/script/{tree/unary_operation.rb → unary_operation.rb} +6 -6
  53. data/lib/sass/script/variable.rb +58 -0
  54. data/lib/sass/scss/css_parser.rb +3 -9
  55. data/lib/sass/scss/parser.rb +421 -450
  56. data/lib/sass/scss/rx.rb +11 -19
  57. data/lib/sass/scss/static_parser.rb +7 -321
  58. data/lib/sass/selector.rb +194 -68
  59. data/lib/sass/selector/abstract_sequence.rb +14 -29
  60. data/lib/sass/selector/comma_sequence.rb +25 -108
  61. data/lib/sass/selector/sequence.rb +66 -159
  62. data/lib/sass/selector/simple.rb +25 -23
  63. data/lib/sass/selector/simple_sequence.rb +63 -173
  64. data/lib/sass/shared.rb +1 -1
  65. data/lib/sass/supports.rb +15 -13
  66. data/lib/sass/tree/charset_node.rb +1 -1
  67. data/lib/sass/tree/comment_node.rb +3 -3
  68. data/lib/sass/tree/css_import_node.rb +11 -11
  69. data/lib/sass/tree/debug_node.rb +2 -2
  70. data/lib/sass/tree/directive_node.rb +4 -21
  71. data/lib/sass/tree/each_node.rb +8 -8
  72. data/lib/sass/tree/extend_node.rb +7 -14
  73. data/lib/sass/tree/for_node.rb +4 -4
  74. data/lib/sass/tree/function_node.rb +4 -9
  75. data/lib/sass/tree/if_node.rb +1 -1
  76. data/lib/sass/tree/import_node.rb +5 -4
  77. data/lib/sass/tree/media_node.rb +14 -4
  78. data/lib/sass/tree/mixin_def_node.rb +4 -4
  79. data/lib/sass/tree/mixin_node.rb +8 -21
  80. data/lib/sass/tree/node.rb +12 -54
  81. data/lib/sass/tree/prop_node.rb +20 -39
  82. data/lib/sass/tree/return_node.rb +2 -3
  83. data/lib/sass/tree/root_node.rb +3 -19
  84. data/lib/sass/tree/rule_node.rb +22 -35
  85. data/lib/sass/tree/supports_node.rb +13 -0
  86. data/lib/sass/tree/trace_node.rb +1 -2
  87. data/lib/sass/tree/variable_node.rb +3 -9
  88. data/lib/sass/tree/visitors/base.rb +8 -5
  89. data/lib/sass/tree/visitors/check_nesting.rb +19 -49
  90. data/lib/sass/tree/visitors/convert.rb +56 -74
  91. data/lib/sass/tree/visitors/cssize.rb +74 -202
  92. data/lib/sass/tree/visitors/deep_copy.rb +5 -10
  93. data/lib/sass/tree/visitors/extend.rb +7 -7
  94. data/lib/sass/tree/visitors/perform.rb +185 -278
  95. data/lib/sass/tree/visitors/set_options.rb +6 -20
  96. data/lib/sass/tree/visitors/to_css.rb +81 -234
  97. data/lib/sass/tree/warn_node.rb +2 -2
  98. data/lib/sass/tree/while_node.rb +2 -2
  99. data/lib/sass/util.rb +152 -522
  100. data/lib/sass/util/multibyte_string_scanner.rb +0 -2
  101. data/lib/sass/util/subset_map.rb +3 -4
  102. data/lib/sass/util/test.rb +1 -0
  103. data/lib/sass/version.rb +22 -20
  104. data/test/Gemfile +3 -0
  105. data/test/Gemfile.lock +10 -0
  106. data/test/sass/cache_test.rb +20 -62
  107. data/test/sass/callbacks_test.rb +1 -1
  108. data/test/sass/conversion_test.rb +2 -296
  109. data/test/sass/css2sass_test.rb +4 -23
  110. data/test/sass/engine_test.rb +354 -411
  111. data/test/sass/exec_test.rb +2 -2
  112. data/test/sass/extend_test.rb +145 -324
  113. data/test/sass/functions_test.rb +86 -873
  114. data/test/sass/importer_test.rb +21 -241
  115. data/test/sass/logger_test.rb +1 -1
  116. data/test/sass/more_results/more_import.css +1 -1
  117. data/test/sass/plugin_test.rb +26 -16
  118. data/test/sass/results/compact.css +1 -1
  119. data/test/sass/results/complex.css +4 -4
  120. data/test/sass/results/expanded.css +1 -1
  121. data/test/sass/results/import.css +1 -1
  122. data/test/sass/results/import_charset_ibm866.css +2 -2
  123. data/test/sass/results/mixins.css +17 -17
  124. data/test/sass/results/nested.css +1 -1
  125. data/test/sass/results/parent_ref.css +2 -2
  126. data/test/sass/results/script.css +3 -3
  127. data/test/sass/results/scss_import.css +1 -1
  128. data/test/sass/script_conversion_test.rb +7 -36
  129. data/test/sass/script_test.rb +53 -485
  130. data/test/sass/scss/css_test.rb +28 -143
  131. data/test/sass/scss/rx_test.rb +4 -4
  132. data/test/sass/scss/scss_test.rb +325 -2119
  133. data/test/sass/templates/scss_import.scss +1 -2
  134. data/test/sass/test_helper.rb +1 -1
  135. data/test/sass/util/multibyte_string_scanner_test.rb +1 -1
  136. data/test/sass/util/subset_map_test.rb +2 -2
  137. data/test/sass/util_test.rb +1 -86
  138. data/test/test_helper.rb +8 -37
  139. metadata +19 -66
  140. data/lib/sass/exec/base.rb +0 -187
  141. data/lib/sass/exec/sass_convert.rb +0 -264
  142. data/lib/sass/exec/sass_scss.rb +0 -424
  143. data/lib/sass/features.rb +0 -47
  144. data/lib/sass/script/tree.rb +0 -16
  145. data/lib/sass/script/tree/funcall.rb +0 -306
  146. data/lib/sass/script/tree/interpolation.rb +0 -118
  147. data/lib/sass/script/tree/list_literal.rb +0 -77
  148. data/lib/sass/script/tree/literal.rb +0 -45
  149. data/lib/sass/script/tree/map_literal.rb +0 -64
  150. data/lib/sass/script/tree/selector.rb +0 -26
  151. data/lib/sass/script/tree/variable.rb +0 -57
  152. data/lib/sass/script/value.rb +0 -11
  153. data/lib/sass/script/value/base.rb +0 -240
  154. data/lib/sass/script/value/bool.rb +0 -35
  155. data/lib/sass/script/value/color.rb +0 -680
  156. data/lib/sass/script/value/helpers.rb +0 -262
  157. data/lib/sass/script/value/list.rb +0 -113
  158. data/lib/sass/script/value/map.rb +0 -70
  159. data/lib/sass/script/value/string.rb +0 -97
  160. data/lib/sass/selector/pseudo.rb +0 -256
  161. data/lib/sass/source/map.rb +0 -210
  162. data/lib/sass/source/position.rb +0 -39
  163. data/lib/sass/source/range.rb +0 -41
  164. data/lib/sass/stack.rb +0 -120
  165. data/lib/sass/tree/at_root_node.rb +0 -83
  166. data/lib/sass/tree/error_node.rb +0 -18
  167. data/lib/sass/tree/keyframe_rule_node.rb +0 -15
  168. data/lib/sass/util/cross_platform_random.rb +0 -19
  169. data/lib/sass/util/normalized_map.rb +0 -130
  170. data/lib/sass/util/ordered_hash.rb +0 -192
  171. data/test/sass/compiler_test.rb +0 -232
  172. data/test/sass/encoding_test.rb +0 -219
  173. data/test/sass/source_map_test.rb +0 -977
  174. data/test/sass/superselector_test.rb +0 -191
  175. data/test/sass/util/normalized_map_test.rb +0 -51
  176. data/test/sass/value_helpers_test.rb +0 -179
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9d1865fa667cb14d3bbc87ec02219cbcd37b6d1d
4
- data.tar.gz: 0d2f8bed1b90cf39dd4a0fd54382c26dfc88d8fa
3
+ metadata.gz: 43d86ae65ada6b57dc4199e4f9549b229d948a97
4
+ data.tar.gz: 0d4ae59a191fae5b3bdab842b98daeec19aaa4ac
5
5
  SHA512:
6
- metadata.gz: b9bbb09ee8ea0633335e74605fcbba2a2ef70e3dca07a2bf5c87334d5dbea1707fe3fd5a619de877874260ba814ad8e0cb29fba33b894e3cea2ace004f2561e4
7
- data.tar.gz: 409ec2fa3a515cdabf5951517104c9a54bba1d4f99f3336a341d05d4e26495ea4ba818801971f5036d9344bc4e2a8ef1c946dc104c6375d03f139068a84dda32
6
+ metadata.gz: 77f6e678d9ccec64f3f78ed65e0b5d740ab729b65f4cdd375a49f998e147c9481dcf0c5e92a47f174ff6d2e800937b236cf6a627e0277b0cde92c0ce92664ac1
7
+ data.tar.gz: ae21995c6b87813c4ed406e984daecbf0d6043c38c98089e0761b4a67d0fef884ddbde627f71ad614685d9196bfce6ea9b6a265e0121f3325797defa09f89c7b
data/MIT-LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2006-2014 Hampton Catlin, Natalie Weizenbaum, and Chris Eppstein
1
+ Copyright (c) 2006-2013 Hampton Catlin, Nathan Weizenbaum, and Chris Eppstein
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -49,10 +49,8 @@ see [the Sass reference](http://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.ht
49
49
  Sass can also be used with any Rack-enabled web framework.
50
50
  To do so, just add
51
51
 
52
- ```ruby
53
- require 'sass/plugin/rack'
54
- use Sass::Plugin::Rack
55
- ```
52
+ require 'sass/plugin/rack'
53
+ use Sass::Plugin::Rack
56
54
 
57
55
  to `config.ru`.
58
56
  Then any Sass files in `public/stylesheets/sass`
@@ -95,20 +93,18 @@ put them in a file called `test.scss` and run `sass test.scss`.
95
93
  Sass avoids repetition by nesting selectors within one another.
96
94
  The same thing works for properties.
97
95
 
98
- ```scss
99
- table.hl {
100
- margin: 2em 0;
101
- td.ln { text-align: right; }
102
- }
103
-
104
- li {
105
- font: {
106
- family: serif;
107
- weight: bold;
108
- size: 1.2em;
109
- }
110
- }
111
- ```
96
+ table.hl {
97
+ margin: 2em 0;
98
+ td.ln { text-align: right; }
99
+ }
100
+
101
+ li {
102
+ font: {
103
+ family: serif;
104
+ weight: bold;
105
+ size: 1.2em;
106
+ }
107
+ }
112
108
 
113
109
  ### Variables
114
110
 
@@ -116,21 +112,19 @@ Use the same color all over the place?
116
112
  Need to do some math with height and width and text size?
117
113
  Sass supports variables, math operations, and many useful functions.
118
114
 
119
- ```scss
120
- $blue: #3bbfce;
121
- $margin: 16px;
115
+ $blue: #3bbfce;
116
+ $margin: 16px;
122
117
 
123
- .content_navigation {
124
- border-color: $blue;
125
- color: darken($blue, 10%);
126
- }
118
+ .content_navigation {
119
+ border-color: $blue;
120
+ color: darken($blue, 10%);
121
+ }
127
122
 
128
- .border {
129
- padding: $margin / 2;
130
- margin: $margin / 2;
131
- border-color: $blue;
132
- }
133
- ```
123
+ .border {
124
+ padding: $margin / 2;
125
+ margin: $margin / 2;
126
+ border-color: $blue;
127
+ }
134
128
 
135
129
  ### Mixins
136
130
 
@@ -139,25 +133,23 @@ mixins allow you to re-use whole chunks of CSS,
139
133
  properties or selectors.
140
134
  You can even give them arguments.
141
135
 
142
- ```scss
143
- @mixin table-scaffolding {
144
- th {
145
- text-align: center;
146
- font-weight: bold;
147
- }
148
- td, th { padding: 2px; }
149
- }
150
-
151
- @mixin left($dist) {
152
- float: left;
153
- margin-left: $dist;
154
- }
155
-
156
- #data {
157
- @include left(10px);
158
- @include table-scaffolding;
159
- }
160
- ```
136
+ @mixin table-scaffolding {
137
+ th {
138
+ text-align: center;
139
+ font-weight: bold;
140
+ }
141
+ td, th { padding: 2px; }
142
+ }
143
+
144
+ @mixin left($dist) {
145
+ float: left;
146
+ margin-left: $dist;
147
+ }
148
+
149
+ #data {
150
+ @include left(10px);
151
+ @include table-scaffolding;
152
+ }
161
153
 
162
154
  A comprehensive list of features is available
163
155
  in the [Sass reference](http://sass-lang.com/documentation/file.SASS_REFERENCE.html).
@@ -179,18 +171,6 @@ When converting from CSS to Sass or SCSS,
179
171
  nesting is applied where appropriate.
180
172
  See `sass-convert --help` for further information and options.
181
173
 
182
- ### Running locally
183
-
184
- To run the Sass executables from a source checkout instead of from rubygems:
185
-
186
- ```
187
- $ cd <SASS_CHECKOUT_DIRECTORY>
188
- $ bundle
189
- $ bundle exec sass ...
190
- $ bundle exec scss ...
191
- $ bundle exec sass-convert ...
192
- ```
193
-
194
174
  ## Authors
195
175
 
196
176
  Sass was envisioned by [Hampton Catlin](http://www.hamptoncatlin.com)
@@ -199,23 +179,23 @@ and now occasionally consults on the language issues. Hampton lives in San
199
179
  Francisco, California and works as VP of Technology
200
180
  at [Moovweb](http://www.moovweb.com/).
201
181
 
202
- [Natalie Weizenbaum](http://nex-3.com) is the primary developer and architect of
203
- Sass. Her hard work has kept the project alive by endlessly answering forum
182
+ [Nathan Weizenbaum](http://nex-3.com) is the primary developer and architect of
183
+ Sass. His hard work has kept the project alive by endlessly answering forum
204
184
  posts, fixing bugs, refactoring, finding speed improvements, writing
205
185
  documentation, implementing new features, and getting Hampton coffee (a fitting
206
- task for a girl genius). Natalie lives in Seattle, Washington and works on
186
+ task for a boy-genius). Nathan lives in Seattle, Washington and works on
207
187
  [Dart](http://dartlang.org) application libraries at Google.
208
188
 
209
189
  [Chris Eppstein](http://acts-as-architect.blogspot.com) is a core contributor to
210
190
  Sass and the creator of Compass, the first Sass-based framework. Chris focuses
211
191
  on making Sass more powerful, easy to use, and on ways to speed its adoption
212
192
  through the web development community. Chris lives in San Jose, California with
213
- his wife and daughter. He is an Engineer for
214
- [LinkedIn.com](http://linkedin.com), where one of his responsibilities is to
215
- maintain Sass & Compass.
193
+ his wife and daughter. He is the Software Architect for
194
+ [Caring.com](http://caring.com), a website devoted to the 34 Million caregivers
195
+ whose parents are sick or elderly, that uses Haml and Sass.
216
196
 
217
- If you use this software, you must pay Hampton a compliment. And buy Natalie
218
- some candy. Maybe pet a kitten. Yeah. Pet that kitty.
197
+ If you use this software, you must pay Hampton a compliment. And
198
+ buy Nathan some jelly beans. Maybe pet a kitten. Yeah. Pet that kitty.
219
199
 
220
200
  Beyond that, the implementation is licensed under the MIT License.
221
201
  Okay, fine, I guess that means compliments aren't __required__.
data/Rakefile CHANGED
@@ -21,25 +21,6 @@ Rake::TestTask.new do |t|
21
21
  t.verbose = true
22
22
  end
23
23
 
24
- # ----- Code Style Enforcement -----
25
-
26
- if RUBY_VERSION !~ /^(1\.8)/ && (ENV.has_key?("RUBOCOP") && ENV["RUBOCOP"] == "true" || !(ENV.has_key?("RUBOCOP") || ENV.has_key?("TEST")))
27
- require 'rubocop/rake_task'
28
- Rubocop::RakeTask.new do |t|
29
- t.patterns = FileList["lib/**/*"]
30
- end
31
- else
32
- task :rubocop do
33
- puts "Skipping rubocop style check."
34
- if !ENV.has_key?("RUBOCOP")
35
- puts "Passing this check is required in order for your patch to be accepted."
36
- puts "Use ruby 1.9 or greater and then run the style check with: rake rubocop"
37
- end
38
- end
39
- end
40
-
41
- task :test => :rubocop
42
-
43
24
  # ----- Packaging -----
44
25
 
45
26
  # Don't use Rake::GemPackageTast because we want prerequisites to run
@@ -102,10 +83,12 @@ task :install => [:package] do
102
83
  sh %{#{'sudo ' if ENV["SUDO"]}#{gem} install --no-ri pkg/sass-#{get_version}}
103
84
  end
104
85
 
105
- desc "Release a new Sass package to RubyGems.org."
86
+ desc "Release a new Sass package to Rubyforge."
106
87
  task :release => [:check_release, :package] do
107
88
  name = File.read(scope("VERSION_NAME")).strip
108
89
  version = File.read(scope("VERSION")).strip
90
+ # sh %{rubyforge add_release sass sass "#{name} (v#{version})" pkg/sass-#{version}.gem}
91
+ # sh %{rubyforge add_file sass sass "#{name} (v#{version})" pkg/sass-#{version}.tar.gz}
109
92
  sh %{gem push pkg/sass-#{version}.gem}
110
93
  end
111
94
 
@@ -159,11 +142,7 @@ task :release_edge do
159
142
  sh %{git reset --hard origin/master}
160
143
  sh %{rake package}
161
144
  version = get_version
162
- if version.include?('.rc.')
163
- puts "#{'=' * 20} Not releasing edge gem for RC version"
164
- next
165
- end
166
-
145
+ # sh %{rubyforge add_release sass sass "Bleeding Edge (v#{version})" pkg/sass-#{version}.gem}
167
146
  sh %{gem push pkg/sass-#{version}.gem}
168
147
  end
169
148
  end
@@ -214,7 +193,7 @@ begin
214
193
  task :undocumented do
215
194
  opts = ENV["YARD_OPTS"] || ""
216
195
  ENV["YARD_OPTS"] = opts.dup + <<OPTS
217
- --list --tag comment --hide-tag comment --query "
196
+ --list --query "
218
197
  object.docstring.blank? &&
219
198
  !(object.type == :method && object.is_alias?)"
220
199
  OPTS
data/VERSION CHANGED
@@ -1 +1 @@
1
- 3.4.4
1
+ 3.4.5
data/VERSION_NAME CHANGED
@@ -1 +1 @@
1
- Selective Steve
1
+ Media Mark
data/bin/sass CHANGED
@@ -9,5 +9,5 @@ rescue LoadError
9
9
  end
10
10
  require 'sass/exec'
11
11
 
12
- opts = Sass::Exec::SassScss.new(ARGV, :sass)
12
+ opts = Sass::Exec::Sass.new(ARGV)
13
13
  opts.parse!
data/bin/scss CHANGED
@@ -9,5 +9,5 @@ rescue LoadError
9
9
  end
10
10
  require 'sass/exec'
11
11
 
12
- opts = Sass::Exec::SassScss.new(ARGV, :scss)
12
+ opts = Sass::Exec::Scss.new(ARGV)
13
13
  opts.parse!
data/lib/sass.rb CHANGED
@@ -1,6 +1,11 @@
1
1
  dir = File.dirname(__FILE__)
2
2
  $LOAD_PATH.unshift dir unless $LOAD_PATH.include?(dir)
3
3
 
4
+ # This is necessary to set so that the Haml code that tries to load Sass
5
+ # knows that Sass is indeed loading,
6
+ # even if there's some crazy autoload stuff going on.
7
+ SASS_BEGUN_TO_LOAD = true unless defined?(SASS_BEGUN_TO_LOAD)
8
+
4
9
  require 'sass/version'
5
10
 
6
11
  # The module that contains everything Sass-related:
@@ -12,14 +17,9 @@ require 'sass/version'
12
17
  #
13
18
  # Also see the {file:SASS_REFERENCE.md full Sass reference}.
14
19
  module Sass
15
- class << self
16
- # @private
17
- attr_accessor :tests_running
18
- end
19
-
20
20
  # The global load paths for Sass files. This is meant for plugins and
21
21
  # libraries to register the paths to their Sass stylesheets to that they may
22
- # be `@imported`. This load path is used by every instance of {Sass::Engine}.
22
+ # be `@imported`. This load path is used by every instance of [Sass::Engine].
23
23
  # They are lower-precedence than any load paths passed in via the
24
24
  # {file:SASS_REFERENCE.md#load_paths-option `:load_paths` option}.
25
25
  #
@@ -35,11 +35,8 @@ module Sass
35
35
  # Sass.load_paths << File.dirname(__FILE__ + '/sass')
36
36
  # @return [Array<String, Pathname, Sass::Importers::Base>]
37
37
  def self.load_paths
38
- @load_paths ||= if ENV['SASS_PATH']
39
- ENV['SASS_PATH'].split(Sass::Util.windows? ? ';' : ':')
40
- else
41
- []
42
- end
38
+ @load_paths ||= ENV['SASS_PATH'] ?
39
+ ENV['SASS_PATH'].split(Sass::Util.windows? ? ';' : ':') : []
43
40
  end
44
41
 
45
42
  # Compile a Sass or SCSS string to CSS.
@@ -59,6 +56,9 @@ module Sass
59
56
 
60
57
  # Compile a file on disk to CSS.
61
58
  #
59
+ # @param filename [String] The path to the Sass, SCSS, or CSS file on disk.
60
+ # @param options [{Symbol => Object}] An options hash;
61
+ # see {file:SASS_REFERENCE.md#sass_options the Sass options documentation}
62
62
  # @raise [Sass::SyntaxError] if there's an error in the document
63
63
  # @raise [Encoding::UndefinedConversionError] if the source encoding
64
64
  # cannot be converted to UTF-8
@@ -67,17 +67,11 @@ module Sass
67
67
  # @overload compile_file(filename, options = {})
68
68
  # Return the compiled CSS rather than writing it to a file.
69
69
  #
70
- # @param filename [String] The path to the Sass, SCSS, or CSS file on disk.
71
- # @param options [{Symbol => Object}] An options hash;
72
- # see {file:SASS_REFERENCE.md#sass_options the Sass options documentation}
73
70
  # @return [String] The compiled CSS.
74
71
  #
75
72
  # @overload compile_file(filename, css_filename, options = {})
76
73
  # Write the compiled CSS to a file.
77
74
  #
78
- # @param filename [String] The path to the Sass, SCSS, or CSS file on disk.
79
- # @param options [{Symbol => Object}] An options hash;
80
- # see {file:SASS_REFERENCE.md#sass_options the Sass options documentation}
81
75
  # @param css_filename [String] The location to which to write the compiled CSS.
82
76
  def self.compile_file(filename, *args)
83
77
  options = args.last.is_a?(Hash) ? args.pop : {}
@@ -85,7 +79,7 @@ module Sass
85
79
  result = Sass::Engine.for_file(filename, options).render
86
80
  if css_filename
87
81
  options[:css_filename] ||= css_filename
88
- open(css_filename, "w") {|css_file| css_file.write(result)}
82
+ open(css_filename,"w") {|css_file| css_file.write(result)}
89
83
  nil
90
84
  else
91
85
  result
@@ -99,4 +93,3 @@ require 'sass/util'
99
93
  require 'sass/engine'
100
94
  require 'sass/plugin' if defined?(Merb::Plugins)
101
95
  require 'sass/railtie'
102
- require 'sass/features'
@@ -27,7 +27,7 @@ module Sass
27
27
 
28
28
  # Retrieved cached contents.
29
29
  # Must be implemented by all subclasses.
30
- #
30
+ #
31
31
  # Note: if the key exists but the sha or version have changed,
32
32
  # then the key may be deleted by the cache store, if it wants to do so.
33
33
  #
@@ -46,7 +46,7 @@ module Sass
46
46
  #
47
47
  # @param key [String] The key to store it under.
48
48
  # @param sha [String] The checksum for the contents that are being stored.
49
- # @param root [Object] The root node to cache.
49
+ # @param obj [Object] The object to cache.
50
50
  def store(key, sha, root)
51
51
  _store(key, Sass::VERSION, sha, Marshal.dump(root))
52
52
  rescue TypeError, LoadError => e
@@ -22,8 +22,7 @@ module Sass
22
22
  # @see Base#retrieve
23
23
  def retrieve(key, sha)
24
24
  @caches.each_with_index do |c, i|
25
- obj = c.retrieve(key, sha)
26
- next unless obj
25
+ next unless obj = c.retrieve(key, sha)
27
26
  @caches[0...i].each {|prev| prev.store(key, sha, obj)}
28
27
  return obj
29
28
  end
@@ -34,7 +34,11 @@ module Sass
34
34
 
35
35
  # @see Base#\_store
36
36
  def _store(key, version, sha, contents)
37
+ # return unless File.writable?(File.dirname(@cache_location))
38
+ # return if File.exists?(@cache_location) && !File.writable?(@cache_location)
37
39
  compiled_filename = path_to(key)
40
+ # return if File.exists?(File.dirname(compiled_filename)) && !File.writable?(File.dirname(compiled_filename))
41
+ # return if File.exists?(compiled_filename) && !File.writable?(compiled_filename)
38
42
  FileUtils.mkdir_p(File.dirname(compiled_filename))
39
43
  Sass::Util.atomic_create_and_write_file(compiled_filename, 0600) do |f|
40
44
  f.puts(version)
@@ -42,7 +46,7 @@ module Sass
42
46
  f.write(contents)
43
47
  end
44
48
  rescue Errno::EACCES
45
- # pass
49
+ #pass
46
50
  end
47
51
 
48
52
  private
@@ -37,7 +37,7 @@ module Sass
37
37
  def store(key, sha, obj)
38
38
  @contents[key] = {:sha => sha, :obj => obj}
39
39
  end
40
-
40
+
41
41
  # Destructively clear the cache.
42
42
  def reset!
43
43
  @contents = {}
@@ -12,11 +12,11 @@ module Sass
12
12
  def _retrieve(key, version, sha)
13
13
  nil
14
14
  end
15
-
15
+
16
16
  def _store(key, version, sha, contents)
17
17
  @keys[key] = true
18
18
  end
19
-
19
+
20
20
  def was_set?(key)
21
21
  @keys[key]
22
22
  end
@@ -30,7 +30,6 @@ module Sass
30
30
  def self.extended(base)
31
31
  base.send(:include, InstanceMethods)
32
32
  end
33
-
34
33
  protected
35
34
 
36
35
  module InstanceMethods
data/lib/sass/css.rb CHANGED
@@ -67,14 +67,16 @@ module Sass
67
67
  def check_encoding!
68
68
  return if @checked_encoding
69
69
  @checked_encoding = true
70
- @template, @original_encoding = Sass::Util.check_sass_encoding(@template)
70
+ @template, @original_encoding = Sass::Util.check_sass_encoding(@template) do |msg, line|
71
+ raise Sass::SyntaxError.new(msg, :line => line)
72
+ end
71
73
  end
72
74
 
73
75
  # Parses the CSS template and applies various transformations
74
76
  #
75
77
  # @return [Tree::Node] The root node of the parsed tree
76
78
  def build_tree
77
- root = Sass::SCSS::CssParser.new(@template, @options[:filename], nil).parse
79
+ root = Sass::SCSS::CssParser.new(@template, @options[:filename]).parse
78
80
  parse_selectors root
79
81
  expand_commas root
80
82
  nest_seqs root
@@ -94,7 +96,7 @@ module Sass
94
96
  root.children.each do |child|
95
97
  next parse_selectors(child) if child.is_a?(Tree::DirectiveNode)
96
98
  next unless child.is_a?(Tree::RuleNode)
97
- parser = Sass::SCSS::CssParser.new(child.rule.first, child.filename, nil, child.line)
99
+ parser = Sass::SCSS::CssParser.new(child.rule.first, child.filename, child.line)
98
100
  child.parsed_rules = parser.parse_selector
99
101
  end
100
102
  end
@@ -167,11 +169,11 @@ module Sass
167
169
  current_rule.parsed_rules = make_seq(first)
168
170
  end
169
171
 
170
- if rest.empty?
171
- current_rule.children += child.children
172
- else
172
+ unless rest.empty?
173
173
  child.parsed_rules = make_seq(*rest)
174
174
  current_rule << child
175
+ else
176
+ current_rule.children += child.children
175
177
  end
176
178
 
177
179
  current_rule
@@ -218,12 +220,12 @@ module Sass
218
220
  current_rule.parsed_rules = make_sseq(last_simple_subject, *firsts)
219
221
  end
220
222
 
221
- if rest.empty?
222
- current_rule.children += child.children
223
- else
223
+ unless rest.empty?
224
224
  rest.unshift Sass::Selector::Parent.new
225
225
  child.parsed_rules = make_sseq(sseq.subject?, *rest)
226
226
  current_rule << child
227
+ else
228
+ current_rule.children += child.children
227
229
  end
228
230
 
229
231
  current_rule
@@ -315,7 +317,7 @@ module Sass
315
317
  # bar, baz
316
318
  # color: blue
317
319
  #
318
- # @param root [Tree::Node] The parent node
320
+ # @param rule [Tree::RuleNode] The candidate for flattening
319
321
  def fold_commas(root)
320
322
  prev_rule = nil
321
323
  root.children.map! do |child|
@@ -324,7 +326,7 @@ module Sass
324
326
  next child
325
327
  end
326
328
 
327
- if prev_rule && prev_rule.children.map {|c| c.to_sass} == child.children.map {|c| c.to_sass}
329
+ if prev_rule && prev_rule.children == child.children
328
330
  prev_rule.parsed_rules.members << first_seq(child)
329
331
  next nil
330
332
  end