sass 3.2.7 → 3.3.0.rc.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 (184) hide show
  1. data/MIT-LICENSE +2 -2
  2. data/README.md +14 -2
  3. data/Rakefile +25 -1
  4. data/VERSION +1 -1
  5. data/VERSION_DATE +1 -1
  6. data/VERSION_NAME +1 -1
  7. data/lib/sass/cache_stores/base.rb +4 -2
  8. data/lib/sass/cache_stores/chain.rb +2 -1
  9. data/lib/sass/cache_stores/filesystem.rb +2 -6
  10. data/lib/sass/cache_stores/memory.rb +1 -1
  11. data/lib/sass/cache_stores/null.rb +2 -2
  12. data/lib/sass/callbacks.rb +1 -0
  13. data/lib/sass/css.rb +10 -10
  14. data/lib/sass/engine.rb +403 -150
  15. data/lib/sass/environment.rb +136 -57
  16. data/lib/sass/error.rb +7 -7
  17. data/lib/sass/exec.rb +123 -39
  18. data/lib/sass/features.rb +41 -0
  19. data/lib/sass/importers/base.rb +33 -2
  20. data/lib/sass/importers/deprecated_path.rb +45 -0
  21. data/lib/sass/importers/filesystem.rb +25 -14
  22. data/lib/sass/importers.rb +1 -0
  23. data/lib/sass/logger/base.rb +3 -3
  24. data/lib/sass/logger/log_level.rb +4 -6
  25. data/lib/sass/media.rb +19 -19
  26. data/lib/sass/plugin/compiler.rb +141 -101
  27. data/lib/sass/plugin/configuration.rb +18 -22
  28. data/lib/sass/plugin/merb.rb +1 -1
  29. data/lib/sass/plugin/staleness_checker.rb +24 -8
  30. data/lib/sass/plugin.rb +4 -2
  31. data/lib/sass/repl.rb +3 -3
  32. data/lib/sass/script/css_lexer.rb +9 -4
  33. data/lib/sass/script/css_parser.rb +6 -2
  34. data/lib/sass/script/functions.rb +1343 -590
  35. data/lib/sass/script/lexer.rb +84 -52
  36. data/lib/sass/script/parser.rb +217 -97
  37. data/lib/sass/script/tree/funcall.rb +290 -0
  38. data/lib/sass/script/{interpolation.rb → tree/interpolation.rb} +34 -13
  39. data/lib/sass/script/tree/list_literal.rb +80 -0
  40. data/lib/sass/script/tree/literal.rb +47 -0
  41. data/lib/sass/script/tree/map_literal.rb +64 -0
  42. data/lib/sass/script/{node.rb → tree/node.rb} +22 -12
  43. data/lib/sass/script/{operation.rb → tree/operation.rb} +17 -25
  44. data/lib/sass/script/tree/selector.rb +30 -0
  45. data/lib/sass/script/{string_interpolation.rb → tree/string_interpolation.rb} +5 -4
  46. data/lib/sass/script/{unary_operation.rb → tree/unary_operation.rb} +14 -9
  47. data/lib/sass/script/tree/variable.rb +57 -0
  48. data/lib/sass/script/tree.rb +16 -0
  49. data/lib/sass/script/{arg_list.rb → value/arg_list.rb} +4 -24
  50. data/lib/sass/script/value/base.rb +248 -0
  51. data/lib/sass/script/value/bool.rb +36 -0
  52. data/lib/sass/script/{color.rb → value/color.rb} +239 -195
  53. data/lib/sass/script/value/helpers.rb +155 -0
  54. data/lib/sass/script/value/list.rb +119 -0
  55. data/lib/sass/script/value/map.rb +70 -0
  56. data/lib/sass/script/value/null.rb +45 -0
  57. data/lib/sass/script/{number.rb → value/number.rb} +91 -65
  58. data/lib/sass/script/{string.rb → value/string.rb} +9 -11
  59. data/lib/sass/script/value.rb +11 -0
  60. data/lib/sass/script.rb +35 -8
  61. data/lib/sass/scss/css_parser.rb +2 -1
  62. data/lib/sass/scss/parser.rb +338 -170
  63. data/lib/sass/scss/rx.rb +5 -6
  64. data/lib/sass/scss/script_lexer.rb +1 -0
  65. data/lib/sass/scss/script_parser.rb +1 -0
  66. data/lib/sass/scss/static_parser.rb +23 -6
  67. data/lib/sass/selector/abstract_sequence.rb +2 -2
  68. data/lib/sass/selector/comma_sequence.rb +21 -16
  69. data/lib/sass/selector/sequence.rb +60 -34
  70. data/lib/sass/selector/simple.rb +11 -12
  71. data/lib/sass/selector/simple_sequence.rb +55 -33
  72. data/lib/sass/selector.rb +52 -48
  73. data/lib/sass/source/map.rb +211 -0
  74. data/lib/sass/source/position.rb +39 -0
  75. data/lib/sass/source/range.rb +41 -0
  76. data/lib/sass/stack.rb +120 -0
  77. data/lib/sass/supports.rb +12 -13
  78. data/lib/sass/tree/at_root_node.rb +82 -0
  79. data/lib/sass/tree/comment_node.rb +3 -3
  80. data/lib/sass/tree/css_import_node.rb +11 -11
  81. data/lib/sass/tree/debug_node.rb +2 -2
  82. data/lib/sass/tree/directive_node.rb +13 -2
  83. data/lib/sass/tree/each_node.rb +8 -8
  84. data/lib/sass/tree/extend_node.rb +13 -6
  85. data/lib/sass/tree/for_node.rb +4 -4
  86. data/lib/sass/tree/function_node.rb +5 -4
  87. data/lib/sass/tree/if_node.rb +1 -1
  88. data/lib/sass/tree/import_node.rb +4 -5
  89. data/lib/sass/tree/media_node.rb +4 -14
  90. data/lib/sass/tree/mixin_def_node.rb +4 -4
  91. data/lib/sass/tree/mixin_node.rb +21 -8
  92. data/lib/sass/tree/node.rb +29 -12
  93. data/lib/sass/tree/prop_node.rb +38 -18
  94. data/lib/sass/tree/return_node.rb +3 -2
  95. data/lib/sass/tree/root_node.rb +19 -3
  96. data/lib/sass/tree/rule_node.rb +25 -17
  97. data/lib/sass/tree/supports_node.rb +0 -13
  98. data/lib/sass/tree/trace_node.rb +2 -1
  99. data/lib/sass/tree/variable_node.rb +9 -3
  100. data/lib/sass/tree/visitors/base.rb +6 -6
  101. data/lib/sass/tree/visitors/check_nesting.rb +12 -9
  102. data/lib/sass/tree/visitors/convert.rb +63 -38
  103. data/lib/sass/tree/visitors/cssize.rb +63 -23
  104. data/lib/sass/tree/visitors/deep_copy.rb +6 -5
  105. data/lib/sass/tree/visitors/extend.rb +7 -7
  106. data/lib/sass/tree/visitors/perform.rb +256 -151
  107. data/lib/sass/tree/visitors/set_options.rb +6 -6
  108. data/lib/sass/tree/visitors/to_css.rb +231 -81
  109. data/lib/sass/tree/warn_node.rb +2 -2
  110. data/lib/sass/tree/while_node.rb +2 -2
  111. data/lib/sass/util/multibyte_string_scanner.rb +2 -0
  112. data/lib/sass/util/normalized_map.rb +65 -0
  113. data/lib/sass/util/ordered_hash.rb +188 -0
  114. data/lib/sass/util/subset_map.rb +3 -2
  115. data/lib/sass/util/test.rb +9 -0
  116. data/lib/sass/util.rb +220 -34
  117. data/lib/sass/version.rb +9 -9
  118. data/lib/sass.rb +14 -7
  119. data/test/sass/compiler_test.rb +213 -0
  120. data/test/sass/conversion_test.rb +235 -9
  121. data/test/sass/engine_test.rb +230 -60
  122. data/test/sass/exec_test.rb +86 -0
  123. data/test/sass/extend_test.rb +215 -147
  124. data/test/sass/functions_test.rb +584 -99
  125. data/test/sass/importer_test.rb +165 -17
  126. data/test/sass/plugin_test.rb +19 -13
  127. data/test/sass/script_conversion_test.rb +40 -0
  128. data/test/sass/script_test.rb +231 -21
  129. data/test/sass/scss/css_test.rb +14 -5
  130. data/test/sass/scss/scss_test.rb +1266 -66
  131. data/test/sass/source_map_test.rb +879 -0
  132. data/test/sass/templates/bork5.sass +3 -0
  133. data/test/sass/util/normalized_map_test.rb +30 -0
  134. data/test/sass/util_test.rb +90 -0
  135. data/test/sass/value_helpers_test.rb +181 -0
  136. data/test/test_helper.rb +7 -2
  137. metadata +316 -291
  138. data/lib/sass/script/bool.rb +0 -18
  139. data/lib/sass/script/funcall.rb +0 -231
  140. data/lib/sass/script/list.rb +0 -84
  141. data/lib/sass/script/literal.rb +0 -239
  142. data/lib/sass/script/null.rb +0 -34
  143. data/lib/sass/script/variable.rb +0 -58
  144. data/test/Gemfile +0 -3
  145. data/vendor/listen/CHANGELOG.md +0 -221
  146. data/vendor/listen/CONTRIBUTING.md +0 -38
  147. data/vendor/listen/Gemfile +0 -30
  148. data/vendor/listen/Guardfile +0 -8
  149. data/vendor/listen/LICENSE +0 -20
  150. data/vendor/listen/README.md +0 -315
  151. data/vendor/listen/Rakefile +0 -47
  152. data/vendor/listen/Vagrantfile +0 -96
  153. data/vendor/listen/lib/listen/adapter.rb +0 -214
  154. data/vendor/listen/lib/listen/adapters/bsd.rb +0 -112
  155. data/vendor/listen/lib/listen/adapters/darwin.rb +0 -85
  156. data/vendor/listen/lib/listen/adapters/linux.rb +0 -113
  157. data/vendor/listen/lib/listen/adapters/polling.rb +0 -67
  158. data/vendor/listen/lib/listen/adapters/windows.rb +0 -87
  159. data/vendor/listen/lib/listen/dependency_manager.rb +0 -126
  160. data/vendor/listen/lib/listen/directory_record.rb +0 -371
  161. data/vendor/listen/lib/listen/listener.rb +0 -225
  162. data/vendor/listen/lib/listen/multi_listener.rb +0 -143
  163. data/vendor/listen/lib/listen/turnstile.rb +0 -28
  164. data/vendor/listen/lib/listen/version.rb +0 -3
  165. data/vendor/listen/lib/listen.rb +0 -40
  166. data/vendor/listen/listen.gemspec +0 -22
  167. data/vendor/listen/spec/listen/adapter_spec.rb +0 -183
  168. data/vendor/listen/spec/listen/adapters/bsd_spec.rb +0 -36
  169. data/vendor/listen/spec/listen/adapters/darwin_spec.rb +0 -37
  170. data/vendor/listen/spec/listen/adapters/linux_spec.rb +0 -47
  171. data/vendor/listen/spec/listen/adapters/polling_spec.rb +0 -68
  172. data/vendor/listen/spec/listen/adapters/windows_spec.rb +0 -30
  173. data/vendor/listen/spec/listen/dependency_manager_spec.rb +0 -107
  174. data/vendor/listen/spec/listen/directory_record_spec.rb +0 -1225
  175. data/vendor/listen/spec/listen/listener_spec.rb +0 -169
  176. data/vendor/listen/spec/listen/multi_listener_spec.rb +0 -174
  177. data/vendor/listen/spec/listen/turnstile_spec.rb +0 -56
  178. data/vendor/listen/spec/listen_spec.rb +0 -73
  179. data/vendor/listen/spec/spec_helper.rb +0 -21
  180. data/vendor/listen/spec/support/adapter_helper.rb +0 -629
  181. data/vendor/listen/spec/support/directory_record_helper.rb +0 -55
  182. data/vendor/listen/spec/support/fixtures_helper.rb +0 -29
  183. data/vendor/listen/spec/support/listeners_helper.rb +0 -156
  184. data/vendor/listen/spec/support/platform_helper.rb +0 -15
data/MIT-LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2006-2009 Hampton Catlin, Nathan 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
@@ -17,4 +17,4 @@ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
17
  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
18
  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
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.
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Sass
1
+ # Sass [![Gem Version](https://badge.fury.io/rb/sass.png)](http://badge.fury.io/rb/sass)
2
2
 
3
3
  **Sass makes CSS fun again**. Sass is an extension of CSS3,
4
4
  adding nested rules, variables, mixins, selector inheritance, and more.
@@ -56,7 +56,7 @@ to `config.ru`.
56
56
  Then any Sass files in `public/stylesheets/sass`
57
57
  will be compiled into CSS files in `public/stylesheets` on every request.
58
58
 
59
- To use Sass programatically,
59
+ To use Sass programmatically,
60
60
  check out the [YARD documentation](http://sass-lang.com/docs/yardoc/).
61
61
 
62
62
  ## Formatting
@@ -171,6 +171,18 @@ When converting from CSS to Sass or SCSS,
171
171
  nesting is applied where appropriate.
172
172
  See `sass-convert --help` for further information and options.
173
173
 
174
+ ### Running locally
175
+
176
+ To run the Sass executables from a source checkout instead of from rubygems:
177
+
178
+ ```
179
+ $ cd <SASS_CHECKOUT_DIRECTORY>
180
+ $ bundle
181
+ $ bundle exec sass ...
182
+ $ bundle exec scss ...
183
+ $ bundle exec sass-convert ...
184
+ ```
185
+
174
186
  ## Authors
175
187
 
176
188
  Sass was envisioned by [Hampton Catlin](http://www.hamptoncatlin.com)
data/Rakefile CHANGED
@@ -19,6 +19,25 @@ Rake::TestTask.new do |t|
19
19
  t.verbose = true
20
20
  end
21
21
 
22
+ # ----- Code Style Enforcement -----
23
+
24
+ if RUBY_VERSION !~ /^(1\.8|2\.1)/ && (ENV.has_key?("RUBOCOP") && ENV["RUBOCOP"] == "true" || !ENV.has_key?("RUBOCOP"))
25
+ require 'rubocop/rake_task'
26
+ Rubocop::RakeTask.new do |t|
27
+ t.patterns = FileList["lib/**/*"]
28
+ end
29
+ else
30
+ task :rubocop do
31
+ puts "Skipping rubocop style check."
32
+ if !ENV.has_key?("RUBOCOP")
33
+ puts "Passing this check is required in order for your patch to be accepted."
34
+ puts "Use ruby 1.9 or greater and then run the style check with: rake rubocop"
35
+ end
36
+ end
37
+ end
38
+
39
+ task :test => :rubocop
40
+
22
41
  # ----- Packaging -----
23
42
 
24
43
  # Don't use Rake::GemPackageTast because we want prerequisites to run
@@ -140,6 +159,11 @@ task :release_edge do
140
159
  sh %{git reset --hard origin/master}
141
160
  sh %{rake package}
142
161
  version = get_version
162
+ if version.include?('.rc.')
163
+ puts "#{'=' * 20} Not releasing edge gem for RC version"
164
+ next
165
+ end
166
+
143
167
  sh %{rubyforge add_release sass sass "Bleeding Edge (v#{version})" pkg/sass-#{version}.gem}
144
168
  sh %{gem push pkg/sass-#{version}.gem}
145
169
  end
@@ -191,7 +215,7 @@ begin
191
215
  task :undocumented do
192
216
  opts = ENV["YARD_OPTS"] || ""
193
217
  ENV["YARD_OPTS"] = opts.dup + <<OPTS
194
- --list --query "
218
+ --list --tag comment --hide-tag comment --query "
195
219
  object.docstring.blank? &&
196
220
  !(object.type == :method && object.is_alias?)"
197
221
  OPTS
data/VERSION CHANGED
@@ -1 +1 @@
1
- 3.2.7
1
+ 3.3.0.rc.1
data/VERSION_DATE CHANGED
@@ -1 +1 @@
1
- 09 March 2013 01:30:08 UTC
1
+ 12 October 2013 15:48:52 GMT
data/VERSION_NAME CHANGED
@@ -1 +1 @@
1
- Media Mark
1
+ Maptastic Maple
@@ -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,11 +46,12 @@ 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 obj [Object] The object to cache.
49
+ # @param root [Object] The root node 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
53
53
  Sass::Util.sass_warn "Warning. Error encountered while saving cache #{path_to(key)}: #{e}"
54
+ nil
54
55
  end
55
56
 
56
57
  # Retrieve a {Sass::Tree::RootNode}.
@@ -63,6 +64,7 @@ module Sass
63
64
  Marshal.load(contents) if contents
64
65
  rescue EOFError, TypeError, ArgumentError, LoadError => e
65
66
  Sass::Util.sass_warn "Warning. Error encountered while reading cache #{path_to(key)}: #{e}"
67
+ nil
66
68
  end
67
69
 
68
70
  # Return the key for the sass file.
@@ -22,7 +22,8 @@ module Sass
22
22
  # @see Base#retrieve
23
23
  def retrieve(key, sha)
24
24
  @caches.each_with_index do |c, i|
25
- next unless obj = c.retrieve(key, sha)
25
+ obj = c.retrieve(key, sha)
26
+ next unless obj
26
27
  @caches[0...i].each {|prev| prev.store(key, sha, obj)}
27
28
  return obj
28
29
  end
@@ -30,19 +30,15 @@ module Sass
30
30
 
31
31
  # @see Base#\_store
32
32
  def _store(key, version, sha, contents)
33
- # return unless File.writable?(File.dirname(@cache_location))
34
- # return if File.exists?(@cache_location) && !File.writable?(@cache_location)
35
33
  compiled_filename = path_to(key)
36
- # return if File.exists?(File.dirname(compiled_filename)) && !File.writable?(File.dirname(compiled_filename))
37
- # return if File.exists?(compiled_filename) && !File.writable?(compiled_filename)
38
34
  FileUtils.mkdir_p(File.dirname(compiled_filename))
39
- File.open(compiled_filename, "wb") do |f|
35
+ Sass::Util.atomic_create_and_write_file(compiled_filename) do |f|
40
36
  f.puts(version)
41
37
  f.puts(sha)
42
38
  f.write(contents)
43
39
  end
44
40
  rescue Errno::EACCES
45
- #pass
41
+ # pass
46
42
  end
47
43
 
48
44
  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,6 +30,7 @@ module Sass
30
30
  def self.extended(base)
31
31
  base.send(:include, InstanceMethods)
32
32
  end
33
+
33
34
  protected
34
35
 
35
36
  module InstanceMethods
data/lib/sass/css.rb CHANGED
@@ -76,7 +76,7 @@ module Sass
76
76
  #
77
77
  # @return [Tree::Node] The root node of the parsed tree
78
78
  def build_tree
79
- root = Sass::SCSS::CssParser.new(@template, @options[:filename]).parse
79
+ root = Sass::SCSS::CssParser.new(@template, @options[:filename], nil).parse
80
80
  parse_selectors root
81
81
  expand_commas root
82
82
  nest_seqs root
@@ -96,7 +96,7 @@ module Sass
96
96
  root.children.each do |child|
97
97
  next parse_selectors(child) if child.is_a?(Tree::DirectiveNode)
98
98
  next unless child.is_a?(Tree::RuleNode)
99
- parser = Sass::SCSS::CssParser.new(child.rule.first, child.filename, child.line)
99
+ parser = Sass::SCSS::CssParser.new(child.rule.first, child.filename, nil, child.line)
100
100
  child.parsed_rules = parser.parse_selector
101
101
  end
102
102
  end
@@ -169,11 +169,11 @@ module Sass
169
169
  current_rule.parsed_rules = make_seq(first)
170
170
  end
171
171
 
172
- unless rest.empty?
172
+ if rest.empty?
173
+ current_rule.children += child.children
174
+ else
173
175
  child.parsed_rules = make_seq(*rest)
174
176
  current_rule << child
175
- else
176
- current_rule.children += child.children
177
177
  end
178
178
 
179
179
  current_rule
@@ -220,12 +220,12 @@ module Sass
220
220
  current_rule.parsed_rules = make_sseq(last_simple_subject, *firsts)
221
221
  end
222
222
 
223
- unless rest.empty?
223
+ if rest.empty?
224
+ current_rule.children += child.children
225
+ else
224
226
  rest.unshift Sass::Selector::Parent.new
225
227
  child.parsed_rules = make_sseq(sseq.subject?, *rest)
226
228
  current_rule << child
227
- else
228
- current_rule.children += child.children
229
229
  end
230
230
 
231
231
  current_rule
@@ -317,7 +317,7 @@ module Sass
317
317
  # bar, baz
318
318
  # color: blue
319
319
  #
320
- # @param rule [Tree::RuleNode] The candidate for flattening
320
+ # @param root [Tree::Node] The parent node
321
321
  def fold_commas(root)
322
322
  prev_rule = nil
323
323
  root.children.map! do |child|
@@ -326,7 +326,7 @@ module Sass
326
326
  next child
327
327
  end
328
328
 
329
- if prev_rule && prev_rule.children == child.children
329
+ if prev_rule && prev_rule.children.map {|c| c.to_sass} == child.children.map {|c| c.to_sass}
330
330
  prev_rule.parsed_rules.members << first_seq(child)
331
331
  next nil
332
332
  end