Hello community, here is the log from the commit of package rubygem-sass for openSUSE:Factory checked in at 2015-08-27 08:57: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-05 06:49:53.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.rubygem-sass.new/rubygem-sass.changes 2015-08-27 08:58:00.000000000 +0200 @@ -1,0 +2,12 @@ +Wed Aug 26 04:30:37 UTC 2015 - [email protected] + +- updated to version 3.4.18 + see installed CHANGELOG.md + +------------------------------------------------------------------- +Sat Aug 22 04:37:01 UTC 2015 - [email protected] + +- updated to version 3.4.17 + see installed CHANGELOG.md + +------------------------------------------------------------------- Old: ---- sass-3.4.16.gem New: ---- sass-3.4.18.gem ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ rubygem-sass.spec ++++++ --- /var/tmp/diff_new_pack.jAugt7/_old 2015-08-27 08:58:00.000000000 +0200 +++ /var/tmp/diff_new_pack.jAugt7/_new 2015-08-27 08:58:00.000000000 +0200 @@ -24,7 +24,7 @@ # Name: rubygem-sass -Version: 3.4.16 +Version: 3.4.18 Release: 0 %define mod_name sass %define mod_full_name %{mod_name}-%{version} ++++++ sass-3.4.16.gem -> sass-3.4.18.gem ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/VERSION new/VERSION --- old/VERSION 2015-07-11 01:22:27.000000000 +0200 +++ new/VERSION 1970-01-01 01:00:00.000000000 +0100 @@ -1 +1 @@ -3.4.16 +3.4.18 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/VERSION_DATE new/VERSION_DATE --- old/VERSION_DATE 2015-07-11 01:22:27.000000000 +0200 +++ new/VERSION_DATE 1970-01-01 01:00:00.000000000 +0100 @@ -1 +1 @@ -10 July 2015 23:22:27 UTC +25 August 2015 20:10:56 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/script/functions.rb new/lib/sass/script/functions.rb --- old/lib/sass/script/functions.rb 2015-07-11 01:22:27.000000000 +0200 +++ new/lib/sass/script/functions.rb 1970-01-01 01:00:00.000000000 +0100 @@ -630,6 +630,9 @@ # @return [Sass::Script::Value::Color] # @raise [ArgumentError] if any parameter is the wrong type or out of bounds def rgb(red, green, blue) + if calc?(red) || calc?(green) || calc?(blue) + return unquoted_string("rgb(#{red}, #{green}, #{blue})") + end assert_type red, :Number, :red assert_type green, :Number, :green assert_type blue, :Number, :blue @@ -688,13 +691,20 @@ color, alpha = args assert_type color, :Color, :color - assert_type alpha, :Number, :alpha - check_alpha_unit alpha, 'rgba' - - color.with(:alpha => alpha.value) + if calc?(alpha) + unquoted_string("rgba(#{color.red}, #{color.green}, #{color.blue}, #{alpha})") + else + assert_type alpha, :Number, :alpha + check_alpha_unit alpha, 'rgba' + color.with(:alpha => alpha.value) + end when 4 red, green, blue, alpha = args - rgba(rgb(red, green, blue), alpha) + if calc?(red) || calc?(green) || calc?(blue) || calc?(alpha) + unquoted_string("rgba(#{red}, #{green}, #{blue}, #{alpha})") + else + rgba(rgb(red, green, blue), alpha) + end else raise ArgumentError.new("wrong number of arguments (#{args.size} for 4)") end @@ -719,7 +729,11 @@ # @raise [ArgumentError] if `$saturation` or `$lightness` are out of bounds # or any parameter is the wrong type def hsl(hue, saturation, lightness) - hsla(hue, saturation, lightness, number(1)) + if calc?(hue) || calc?(saturation) || calc?(lightness) + unquoted_string("hsl(#{hue}, #{saturation}, #{lightness})") + else + hsla(hue, saturation, lightness, number(1)) + end end declare :hsl, [:hue, :saturation, :lightness] @@ -743,6 +757,9 @@ # @raise [ArgumentError] if `$saturation`, `$lightness`, or `$alpha` are out # of bounds or any parameter is the wrong type def hsla(hue, saturation, lightness, alpha) + if calc?(hue) || calc?(saturation) || calc?(lightness) || calc?(alpha) + return unquoted_string("hsla(#{hue}, #{saturation}, #{lightness}, #{alpha})") + end assert_type hue, :Number, :hue assert_type saturation, :Number, :saturation assert_type lightness, :Number, :lightness diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/sass/script/parser.rb new/lib/sass/script/parser.rb --- old/lib/sass/script/parser.rb 2015-07-11 01:22:27.000000000 +0200 +++ new/lib/sass/script/parser.rb 1970-01-01 01:00:00.000000000 +0100 @@ -308,6 +308,7 @@ end return list unless (e = interpolation) list.elements << e + list.source_range.end_pos = list.elements.last.source_range.end_pos end list end @@ -507,15 +508,12 @@ def paren return variable unless try_tok(:lparen) - was_in_parens = @in_parens - @in_parens = true start_pos = source_position e = map + e.force_division! if e end_pos = source_position assert_tok(:rparen) - return e || node(Sass::Script::Tree::ListLiteral.new([], nil), start_pos, end_pos) - ensure - @in_parens = was_in_parens + e || node(Sass::Script::Tree::ListLiteral.new([], nil), start_pos, end_pos) end def variable @@ -540,7 +538,7 @@ tok = try_tok(:number) return selector unless tok num = tok.value - num.original = num.to_s unless @in_parens + num.original = num.to_s literal_node(num, tok.source_range.start_pos) end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/sass/script/tree/list_literal.rb new/lib/sass/script/tree/list_literal.rb --- old/lib/sass/script/tree/list_literal.rb 2015-07-11 01:22:27.000000000 +0200 +++ new/lib/sass/script/tree/list_literal.rb 1970-01-01 01:00:00.000000000 +0100 @@ -28,12 +28,8 @@ # @see Value#to_sass def to_sass(opts = {}) return "()" if elements.empty? - precedence = Sass::Script::Parser.precedence_of(separator) members = elements.map do |v| - if v.is_a?(ListLiteral) && Sass::Script::Parser.precedence_of(v.separator) <= precedence || - separator == :space && v.is_a?(UnaryOperation) && - (v.operator == :minus || v.operator == :plus) || - separator == :space && v.is_a?(Operation) + if element_needs_parens?(v) "(#{v.to_sass(opts)})" else v.to_sass(opts) @@ -56,6 +52,10 @@ "(#{elements.map {|e| e.inspect}.join(separator == :space ? ' ' : ', ')})" end + def force_division! + # Do nothing. Lists prevent division propagation. + end + protected def _perform(environment) @@ -69,6 +69,32 @@ private + # Returns whether an element in the list should be wrapped in parentheses + # when serialized to Sass. + def element_needs_parens?(element) + if element.is_a?(ListLiteral) + return Sass::Script::Parser.precedence_of(element.separator) <= + Sass::Script::Parser.precedence_of(separator) + end + + return false unless separator == :space + + if element.is_a?(UnaryOperation) + return element.operator == :minus || element.operator == :plus + end + + return false unless element.is_a?(Operation) + return true unless element.operator == :div + !(is_literal_number?(element.operand1) && is_literal_number?(element.operand2)) + end + + # Returns whether a value is a number literal that shouldn't be divided. + def is_literal_number?(value) + value.is_a?(Literal) && + value.value.is_a?((Sass::Script::Value::Number)) && + !value.value.original.nil? + end + def sep_str(opts = options) return ' ' if separator == :space return ',' if opts && opts[:style] == :compressed diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/sass/script/tree/literal.rb new/lib/sass/script/tree/literal.rb --- old/lib/sass/script/tree/literal.rb 2015-07-11 01:22:27.000000000 +0200 +++ new/lib/sass/script/tree/literal.rb 1970-01-01 01:00:00.000000000 +0100 @@ -35,6 +35,10 @@ value.inspect end + def force_division! + value.original = nil if value.is_a?(Sass::Script::Value::Number) + end + protected def _perform(environment) 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 2015-07-11 01:22:27.000000000 +0200 +++ new/lib/sass/script/tree/node.rb 1970-01-01 01:00:00.000000000 +0100 @@ -75,6 +75,12 @@ Sass::Util.abstract(self) end + # Forces any division operations with number literals in this expression to + # do real division, rather than returning strings. + def force_division! + children.each {|c| c.force_division!} + end + protected # Converts underscores to dashes if the :dasherize option is set. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/sass/script/value/color.rb new/lib/sass/script/value/color.rb --- old/lib/sass/script/value/color.rb 2015-07-11 01:22:27.000000000 +0200 +++ new/lib/sass/script/value/color.rb 1970-01-01 01:00:00.000000000 +0100 @@ -598,11 +598,27 @@ "##{red}#{green}#{blue}" end + def operation_name(operation) + case operation + when :+ + "add" + when :- + "subtract" + when :* + "multiply" + when :/ + "divide" + when :% + "modulo" + end + end + def piecewise(other, operation) other_num = other.is_a? Number if other_num && !other.unitless? raise Sass::SyntaxError.new( - "Cannot add a number with units (#{other}) to a color (#{self}).") + "Cannot #{operation_name(operation)} a number with units (#{other}) to a color (#{self})." + ) end result = [] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/sass/script/value/helpers.rb new/lib/sass/script/value/helpers.rb --- old/lib/sass/script/value/helpers.rb 2015-07-11 01:22:27.000000000 +0200 +++ new/lib/sass/script/value/helpers.rb 1970-01-01 01:00:00.000000000 +0100 @@ -194,6 +194,16 @@ raise ArgumentError.new(err) end + # Returns true when the literal is a string containing a calc() + # + # @param literal [Sass::Script::Value::Base] The value to check + # @return boolean + def calc?(literal) + if literal.is_a?(Sass::Script::Value::String) + literal.value =~ /calc\(/ + end + end + private # Converts a user-provided selector into string form or throws an diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/sass/tree/visitors/perform.rb new/lib/sass/tree/visitors/perform.rb --- old/lib/sass/tree/visitors/perform.rb 2015-07-11 01:22:27.000000000 +0200 +++ new/lib/sass/tree/visitors/perform.rb 1970-01-01 01:00:00.000000000 +0100 @@ -310,6 +310,7 @@ def visit_import(node) if (path = node.css_import?) resolved_node = Sass::Tree::CssImportNode.resolved("url(#{path})") + resolved_node.options = node.options resolved_node.source_range = node.source_range return resolved_node end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/sass/tree/visitors/to_css.rb new/lib/sass/tree/visitors/to_css.rb --- old/lib/sass/tree/visitors/to_css.rb 2015-07-11 01:22:27.000000000 +0200 +++ new/lib/sass/tree/visitors/to_css.rb 1970-01-01 01:00:00.000000000 +0100 @@ -51,6 +51,10 @@ @source_mapping.add(source_range, target_range) end + def ends_with?(str) + @result.end_with?(str) + end + # Move the output cursor back `chars` characters. def erase!(chars) return if chars == 0 @@ -124,6 +128,9 @@ end end rstrip! + if node.style == :compressed && ends_with?(";") + erase! 1 + end return "" if @result.empty? output "\n" @@ -171,7 +178,11 @@ if !node.has_children || node.children.empty? output(tab_str) for_node(node) {output(node.resolved_value)} - output(!node.has_children ? ";" : " {}") + if node.has_children + output("#{' ' unless node.style == :compressed}{}") + elsif node.children.empty? + output(";") + end return end @@ -181,18 +192,18 @@ output(node.style == :compressed ? "{" : " {") output(node.style == :compact ? ' ' : "\n") if node.style != :compressed - was_prop = false + had_children = true first = true node.children.each do |child| next if child.invisible? if node.style == :compact if child.is_a?(Sass::Tree::PropNode) - with_tabs(first || was_prop ? 0 : @tabs + 1) do + with_tabs(first || !had_children ? 0 : @tabs + 1) do visit(child) output(' ') end else - if was_prop + unless had_children erase! 1 output "\n" end @@ -206,18 +217,23 @@ rstrip! output "\n" end - was_prop = child.is_a?(Sass::Tree::PropNode) + had_children = child.has_children first = false elsif node.style == :compressed - output(was_prop ? ";" : "") + unless had_children + output(";") unless ends_with?(";") + end with_tabs(0) {visit(child)} - was_prop = child.is_a?(Sass::Tree::PropNode) + had_children = child.has_children else with_tabs(@tabs + 1) {visit(child)} output "\n" end end rstrip! + if node.style == :compressed && ends_with?(";") + erase! 1 + end if node.style == :expanded output("\n#{tab_str}") elsif node.style != :compressed @@ -338,10 +354,18 @@ with_tabs(tabs) do node.children.each_with_index do |child, i| - output(separator) if i > 0 + if i > 0 + if separator.start_with?(";") && ends_with?(";") + erase! 1 + end + output(separator) + end visit(child) end end + if node.style == :compressed && ends_with?(";") + erase! 1 + end output(end_props) output("}" + trailer) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/metadata new/metadata --- old/metadata 2015-07-11 01:22:27.000000000 +0200 +++ new/metadata 1970-01-01 01:00:00.000000000 +0100 @@ -1,7 +1,7 @@ --- !ruby/object:Gem::Specification name: sass version: !ruby/object:Gem::Version - version: 3.4.16 + version: 3.4.18 platform: ruby authors: - Natalie Weizenbaum @@ -10,7 +10,7 @@ autorequire: bindir: bin cert_chain: [] -date: 2015-07-10 00:00:00.000000000 Z +date: 2015-08-25 00:00:00.000000000 Z dependencies: - !ruby/object:Gem::Dependency name: yard @@ -67,47 +67,31 @@ extensions: [] extra_rdoc_files: [] files: -- .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 +- rails/init.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/logger.rb +- lib/sass/importers.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 @@ -115,16 +99,15 @@ - 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 @@ -136,7 +119,7 @@ - lib/sass/script/tree/string_interpolation.rb - lib/sass/script/tree/unary_operation.rb - lib/sass/script/tree/variable.rb -- lib/sass/script/value.rb +- lib/sass/script/tree.rb - lib/sass/script/value/arg_list.rb - lib/sass/script/value/base.rb - lib/sass/script/value/bool.rb @@ -147,20 +130,22 @@ - lib/sass/script/value/null.rb - lib/sass/script/value/number.rb - lib/sass/script/value/string.rb -- lib/sass/scss.rb +- lib/sass/script/value.rb +- lib/sass/script.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/selector.rb +- lib/sass/scss.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 @@ -204,15 +189,54 @@ - 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 -- rails/init.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 - test/sass/cache_test.rb - test/sass/callbacks_test.rb - test/sass/compiler_test.rb @@ -337,42 +361,18 @@ - test/sass/util_test.rb - test/sass/value_helpers_test.rb - test/test_helper.rb -- 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 +- extra/update_watch.rb +- Rakefile +- init.rb +- .yardopts +- CODE_OF_CONDUCT.md +- CONTRIBUTING.md +- MIT-LICENSE +- README.md +- REVISION +- VERSION +- VERSION_DATE +- VERSION_NAME homepage: http://sass-lang.com/ licenses: - MIT @@ -393,33 +393,33 @@ version: '0' requirements: [] rubyforge_project: sass -rubygems_version: 2.2.2 +rubygems_version: 2.0.3 signing_key: specification_version: 4 summary: A powerful but elegant CSS compiler that makes CSS fun again. test_files: -- test/sass/value_helpers_test.rb -- test/sass/conversion_test.rb - test/sass/cache_test.rb -- test/sass/script_test.rb -- test/sass/superselector_test.rb - test/sass/callbacks_test.rb -- test/sass/source_map_test.rb -- test/sass/script_conversion_test.rb -- test/sass/util_test.rb -- test/sass/plugin_test.rb -- test/sass/extend_test.rb -- test/sass/scss/rx_test.rb -- test/sass/scss/css_test.rb -- test/sass/scss/scss_test.rb -- test/sass/logger_test.rb -- test/sass/importer_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/exec_test.rb +- test/sass/extend_test.rb +- test/sass/functions_test.rb +- test/sass/importer_test.rb +- test/sass/logger_test.rb +- test/sass/plugin_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/multibyte_string_scanner_test.rb -- test/sass/functions_test.rb -- test/sass/compiler_test.rb -- test/sass/css2sass_test.rb +- test/sass/util_test.rb +- test/sass/value_helpers_test.rb diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/test/sass/conversion_test.rb new/test/sass/conversion_test.rb --- old/test/sass/conversion_test.rb 2015-07-11 01:22:27.000000000 +0200 +++ new/test/sass/conversion_test.rb 1970-01-01 01:00:00.000000000 +0100 @@ -1297,6 +1297,16 @@ a: 1px / 2px; } SCSS + + # Regression test for issue 1787 + assert_renders <<SASS, <<SCSS +foo + a: 1px / 2px 3px +SASS +foo { + a: 1px / 2px 3px; +} +SCSS end def test_directive_with_interpolation 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 2015-07-11 01:22:27.000000000 +0200 +++ new/test/sass/engine_test.rb 1970-01-01 01:00:00.000000000 +0100 @@ -178,6 +178,8 @@ "& foo\n bar: baz\n blat: bang" => ["Base-level rules cannot contain the parent-selector-referencing character '&'.", 1], "a\n b: c\n& foo\n bar: baz\n blat: bang" => ["Base-level rules cannot contain the parent-selector-referencing character '&'.", 3], "@" => "Invalid directive: '@'.", + "$r: 20em * #ccc" => ["Cannot multiply a number with units (20em) to a color (#ccc).", 1], + "$r: #ccc / 1em" => ["Cannot divide a number with units (1em) to a color (#ccc).", 1], } def teardown @@ -3263,6 +3265,64 @@ SASS end + def test_compressed_unknown_directive + assert_equal(<<CSS, render(<<SASS, :style => :compressed)) +x{@foo;a:b;@bar} +CSS +x + @foo + a: b + @bar +SASS + end + + def test_compressed_unknown_directive_in_directive + assert_equal(<<CSS, render(<<SASS, :style => :compressed)) +@x{@foo;a:b;@bar} +CSS +@x + @foo + a: b + @bar +SASS + end + + def test_compressed_unknown_directive_with_children_in_directive + assert_equal(<<CSS, render(<<SASS, :style => :compressed)) +@x{@foo{a:b}c:d;@bar{e:f}} +CSS +@x + @foo + a: b + c: d + @bar + e: f +SASS + end + + def test_compressed_rule_in_directive + assert_equal(<<CSS, render(<<SASS, :style => :compressed)) +@x{foo{a:b}c:d;bar{e:f}} +CSS +@x + foo + a: b + c: d + bar + e: f +SASS + end + + def test_import_two_css_files_issue_1806 + assert_equal(<<CSS, render(<<SASS, :syntax => :scss, :style => :compressed)) +@import url(\"foo.css\");@import url(\"bar.css\");@import url(\"baz.css\") +CSS +@import url("foo.css"); +@import url("bar.css"); +@import url("baz.css"); +SASS + end + private def assert_hash_has(hash, expected) 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 2015-07-11 01:22:28.000000000 +0200 +++ new/test/sass/script_test.rb 1970-01-01 01:00:00.000000000 +0100 @@ -118,6 +118,33 @@ assert_equal "rgba(10, 1, 0, 0.12346)", resolve("rgba(10.0, 1.23456789, 0.0, 0.1234567)") end + def test_rgb_calc + assert_equal "rgb(calc(255 - 5), 0, 0)", resolve("rgb(calc(255 - 5), 0, 0)") + end + + def test_rgba_calc + assert_equal "rgba(calc(255 - 5), 0, 0, 0.1)", + resolve("rgba(calc(255 - 5), 0, 0, 0.1)") + assert_equal "rgba(127, 0, 0, calc(0.1 + 0.5))", + resolve("rgba(127, 0, 0, calc(0.1 + 0.5))") + end + + def test_rgba_shorthand_calc + assert_equal "rgba(255, 0, 0, calc(0.1 + 0.5))", + resolve("rgba(red, calc(0.1 + 0.5))") + end + + def test_hsl_calc + assert_equal "hsl(calc(360 * 5 / 6), 50%, 50%)", resolve("hsl(calc(360 * 5 / 6), 50%, 50%)") + end + + def test_hsla_calc + assert_equal "hsla(calc(360 * 5 / 6), 50%, 50%, 0.1)", + resolve("hsla(calc(360 * 5 / 6), 50%, 50%, 0.1)") + assert_equal "hsla(270, 50%, 50%, calc(0.1 + 0.1))", + resolve("hsla(270, 50%, 50%, calc(0.1 + 0.1))") + end + def test_compressed_colors assert_equal "#123456", resolve("#123456", :style => :compressed) assert_equal "rgba(1,2,3,0.5)", resolve("rgba(1, 2, 3, 0.5)", :style => :compressed) @@ -547,6 +574,13 @@ assert_equal "0.5", resolve("$var", {}, env("var" => eval("1px/2px"))) end + # Regression test for issue 1786. + def test_slash_division_within_list + assert_equal "1 1/2 1/2", resolve("(1 1/2 1/2)") + assert_equal "1/2 1/2", resolve("(1/2 1/2)") + assert_equal "1/2", resolve("(1/2,)") + end + def test_non_ident_colors_with_wrong_number_of_digits assert_raise_message(Sass::SyntaxError, 'Invalid CSS after "": expected expression (e.g. 1px, bold), was "#1"') {eval("#1")} 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 2015-07-11 01:22:28.000000000 +0200 +++ new/test/sass/source_map_test.rb 1970-01-01 01:00:00.000000000 +0100 @@ -809,6 +809,17 @@ assert_equal 17, range.end_pos.offset end + def test_list_source_range + engine = Sass::Engine.new(<<-SCSS, :cache => false, :syntax => :scss) +@each $a, $b in (1, 2), (2, 4), (3, 6) { } +SCSS + list = engine.to_tree.children.first.list + assert_equal 1, list.source_range.start_pos.line + assert_equal 1, list.source_range.end_pos.line + assert_equal 16, list.source_range.start_pos.offset + assert_equal 38, list.source_range.end_pos.offset + end + def test_sources_array_is_uri_escaped map = Sass::Source::Map.new importer = Sass::Importers::Filesystem.new('.')
