sass 3.1.19 → 3.1.20
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/lib/sass/script/functions.rb +34 -28
- data/lib/sass/scss/parser.rb +1 -1
- data/lib/sass/scss/rx.rb +2 -0
- data/lib/sass/util.rb +10 -3
- data/test/sass/functions_test.rb +14 -0
- data/test/sass/scss/css_test.rb +4 -0
- metadata +4 -4
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.1.
|
1
|
+
3.1.20
|
@@ -135,6 +135,9 @@ module Sass::Script
|
|
135
135
|
# \{#join join($list1, $list2, \[$separator\])}
|
136
136
|
# : Joins together two lists into one.
|
137
137
|
#
|
138
|
+
# \{#append append($list1, $val, \[$separator\])}
|
139
|
+
# : Appends a single value onto the end of a list.
|
140
|
+
#
|
138
141
|
# ## Introspection Functions
|
139
142
|
#
|
140
143
|
# \{#type_of type-of($value)}
|
@@ -573,7 +576,10 @@ module Sass::Script
|
|
573
576
|
return Sass::Script::String.new("alpha(#{args.map {|a| a.to_s}.join(", ")})")
|
574
577
|
end
|
575
578
|
|
576
|
-
|
579
|
+
raise ArgumentError.new("wrong number of arguments (#{args.size} for 1)") if args.size != 1
|
580
|
+
|
581
|
+
assert_type args.first, :Color
|
582
|
+
Sass::Script::Number.new(args.first.alpha)
|
577
583
|
end
|
578
584
|
declare :alpha, [:color]
|
579
585
|
|
@@ -586,6 +592,7 @@ module Sass::Script
|
|
586
592
|
# @see #transparentize
|
587
593
|
# @raise [ArgumentError] If `color` isn't a color
|
588
594
|
def opacity(color)
|
595
|
+
return Sass::Script::String.new("opacity(#{color})") if color.is_a?(Sass::Script::Number)
|
589
596
|
assert_type color, :Color
|
590
597
|
Sass::Script::Number.new(color.alpha)
|
591
598
|
end
|
@@ -676,16 +683,21 @@ module Sass::Script
|
|
676
683
|
# @example
|
677
684
|
# saturate(hsl(120, 30%, 90%), 20%) => hsl(120, 50%, 90%)
|
678
685
|
# saturate(#855, 20%) => #9e3f3f
|
679
|
-
# @
|
680
|
-
#
|
681
|
-
#
|
682
|
-
#
|
683
|
-
#
|
684
|
-
#
|
685
|
-
|
686
|
+
# @overload saturate(color, amount)
|
687
|
+
# @param color [Color]
|
688
|
+
# @param amount [Number]
|
689
|
+
# @return [Color]
|
690
|
+
# @see #desaturate
|
691
|
+
# @raise [ArgumentError] If `color` isn't a color,
|
692
|
+
# or `number` isn't a number between 0% and 100%
|
693
|
+
def saturate(color, amount = nil)
|
694
|
+
# Support the filter effects definition of saturate.
|
695
|
+
# https://dvcs.w3.org/hg/FXTF/raw-file/tip/filters/index.html
|
696
|
+
return Sass::Script::String.new("saturate(#{color})") if amount.nil?
|
686
697
|
_adjust(color, amount, :saturation, 0..100, :+, "%")
|
687
698
|
end
|
688
699
|
declare :saturate, [:color, :amount]
|
700
|
+
declare :saturate, [:amount]
|
689
701
|
|
690
702
|
# Makes a color less saturated.
|
691
703
|
# Takes a color and an amount between 0% and 100%,
|
@@ -969,21 +981,13 @@ module Sass::Script
|
|
969
981
|
declare :mix, [:color_1, :color_2]
|
970
982
|
declare :mix, [:color_1, :color_2, :weight]
|
971
983
|
|
972
|
-
#
|
973
|
-
#
|
974
|
-
# This is identical to `desaturate(color, 100%)`.
|
975
|
-
#
|
976
|
-
# @param color [Color]
|
977
|
-
# @return [Color]
|
978
|
-
# @raise [ArgumentError] if `color` isn't a color
|
979
|
-
# @see #desaturate
|
980
|
-
# @overload grayscale(number)
|
981
|
-
# Returns an unquoted string `grayscale(number)`, as though the function
|
982
|
-
# were not defined. This is for the `grayscale` function used in
|
983
|
-
# `-webkit-filter`.
|
984
|
+
# Converts a color to grayscale.
|
985
|
+
# This is identical to `desaturate(color, 100%)`.
|
984
986
|
#
|
985
|
-
#
|
986
|
-
#
|
987
|
+
# @param color [Color]
|
988
|
+
# @return [Color]
|
989
|
+
# @raise [ArgumentError] if `color` isn't a color
|
990
|
+
# @see #desaturate
|
987
991
|
def grayscale(color)
|
988
992
|
return Sass::Script::String.new("grayscale(#{color})") if color.is_a?(Sass::Script::Number)
|
989
993
|
desaturate color, Number.new(100)
|
@@ -1009,6 +1013,8 @@ module Sass::Script
|
|
1009
1013
|
# @return [Color]
|
1010
1014
|
# @raise [ArgumentError] if `color` isn't a color
|
1011
1015
|
def invert(color)
|
1016
|
+
return Sass::Script::String.new("invert(#{color})") if color.is_a?(Sass::Script::Number)
|
1017
|
+
|
1012
1018
|
assert_type color, :Color
|
1013
1019
|
color.with(
|
1014
1020
|
:red => (255 - color.red),
|
@@ -1271,14 +1277,14 @@ module Sass::Script
|
|
1271
1277
|
# append(10px 20px, 30px) => 10px 20px 30px
|
1272
1278
|
# append((blue, red), green) => blue, red, green
|
1273
1279
|
# append(10px 20px, 30px 40px) => 10px 20px (30px 40px)
|
1274
|
-
#
|
1275
|
-
#
|
1276
|
-
# @overload
|
1277
|
-
# @param
|
1278
|
-
# @param
|
1280
|
+
# append(10px, 20px, comma) => 10px, 20px
|
1281
|
+
# append((blue, red), green, space) => blue red green
|
1282
|
+
# @overload append(list, val, separator: auto)
|
1283
|
+
# @param list [Literal] The list to add the value to
|
1284
|
+
# @param val [Literal] The value to add to the end of the list
|
1279
1285
|
# @param separator [String] How the list separator (comma or space) should be determined.
|
1280
1286
|
# If this is `comma` or `space`, that is always the separator;
|
1281
|
-
# if this is `auto` (the default), the separator is
|
1287
|
+
# if this is `auto` (the default), the separator is the same as that used by the list.
|
1282
1288
|
def append(list, val, separator = Sass::Script::String.new("auto"))
|
1283
1289
|
assert_type separator, :String
|
1284
1290
|
unless %w[auto space comma].include?(separator.value)
|
data/lib/sass/scss/parser.rb
CHANGED
data/lib/sass/scss/rx.rb
CHANGED
data/lib/sass/util.rb
CHANGED
@@ -439,9 +439,9 @@ module Sass
|
|
439
439
|
# Like `Dir.glob`, but works with backslash-separated paths on Windows.
|
440
440
|
#
|
441
441
|
# @param path [String]
|
442
|
-
def glob(path)
|
442
|
+
def glob(path, &block)
|
443
443
|
path = path.gsub('\\', '/') if windows?
|
444
|
-
Dir.glob(path)
|
444
|
+
Dir.glob(path, &block)
|
445
445
|
end
|
446
446
|
|
447
447
|
## Cross-Ruby-Version Compatibility
|
@@ -466,6 +466,13 @@ module Sass
|
|
466
466
|
ruby1_8? && Sass::Util::RUBY_VERSION[2] < 7
|
467
467
|
end
|
468
468
|
|
469
|
+
# Whether or not this is running under MacRuby.
|
470
|
+
#
|
471
|
+
# @return [Boolean]
|
472
|
+
def macruby?
|
473
|
+
RUBY_ENGINE == 'macruby'
|
474
|
+
end
|
475
|
+
|
469
476
|
# Checks that the encoding of a string is valid in Ruby 1.9
|
470
477
|
# and cleans up potential encoding gotchas like the UTF-8 BOM.
|
471
478
|
# If it's not, yields an error string describing the invalid character
|
@@ -568,7 +575,7 @@ MSG
|
|
568
575
|
Regexp.new(/\A(?:#{_enc("\uFEFF", e)})?#{
|
569
576
|
_enc('@charset "', e)}(.*?)#{_enc('"', e)}|\A(#{
|
570
577
|
_enc("\uFEFF", e)})/)
|
571
|
-
rescue Encoding::
|
578
|
+
rescue Encoding::ConverterNotFoundError => _
|
572
579
|
nil # JRuby on Java 5 doesn't support UTF-32
|
573
580
|
rescue
|
574
581
|
# /\A@charset "(.*?)"/
|
data/test/sass/functions_test.rb
CHANGED
@@ -312,6 +312,18 @@ class SassFunctionTest < Test::Unit::TestCase
|
|
312
312
|
assert_error_message("12 is not a color for `alpha'", "alpha(12)")
|
313
313
|
end
|
314
314
|
|
315
|
+
def test_opacity
|
316
|
+
assert_equal("1", evaluate("opacity(#123456)"))
|
317
|
+
assert_equal("0.34", evaluate("opacity(rgba(0, 1, 2, 0.34))"))
|
318
|
+
assert_equal("0", evaluate("opacity(hsla(0, 1, 2, 0))"))
|
319
|
+
assert_equal("0", evaluate("opacity($color: hsla(0, 1, 2, 0))"))
|
320
|
+
assert_equal("opacity(20%)", evaluate("opacity(20%)"))
|
321
|
+
end
|
322
|
+
|
323
|
+
def test_opacity_exception
|
324
|
+
assert_error_message("\"foo\" is not a color for `opacity'", "opacity(foo)")
|
325
|
+
end
|
326
|
+
|
315
327
|
def test_opacify
|
316
328
|
assert_equal("rgba(0, 0, 0, 0.75)", evaluate("opacify(rgba(0, 0, 0, 0.5), 0.25)"))
|
317
329
|
assert_equal("rgba(0, 0, 0, 0.3)", evaluate("opacify(rgba(0, 0, 0, 0.2), 0.1)"))
|
@@ -411,6 +423,7 @@ class SassFunctionTest < Test::Unit::TestCase
|
|
411
423
|
assert_equal("#88aa88", evaluate("saturate(#8a8, 0%)"))
|
412
424
|
assert_equal("rgba(158, 63, 63, 0.5)", evaluate("saturate(rgba(136, 85, 85, 0.5), 20%)"))
|
413
425
|
assert_equal("rgba(158, 63, 63, 0.5)", evaluate("saturate($color: rgba(136, 85, 85, 0.5), $amount: 20%)"))
|
426
|
+
assert_equal("saturate(50%)", evaluate("saturate(50%)"))
|
414
427
|
end
|
415
428
|
|
416
429
|
def test_saturate_tests_bounds
|
@@ -797,6 +810,7 @@ class SassFunctionTest < Test::Unit::TestCase
|
|
797
810
|
def test_invert
|
798
811
|
assert_equal("#112233", evaluate("invert(#edc)"))
|
799
812
|
assert_equal("rgba(245, 235, 225, 0.5)", evaluate("invert(rgba(10, 20, 30, 0.5))"))
|
813
|
+
assert_equal("invert(20%)", evaluate("invert(20%)"))
|
800
814
|
end
|
801
815
|
|
802
816
|
def test_invert_tests_types
|
data/test/sass/scss/css_test.rb
CHANGED
@@ -946,6 +946,10 @@ SCSS
|
|
946
946
|
|
947
947
|
## Regressions
|
948
948
|
|
949
|
+
def test_selector_without_closing_bracket
|
950
|
+
assert_not_parses('"]"', "foo[bar <err>{a: b}")
|
951
|
+
end
|
952
|
+
|
949
953
|
def test_closing_line_comment_end_with_compact_output
|
950
954
|
assert_equal(<<CSS, render(<<SCSS, :style => :compact))
|
951
955
|
/* foo */
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sass
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 43
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 3
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 3.1.
|
9
|
+
- 20
|
10
|
+
version: 3.1.20
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Nathan Weizenbaum
|
@@ -17,7 +17,7 @@ autorequire:
|
|
17
17
|
bindir: bin
|
18
18
|
cert_chain: []
|
19
19
|
|
20
|
-
date: 2012-
|
20
|
+
date: 2012-06-29 00:00:00 -07:00
|
21
21
|
default_executable:
|
22
22
|
dependencies:
|
23
23
|
- !ruby/object:Gem::Dependency
|