sass 3.4.21 → 3.4.22

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 (54) hide show
  1. checksums.yaml +4 -4
  2. data/CONTRIBUTING.md +122 -0
  3. data/MIT-LICENSE +1 -1
  4. data/README.md +15 -9
  5. data/Rakefile +71 -18
  6. data/VERSION +1 -1
  7. data/VERSION_DATE +1 -1
  8. data/lib/sass.rb +7 -0
  9. data/lib/sass/callbacks.rb +2 -2
  10. data/lib/sass/css.rb +9 -8
  11. data/lib/sass/engine.rb +14 -8
  12. data/lib/sass/environment.rb +8 -1
  13. data/lib/sass/error.rb +5 -5
  14. data/lib/sass/exec/sass_convert.rb +14 -2
  15. data/lib/sass/exec/sass_scss.rb +2 -25
  16. data/lib/sass/features.rb +2 -2
  17. data/lib/sass/importers/filesystem.rb +6 -3
  18. data/lib/sass/plugin/compiler.rb +15 -7
  19. data/lib/sass/script/css_variable_warning.rb +52 -0
  20. data/lib/sass/script/functions.rb +5 -5
  21. data/lib/sass/script/lexer.rb +3 -1
  22. data/lib/sass/script/parser.rb +67 -15
  23. data/lib/sass/script/tree/funcall.rb +10 -3
  24. data/lib/sass/script/tree/node.rb +8 -0
  25. data/lib/sass/script/tree/operation.rb +7 -0
  26. data/lib/sass/script/value/base.rb +1 -0
  27. data/lib/sass/script/value/color.rb +6 -4
  28. data/lib/sass/script/value/helpers.rb +2 -2
  29. data/lib/sass/script/value/number.rb +5 -5
  30. data/lib/sass/scss.rb +0 -2
  31. data/lib/sass/scss/css_parser.rb +1 -2
  32. data/lib/sass/scss/parser.rb +20 -10
  33. data/lib/sass/scss/rx.rb +2 -2
  34. data/lib/sass/scss/static_parser.rb +11 -13
  35. data/lib/sass/selector/pseudo.rb +1 -1
  36. data/lib/sass/selector/sequence.rb +2 -2
  37. data/lib/sass/selector/simple_sequence.rb +4 -4
  38. data/lib/sass/stack.rb +2 -2
  39. data/lib/sass/tree/function_node.rb +1 -1
  40. data/lib/sass/tree/node.rb +2 -0
  41. data/lib/sass/tree/visitors/check_nesting.rb +2 -0
  42. data/lib/sass/tree/visitors/convert.rb +8 -7
  43. data/lib/sass/tree/visitors/perform.rb +4 -2
  44. data/lib/sass/tree/visitors/to_css.rb +10 -10
  45. data/lib/sass/util.rb +8 -7
  46. data/test/sass-spec.yml +3 -0
  47. data/test/sass/compiler_test.rb +1 -1
  48. data/test/sass/css_variable_test.rb +132 -0
  49. data/test/sass/exec_test.rb +10 -0
  50. data/test/sass/script_test.rb +1 -1
  51. data/test/sass/scss/scss_test.rb +10 -0
  52. metadata +79 -77
  53. data/lib/sass/scss/script_lexer.rb +0 -15
  54. data/lib/sass/scss/script_parser.rb +0 -25
@@ -4,6 +4,8 @@ class Sass::Tree::Visitors::CheckNesting < Sass::Tree::Visitors::Base
4
4
 
5
5
  def initialize
6
6
  @parents = []
7
+ @parent = nil
8
+ @current_mixin_def = nil
7
9
  end
8
10
 
9
11
  def visit(node)
@@ -18,6 +18,7 @@ class Sass::Tree::Visitors::Convert < Sass::Tree::Visitors::Base
18
18
  @tabs = 0
19
19
  # 2 spaces by default
20
20
  @tab_chars = @options[:indent] || " "
21
+ @is_else = false
21
22
  end
22
23
 
23
24
  def visit_children(parent)
@@ -29,7 +30,7 @@ class Sass::Tree::Visitors::Convert < Sass::Tree::Visitors::Base
29
30
  if @format == :sass
30
31
  "\n" + res.rstrip + "\n"
31
32
  else
32
- " {\n" + res.rstrip + "\n#{ @tab_chars * (@tabs - 1)}}\n"
33
+ " {\n" + res.rstrip + "\n#{@tab_chars * (@tabs - 1)}}\n"
33
34
  end
34
35
  ensure
35
36
  @tabs -= 1
@@ -47,14 +48,14 @@ class Sass::Tree::Visitors::Convert < Sass::Tree::Visitors::Base
47
48
  def visit_comment(node)
48
49
  value = interp_to_src(node.value)
49
50
  if @format == :sass
50
- content = value.gsub(/\*\/$/, '').rstrip
51
+ content = value.gsub(%r{\*/$}, '').rstrip
51
52
  if content =~ /\A[ \t]/
52
53
  # Re-indent SCSS comments like this:
53
54
  # /* foo
54
55
  # bar
55
56
  # baz */
56
57
  content.gsub!(/^/, ' ')
57
- content.sub!(/\A([ \t]*)\/\*/, '/*\1')
58
+ content.sub!(%r{\A([ \t]*)/\*}, '/*\1')
58
59
  end
59
60
 
60
61
  if content.include?("\n")
@@ -68,13 +69,13 @@ class Sass::Tree::Visitors::Convert < Sass::Tree::Visitors::Base
68
69
  end
69
70
  end
70
71
 
71
- content.gsub!(/\A\/\*/, '//') if node.type == :silent
72
+ content.gsub!(%r{\A/\*}, '//') if node.type == :silent
72
73
  content.gsub!(/^/, tab_str)
73
74
  content = content.rstrip + "\n"
74
75
  else
75
76
  spaces = (@tab_chars * [@tabs - value[/^ */].size, 0].max)
76
77
  content = if node.type == :silent
77
- value.gsub(/^[\/ ]\*/, '//').gsub(/ *\*\/$/, '')
78
+ value.gsub(%r{^[/ ]\*}, '//').gsub(%r{ *\*/$}, '')
78
79
  else
79
80
  value
80
81
  end.gsub(/^/, spaces) + "\n"
@@ -104,12 +105,12 @@ class Sass::Tree::Visitors::Convert < Sass::Tree::Visitors::Base
104
105
 
105
106
  def visit_extend(node)
106
107
  "#{tab_str}@extend #{selector_to_src(node.selector).lstrip}" +
107
- "#{" !optional" if node.optional?}#{semi}\n"
108
+ "#{' !optional' if node.optional?}#{semi}\n"
108
109
  end
109
110
 
110
111
  def visit_for(node)
111
112
  "#{tab_str}@for $#{dasherize(node.var)} from #{node.from.to_sass(@options)} " +
112
- "#{node.exclusive ? "to" : "through"} #{node.to.to_sass(@options)}#{yield}"
113
+ "#{node.exclusive ? 'to' : 'through'} #{node.to.to_sass(@options)}#{yield}"
113
114
  end
114
115
 
115
116
  def visit_function(node)
@@ -150,6 +150,8 @@ class Sass::Tree::Visitors::Perform < Sass::Tree::Visitors::Base
150
150
 
151
151
  def initialize(env)
152
152
  @environment = env
153
+ @in_keyframes = false
154
+ @at_root_without_rule = false
153
155
  end
154
156
 
155
157
  # If an exception is raised, this adds proper metadata to the backtrace.
@@ -287,7 +289,7 @@ WARNING
287
289
 
288
290
  @environment.set_local_function(node.name,
289
291
  Sass::Callable.new(node.name, node.args, node.splat, env,
290
- node.children, !:has_content, "function"))
292
+ node.children, false, "function"))
291
293
  []
292
294
  end
293
295
 
@@ -349,7 +351,7 @@ WARNING
349
351
  raise Sass::SyntaxError.new("Undefined mixin '#{node.name}'.") unless mixin
350
352
 
351
353
  if node.children.any? && !mixin.has_content
352
- raise Sass::SyntaxError.new(%{Mixin "#{node.name}" does not accept a content block.})
354
+ raise Sass::SyntaxError.new(%(Mixin "#{node.name}" does not accept a content block.))
353
355
  end
354
356
 
355
357
  args = node.args.map {|a| a.perform(@environment)}
@@ -13,7 +13,9 @@ class Sass::Tree::Visitors::ToCss < Sass::Tree::Visitors::Base
13
13
  @line = 1
14
14
  @offset = 1
15
15
  @result = ""
16
- @source_mapping = Sass::Source::Map.new if build_source_mapping
16
+ @source_mapping = build_source_mapping ? Sass::Source::Map.new : nil
17
+ @lstrip = nil
18
+ @in_directive = false
17
19
  end
18
20
 
19
21
  # Runs the visitor on `node`.
@@ -102,7 +104,7 @@ class Sass::Tree::Visitors::ToCss < Sass::Tree::Visitors::Base
102
104
  @lstrip = true
103
105
  yield
104
106
  ensure
105
- @lstrip = @lstrip && old_lstrip
107
+ @lstrip &&= old_lstrip
106
108
  end
107
109
 
108
110
  # Prepend `prefix` to the output string.
@@ -120,12 +122,10 @@ class Sass::Tree::Visitors::ToCss < Sass::Tree::Visitors::Base
120
122
  node.children.each do |child|
121
123
  next if child.invisible?
122
124
  visit(child)
123
- unless node.style == :compressed
124
- output "\n"
125
- if child.is_a?(Sass::Tree::DirectiveNode) && child.has_children && !child.bubbles?
126
- output "\n"
127
- end
128
- end
125
+ next if node.style == :compressed
126
+ output "\n"
127
+ next unless child.is_a?(Sass::Tree::DirectiveNode) && child.has_children && !child.bubbles?
128
+ output "\n"
129
129
  end
130
130
  rstrip!
131
131
  if node.style == :compressed && trailing_semicolon?
@@ -166,7 +166,7 @@ class Sass::Tree::Visitors::ToCss < Sass::Tree::Visitors::Base
166
166
  content.gsub!(%r{^(\s*)//(.*)$}) {"#{$1}/*#{$2} */"}
167
167
  end
168
168
  if (node.style == :compact || node.style == :compressed) && node.type != :loud
169
- content.gsub!(/\n +(\* *(?!\/))?/, ' ')
169
+ content.gsub!(%r{\n +(\* *(?!/))?}, ' ')
170
170
  end
171
171
  for_node(node) {output(content)}
172
172
  end
@@ -187,7 +187,7 @@ class Sass::Tree::Visitors::ToCss < Sass::Tree::Visitors::Base
187
187
  return
188
188
  end
189
189
 
190
- @in_directive = @in_directive || !node.is_a?(Sass::Tree::MediaNode)
190
+ @in_directive ||= !node.is_a?(Sass::Tree::MediaNode)
191
191
  output(tab_str) if node.style != :compressed
192
192
  for_node(node) {output(node.resolved_value)}
193
193
  output(node.style == :compressed ? "{" : " {")
@@ -512,7 +512,7 @@ module Sass
512
512
  #
513
513
  # @param msg [String]
514
514
  def sass_warn(msg)
515
- msg = msg + "\n" unless ruby1?
515
+ msg += "\n" unless ruby1?
516
516
  Sass.logger.warn(msg)
517
517
  end
518
518
 
@@ -571,7 +571,7 @@ module Sass
571
571
  #
572
572
  # @return [Boolean]
573
573
  def listen_geq_2?
574
- return @listen_geq_2 unless @listen_geq_2.nil?
574
+ return @listen_geq_2 if defined?(@listen_geq_2)
575
575
  @listen_geq_2 =
576
576
  begin
577
577
  # Make sure we're loading listen/version from the same place that
@@ -729,8 +729,8 @@ module Sass
729
729
  path = path.tr('\\', '/') if windows?
730
730
  path = Sass::Util.escape_uri(path)
731
731
  return path.start_with?('/') ? "file://" + path : path unless windows?
732
- return "file:///" + path.tr("\\", "/") if path =~ /^[a-zA-Z]:[\/\\]/
733
- return "file:" + path.tr("\\", "/") if path =~ /\\\\[^\\]+\\[^\\\/]+/
732
+ return "file:///" + path.tr("\\", "/") if path =~ %r{^[a-zA-Z]:[/\\]}
733
+ return "file:" + path.tr("\\", "/") if path =~ %r{\\\\[^\\]+\\[^\\/]+}
734
734
  path.tr("\\", "/")
735
735
  end
736
736
 
@@ -840,9 +840,10 @@ module Sass
840
840
 
841
841
  unless ruby1_8?
842
842
  CHARSET_REGEXP = /\A@charset "([^"]+)"/
843
- UTF_8_BOM = "\xEF\xBB\xBF".force_encoding('BINARY')
844
- UTF_16BE_BOM = "\xFE\xFF".force_encoding('BINARY')
845
- UTF_16LE_BOM = "\xFF\xFE".force_encoding('BINARY')
843
+ bom = "\uFEFF"
844
+ UTF_8_BOM = bom.encode("UTF-8").force_encoding('BINARY')
845
+ UTF_16BE_BOM = bom.encode("UTF-16BE").force_encoding('BINARY')
846
+ UTF_16LE_BOM = bom.encode("UTF-16LE").force_encoding('BINARY')
846
847
  end
847
848
 
848
849
  # Like {\#check\_encoding}, but also checks for a `@charset` declaration
@@ -0,0 +1,3 @@
1
+ ---
2
+ :enabled: true
3
+ :language_version: '3.4'
@@ -87,7 +87,7 @@ class CompilerTest < MiniTest::Test
87
87
  private
88
88
  def create_listener(*args, &on_filesystem_event)
89
89
  if Sass::Util.listen_geq_2?
90
- options = args.pop if args.last.is_a?(Hash)
90
+ args.pop if args.last.is_a?(Hash)
91
91
  args.map do |dir|
92
92
  @fake_listener = FakeListener.new(*args, &on_filesystem_event)
93
93
  @fake_listener.on_start!(&run_during_start)
@@ -0,0 +1,132 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../test_helper'
4
+ require 'sass/engine'
5
+
6
+ class CssVariableTest < MiniTest::Test
7
+ def test_variable_warning_for_operators
8
+ resolve_with_variable_warning("1 == 2")
9
+ resolve_with_variable_warning("1 != 2")
10
+ resolve_with_variable_warning("1 < 2")
11
+ resolve_with_variable_warning("1 <= 2")
12
+ resolve_with_variable_warning("1 > 2")
13
+ resolve_with_variable_warning("1 >= 2")
14
+ resolve_with_variable_warning("1 + 1")
15
+ resolve_with_variable_warning("1 - 1")
16
+ resolve_with_variable_warning("1 * 1")
17
+ resolve_with_variable_warning("1 % 1")
18
+ end
19
+
20
+ def test_variable_warning_for_variable
21
+ render_with_variable_warning(<<SCSS, "$var", 3)
22
+ .foo {
23
+ $var: value;
24
+ --var: $var;
25
+ }
26
+ SCSS
27
+ end
28
+
29
+ def test_variable_warning_for_core_function
30
+ resolve_with_variable_warning("alpha(#abc)")
31
+ end
32
+
33
+ def test_variable_warning_for_sass_function
34
+ render_with_variable_warning(<<SCSS, "my-fn()", 2)
35
+ @function my-fn() {@return null}
36
+ .foo {--var: my-fn()}
37
+ SCSS
38
+ end
39
+
40
+ def test_variable_warning_for_parens
41
+ resolve_with_variable_warning("(foo)", "foo")
42
+ resolve_with_variable_warning("(foo,)")
43
+ end
44
+
45
+ def test_variable_warning_for_selector
46
+ resolve_with_variable_warning("&")
47
+ end
48
+
49
+ def test_variable_warning_for_nested_properties
50
+ assert_warning(<<WARNING) {render(<<SCSS)}
51
+ DEPRECATION WARNING on line 2 of #{filename_for_test :scss}:
52
+ Sass 3.6 will change the way CSS variables are parsed. Instead of being parsed as
53
+ normal properties, they will not allow any Sass-specific behavior other than \#{}.
54
+ WARNING
55
+ .foo {
56
+ --var: {
57
+ a: b;
58
+ }
59
+ }
60
+ SCSS
61
+ end
62
+
63
+ def test_no_warning
64
+ assert_no_variable_warning("foo")
65
+ assert_no_variable_warning("true")
66
+ assert_no_variable_warning("1, 2")
67
+ assert_no_variable_warning("1 2")
68
+ assert_no_variable_warning("1 / 2")
69
+ assert_no_variable_warning("foo / bar")
70
+ assert_no_variable_warning("asdf(foo)")
71
+ assert_no_variable_warning("calc(1 + 1)")
72
+ assert_no_variable_warning("asdf(foo=2)")
73
+ end
74
+
75
+ def test_no_warning_within_interpolation
76
+ assert_no_variable_warning('#{1 + 1}')
77
+ assert_no_variable_warning('#{alpha(#abc)}')
78
+ end
79
+
80
+ private
81
+
82
+ def assert_no_variable_warning(str)
83
+ assert_no_warning {render("a {--var: #{str}}")}
84
+ assert_no_warning {render("a\n --var: #{str}", :syntax => :sass)}
85
+ end
86
+
87
+ def resolve_with_variable_warning(str, expression = nil)
88
+ render_with_variable_warning("a {--var: #{str}}", expression || str, 1)
89
+ render_with_variable_warning(
90
+ "a\n --var: #{str}", expression || str, 2, :syntax => :sass)
91
+ end
92
+
93
+ def render_with_variable_warning(sass, expression, line, opts = {})
94
+ opts[:syntax] ||= :scss
95
+ assert_warning(<<WARNING) {render(sass, opts)}
96
+ DEPRECATION WARNING on line #{line} of #{filename_for_test(opts[:syntax])}:
97
+ Sass 3.6 will change the way CSS variables are parsed. Instead of being parsed as
98
+ normal properties, they will not allow any Sass-specific behavior other than \#{}.
99
+ For forwards-compatibility, use \#{}:
100
+
101
+ --variable: \#{#{expression}};
102
+ WARNING
103
+ end
104
+
105
+ def render(sass, options = {})
106
+ options[:syntax] ||= :scss
107
+ options[:cache] = false
108
+ munge_filename options
109
+ Sass::Engine.new(sass, options).render
110
+ end
111
+
112
+ def resolve(str, opts = {}, environment = env)
113
+ munge_filename opts
114
+ val = eval(str, opts, environment)
115
+ assert_kind_of Sass::Script::Value::Base, val
116
+ val.options = opts
117
+ val.is_a?(Sass::Script::Value::String) ? val.value : val.to_s
118
+ end
119
+
120
+ def eval(str, opts = {}, environment = env)
121
+ munge_filename opts
122
+ Sass::Script.parse(str, opts.delete(:line) || 1,
123
+ opts.delete(:offset) || 0, opts).
124
+ perform(Sass::Environment.new(environment, opts))
125
+ end
126
+
127
+ def env(hash = {})
128
+ env = Sass::Environment.new
129
+ hash.each {|k, v| env.set_var(k, v)}
130
+ env
131
+ end
132
+ end
@@ -1,5 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
  require File.dirname(__FILE__) + '/../test_helper'
3
+ require 'fileutils'
3
4
  require 'sass/util/test'
4
5
  require 'tmpdir'
5
6
 
@@ -64,6 +65,14 @@ class ExecTest < MiniTest::Test
64
65
  assert_equal(".ruleset\r\n margin: 0\r\n", read(src))
65
66
  end
66
67
 
68
+ def test_sass_convert_R
69
+ Dir.chdir(@dir) do
70
+ src = get_path("styles/src.css")
71
+ write(src, ".ruleset { margin: 0 }")
72
+ assert(exec(*%w[sass-convert -Rq --from css --to scss --trace styles]))
73
+ end
74
+ end
75
+
67
76
  private
68
77
 
69
78
  def get_path(name)
@@ -75,6 +84,7 @@ class ExecTest < MiniTest::Test
75
84
  end
76
85
 
77
86
  def write(file, content)
87
+ FileUtils.mkdir_p(File.dirname(file))
78
88
  open(file, 'wb') {|f| f.write(content)}
79
89
  end
80
90
 
@@ -1101,7 +1101,7 @@ CSS
1101
1101
  a
1102
1102
  b: foo() / 2
1103
1103
  SASS
1104
- end
1104
+ end
1105
1105
 
1106
1106
  def test_funcall_has_higher_precedence_than_color_name
1107
1107
  assert_equal "teal(12)", resolve("teal(12)")
@@ -4144,4 +4144,14 @@ CSS
4144
4144
  SASS
4145
4145
  end
4146
4146
 
4147
+ def test_crlf
4148
+ # Attempt to reproduce https://github.com/sass/sass/issues/1985
4149
+ assert_equal(<<CSS, render(<<SCSS))
4150
+ p {
4151
+ margin: 0; }
4152
+ CSS
4153
+ p {\r\n margin: 0;\r\n}
4154
+ SCSS
4155
+ end
4156
+
4147
4157
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sass
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.4.21
4
+ version: 3.4.22
5
5
  platform: ruby
6
6
  authors:
7
7
  - Natalie Weizenbaum
@@ -10,48 +10,48 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2016-01-12 00:00:00.000000000 Z
13
+ date: 2016-03-28 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: yard
17
17
  requirement: !ruby/object:Gem::Requirement
18
18
  requirements:
19
- - - '>='
19
+ - - ">="
20
20
  - !ruby/object:Gem::Version
21
21
  version: 0.5.3
22
22
  type: :development
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
- - - '>='
26
+ - - ">="
27
27
  - !ruby/object:Gem::Version
28
28
  version: 0.5.3
29
29
  - !ruby/object:Gem::Dependency
30
30
  name: maruku
31
31
  requirement: !ruby/object:Gem::Requirement
32
32
  requirements:
33
- - - '>='
33
+ - - ">="
34
34
  - !ruby/object:Gem::Version
35
35
  version: 0.5.9
36
36
  type: :development
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
39
  requirements:
40
- - - '>='
40
+ - - ">="
41
41
  - !ruby/object:Gem::Version
42
42
  version: 0.5.9
43
43
  - !ruby/object:Gem::Dependency
44
44
  name: minitest
45
45
  requirement: !ruby/object:Gem::Requirement
46
46
  requirements:
47
- - - '>='
47
+ - - ">="
48
48
  - !ruby/object:Gem::Version
49
49
  version: '5'
50
50
  type: :development
51
51
  prerelease: false
52
52
  version_requirements: !ruby/object:Gem::Requirement
53
53
  requirements:
54
- - - '>='
54
+ - - ">="
55
55
  - !ruby/object:Gem::Version
56
56
  version: '5'
57
57
  description: |2
@@ -67,31 +67,47 @@ executables:
67
67
  extensions: []
68
68
  extra_rdoc_files: []
69
69
  files:
70
- - rails/init.rb
70
+ - ".yardopts"
71
+ - CODE_OF_CONDUCT.md
72
+ - CONTRIBUTING.md
73
+ - MIT-LICENSE
74
+ - README.md
75
+ - REVISION
76
+ - Rakefile
77
+ - VERSION
78
+ - VERSION_DATE
79
+ - VERSION_NAME
80
+ - bin/sass
81
+ - bin/sass-convert
82
+ - bin/scss
83
+ - extra/update_watch.rb
84
+ - init.rb
85
+ - lib/sass.rb
86
+ - lib/sass/cache_stores.rb
71
87
  - lib/sass/cache_stores/base.rb
72
88
  - lib/sass/cache_stores/chain.rb
73
89
  - lib/sass/cache_stores/filesystem.rb
74
90
  - lib/sass/cache_stores/memory.rb
75
91
  - lib/sass/cache_stores/null.rb
76
- - lib/sass/cache_stores.rb
77
92
  - lib/sass/callbacks.rb
78
93
  - lib/sass/css.rb
79
94
  - lib/sass/engine.rb
80
95
  - lib/sass/environment.rb
81
96
  - lib/sass/error.rb
97
+ - lib/sass/exec.rb
82
98
  - lib/sass/exec/base.rb
83
99
  - lib/sass/exec/sass_convert.rb
84
100
  - lib/sass/exec/sass_scss.rb
85
- - lib/sass/exec.rb
86
101
  - lib/sass/features.rb
102
+ - lib/sass/importers.rb
87
103
  - lib/sass/importers/base.rb
88
104
  - lib/sass/importers/deprecated_path.rb
89
105
  - lib/sass/importers/filesystem.rb
90
- - lib/sass/importers.rb
106
+ - lib/sass/logger.rb
91
107
  - lib/sass/logger/base.rb
92
108
  - lib/sass/logger/log_level.rb
93
- - lib/sass/logger.rb
94
109
  - lib/sass/media.rb
110
+ - lib/sass/plugin.rb
95
111
  - lib/sass/plugin/compiler.rb
96
112
  - lib/sass/plugin/configuration.rb
97
113
  - lib/sass/plugin/generic.rb
@@ -99,15 +115,17 @@ files:
99
115
  - lib/sass/plugin/rack.rb
100
116
  - lib/sass/plugin/rails.rb
101
117
  - lib/sass/plugin/staleness_checker.rb
102
- - lib/sass/plugin.rb
103
118
  - lib/sass/railtie.rb
104
119
  - lib/sass/repl.rb
105
120
  - lib/sass/root.rb
121
+ - lib/sass/script.rb
106
122
  - lib/sass/script/css_lexer.rb
107
123
  - lib/sass/script/css_parser.rb
124
+ - lib/sass/script/css_variable_warning.rb
108
125
  - lib/sass/script/functions.rb
109
126
  - lib/sass/script/lexer.rb
110
127
  - lib/sass/script/parser.rb
128
+ - lib/sass/script/tree.rb
111
129
  - lib/sass/script/tree/funcall.rb
112
130
  - lib/sass/script/tree/interpolation.rb
113
131
  - lib/sass/script/tree/list_literal.rb
@@ -119,7 +137,7 @@ files:
119
137
  - lib/sass/script/tree/string_interpolation.rb
120
138
  - lib/sass/script/tree/unary_operation.rb
121
139
  - lib/sass/script/tree/variable.rb
122
- - lib/sass/script/tree.rb
140
+ - lib/sass/script/value.rb
123
141
  - lib/sass/script/value/arg_list.rb
124
142
  - lib/sass/script/value/base.rb
125
143
  - lib/sass/script/value/bool.rb
@@ -130,22 +148,18 @@ files:
130
148
  - lib/sass/script/value/null.rb
131
149
  - lib/sass/script/value/number.rb
132
150
  - lib/sass/script/value/string.rb
133
- - lib/sass/script/value.rb
134
- - lib/sass/script.rb
151
+ - lib/sass/scss.rb
135
152
  - lib/sass/scss/css_parser.rb
136
153
  - lib/sass/scss/parser.rb
137
154
  - lib/sass/scss/rx.rb
138
- - lib/sass/scss/script_lexer.rb
139
- - lib/sass/scss/script_parser.rb
140
155
  - lib/sass/scss/static_parser.rb
141
- - lib/sass/scss.rb
156
+ - lib/sass/selector.rb
142
157
  - lib/sass/selector/abstract_sequence.rb
143
158
  - lib/sass/selector/comma_sequence.rb
144
159
  - lib/sass/selector/pseudo.rb
145
160
  - lib/sass/selector/sequence.rb
146
161
  - lib/sass/selector/simple.rb
147
162
  - lib/sass/selector/simple_sequence.rb
148
- - lib/sass/selector.rb
149
163
  - lib/sass/shared.rb
150
164
  - lib/sass/source/map.rb
151
165
  - lib/sass/source/position.rb
@@ -189,59 +203,22 @@ files:
189
203
  - lib/sass/tree/visitors/to_css.rb
190
204
  - lib/sass/tree/warn_node.rb
191
205
  - lib/sass/tree/while_node.rb
206
+ - lib/sass/util.rb
192
207
  - lib/sass/util/cross_platform_random.rb
193
208
  - lib/sass/util/multibyte_string_scanner.rb
194
209
  - lib/sass/util/normalized_map.rb
195
210
  - lib/sass/util/ordered_hash.rb
196
211
  - lib/sass/util/subset_map.rb
197
212
  - lib/sass/util/test.rb
198
- - lib/sass/util.rb
199
213
  - lib/sass/version.rb
200
- - lib/sass.rb
201
- - vendor/listen/CHANGELOG.md
202
- - vendor/listen/CONTRIBUTING.md
203
- - vendor/listen/Gemfile
204
- - vendor/listen/Guardfile
205
- - vendor/listen/lib/listen/adapter.rb
206
- - vendor/listen/lib/listen/adapters/bsd.rb
207
- - vendor/listen/lib/listen/adapters/darwin.rb
208
- - vendor/listen/lib/listen/adapters/linux.rb
209
- - vendor/listen/lib/listen/adapters/polling.rb
210
- - vendor/listen/lib/listen/adapters/windows.rb
211
- - vendor/listen/lib/listen/directory_record.rb
212
- - vendor/listen/lib/listen/listener.rb
213
- - vendor/listen/lib/listen/turnstile.rb
214
- - vendor/listen/lib/listen/version.rb
215
- - vendor/listen/lib/listen.rb
216
- - vendor/listen/LICENSE
217
- - vendor/listen/listen.gemspec
218
- - vendor/listen/Rakefile
219
- - vendor/listen/README.md
220
- - vendor/listen/spec/listen/adapter_spec.rb
221
- - vendor/listen/spec/listen/adapters/bsd_spec.rb
222
- - vendor/listen/spec/listen/adapters/darwin_spec.rb
223
- - vendor/listen/spec/listen/adapters/linux_spec.rb
224
- - vendor/listen/spec/listen/adapters/polling_spec.rb
225
- - vendor/listen/spec/listen/adapters/windows_spec.rb
226
- - vendor/listen/spec/listen/directory_record_spec.rb
227
- - vendor/listen/spec/listen/listener_spec.rb
228
- - vendor/listen/spec/listen/turnstile_spec.rb
229
- - vendor/listen/spec/listen_spec.rb
230
- - vendor/listen/spec/spec_helper.rb
231
- - vendor/listen/spec/support/adapter_helper.rb
232
- - vendor/listen/spec/support/directory_record_helper.rb
233
- - vendor/listen/spec/support/fixtures_helper.rb
234
- - vendor/listen/spec/support/listeners_helper.rb
235
- - vendor/listen/spec/support/platform_helper.rb
236
- - vendor/listen/Vagrantfile
237
- - bin/sass
238
- - bin/sass-convert
239
- - bin/scss
214
+ - rails/init.rb
215
+ - test/sass-spec.yml
240
216
  - test/sass/cache_test.rb
241
217
  - test/sass/callbacks_test.rb
242
218
  - test/sass/compiler_test.rb
243
219
  - test/sass/conversion_test.rb
244
220
  - test/sass/css2sass_test.rb
221
+ - test/sass/css_variable_test.rb
245
222
  - test/sass/data/hsl-rgb.txt
246
223
  - test/sass/encoding_test.rb
247
224
  - test/sass/engine_test.rb
@@ -361,18 +338,42 @@ files:
361
338
  - test/sass/util_test.rb
362
339
  - test/sass/value_helpers_test.rb
363
340
  - test/test_helper.rb
364
- - extra/update_watch.rb
365
- - Rakefile
366
- - init.rb
367
- - .yardopts
368
- - CODE_OF_CONDUCT.md
369
- - CONTRIBUTING.md
370
- - MIT-LICENSE
371
- - README.md
372
- - REVISION
373
- - VERSION
374
- - VERSION_DATE
375
- - VERSION_NAME
341
+ - vendor/listen/CHANGELOG.md
342
+ - vendor/listen/CONTRIBUTING.md
343
+ - vendor/listen/Gemfile
344
+ - vendor/listen/Guardfile
345
+ - vendor/listen/LICENSE
346
+ - vendor/listen/README.md
347
+ - vendor/listen/Rakefile
348
+ - vendor/listen/Vagrantfile
349
+ - vendor/listen/lib/listen.rb
350
+ - vendor/listen/lib/listen/adapter.rb
351
+ - vendor/listen/lib/listen/adapters/bsd.rb
352
+ - vendor/listen/lib/listen/adapters/darwin.rb
353
+ - vendor/listen/lib/listen/adapters/linux.rb
354
+ - vendor/listen/lib/listen/adapters/polling.rb
355
+ - vendor/listen/lib/listen/adapters/windows.rb
356
+ - vendor/listen/lib/listen/directory_record.rb
357
+ - vendor/listen/lib/listen/listener.rb
358
+ - vendor/listen/lib/listen/turnstile.rb
359
+ - vendor/listen/lib/listen/version.rb
360
+ - vendor/listen/listen.gemspec
361
+ - vendor/listen/spec/listen/adapter_spec.rb
362
+ - vendor/listen/spec/listen/adapters/bsd_spec.rb
363
+ - vendor/listen/spec/listen/adapters/darwin_spec.rb
364
+ - vendor/listen/spec/listen/adapters/linux_spec.rb
365
+ - vendor/listen/spec/listen/adapters/polling_spec.rb
366
+ - vendor/listen/spec/listen/adapters/windows_spec.rb
367
+ - vendor/listen/spec/listen/directory_record_spec.rb
368
+ - vendor/listen/spec/listen/listener_spec.rb
369
+ - vendor/listen/spec/listen/turnstile_spec.rb
370
+ - vendor/listen/spec/listen_spec.rb
371
+ - vendor/listen/spec/spec_helper.rb
372
+ - vendor/listen/spec/support/adapter_helper.rb
373
+ - vendor/listen/spec/support/directory_record_helper.rb
374
+ - vendor/listen/spec/support/fixtures_helper.rb
375
+ - vendor/listen/spec/support/listeners_helper.rb
376
+ - vendor/listen/spec/support/platform_helper.rb
376
377
  homepage: http://sass-lang.com/
377
378
  licenses:
378
379
  - MIT
@@ -383,17 +384,17 @@ require_paths:
383
384
  - lib
384
385
  required_ruby_version: !ruby/object:Gem::Requirement
385
386
  requirements:
386
- - - '>='
387
+ - - ">="
387
388
  - !ruby/object:Gem::Version
388
389
  version: 1.8.7
389
390
  required_rubygems_version: !ruby/object:Gem::Requirement
390
391
  requirements:
391
- - - '>='
392
+ - - ">="
392
393
  - !ruby/object:Gem::Version
393
394
  version: '0'
394
395
  requirements: []
395
396
  rubyforge_project: sass
396
- rubygems_version: 2.0.3
397
+ rubygems_version: 2.5.1
397
398
  signing_key:
398
399
  specification_version: 4
399
400
  summary: A powerful but elegant CSS compiler that makes CSS fun again.
@@ -403,6 +404,7 @@ test_files:
403
404
  - test/sass/compiler_test.rb
404
405
  - test/sass/conversion_test.rb
405
406
  - test/sass/css2sass_test.rb
407
+ - test/sass/css_variable_test.rb
406
408
  - test/sass/encoding_test.rb
407
409
  - test/sass/engine_test.rb
408
410
  - test/sass/exec_test.rb