Hello community,

here is the log from the commit of package rubygem-sass for openSUSE:Factory 
checked in at 2015-10-14 16:44:59
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rubygem-sass (Old)
 and      /work/SRC/openSUSE:Factory/.rubygem-sass.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "rubygem-sass"

Changes:
--------
--- /work/SRC/openSUSE:Factory/rubygem-sass/rubygem-sass.changes        
2015-08-27 08:58:00.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.rubygem-sass.new/rubygem-sass.changes   
2015-10-14 16:45:00.000000000 +0200
@@ -1,0 +2,6 @@
+Sat Oct 10 04:30:06 UTC 2015 - [email protected]
+
+- updated to version 3.4.19
+ see installed CHANGELOG.md
+
+-------------------------------------------------------------------

Old:
----
  sass-3.4.18.gem

New:
----
  sass-3.4.19.gem

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ rubygem-sass.spec ++++++
--- /var/tmp/diff_new_pack.3nyS7Q/_old  2015-10-14 16:45:01.000000000 +0200
+++ /var/tmp/diff_new_pack.3nyS7Q/_new  2015-10-14 16:45:01.000000000 +0200
@@ -24,7 +24,7 @@
 #
 
 Name:           rubygem-sass
-Version:        3.4.18
+Version:        3.4.19
 Release:        0
 %define mod_name sass
 %define mod_full_name %{mod_name}-%{version}
@@ -42,7 +42,7 @@
 PreReq:         update-alternatives
 
 %description
-Sass makes CSS fun again. Sass is an extension of CSS3, adding
+Sass makes CSS fun again. Sass is an extension of CSS, adding
 nested rules, variables, mixins, selector inheritance, and more.
 It's translated to well-formatted, standard CSS using the
 command line tool or a web-framework plugin.

++++++ sass-3.4.18.gem -> sass-3.4.19.gem ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CONTRIBUTING.md new/CONTRIBUTING.md
--- old/CONTRIBUTING.md 1970-01-01 01:00:00.000000000 +0100
+++ new/CONTRIBUTING.md 2015-10-10 03:18:30.000000000 +0200
@@ -1,3 +1,3 @@
-Contributions are welcomed. Please see the following sites for guidelines:
+Contributions are welcomed. Please see the following site for guidelines:
 
 
[http://sass-lang.com/community#Contribute](http://sass-lang.com/community#Contribute)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/README.md new/README.md
--- old/README.md       1970-01-01 01:00:00.000000000 +0100
+++ new/README.md       2015-10-10 03:18:30.000000000 +0200
@@ -1,14 +1,14 @@
 # Sass [![Gem 
Version](https://badge.fury.io/rb/sass.png)](http://badge.fury.io/rb/sass) 
[![Inline 
docs](http://inch-ci.org/github/sass/sass.svg)](http://inch-ci.org/github/sass/sass)
 
-**Sass makes CSS fun again**. Sass is an extension of CSS3,
+**Sass makes CSS fun again**. Sass is an extension of CSS,
 adding nested rules, variables, mixins, selector inheritance, and more.
 It's translated to well-formatted, standard CSS
 using the command line tool or a web-framework plugin.
 
 Sass has two syntaxes. The new main syntax (as of Sass 3)
 is known as "SCSS" (for "Sassy CSS"),
-and is a superset of CSS3's syntax.
-This means that every valid CSS3 stylesheet is valid SCSS as well.
+and is a superset of CSS's syntax.
+This means that every valid CSS stylesheet is valid SCSS as well.
 SCSS files use the extension `.scss`.
 
 The second, older syntax is known as the indented syntax (or just "Sass").
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/VERSION new/VERSION
--- old/VERSION 1970-01-01 01:00:00.000000000 +0100
+++ new/VERSION 2015-10-10 03:18:30.000000000 +0200
@@ -1 +1 @@
-3.4.18
+3.4.19
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/VERSION_DATE new/VERSION_DATE
--- old/VERSION_DATE    1970-01-01 01:00:00.000000000 +0100
+++ new/VERSION_DATE    2015-10-10 03:18:30.000000000 +0200
@@ -1 +1 @@
-25 August 2015 20:10:56 UTC
+10 October 2015 01:18:29 UTC
Files old/checksums.yaml.gz and new/checksums.yaml.gz differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/sass/exec/sass_scss.rb 
new/lib/sass/exec/sass_scss.rb
--- old/lib/sass/exec/sass_scss.rb      1970-01-01 01:00:00.000000000 +0100
+++ new/lib/sass/exec/sass_scss.rb      2015-10-10 03:18:30.000000000 +0200
@@ -174,9 +174,6 @@
               'Read input from standard input instead of an input file.',
               'This is the default if no input file is specified.') do
         @options[:input] = $stdin
-
-        # See issue 1745
-        (@options[:for_engine][:load_paths] ||= []) << 
::Sass::Importers::DeprecatedPath.new(".")
       end
 
       encoding_option(opts)
@@ -390,6 +387,11 @@
       input = @options[:input]
       output = @options[:output]
 
+      if input == $stdin
+        # See issue 1745
+        (@options[:for_engine][:load_paths] ||= []) << 
::Sass::Importers::DeprecatedPath.new(".")
+      end
+
       @options[:for_engine][:syntax] ||= :scss if input.is_a?(File) && 
input.path =~ /\.scss$/
       @options[:for_engine][:syntax] ||= @default_syntax
       engine =
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/sass/importers/filesystem.rb 
new/lib/sass/importers/filesystem.rb
--- old/lib/sass/importers/filesystem.rb        1970-01-01 01:00:00.000000000 
+0100
+++ new/lib/sass/importers/filesystem.rb        2015-10-10 03:18:30.000000000 
+0200
@@ -150,8 +150,7 @@
             full_path.gsub!(REDUNDANT_DIRECTORY, File::SEPARATOR)
             [Sass::Util.cleanpath(full_path).to_s, s]
           end
-        end
-        found = Sass::Util.flatten(found, 1)
+        end.flatten(1)
         return if found.empty?
 
         if found.size > 1 && !@same_name_warnings.include?(found.first.first)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/sass/script/functions.rb 
new/lib/sass/script/functions.rb
--- old/lib/sass/script/functions.rb    1970-01-01 01:00:00.000000000 +0100
+++ new/lib/sass/script/functions.rb    2015-10-10 03:18:30.000000000 +0200
@@ -188,7 +188,7 @@
   # \{#index index($list, $value)}
   # : Returns the position of a value within a list.
   #
-  # \{#list_separator list-separator(#list)}
+  # \{#list_separator list-separator($list)}
   # : Returns the separator of a list.
   #
   # ## Map Functions {#map-functions}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/sass/script/tree/funcall.rb 
new/lib/sass/script/tree/funcall.rb
--- old/lib/sass/script/tree/funcall.rb 1970-01-01 01:00:00.000000000 +0100
+++ new/lib/sass/script/tree/funcall.rb 2015-10-10 03:18:30.000000000 +0200
@@ -1,5 +1,5 @@
 require 'sass/script/functions'
-require 'sass/util/normalized_map'
+require 'sass/util'
 
 module Sass::Script::Tree
   # A SassScript parse node representing a function call.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/sass/script/tree/node.rb 
new/lib/sass/script/tree/node.rb
--- old/lib/sass/script/tree/node.rb    1970-01-01 01:00:00.000000000 +0100
+++ new/lib/sass/script/tree/node.rb    2015-10-10 03:18:30.000000000 +0200
@@ -62,6 +62,10 @@
 
     # Returns the text of this SassScript expression.
     #
+    # @options opts :quote [String]
+    #   The preferred quote style for quoted strings. If `:none`, strings are
+    #   always emitted unquoted.
+    #
     # @return [String]
     def to_sass(opts = {})
       Sass::Util.abstract(self)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/sass/script/tree/string_interpolation.rb 
new/lib/sass/script/tree/string_interpolation.rb
--- old/lib/sass/script/tree/string_interpolation.rb    1970-01-01 
01:00:00.000000000 +0100
+++ new/lib/sass/script/tree/string_interpolation.rb    2015-10-10 
03:18:30.000000000 +0200
@@ -3,12 +3,33 @@
   #
   # @see Interpolation
   class StringInterpolation < Node
+    # @return [Literal] The string literal before this interpolation.
+    attr_reader :before
+
+    # @return [Node] The SassScript within the interpolation
+    attr_reader :mid
+
+    # @return [StringInterpolation, Literal]
+    #     The string literal or string interpolation before this interpolation.
+    attr_reader :after
+
+    # Whether this is a CSS string or a CSS identifier. The difference is that
+    # strings are written with double-quotes, while identifiers aren't.
+    #
+    # String interpolations are only ever identifiers if they're quote-like
+    # functions such as `url()`.
+    #
+    # @return [Symbol] `:string` or `:identifier`
+    def type
+      @before.value.type
+    end
+
     # Interpolation in a string is of the form `"before #{mid} after"`,
     # where `before` and `after` may include more interpolation.
     #
-    # @param before [Node] The string before the interpolation
-    # @param mid [Node] The SassScript within the interpolation
-    # @param after [Node] The string after the interpolation
+    # @param before [StringInterpolation, Literal] See 
{StringInterpolation#before}
+    # @param mid [Node] See {StringInterpolation#mid}
+    # @param after [Literal] See {StringInterpolation#after}
     def initialize(before, mid, after)
       @before = before
       @mid = mid
@@ -22,32 +43,15 @@
 
     # @see Node#to_sass
     def to_sass(opts = {})
-      # We can get rid of all of this when we remove the deprecated :equals 
context
-      # XXX CE: It's gone now but I'm not sure what can be removed now.
-      before_unquote, before_quote_char, before_str = 
parse_str(@before.to_sass(opts))
-      after_unquote, after_quote_char, after_str = 
parse_str(@after.to_sass(opts))
-      unquote = before_unquote || after_unquote ||
-        (before_quote_char && !after_quote_char && !after_str.empty?) ||
-        (!before_quote_char && after_quote_char && !before_str.empty?)
-      quote_char =
-        if before_quote_char && after_quote_char && before_quote_char != 
after_quote_char
-          before_str.gsub!("\\'", "'")
-          before_str.gsub!('"', "\\\"")
-          after_str.gsub!("\\'", "'")
-          after_str.gsub!('"', "\\\"")
-          '"'
-        else
-          before_quote_char || after_quote_char
-        end
+      quote = type == :string ? opts[:quote] || quote_for(self) || '"' : :none
+      opts = opts.merge(:quote => quote)
 
       res = ""
-      res << 'unquote(' if unquote
-      res << quote_char if quote_char
-      res << before_str
-      res << '#{' << @mid.to_sass(opts) << '}'
-      res << after_str
-      res << quote_char if quote_char
-      res << ')' if unquote
+      res << quote if quote != :none
+      res << _to_sass(before, opts)
+      res << '#{' << @mid.to_sass(opts.merge(:quote => nil)) << '}'
+      res << _to_sass(after, opts)
+      res << quote if quote != :none
       res
     end
 
@@ -88,17 +92,28 @@
 
     private
 
-    def parse_str(str)
-      case str
-      when /^unquote\((["'])(.*)\1\)$/
-        return true, $1, $2
-      when '""'
-        return false, nil, ""
-      when /^(["'])(.*)\1$/
-        return false, $1, $2
-      else
-        return false, nil, str
+    def _to_sass(string_or_interp, opts)
+      result = string_or_interp.to_sass(opts)
+      opts[:quote] == :none ? result : result.slice(1...-1)
+    end
+
+    def quote_for(string_or_interp)
+      if string_or_interp.is_a?(Sass::Script::Tree::Literal)
+        return nil if string_or_interp.value.value.empty?
+        return '"' if string_or_interp.value.value.include?("'")
+        return "'" if string_or_interp.value.value.include?('"')
+        return nil
       end
+
+      # Double-quotes take precedence over single quotes.
+      before_quote = quote_for(string_or_interp.before)
+      return '"' if before_quote == '"'
+      after_quote = quote_for(string_or_interp.after)
+      return '"' if after_quote == '"'
+
+      # Returns "'" if either or both insist on single quotes, and nil
+      # otherwise.
+      before_quote || after_quote
     end
   end
 end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/sass/script/value/number.rb 
new/lib/sass/script/value/number.rb
--- old/lib/sass/script/value/number.rb 1970-01-01 01:00:00.000000000 +0100
+++ new/lib/sass/script/value/number.rb 2015-10-10 03:18:30.000000000 +0200
@@ -43,6 +43,7 @@
     def self.precision=(digits)
       @precision = digits.round
       @precision_factor = 10.0**@precision
+      @epsilon = 1 / (@precision_factor * 10)
     end
 
     # the precision factor used in numeric output
@@ -51,6 +52,13 @@
       @precision_factor ||= 10.0**precision
     end
 
+    # Used in checking equality of floating point numbers. Any
+    # numbers within an `epsilon` of each other are considered functionally 
equal.
+    # The value for epsilon is one tenth of the current numeric precision.
+    def self.epsilon
+      @epsilon ||= 1 / (precision_factor * 10)
+    end
+
     # Used so we don't allocate two new arrays for each new number.
     NO_UNITS  = []
 
@@ -200,7 +208,7 @@
       rescue Sass::UnitConversionError
         return Bool::FALSE
       end
-      Bool.new(this.value == other.value)
+      Bool.new(basically_equal?(this.value, other.value))
     end
 
     def hash
@@ -211,7 +219,7 @@
     # Hash-equality must be transitive, so it just compares the exact value,
     # numerator units, and denominator units.
     def eql?(other)
-      value == other.value && numerator_units == other.numerator_units &&
+      basically_equal?(value, other.value) && numerator_units == 
other.numerator_units &&
         denominator_units == other.denominator_units
     end
 
@@ -294,7 +302,7 @@
 
     # @return [Boolean] Whether or not this number is an integer.
     def int?
-      value % 1 == 0.0
+      basically_equal?(value % 1, 0.0)
     end
 
     # @return [Boolean] Whether or not this number has no units.
@@ -376,10 +384,22 @@
     private
 
     # @private
+    # @see Sass::Script::Number.basically_equal?
+    def basically_equal?(num1, num2)
+      self.class.basically_equal?(num1, num2)
+    end
+
+    # Checks whether two numbers are within an epsilon of each other.
+    # @return [Boolean]
+    def self.basically_equal?(num1, num2)
+      (num1 - num2).abs < epsilon
+    end
+
+    # @private
     def self.round(num)
       if num.is_a?(Float) && (num.infinite? || num.nan?)
         num
-      elsif num % 1 == 0.0
+      elsif basically_equal?(num % 1, 0.0)
         num.to_i
       else
         ((num * precision_factor).round / precision_factor).to_f
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/sass/script/value/string.rb 
new/lib/sass/script/value/string.rb
--- old/lib/sass/script/value/string.rb 1970-01-01 01:00:00.000000000 +0100
+++ new/lib/sass/script/value/string.rb 2015-10-10 03:18:30.000000000 +0200
@@ -28,9 +28,18 @@
       end
     end
 
-    def self.quote(contents, quote = nil)
+    # Returns the quoted string representation of `contents`.
+    #
+    # @options opts :quote [String]
+    #   The preferred quote style for quoted strings. If `:none`, strings are
+    #   always emitted unquoted. If `nil`, quoting is determined automatically.
+    # @options opts :sass [String]
+    #   Whether to quote strings for Sass source, as opposed to CSS. Defaults 
to `false`.
+    def self.quote(contents, opts = {})
+      quote = opts[:quote]
+
       # Short-circuit if there are no characters that need quoting.
-      unless contents =~ /[\n\\"']/
+      unless contents =~ /[\n\\"']|\#\{/
         quote ||= '"'
         return "#{quote}#{contents}#{quote}"
       end
@@ -50,6 +59,9 @@
       # Replace single backslashes with multiples.
       contents = contents.gsub("\\", "\\\\\\\\")
 
+      # Escape interpolation.
+      contents = contents.gsub('#{', "\\\#{") if opts[:sass]
+
       if quote == '"'
         contents = contents.gsub('"', "\\\"")
       else
@@ -82,12 +94,12 @@
     # @see Value#to_s
     def to_s(opts = {})
       return @value.gsub(/\n\s*/, ' ') if opts[:quote] == :none || @type == 
:identifier
-      Sass::Script::Value::String.quote(value, opts[:quote])
+      String.quote(value, opts)
     end
 
     # @see Value#to_sass
     def to_sass(opts = {})
-      to_s
+      to_s(opts.merge(:sass => true))
     end
 
     def inspect
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/sass/scss/parser.rb new/lib/sass/scss/parser.rb
--- old/lib/sass/scss/parser.rb 1970-01-01 01:00:00.000000000 +0100
+++ new/lib/sass/scss/parser.rb 2015-10-10 03:18:30.000000000 +0200
@@ -156,13 +156,12 @@
         else
           value = Sass::Engine.parse_interp(
             text, line, @scanner.pos - text.size, :filename => @filename)
-          string_before_comment = @scanner.string[[email protected] - 
text.length]
-          newline_before_comment = string_before_comment.rindex("\n")
+          newline_before_comment = @scanner.string.rindex("\n", @scanner.pos - 
text.length)
           last_line_before_comment =
             if newline_before_comment
-              string_before_comment[newline_before_comment + 1..-1]
+              @scanner.string[newline_before_comment + [email protected] - 
text.length]
             else
-              string_before_comment
+              @scanner.string[[email protected] - text.length]
             end
           value.unshift(last_line_before_comment.gsub(/[^\s]/, ' '))
         end
@@ -215,12 +214,12 @@
       end
 
       def special_directive(name, start_pos)
-        sym = name.gsub('-', '_').to_sym
+        sym = name.tr('-', '_').to_sym
         DIRECTIVES.include?(sym) && send("#{sym}_directive", start_pos)
       end
 
       def prefixed_directive(name, start_pos)
-        sym = deprefix(name).gsub('-', '_').to_sym
+        sym = deprefix(name).tr('-', '_').to_sym
         PREFIXED_DIRECTIVES.include?(sym) && send("#{sym}_directive", name, 
start_pos)
       end
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/sass/selector/sequence.rb 
new/lib/sass/selector/sequence.rb
--- old/lib/sass/selector/sequence.rb   1970-01-01 01:00:00.000000000 +0100
+++ new/lib/sass/selector/sequence.rb   2015-10-10 03:18:30.000000000 +0200
@@ -228,11 +228,11 @@
           next if current.empty?
           current = current.dup
           last_current = [current.pop]
-          prefixes = Sass::Util.flatten(prefixes.map do |prefix|
+          prefixes = prefixes.map do |prefix|
             sub = subweave(prefix, current)
             next [] unless sub
             sub.map {|seqs| seqs + last_current}
-          end, 1)
+          end.flatten(1)
         end
         prefixes
       end
@@ -551,7 +551,7 @@
       def trim(seqses)
         # Avoid truly horrific quadratic behavior. TODO: I think there
         # may be a way to get perfect trimming without going quadratic.
-        return Sass::Util.flatten(seqses, 1) if seqses.size > 100
+        return seqses.flatten(1) if seqses.size > 100
 
         # Keep the results in a separate array so we can be sure we aren't
         # comparing against an already-trimmed selector. This ensures that two
@@ -586,7 +586,7 @@
             end
           end
         end
-        Sass::Util.flatten(result, 1)
+        result.flatten(1)
       end
 
       def _hash
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/sass/selector/simple_sequence.rb 
new/lib/sass/selector/simple_sequence.rb
--- old/lib/sass/selector/simple_sequence.rb    1970-01-01 01:00:00.000000000 
+0100
+++ new/lib/sass/selector/simple_sequence.rb    2015-10-10 03:18:30.000000000 
+0200
@@ -332,12 +332,12 @@
       end
 
       def _hash
-        [base, Sass::Util.set_hash(rest)].hash
+        [base, rest.hash].hash
       end
 
       def _eql?(other)
         other.base.eql?(base) && other.pseudo_elements == pseudo_elements &&
-          Sass::Util.set_eql?(other.rest, rest) && other.subject? == subject?
+          other.rest.eql?(rest) && other.subject? == subject?
       end
     end
   end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/sass/util/normalized_map.rb 
new/lib/sass/util/normalized_map.rb
--- old/lib/sass/util/normalized_map.rb 1970-01-01 01:00:00.000000000 +0100
+++ new/lib/sass/util/normalized_map.rb 2015-10-10 03:18:30.000000000 +0200
@@ -1,5 +1,4 @@
 require 'delegate'
-require 'sass/util'
 
 module Sass
   module Util
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/sass/util/subset_map.rb 
new/lib/sass/util/subset_map.rb
--- old/lib/sass/util/subset_map.rb     1970-01-01 01:00:00.000000000 +0100
+++ new/lib/sass/util/subset_map.rb     2015-10-10 03:18:30.000000000 +0200
@@ -78,8 +78,7 @@
             next unless subset.subset?(set)
             [index, subenum]
           end
-        end
-        res = Sass::Util.flatten(res, 1)
+        end.flatten(1)
         res.compact!
         res.uniq!
         res.sort!
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/sass/util.rb new/lib/sass/util.rb
--- old/lib/sass/util.rb        1970-01-01 01:00:00.000000000 +0100
+++ new/lib/sass/util.rb        2015-10-10 03:18:30.000000000 +0200
@@ -276,7 +276,7 @@
     #     #  [2, 4, 5]]
     def paths(arrs)
       arrs.inject([[]]) do |paths, arr|
-        flatten(arr.map {|e| paths.map {|path| path + [e]}}, 1)
+        arr.map {|e| paths.map {|path| path + [e]}}.flatten(1)
       end
     end
 
@@ -783,15 +783,6 @@
                    (RUBY_VERSION_COMPONENTS[0] == 1 && 
RUBY_VERSION_COMPONENTS[1] < 9)
     end
 
-    # Whether or not this is running under Ruby 1.8.6 or lower.
-    # Note that lower versions are not officially supported.
-    #
-    # @return [Boolean]
-    def ruby1_8_6?
-      return @ruby1_8_6 if defined?(@ruby1_8_6)
-      @ruby1_8_6 = ruby1_8? && RUBY_VERSION_COMPONENTS[2] < 7
-    end
-
     # Whether or not this is running under Ruby 1.9.2 exactly.
     #
     # @return [Boolean]
@@ -841,7 +832,7 @@
       end
 
       return Hash[pairs_or_hash] unless ruby1_8?
-      (pairs_or_hash.is_a?(NormalizedMap) ? NormalizedMap : 
OrderedHash)[*flatten(pairs_or_hash, 1)]
+      (pairs_or_hash.is_a?(NormalizedMap) ? NormalizedMap : 
OrderedHash)[*pairs_or_hash.flatten(1)]
     end
 
     unless ruby1_8?
@@ -987,17 +978,6 @@
       ruby1_8? ? c[0] : c.ord
     end
 
-    # Flattens the first `n` nested arrays in a cross-version manner.
-    #
-    # @param arr [Array] The array to flatten
-    # @param n [Fixnum] The number of levels to flatten
-    # @return [Array] The flattened array
-    def flatten(arr, n)
-      return arr.flatten(n) unless ruby1_8_6?
-      return arr if n == 0
-      arr.inject([]) {|res, e| e.is_a?(Array) ? res.concat(flatten(e, n - 1)) 
: res << e}
-    end
-
     # Flattens the first level of nested arrays in `arrs`. Unlike
     # `Array#flatten`, this orders the result by taking the first
     # values from each array in order, then the second, and so on.
@@ -1016,27 +996,6 @@
       result
     end
 
-    # Returns the hash code for a set in a cross-version manner.
-    # Aggravatingly, this is order-dependent in Ruby 1.8.6.
-    #
-    # @param set [Set]
-    # @return [Fixnum] The order-independent hashcode of `set`
-    def set_hash(set)
-      return set.hash unless ruby1_8_6?
-      set.map {|e| e.hash}.uniq.sort.hash
-    end
-
-    # Tests the hash-equality of two sets in a cross-version manner.
-    # Aggravatingly, this is order-dependent in Ruby 1.8.6.
-    #
-    # @param set1 [Set]
-    # @param set2 [Set]
-    # @return [Boolean] Whether or not the sets are hashcode equal
-    def set_eql?(set1, set2)
-      return set1.eql?(set2) unless ruby1_8_6?
-      set1.to_a.uniq.sort_by {|e| e.hash}.eql?(set2.to_a.uniq.sort_by {|e| 
e.hash})
-    end
-
     # Like `Object#inspect`, but preserves non-ASCII characters rather than
     # escaping them under Ruby 1.9.2.  This is necessary so that the
     # precompiled Haml template can be `#encode`d into `@options[:encoding]`
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/metadata new/metadata
--- old/metadata        1970-01-01 01:00:00.000000000 +0100
+++ new/metadata        2015-10-10 03:18:30.000000000 +0200
@@ -1,7 +1,7 @@
 --- !ruby/object:Gem::Specification
 name: sass
 version: !ruby/object:Gem::Version
-  version: 3.4.18
+  version: 3.4.19
 platform: ruby
 authors:
 - Natalie Weizenbaum
@@ -10,55 +10,54 @@
 autorequire: 
 bindir: bin
 cert_chain: []
-date: 2015-08-25 00:00:00.000000000 Z
+date: 2015-10-10 00:00:00.000000000 Z
 dependencies:
 - !ruby/object:Gem::Dependency
   name: yard
   requirement: !ruby/object:Gem::Requirement
     requirements:
-    - - '>='
+    - - ! '>='
       - !ruby/object:Gem::Version
         version: 0.5.3
   type: :development
   prerelease: false
   version_requirements: !ruby/object:Gem::Requirement
     requirements:
-    - - '>='
+    - - ! '>='
       - !ruby/object:Gem::Version
         version: 0.5.3
 - !ruby/object:Gem::Dependency
   name: maruku
   requirement: !ruby/object:Gem::Requirement
     requirements:
-    - - '>='
+    - - ! '>='
       - !ruby/object:Gem::Version
         version: 0.5.9
   type: :development
   prerelease: false
   version_requirements: !ruby/object:Gem::Requirement
     requirements:
-    - - '>='
+    - - ! '>='
       - !ruby/object:Gem::Version
         version: 0.5.9
 - !ruby/object:Gem::Dependency
   name: minitest
   requirement: !ruby/object:Gem::Requirement
     requirements:
-    - - '>='
+    - - ! '>='
       - !ruby/object:Gem::Version
         version: '5'
   type: :development
   prerelease: false
   version_requirements: !ruby/object:Gem::Requirement
     requirements:
-    - - '>='
+    - - ! '>='
       - !ruby/object:Gem::Version
         version: '5'
-description: |2
-        Sass makes CSS fun again. Sass is an extension of CSS3, adding
-        nested rules, variables, mixins, selector inheritance, and more.
-        It's translated to well-formatted, standard CSS using the
-        command line tool or a web-framework plugin.
+description: ! "      Sass makes CSS fun again. Sass is an extension of CSS, 
adding\n
+  \     nested rules, variables, mixins, selector inheritance, and more.\n     
 It's
+  translated to well-formatted, standard CSS using the\n      command line 
tool or
+  a web-framework plugin.\n"
 email: [email protected]
 executables:
 - sass
@@ -67,31 +66,47 @@
 extensions: []
 extra_rdoc_files: []
 files:
-- rails/init.rb
+- .yardopts
+- CODE_OF_CONDUCT.md
+- CONTRIBUTING.md
+- MIT-LICENSE
+- README.md
+- REVISION
+- Rakefile
+- VERSION
+- VERSION_DATE
+- VERSION_NAME
+- bin/sass
+- bin/sass-convert
+- bin/scss
+- extra/update_watch.rb
+- init.rb
+- lib/sass.rb
+- lib/sass/cache_stores.rb
 - lib/sass/cache_stores/base.rb
 - lib/sass/cache_stores/chain.rb
 - lib/sass/cache_stores/filesystem.rb
 - lib/sass/cache_stores/memory.rb
 - lib/sass/cache_stores/null.rb
-- lib/sass/cache_stores.rb
 - lib/sass/callbacks.rb
 - lib/sass/css.rb
 - lib/sass/engine.rb
 - lib/sass/environment.rb
 - lib/sass/error.rb
+- lib/sass/exec.rb
 - lib/sass/exec/base.rb
 - lib/sass/exec/sass_convert.rb
 - lib/sass/exec/sass_scss.rb
-- lib/sass/exec.rb
 - lib/sass/features.rb
+- lib/sass/importers.rb
 - lib/sass/importers/base.rb
 - lib/sass/importers/deprecated_path.rb
 - lib/sass/importers/filesystem.rb
-- lib/sass/importers.rb
+- lib/sass/logger.rb
 - lib/sass/logger/base.rb
 - lib/sass/logger/log_level.rb
-- lib/sass/logger.rb
 - lib/sass/media.rb
+- lib/sass/plugin.rb
 - lib/sass/plugin/compiler.rb
 - lib/sass/plugin/configuration.rb
 - lib/sass/plugin/generic.rb
@@ -99,15 +114,16 @@
 - lib/sass/plugin/rack.rb
 - lib/sass/plugin/rails.rb
 - lib/sass/plugin/staleness_checker.rb
-- lib/sass/plugin.rb
 - lib/sass/railtie.rb
 - lib/sass/repl.rb
 - lib/sass/root.rb
+- lib/sass/script.rb
 - lib/sass/script/css_lexer.rb
 - lib/sass/script/css_parser.rb
 - lib/sass/script/functions.rb
 - lib/sass/script/lexer.rb
 - lib/sass/script/parser.rb
+- lib/sass/script/tree.rb
 - lib/sass/script/tree/funcall.rb
 - lib/sass/script/tree/interpolation.rb
 - lib/sass/script/tree/list_literal.rb
@@ -119,7 +135,7 @@
 - lib/sass/script/tree/string_interpolation.rb
 - lib/sass/script/tree/unary_operation.rb
 - lib/sass/script/tree/variable.rb
-- lib/sass/script/tree.rb
+- lib/sass/script/value.rb
 - lib/sass/script/value/arg_list.rb
 - lib/sass/script/value/base.rb
 - lib/sass/script/value/bool.rb
@@ -130,22 +146,20 @@
 - lib/sass/script/value/null.rb
 - lib/sass/script/value/number.rb
 - lib/sass/script/value/string.rb
-- lib/sass/script/value.rb
-- lib/sass/script.rb
+- lib/sass/scss.rb
 - lib/sass/scss/css_parser.rb
 - lib/sass/scss/parser.rb
 - lib/sass/scss/rx.rb
 - lib/sass/scss/script_lexer.rb
 - lib/sass/scss/script_parser.rb
 - lib/sass/scss/static_parser.rb
-- lib/sass/scss.rb
+- lib/sass/selector.rb
 - lib/sass/selector/abstract_sequence.rb
 - lib/sass/selector/comma_sequence.rb
 - lib/sass/selector/pseudo.rb
 - lib/sass/selector/sequence.rb
 - lib/sass/selector/simple.rb
 - lib/sass/selector/simple_sequence.rb
-- lib/sass/selector.rb
 - lib/sass/shared.rb
 - lib/sass/source/map.rb
 - lib/sass/source/position.rb
@@ -189,54 +203,15 @@
 - lib/sass/tree/visitors/to_css.rb
 - lib/sass/tree/warn_node.rb
 - lib/sass/tree/while_node.rb
+- lib/sass/util.rb
 - lib/sass/util/cross_platform_random.rb
 - lib/sass/util/multibyte_string_scanner.rb
 - lib/sass/util/normalized_map.rb
 - lib/sass/util/ordered_hash.rb
 - lib/sass/util/subset_map.rb
 - lib/sass/util/test.rb
-- lib/sass/util.rb
 - lib/sass/version.rb
-- lib/sass.rb
-- vendor/listen/CHANGELOG.md
-- vendor/listen/CONTRIBUTING.md
-- vendor/listen/Gemfile
-- vendor/listen/Guardfile
-- vendor/listen/lib/listen/adapter.rb
-- vendor/listen/lib/listen/adapters/bsd.rb
-- vendor/listen/lib/listen/adapters/darwin.rb
-- vendor/listen/lib/listen/adapters/linux.rb
-- vendor/listen/lib/listen/adapters/polling.rb
-- vendor/listen/lib/listen/adapters/windows.rb
-- vendor/listen/lib/listen/directory_record.rb
-- vendor/listen/lib/listen/listener.rb
-- vendor/listen/lib/listen/turnstile.rb
-- vendor/listen/lib/listen/version.rb
-- vendor/listen/lib/listen.rb
-- vendor/listen/LICENSE
-- vendor/listen/listen.gemspec
-- vendor/listen/Rakefile
-- vendor/listen/README.md
-- vendor/listen/spec/listen/adapter_spec.rb
-- vendor/listen/spec/listen/adapters/bsd_spec.rb
-- vendor/listen/spec/listen/adapters/darwin_spec.rb
-- vendor/listen/spec/listen/adapters/linux_spec.rb
-- vendor/listen/spec/listen/adapters/polling_spec.rb
-- vendor/listen/spec/listen/adapters/windows_spec.rb
-- vendor/listen/spec/listen/directory_record_spec.rb
-- vendor/listen/spec/listen/listener_spec.rb
-- vendor/listen/spec/listen/turnstile_spec.rb
-- vendor/listen/spec/listen_spec.rb
-- vendor/listen/spec/spec_helper.rb
-- vendor/listen/spec/support/adapter_helper.rb
-- vendor/listen/spec/support/directory_record_helper.rb
-- vendor/listen/spec/support/fixtures_helper.rb
-- vendor/listen/spec/support/listeners_helper.rb
-- vendor/listen/spec/support/platform_helper.rb
-- vendor/listen/Vagrantfile
-- bin/sass
-- bin/sass-convert
-- bin/scss
+- rails/init.rb
 - test/sass/cache_test.rb
 - test/sass/callbacks_test.rb
 - test/sass/compiler_test.rb
@@ -361,18 +336,42 @@
 - test/sass/util_test.rb
 - test/sass/value_helpers_test.rb
 - test/test_helper.rb
-- extra/update_watch.rb
-- Rakefile
-- init.rb
-- .yardopts
-- CODE_OF_CONDUCT.md
-- CONTRIBUTING.md
-- MIT-LICENSE
-- README.md
-- REVISION
-- VERSION
-- VERSION_DATE
-- VERSION_NAME
+- vendor/listen/CHANGELOG.md
+- vendor/listen/CONTRIBUTING.md
+- vendor/listen/Gemfile
+- vendor/listen/Guardfile
+- vendor/listen/LICENSE
+- vendor/listen/README.md
+- vendor/listen/Rakefile
+- vendor/listen/Vagrantfile
+- vendor/listen/lib/listen.rb
+- vendor/listen/lib/listen/adapter.rb
+- vendor/listen/lib/listen/adapters/bsd.rb
+- vendor/listen/lib/listen/adapters/darwin.rb
+- vendor/listen/lib/listen/adapters/linux.rb
+- vendor/listen/lib/listen/adapters/polling.rb
+- vendor/listen/lib/listen/adapters/windows.rb
+- vendor/listen/lib/listen/directory_record.rb
+- vendor/listen/lib/listen/listener.rb
+- vendor/listen/lib/listen/turnstile.rb
+- vendor/listen/lib/listen/version.rb
+- vendor/listen/listen.gemspec
+- vendor/listen/spec/listen/adapter_spec.rb
+- vendor/listen/spec/listen/adapters/bsd_spec.rb
+- vendor/listen/spec/listen/adapters/darwin_spec.rb
+- vendor/listen/spec/listen/adapters/linux_spec.rb
+- vendor/listen/spec/listen/adapters/polling_spec.rb
+- vendor/listen/spec/listen/adapters/windows_spec.rb
+- vendor/listen/spec/listen/directory_record_spec.rb
+- vendor/listen/spec/listen/listener_spec.rb
+- vendor/listen/spec/listen/turnstile_spec.rb
+- vendor/listen/spec/listen_spec.rb
+- vendor/listen/spec/spec_helper.rb
+- vendor/listen/spec/support/adapter_helper.rb
+- vendor/listen/spec/support/directory_record_helper.rb
+- vendor/listen/spec/support/fixtures_helper.rb
+- vendor/listen/spec/support/listeners_helper.rb
+- vendor/listen/spec/support/platform_helper.rb
 homepage: http://sass-lang.com/
 licenses:
 - MIT
@@ -383,43 +382,43 @@
 - lib
 required_ruby_version: !ruby/object:Gem::Requirement
   requirements:
-  - - '>='
+  - - ! '>='
     - !ruby/object:Gem::Version
       version: 1.8.7
 required_rubygems_version: !ruby/object:Gem::Requirement
   requirements:
-  - - '>='
+  - - ! '>='
     - !ruby/object:Gem::Version
       version: '0'
 requirements: []
 rubyforge_project: sass
-rubygems_version: 2.0.3
+rubygems_version: 2.4.3
 signing_key: 
 specification_version: 4
 summary: A powerful but elegant CSS compiler that makes CSS fun again.
 test_files:
+- test/sass/importer_test.rb
+- test/sass/engine_test.rb
+- test/sass/value_helpers_test.rb
+- test/sass/superselector_test.rb
+- test/sass/logger_test.rb
+- test/sass/util_test.rb
 - test/sass/cache_test.rb
-- test/sass/callbacks_test.rb
-- test/sass/compiler_test.rb
-- test/sass/conversion_test.rb
-- test/sass/css2sass_test.rb
 - test/sass/encoding_test.rb
-- test/sass/engine_test.rb
+- test/sass/source_map_test.rb
+- test/sass/css2sass_test.rb
+- test/sass/plugin_test.rb
+- test/sass/conversion_test.rb
+- test/sass/util/subset_map_test.rb
+- test/sass/util/multibyte_string_scanner_test.rb
+- test/sass/util/normalized_map_test.rb
 - test/sass/exec_test.rb
-- test/sass/extend_test.rb
+- test/sass/scss/rx_test.rb
+- test/sass/scss/scss_test.rb
+- test/sass/scss/css_test.rb
+- test/sass/callbacks_test.rb
 - test/sass/functions_test.rb
-- test/sass/importer_test.rb
-- test/sass/logger_test.rb
-- test/sass/plugin_test.rb
+- test/sass/extend_test.rb
 - test/sass/script_conversion_test.rb
 - test/sass/script_test.rb
-- test/sass/scss/css_test.rb
-- test/sass/scss/rx_test.rb
-- test/sass/scss/scss_test.rb
-- test/sass/source_map_test.rb
-- test/sass/superselector_test.rb
-- test/sass/util/multibyte_string_scanner_test.rb
-- test/sass/util/normalized_map_test.rb
-- test/sass/util/subset_map_test.rb
-- test/sass/util_test.rb
-- test/sass/value_helpers_test.rb
+- test/sass/compiler_test.rb
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/test/sass/engine_test.rb new/test/sass/engine_test.rb
--- old/test/sass/engine_test.rb        1970-01-01 01:00:00.000000000 +0100
+++ new/test/sass/engine_test.rb        2015-10-10 03:18:30.000000000 +0200
@@ -78,7 +78,6 @@
     "& a\n  :b c" => ["Base-level rules cannot contain the 
parent-selector-referencing character '&'.", 1],
     "a\n  :b\n    c" => "Illegal nesting: Only properties may be nested 
beneath properties.",
     "$a: b\n  :c d\n" => "Illegal nesting: Nothing may be nested beneath 
variable declarations.",
-    "$a: b\n  :c d\n" => "Illegal nesting: Nothing may be nested beneath 
variable declarations.",
     "@import templates/basic\n  foo" => "Illegal nesting: Nothing may be 
nested beneath import directives.",
     "foo\n  @import foo.css" => "CSS import directives may only be used at the 
root of a document.",
     "@if true\n  @import foo" => "Import directives may not be used within 
control directives or mixins.",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/test/sass/script_conversion_test.rb 
new/test/sass/script_conversion_test.rb
--- old/test/sass/script_conversion_test.rb     1970-01-01 01:00:00.000000000 
+0100
+++ new/test/sass/script_conversion_test.rb     2015-10-10 03:18:30.000000000 
+0200
@@ -334,7 +334,10 @@
     assert_renders '"foo #{$bar} #{$bang} baz"'
     assert_renders '"#{$bar}baz"'
     assert_renders '"foo#{$bar}"'
-    assert_equal '#{$bar}', render('"#{$bar}"')
+    assert_renders '"#{$bar}"'
+
+    assert_renders "'\"\#{\"bar\"}\"'"
+    assert_renders '"\#{bar}"'
 
     assert_equal '"foo#{$bar}baz"', render("'foo\#{$bar}baz'")
   end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/test/sass/script_test.rb new/test/sass/script_test.rb
--- old/test/sass/script_test.rb        1970-01-01 01:00:00.000000000 +0100
+++ new/test/sass/script_test.rb        2015-10-10 03:18:30.000000000 +0200
@@ -44,6 +44,7 @@
     assert_equal "☃f", resolve("\"\\2603 f\"")
     assert_equal "☃x", resolve("\"\\2603x\"")
     assert_equal "\\2603", resolve("\"\\\\2603\"")
+    assert_equal "\#{foo}", resolve("\"\\\#{foo}\"")
 
     # U+FFFD is the replacement character, "�".
     assert_equal [0xFFFD].pack("U"), resolve("\"\\0\"")
@@ -71,6 +72,7 @@
     assert_equal '"☃abcdef"', resolve_quoted('"\2603 abcdef"')
     assert_equal '"\\\\"', resolve_quoted('"\\\\"')
     assert_equal '"foobar"', resolve_quoted("\"foo\\\nbar\"")
+    assert_equal '"#{foo}"', resolve_quoted("\"\\\#{foo}\"")
   end
 
   def test_color_names
@@ -1162,6 +1164,13 @@
     assert_equal "NaN", resolve("(0.0/0.0)")
   end
 
+  def test_equality_uses_an_epsilon
+    # At least on my machine, this calculation introduces a floating point 
error:
+    # 29.0 / 7 * 7
+    # => 29.000000000000004
+    assert_equal "true", resolve("29 == (29 / 7 * 7)")
+  end
+
   private
 
   def resolve(str, opts = {}, environment = env)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/test/sass/source_map_test.rb 
new/test/sass/source_map_test.rb
--- old/test/sass/source_map_test.rb    1970-01-01 01:00:00.000000000 +0100
+++ new/test/sass/source_map_test.rb    2015-10-10 03:18:30.000000000 +0200
@@ -881,11 +881,12 @@
     source_ranges = build_ranges(source, source_file_name)
     target_ranges = build_ranges(css)
     map = Sass::Source::Map.new
-    Sass::Util.flatten(source_ranges.map do |(name, sources)|
+    source_ranges.map do |(name, sources)|
         assert(sources.length == 1, "#{sources.length} source ranges 
encountered for annotation #{name}")
         assert(target_ranges[name], "No target ranges for annotation #{name}")
         target_ranges[name].map {|target_range| [sources.first, target_range]}
-      end, 1).
+      end.
+      flatten(1).
       sort_by {|(_, target)| [target.start_pos.line, target.start_pos.offset]}.
       each {|(s2, target)| map.add(s2, target)}
     map
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/test/sass/util_test.rb new/test/sass/util_test.rb
--- old/test/sass/util_test.rb  1970-01-01 01:00:00.000000000 +0100
+++ new/test/sass/util_test.rb  2015-10-10 03:18:30.000000000 +0200
@@ -206,20 +206,6 @@
     assert_equal(98, ord("bar"))
   end
 
-  def test_flatten
-    assert_equal([1, 2, 3], flatten([1, 2, 3], 0))
-    assert_equal([1, 2, 3], flatten([1, 2, 3], 1))
-    assert_equal([1, 2, 3], flatten([1, 2, 3], 2))
-
-    assert_equal([[1, 2], 3], flatten([[1, 2], 3], 0))
-    assert_equal([1, 2, 3], flatten([[1, 2], 3], 1))
-    assert_equal([1, 2, 3], flatten([[1, 2], 3], 2))
-
-    assert_equal([[[1], 2], [3], 4], flatten([[[1], 2], [3], 4], 0))
-    assert_equal([[1], 2, 3, 4], flatten([[[1], 2], [3], 4], 1))
-    assert_equal([1, 2, 3, 4], flatten([[[1], 2], [3], 4], 2))
-  end
-
   def test_flatten_vertically
     assert_equal([1, 2, 3], flatten_vertically([1, 2, 3]))
     assert_equal([1, 3, 5, 2, 4, 6], flatten_vertically([[1, 2], [3, 4], [5, 
6]]))
@@ -227,36 +213,6 @@
     assert_equal([1, 4, 6, 2, 5, 3], flatten_vertically([[1, 2, 3], [4, 5], 
6]))
   end
 
-  def test_set_hash
-    assert(set_hash(Set[1, 2, 3]) == set_hash(Set[3, 2, 1]))
-    assert(set_hash(Set[1, 2, 3]) == set_hash(Set[1, 2, 3]))
-
-    s1 = Set[]
-    s1 << 1
-    s1 << 2
-    s1 << 3
-    s2 = Set[]
-    s2 << 3
-    s2 << 2
-    s2 << 1
-    assert(set_hash(s1) == set_hash(s2))
-  end
-
-  def test_set_eql
-    assert(set_eql?(Set[1, 2, 3], Set[3, 2, 1]))
-    assert(set_eql?(Set[1, 2, 3], Set[1, 2, 3]))
-
-    s1 = Set[]
-    s1 << 1
-    s1 << 2
-    s1 << 3
-    s2 = Set[]
-    s2 << 3
-    s2 << 2
-    s2 << 1
-    assert(set_eql?(s1, s2))
-  end
-
   def test_extract_and_inject_values
     test = lambda {|arr| assert_equal(arr, with_extracted_values(arr) {|str| 
str})}
 


Reply via email to