sass 3.4.23 → 3.4.24
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.yardopts +1 -1
- data/VERSION +1 -1
- data/VERSION_DATE +1 -1
- data/lib/sass/engine.rb +3 -3
- data/lib/sass/error.rb +3 -3
- data/lib/sass/plugin/rack.rb +1 -1
- data/lib/sass/plugin/staleness_checker.rb +2 -2
- data/lib/sass/script.rb +2 -2
- data/lib/sass/script/functions.rb +4 -4
- data/lib/sass/script/lexer.rb +5 -5
- data/lib/sass/script/parser.rb +4 -4
- data/lib/sass/script/tree/node.rb +1 -1
- data/lib/sass/script/value/base.rb +2 -2
- data/lib/sass/script/value/color.rb +10 -10
- data/lib/sass/script/value/number.rb +1 -1
- data/lib/sass/scss/parser.rb +3 -3
- data/lib/sass/scss/rx.rb +1 -1
- data/lib/sass/selector/abstract_sequence.rb +5 -5
- data/lib/sass/selector/sequence.rb +2 -2
- data/lib/sass/selector/simple.rb +4 -4
- data/lib/sass/shared.rb +1 -1
- data/lib/sass/source/map.rb +2 -2
- data/lib/sass/source/position.rb +4 -4
- data/lib/sass/tree/comment_node.rb +1 -1
- data/lib/sass/tree/node.rb +1 -1
- data/lib/sass/tree/prop_node.rb +1 -1
- data/lib/sass/tree/rule_node.rb +1 -1
- data/lib/sass/tree/visitors/to_css.rb +1 -1
- data/lib/sass/util.rb +33 -8
- data/lib/sass/version.rb +2 -2
- data/test/sass/extend_test.rb +38 -18
- metadata +27 -27
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 798967a96737a6978563e8b46a97cf3254d1bd54
|
4
|
+
data.tar.gz: 57ed07a4077a5d81a9b821da7b7f4dcffb939fd2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a86659601d7713959b8213d53a09ced83a3d3eb09eb64fdcab54fcba0e3f4b05477db9ded2f30c7e77a44f078115ee9b6efed016f868b40e725e40d7bb4a1d3e
|
7
|
+
data.tar.gz: 42da27fb2cd7325d5df8404ea20bd6e4d57f926ee835f266120dc2fbd2beee43a7dc2e8932d136365c43f26a66fe019457a46afe376578ce11a8abc2316625cc
|
data/.yardopts
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.4.
|
1
|
+
3.4.24
|
data/VERSION_DATE
CHANGED
@@ -1 +1 @@
|
|
1
|
-
19
|
1
|
+
19 May 2017 00:01:41 UTC
|
data/lib/sass/engine.rb
CHANGED
@@ -94,13 +94,13 @@ module Sass
|
|
94
94
|
# `text`: `String`
|
95
95
|
# : The text in the line, without any whitespace at the beginning or end.
|
96
96
|
#
|
97
|
-
# `tabs`: `
|
97
|
+
# `tabs`: `Integer`
|
98
98
|
# : The level of indentation of the line.
|
99
99
|
#
|
100
|
-
# `index`: `
|
100
|
+
# `index`: `Integer`
|
101
101
|
# : The line number in the original document.
|
102
102
|
#
|
103
|
-
# `offset`: `
|
103
|
+
# `offset`: `Integer`
|
104
104
|
# : The number of bytes in on the line that the text begins.
|
105
105
|
# This ends up being the number of bytes of leading whitespace.
|
106
106
|
#
|
data/lib/sass/error.rb
CHANGED
@@ -69,14 +69,14 @@ module Sass
|
|
69
69
|
# The name of the mixin in which the error occurred.
|
70
70
|
# This could be `nil` if the error occurred outside a mixin.
|
71
71
|
#
|
72
|
-
# @return [
|
72
|
+
# @return [String]
|
73
73
|
def sass_mixin
|
74
74
|
sass_backtrace.first[:mixin]
|
75
75
|
end
|
76
76
|
|
77
77
|
# The line of the Sass template on which the error occurred.
|
78
78
|
#
|
79
|
-
# @return [
|
79
|
+
# @return [Integer]
|
80
80
|
def sass_line
|
81
81
|
sass_backtrace.first[:line]
|
82
82
|
end
|
@@ -153,7 +153,7 @@ module Sass
|
|
153
153
|
# Returns an error report for an exception in CSS format.
|
154
154
|
#
|
155
155
|
# @param e [Exception]
|
156
|
-
# @param line_offset [
|
156
|
+
# @param line_offset [Integer] The number of the first line of the Sass template.
|
157
157
|
# @return [String] The error report
|
158
158
|
# @raise [Exception] `e`, if the
|
159
159
|
# {file:SASS_REFERENCE.md#full_exception-option `:full_exception`} option
|
data/lib/sass/plugin/rack.rb
CHANGED
@@ -72,7 +72,7 @@ module Sass
|
|
72
72
|
# Returns whether a Sass or SCSS stylesheet has been modified since a given time.
|
73
73
|
#
|
74
74
|
# @param template_file [String] The location of the Sass or SCSS template.
|
75
|
-
# @param mtime [
|
75
|
+
# @param mtime [Time] The modification time to check against.
|
76
76
|
# @param importer [Sass::Importers::Base] The importer used to locate the stylesheet.
|
77
77
|
# Defaults to the filesystem importer.
|
78
78
|
# @return [Boolean] Whether the stylesheet has been modified.
|
@@ -103,7 +103,7 @@ module Sass
|
|
103
103
|
# so it's better to use when checking multiple stylesheets at once.
|
104
104
|
#
|
105
105
|
# @param template_file [String] The location of the Sass or SCSS template.
|
106
|
-
# @param mtime [
|
106
|
+
# @param mtime [Time] The modification time to check against.
|
107
107
|
# @param importer [Sass::Importers::Base] The importer used to locate the stylesheet.
|
108
108
|
# Defaults to the filesystem importer.
|
109
109
|
# @return [Boolean] Whether the stylesheet has been modified.
|
data/lib/sass/script.rb
CHANGED
@@ -16,9 +16,9 @@ module Sass
|
|
16
16
|
# Parses a string of SassScript
|
17
17
|
#
|
18
18
|
# @param value [String] The SassScript
|
19
|
-
# @param line [
|
19
|
+
# @param line [Integer] The number of the line on which the SassScript appeared.
|
20
20
|
# Used for error reporting
|
21
|
-
# @param offset [
|
21
|
+
# @param offset [Integer] The number of characters in on `line` that the SassScript started.
|
22
22
|
# Used for error reporting
|
23
23
|
# @param options [{Symbol => Object}] An options hash;
|
24
24
|
# see {file:SASS_REFERENCE.md#sass_options the Sass options documentation}
|
@@ -431,8 +431,8 @@ module Sass::Script
|
|
431
431
|
# If no signatures match, the first signature is returned for error messaging.
|
432
432
|
#
|
433
433
|
# @param method_name [Symbol] The name of the Ruby function to be called.
|
434
|
-
# @param arg_arity [
|
435
|
-
# @param kwarg_arity [
|
434
|
+
# @param arg_arity [Integer] The number of unnamed arguments the function was passed.
|
435
|
+
# @param kwarg_arity [Integer] The number of keyword arguments the function was passed.
|
436
436
|
#
|
437
437
|
# @return [{Symbol => Object}, nil]
|
438
438
|
# The signature options for the matching signature,
|
@@ -1583,7 +1583,7 @@ MESSAGE
|
|
1583
1583
|
# @raise [ArgumentError] if `$string` isn't a string
|
1584
1584
|
def to_upper_case(string)
|
1585
1585
|
assert_type string, :String, :string
|
1586
|
-
Sass::Script::Value::String.new(string.value
|
1586
|
+
Sass::Script::Value::String.new(Sass::Util.upcase(string.value), string.type)
|
1587
1587
|
end
|
1588
1588
|
declare :to_upper_case, [:string]
|
1589
1589
|
|
@@ -1598,7 +1598,7 @@ MESSAGE
|
|
1598
1598
|
# @raise [ArgumentError] if `$string` isn't a string
|
1599
1599
|
def to_lower_case(string)
|
1600
1600
|
assert_type string, :String, :string
|
1601
|
-
Sass::Script::Value::String.new(string.value
|
1601
|
+
Sass::Script::Value::String.new(Sass::Util.downcase(string.value), string.type)
|
1602
1602
|
end
|
1603
1603
|
declare :to_lower_case, [:string]
|
1604
1604
|
|
data/lib/sass/script/lexer.rb
CHANGED
@@ -19,13 +19,13 @@ module Sass
|
|
19
19
|
# `source_range`: \[`Sass::Source::Range`\]
|
20
20
|
# : The range in the source file in which the token appeared.
|
21
21
|
#
|
22
|
-
# `pos`: \[`
|
22
|
+
# `pos`: \[`Integer`\]
|
23
23
|
# : The scanner position at which the SassScript token appeared.
|
24
24
|
Token = Struct.new(:type, :value, :source_range, :pos)
|
25
25
|
|
26
26
|
# The line number of the lexer's current position.
|
27
27
|
#
|
28
|
-
# @return [
|
28
|
+
# @return [Integer]
|
29
29
|
def line
|
30
30
|
return @line unless @tok
|
31
31
|
@tok.source_range.start_pos.line
|
@@ -34,7 +34,7 @@ module Sass
|
|
34
34
|
# The number of bytes into the current line
|
35
35
|
# of the lexer's current position (1-based).
|
36
36
|
#
|
37
|
-
# @return [
|
37
|
+
# @return [Integer]
|
38
38
|
def offset
|
39
39
|
return @offset unless @tok
|
40
40
|
@tok.source_range.start_pos.offset
|
@@ -142,9 +142,9 @@ module Sass
|
|
142
142
|
}
|
143
143
|
|
144
144
|
# @param str [String, StringScanner] The source text to lex
|
145
|
-
# @param line [
|
145
|
+
# @param line [Integer] The 1-based line on which the SassScript appears.
|
146
146
|
# Used for error reporting and sourcemap building
|
147
|
-
# @param offset [
|
147
|
+
# @param offset [Integer] The 1-based character (not byte) offset in the line in the source.
|
148
148
|
# Used for error reporting and sourcemap building
|
149
149
|
# @param options [{Symbol => Object}] An options hash;
|
150
150
|
# see {file:SASS_REFERENCE.md#sass_options the Sass options documentation}
|
data/lib/sass/script/parser.rb
CHANGED
@@ -8,22 +8,22 @@ module Sass
|
|
8
8
|
class Parser
|
9
9
|
# The line number of the parser's current position.
|
10
10
|
#
|
11
|
-
# @return [
|
11
|
+
# @return [Integer]
|
12
12
|
def line
|
13
13
|
@lexer.line
|
14
14
|
end
|
15
15
|
|
16
16
|
# The column number of the parser's current position.
|
17
17
|
#
|
18
|
-
# @return [
|
18
|
+
# @return [Integer]
|
19
19
|
def offset
|
20
20
|
@lexer.offset
|
21
21
|
end
|
22
22
|
|
23
23
|
# @param str [String, StringScanner] The source text to parse
|
24
|
-
# @param line [
|
24
|
+
# @param line [Integer] The line on which the SassScript appears.
|
25
25
|
# Used for error reporting and sourcemap building
|
26
|
-
# @param offset [
|
26
|
+
# @param offset [Integer] The character (not byte) offset where the script starts in the line.
|
27
27
|
# Used for error reporting and sourcemap building
|
28
28
|
# @param options [{Symbol => Object}] An options hash; see
|
29
29
|
# {file:SASS_REFERENCE.md#sass_options the Sass options documentation}.
|
@@ -149,7 +149,7 @@ MSG
|
|
149
149
|
# Returns the hash code of this value. Two objects' hash codes should be
|
150
150
|
# equal if the objects are equal.
|
151
151
|
#
|
152
|
-
# @return [Fixnum] The hash code.
|
152
|
+
# @return [Integer for Ruby 2.4.0+, Fixnum for earlier Ruby versions] The hash code.
|
153
153
|
def hash
|
154
154
|
value.hash
|
155
155
|
end
|
@@ -176,7 +176,7 @@ MSG
|
|
176
176
|
eq(other).to_bool
|
177
177
|
end
|
178
178
|
|
179
|
-
# @return [
|
179
|
+
# @return [Integer] The integer value of this value
|
180
180
|
# @raise [Sass::SyntaxError] if this value isn't an integer
|
181
181
|
def to_i
|
182
182
|
raise Sass::SyntaxError.new("#{inspect} is not an integer.")
|
@@ -17,8 +17,8 @@ module Sass::Script::Value
|
|
17
17
|
# @private
|
18
18
|
#
|
19
19
|
# Convert a ruby integer to a rgba components
|
20
|
-
# @param color [
|
21
|
-
# @return [Array<
|
20
|
+
# @param color [Integer]
|
21
|
+
# @return [Array<Integer>] Array of 4 numbers representing r,g,b and alpha
|
22
22
|
def self.int_to_rgba(color)
|
23
23
|
rgba = (0..3).map {|n| color >> (n << 3) & 0xff}.reverse
|
24
24
|
rgba[-1] = rgba[-1] / 255.0
|
@@ -293,7 +293,7 @@ module Sass::Script::Value
|
|
293
293
|
|
294
294
|
# The red component of the color.
|
295
295
|
#
|
296
|
-
# @return [
|
296
|
+
# @return [Integer]
|
297
297
|
def red
|
298
298
|
hsl_to_rgb!
|
299
299
|
@attrs[:red]
|
@@ -301,7 +301,7 @@ module Sass::Script::Value
|
|
301
301
|
|
302
302
|
# The green component of the color.
|
303
303
|
#
|
304
|
-
# @return [
|
304
|
+
# @return [Integer]
|
305
305
|
def green
|
306
306
|
hsl_to_rgb!
|
307
307
|
@attrs[:green]
|
@@ -309,7 +309,7 @@ module Sass::Script::Value
|
|
309
309
|
|
310
310
|
# The blue component of the color.
|
311
311
|
#
|
312
|
-
# @return [
|
312
|
+
# @return [Integer]
|
313
313
|
def blue
|
314
314
|
hsl_to_rgb!
|
315
315
|
@attrs[:blue]
|
@@ -342,7 +342,7 @@ module Sass::Script::Value
|
|
342
342
|
# The alpha channel (opacity) of the color.
|
343
343
|
# This is 1 unless otherwise defined.
|
344
344
|
#
|
345
|
-
# @return [
|
345
|
+
# @return [Integer]
|
346
346
|
def alpha
|
347
347
|
@attrs[:alpha].to_f
|
348
348
|
end
|
@@ -357,7 +357,7 @@ module Sass::Script::Value
|
|
357
357
|
|
358
358
|
# Returns the red, green, and blue components of the color.
|
359
359
|
#
|
360
|
-
# @return [Array<
|
360
|
+
# @return [Array<Integer>] A frozen three-element array of the red, green, and blue
|
361
361
|
# values (respectively) of the color
|
362
362
|
def rgb
|
363
363
|
[red, green, blue].freeze
|
@@ -365,7 +365,7 @@ module Sass::Script::Value
|
|
365
365
|
|
366
366
|
# Returns the red, green, blue, and alpha components of the color.
|
367
367
|
#
|
368
|
-
# @return [Array<
|
368
|
+
# @return [Array<Integer>] A frozen four-element array of the red, green,
|
369
369
|
# blue, and alpha values (respectively) of the color
|
370
370
|
def rgba
|
371
371
|
[red, green, blue, alpha].freeze
|
@@ -373,7 +373,7 @@ module Sass::Script::Value
|
|
373
373
|
|
374
374
|
# Returns the hue, saturation, and lightness components of the color.
|
375
375
|
#
|
376
|
-
# @return [Array<
|
376
|
+
# @return [Array<Integer>] A frozen three-element array of the
|
377
377
|
# hue, saturation, and lightness values (respectively) of the color
|
378
378
|
def hsl
|
379
379
|
[hue, saturation, lightness].freeze
|
@@ -381,7 +381,7 @@ module Sass::Script::Value
|
|
381
381
|
|
382
382
|
# Returns the hue, saturation, lightness, and alpha components of the color.
|
383
383
|
#
|
384
|
-
# @return [Array<
|
384
|
+
# @return [Array<Integer>] A frozen four-element array of the hue,
|
385
385
|
# saturation, lightness, and alpha values (respectively) of the color
|
386
386
|
def hsla
|
387
387
|
[hue, saturation, lightness, alpha].freeze
|
@@ -306,7 +306,7 @@ module Sass::Script::Value
|
|
306
306
|
end
|
307
307
|
alias_method :to_sass, :inspect
|
308
308
|
|
309
|
-
# @return [
|
309
|
+
# @return [Integer] The integer value of the number
|
310
310
|
# @raise [Sass::SyntaxError] if the number isn't an integer
|
311
311
|
def to_i
|
312
312
|
super unless int?
|
data/lib/sass/scss/parser.rb
CHANGED
@@ -16,9 +16,9 @@ module Sass
|
|
16
16
|
# warnings and source maps.
|
17
17
|
# @param importer [Sass::Importers::Base] The importer used to import the
|
18
18
|
# file being parsed. Used for source maps.
|
19
|
-
# @param line [
|
19
|
+
# @param line [Integer] The 1-based line on which the source string appeared,
|
20
20
|
# if it's part of another document.
|
21
|
-
# @param offset [
|
21
|
+
# @param offset [Integer] The 1-based character (not byte) offset in the line on
|
22
22
|
# which the source string starts. Used for error reporting and sourcemap
|
23
23
|
# building.
|
24
24
|
def initialize(str, filename, importer, line = 1, offset = 1)
|
@@ -1022,7 +1022,7 @@ WARNING
|
|
1022
1022
|
end
|
1023
1023
|
|
1024
1024
|
def str
|
1025
|
-
@strs.push ""
|
1025
|
+
@strs.push String.new("")
|
1026
1026
|
yield
|
1027
1027
|
@strs.last
|
1028
1028
|
ensure
|
data/lib/sass/scss/rx.rb
CHANGED
@@ -40,7 +40,7 @@ module Sass
|
|
40
40
|
# escaping all significant characters.
|
41
41
|
#
|
42
42
|
# @param str [String] The text of the regexp
|
43
|
-
# @param flags [
|
43
|
+
# @param flags [Integer] Flags for the created regular expression
|
44
44
|
# @return [Regexp]
|
45
45
|
# @private
|
46
46
|
def self.quote(str, flags = 0)
|
@@ -8,7 +8,7 @@ module Sass
|
|
8
8
|
class AbstractSequence
|
9
9
|
# The line of the Sass template on which this selector was declared.
|
10
10
|
#
|
11
|
-
# @return [
|
11
|
+
# @return [Integer]
|
12
12
|
attr_reader :line
|
13
13
|
|
14
14
|
# The name of the file in which this selector was declared.
|
@@ -19,8 +19,8 @@ module Sass
|
|
19
19
|
# Sets the line of the Sass template on which this selector was declared.
|
20
20
|
# This also sets the line for all child selectors.
|
21
21
|
#
|
22
|
-
# @param line [
|
23
|
-
# @return [
|
22
|
+
# @param line [Integer]
|
23
|
+
# @return [Integer]
|
24
24
|
def line=(line)
|
25
25
|
members.each {|m| m.line = line}
|
26
26
|
@line = line
|
@@ -42,7 +42,7 @@ module Sass
|
|
42
42
|
# Subclasses should define `#_hash` rather than overriding this method,
|
43
43
|
# which automatically handles memoizing the result.
|
44
44
|
#
|
45
|
-
# @return [
|
45
|
+
# @return [Integer]
|
46
46
|
def hash
|
47
47
|
@_hash ||= _hash
|
48
48
|
end
|
@@ -83,7 +83,7 @@ module Sass
|
|
83
83
|
# The base is given by {Sass::Selector::SPECIFICITY_BASE}. This can be a
|
84
84
|
# number or a range representing possible specificities.
|
85
85
|
#
|
86
|
-
# @return [
|
86
|
+
# @return [Integer, Range]
|
87
87
|
def specificity
|
88
88
|
_specificity(members)
|
89
89
|
end
|
@@ -6,8 +6,8 @@ module Sass
|
|
6
6
|
# Sets the line of the Sass template on which this selector was declared.
|
7
7
|
# This also sets the line for all child selectors.
|
8
8
|
#
|
9
|
-
# @param line [
|
10
|
-
# @return [
|
9
|
+
# @param line [Integer]
|
10
|
+
# @return [Integer]
|
11
11
|
def line=(line)
|
12
12
|
members.each {|m| m.line = line if m.is_a?(SimpleSequence)}
|
13
13
|
@line = line
|
data/lib/sass/selector/simple.rb
CHANGED
@@ -5,7 +5,7 @@ module Sass
|
|
5
5
|
class Simple
|
6
6
|
# The line of the Sass template on which this selector was declared.
|
7
7
|
#
|
8
|
-
# @return [
|
8
|
+
# @return [Integer]
|
9
9
|
attr_accessor :line
|
10
10
|
|
11
11
|
# The name of the file in which this selector was declared,
|
@@ -36,7 +36,7 @@ module Sass
|
|
36
36
|
# so if that contains information irrelevant to the identity of the selector,
|
37
37
|
# this should be overridden.
|
38
38
|
#
|
39
|
-
# @return [
|
39
|
+
# @return [Integer]
|
40
40
|
def hash
|
41
41
|
@_hash ||= equality_key.hash
|
42
42
|
end
|
@@ -106,10 +106,10 @@ module Sass
|
|
106
106
|
# could be found at all.
|
107
107
|
# If the second value is `false`, the first should be ignored.
|
108
108
|
def unify_namespaces(ns1, ns2)
|
109
|
-
return nil, false unless ns1 == ns2 || ns1.nil? || ns1 == '*' || ns2.nil? || ns2 == '*'
|
110
109
|
return ns2, true if ns1 == '*'
|
111
110
|
return ns1, true if ns2 == '*'
|
112
|
-
|
111
|
+
return nil, false unless ns1 == ns2
|
112
|
+
[ns1, true]
|
113
113
|
end
|
114
114
|
end
|
115
115
|
end
|
data/lib/sass/shared.rb
CHANGED
@@ -31,7 +31,7 @@ module Sass
|
|
31
31
|
# A `Fixnum` in 1.8, a `String` in 1.9
|
32
32
|
# @param finish [Character] The character closing the balanced pair.
|
33
33
|
# A `Fixnum` in 1.8, a `String` in 1.9
|
34
|
-
# @param count [
|
34
|
+
# @param count [Integer] The number of opening characters matched
|
35
35
|
# before calling this method
|
36
36
|
# @return [(String, String)] The string matched within the balanced pair
|
37
37
|
# and the rest of the string.
|
data/lib/sass/source/map.rb
CHANGED
@@ -37,7 +37,7 @@ module Sass::Source
|
|
37
37
|
|
38
38
|
# Shifts all output source ranges forward one or more lines.
|
39
39
|
#
|
40
|
-
# @param delta [
|
40
|
+
# @param delta [Integer] The number of lines to shift the ranges forward.
|
41
41
|
def shift_output_lines(delta)
|
42
42
|
return if delta == 0
|
43
43
|
@data.each do |m|
|
@@ -49,7 +49,7 @@ module Sass::Source
|
|
49
49
|
# Shifts any output source ranges that lie on the first line forward one or
|
50
50
|
# more characters on that line.
|
51
51
|
#
|
52
|
-
# @param delta [
|
52
|
+
# @param delta [Integer] The number of characters to shift the ranges
|
53
53
|
# forward.
|
54
54
|
def shift_output_offsets(delta)
|
55
55
|
return if delta == 0
|
data/lib/sass/source/position.rb
CHANGED
@@ -2,17 +2,17 @@ module Sass::Source
|
|
2
2
|
class Position
|
3
3
|
# The one-based line of the document associated with the position.
|
4
4
|
#
|
5
|
-
# @return [
|
5
|
+
# @return [Integer]
|
6
6
|
attr_accessor :line
|
7
7
|
|
8
8
|
# The one-based offset in the line of the document associated with the
|
9
9
|
# position.
|
10
10
|
#
|
11
|
-
# @return [
|
11
|
+
# @return [Integer]
|
12
12
|
attr_accessor :offset
|
13
13
|
|
14
|
-
# @param line [
|
15
|
-
# @param offset [
|
14
|
+
# @param line [Integer] The source line
|
15
|
+
# @param offset [Integer] The source offset
|
16
16
|
def initialize(line, offset)
|
17
17
|
@line = line
|
18
18
|
@offset = offset
|
data/lib/sass/tree/node.rb
CHANGED
data/lib/sass/tree/prop_node.rb
CHANGED
@@ -39,7 +39,7 @@ module Sass::Tree
|
|
39
39
|
# * This is a child property of another property
|
40
40
|
# * The parent property has a value, and thus will be rendered
|
41
41
|
#
|
42
|
-
# @return [
|
42
|
+
# @return [Integer]
|
43
43
|
attr_accessor :tabs
|
44
44
|
|
45
45
|
# The source range in which the property name appears.
|
data/lib/sass/tree/rule_node.rb
CHANGED
@@ -12,7 +12,7 @@ class Sass::Tree::Visitors::ToCss < Sass::Tree::Visitors::Base
|
|
12
12
|
@tabs = 0
|
13
13
|
@line = 1
|
14
14
|
@offset = 1
|
15
|
-
@result = ""
|
15
|
+
@result = String.new("")
|
16
16
|
@source_mapping = build_source_mapping ? Sass::Source::Map.new : nil
|
17
17
|
@lstrip = nil
|
18
18
|
@in_directive = false
|
data/lib/sass/util.rb
CHANGED
@@ -339,6 +339,18 @@ module Sass
|
|
339
339
|
arr
|
340
340
|
end
|
341
341
|
|
342
|
+
# Like `String.upcase`, but only ever upcases ASCII letters.
|
343
|
+
def upcase(string)
|
344
|
+
return string.upcase unless ruby2_4?
|
345
|
+
string.upcase(:ascii)
|
346
|
+
end
|
347
|
+
|
348
|
+
# Like `String.downcase`, but only ever downcases ASCII letters.
|
349
|
+
def downcase(string)
|
350
|
+
return string.downcase unless ruby2_4?
|
351
|
+
string.downcase(:ascii)
|
352
|
+
end
|
353
|
+
|
342
354
|
# Returns a sub-array of `minuend` containing only elements that are also in
|
343
355
|
# `subtrahend`. Ensures that the return value has the same order as
|
344
356
|
# `minuend`, even on Rubinius where that's not guaranteed by `Array#-`.
|
@@ -418,7 +430,7 @@ module Sass
|
|
418
430
|
# Returns information about the caller of the previous method.
|
419
431
|
#
|
420
432
|
# @param entry [String] An entry in the `#caller` list, or a similarly formatted string
|
421
|
-
# @return [[String,
|
433
|
+
# @return [[String, Integer, (String, nil)]]
|
422
434
|
# An array containing the filename, line, and method name of the caller.
|
423
435
|
# The method name may be nil
|
424
436
|
def caller_info(entry = nil)
|
@@ -636,7 +648,7 @@ module Sass
|
|
636
648
|
|
637
649
|
# Returns an array of ints representing the JRuby version number.
|
638
650
|
#
|
639
|
-
# @return [Array<
|
651
|
+
# @return [Array<Integer>]
|
640
652
|
def jruby_version
|
641
653
|
@jruby_version ||= ::JRUBY_VERSION.split(".").map {|s| s.to_i}
|
642
654
|
end
|
@@ -794,6 +806,19 @@ module Sass
|
|
794
806
|
@ruby1_9_2 = RUBY_VERSION_COMPONENTS == [1, 9, 2]
|
795
807
|
end
|
796
808
|
|
809
|
+
# Whether or not this is running under Ruby 2.4 or higher.
|
810
|
+
#
|
811
|
+
# @return [Boolean]
|
812
|
+
def ruby2_4?
|
813
|
+
return @ruby2_4 if defined?(@ruby2_4)
|
814
|
+
@ruby2_4 =
|
815
|
+
if RUBY_VERSION_COMPONENTS[0] == 2
|
816
|
+
RUBY_VERSION_COMPONENTS[1] >= 4
|
817
|
+
else
|
818
|
+
RUBY_VERSION_COMPONENTS[0] > 2
|
819
|
+
end
|
820
|
+
end
|
821
|
+
|
797
822
|
# Wehter or not this is running under JRuby 1.6 or lower.
|
798
823
|
def jruby1_6?
|
799
824
|
return @jruby1_6 if defined?(@jruby1_6)
|
@@ -941,7 +966,7 @@ module Sass
|
|
941
966
|
# A version of `Enumerable#enum_cons` that works in Ruby 1.8 and 1.9.
|
942
967
|
#
|
943
968
|
# @param enum [Enumerable] The enumerable to get the enumerator for
|
944
|
-
# @param n [
|
969
|
+
# @param n [Integer] The size of each cons
|
945
970
|
# @return [Enumerator] The consed enumerator
|
946
971
|
def enum_cons(enum, n)
|
947
972
|
ruby1_8? ? enum.enum_cons(n) : enum.each_cons(n)
|
@@ -950,7 +975,7 @@ module Sass
|
|
950
975
|
# A version of `Enumerable#enum_slice` that works in Ruby 1.8 and 1.9.
|
951
976
|
#
|
952
977
|
# @param enum [Enumerable] The enumerable to get the enumerator for
|
953
|
-
# @param n [
|
978
|
+
# @param n [Integer] The size of each slice
|
954
979
|
# @return [Enumerator] The consed enumerator
|
955
980
|
def enum_slice(enum, n)
|
956
981
|
ruby1_8? ? enum.enum_slice(n) : enum.each_slice(n)
|
@@ -977,7 +1002,7 @@ module Sass
|
|
977
1002
|
# Returns the ASCII code of the given character.
|
978
1003
|
#
|
979
1004
|
# @param c [String] All characters but the first are ignored.
|
980
|
-
# @return [
|
1005
|
+
# @return [Integer] The ASCII code of `c`.
|
981
1006
|
def ord(c)
|
982
1007
|
ruby1_8? ? c[0] : c.ord
|
983
1008
|
end
|
@@ -1102,11 +1127,11 @@ module Sass
|
|
1102
1127
|
|
1103
1128
|
# Converts the argument into a valid JSON value.
|
1104
1129
|
#
|
1105
|
-
# @param v [
|
1130
|
+
# @param v [Integer, String, Array, Boolean, nil]
|
1106
1131
|
# @return [String]
|
1107
1132
|
def json_value_of(v)
|
1108
1133
|
case v
|
1109
|
-
when
|
1134
|
+
when Integer
|
1110
1135
|
v.to_s
|
1111
1136
|
when String
|
1112
1137
|
"\"" + json_escape_string(v) + "\""
|
@@ -1139,7 +1164,7 @@ module Sass
|
|
1139
1164
|
|
1140
1165
|
# Encodes `value` as VLQ (http://en.wikipedia.org/wiki/VLQ).
|
1141
1166
|
#
|
1142
|
-
# @param value [
|
1167
|
+
# @param value [Integer]
|
1143
1168
|
# @return [String] The encoded value
|
1144
1169
|
def encode_vlq(value)
|
1145
1170
|
if value < 0
|
data/lib/sass/version.rb
CHANGED
@@ -8,7 +8,7 @@ module Sass
|
|
8
8
|
# if it was installed from Git.
|
9
9
|
module Version
|
10
10
|
# Returns a hash representing the version of Sass.
|
11
|
-
# The `:major`, `:minor`, and `:teeny` keys have their respective numbers as
|
11
|
+
# The `:major`, `:minor`, and `:teeny` keys have their respective numbers as Integers.
|
12
12
|
# The `:name` key has the name of the version.
|
13
13
|
# The `:string` key contains a human-readable string representation of the version.
|
14
14
|
# The `:number` key is the major, minor, and teeny keys separated by periods.
|
@@ -41,7 +41,7 @@ module Sass
|
|
41
41
|
# :prerelease_number => 1
|
42
42
|
# }
|
43
43
|
#
|
44
|
-
# @return [{Symbol => String/
|
44
|
+
# @return [{Symbol => String/Integer}] The version hash
|
45
45
|
# @comment
|
46
46
|
# rubocop:disable ClassVars
|
47
47
|
def version
|
data/test/sass/extend_test.rb
CHANGED
@@ -167,42 +167,52 @@ SCSS
|
|
167
167
|
end
|
168
168
|
|
169
169
|
def test_universal_unification_with_namespaceless_universal_target
|
170
|
+
assert_extend_doesnt_match('ns|*', '.foo', :failed_to_unify, 2) do
|
171
|
+
render_unification '*.foo', 'ns|* {@extend .foo}'
|
172
|
+
end
|
173
|
+
|
170
174
|
assert_unification '*.foo', '* {@extend .foo}', '*'
|
171
175
|
assert_unification '*.foo', '*|* {@extend .foo}', '*'
|
172
176
|
assert_unification '*|*.foo', '* {@extend .foo}', '*|*.foo, *'
|
173
177
|
assert_unification '*|*.foo', '*|* {@extend .foo}', '*|*'
|
174
|
-
assert_unification '*.foo', 'ns|* {@extend .foo}', '*.foo, ns|*'
|
175
178
|
assert_unification '*|*.foo', 'ns|* {@extend .foo}', '*|*.foo, ns|*'
|
176
179
|
end
|
177
180
|
|
178
181
|
def test_universal_unification_with_namespaced_universal_target
|
179
|
-
|
180
|
-
|
182
|
+
assert_extend_doesnt_match('*', '.foo', :failed_to_unify, 2) do
|
183
|
+
render_unification 'ns|*.foo', '* {@extend .foo}'
|
184
|
+
end
|
181
185
|
|
182
186
|
assert_extend_doesnt_match('ns2|*', '.foo', :failed_to_unify, 2) do
|
183
187
|
render_unification 'ns1|*.foo', 'ns2|* {@extend .foo}'
|
184
188
|
end
|
185
189
|
|
190
|
+
assert_unification 'ns|*.foo', '*|* {@extend .foo}', 'ns|*'
|
186
191
|
assert_unification 'ns|*.foo', 'ns|* {@extend .foo}', 'ns|*'
|
187
192
|
end
|
188
193
|
|
189
194
|
def test_universal_unification_with_namespaceless_element_target
|
195
|
+
assert_extend_doesnt_match('ns|*', '.foo', :failed_to_unify, 2) do
|
196
|
+
render_unification 'a.foo', 'ns|* {@extend .foo}'
|
197
|
+
end
|
198
|
+
|
190
199
|
assert_unification 'a.foo', '* {@extend .foo}', 'a'
|
191
200
|
assert_unification 'a.foo', '*|* {@extend .foo}', 'a'
|
192
201
|
assert_unification '*|a.foo', '* {@extend .foo}', '*|a.foo, a'
|
193
202
|
assert_unification '*|a.foo', '*|* {@extend .foo}', '*|a'
|
194
|
-
assert_unification 'a.foo', 'ns|* {@extend .foo}', 'a.foo, ns|a'
|
195
203
|
assert_unification '*|a.foo', 'ns|* {@extend .foo}', '*|a.foo, ns|a'
|
196
204
|
end
|
197
205
|
|
198
206
|
def test_universal_unification_with_namespaced_element_target
|
199
|
-
|
200
|
-
|
207
|
+
assert_extend_doesnt_match('*', '.foo', :failed_to_unify, 2) do
|
208
|
+
render_unification 'ns|a.foo', '* {@extend .foo}'
|
209
|
+
end
|
201
210
|
|
202
211
|
assert_extend_doesnt_match('ns2|*', '.foo', :failed_to_unify, 2) do
|
203
212
|
render_unification 'ns1|a.foo', 'ns2|* {@extend .foo}'
|
204
213
|
end
|
205
214
|
|
215
|
+
assert_unification 'ns|a.foo', '*|* {@extend .foo}', 'ns|a'
|
206
216
|
assert_unification 'ns|a.foo', 'ns|* {@extend .foo}', 'ns|a'
|
207
217
|
end
|
208
218
|
|
@@ -214,46 +224,56 @@ SCSS
|
|
214
224
|
end
|
215
225
|
|
216
226
|
def test_element_unification_with_namespaceless_universal_target
|
227
|
+
assert_extend_doesnt_match('ns|a', '.foo', :failed_to_unify, 2) do
|
228
|
+
render_unification '*.foo', 'ns|a {@extend .foo}'
|
229
|
+
end
|
230
|
+
|
217
231
|
assert_unification '*.foo', 'a {@extend .foo}', '*.foo, a'
|
218
232
|
assert_unification '*.foo', '*|a {@extend .foo}', '*.foo, a'
|
219
233
|
assert_unification '*|*.foo', 'a {@extend .foo}', '*|*.foo, a'
|
220
234
|
assert_unification '*|*.foo', '*|a {@extend .foo}', '*|*.foo, *|a'
|
221
|
-
assert_unification '*.foo', 'ns|a {@extend .foo}', '*.foo, ns|a'
|
222
235
|
assert_unification '*|*.foo', 'ns|a {@extend .foo}', '*|*.foo, ns|a'
|
223
236
|
end
|
224
237
|
|
225
238
|
def test_element_unification_with_namespaced_universal_target
|
226
|
-
|
227
|
-
|
239
|
+
assert_extend_doesnt_match('a', '.foo', :failed_to_unify, 2) do
|
240
|
+
render_unification 'ns|*.foo', 'a {@extend .foo}'
|
241
|
+
end
|
228
242
|
|
229
243
|
assert_extend_doesnt_match('ns2|a', '.foo', :failed_to_unify, 2) do
|
230
244
|
render_unification 'ns1|*.foo', 'ns2|a {@extend .foo}'
|
231
245
|
end
|
232
246
|
|
247
|
+
assert_unification 'ns|*.foo', '*|a {@extend .foo}', 'ns|*.foo, ns|a'
|
233
248
|
assert_unification 'ns|*.foo', 'ns|a {@extend .foo}', 'ns|*.foo, ns|a'
|
234
249
|
end
|
235
250
|
|
236
251
|
def test_element_unification_with_namespaceless_element_target
|
252
|
+
assert_extend_doesnt_match('ns|a', '.foo', :failed_to_unify, 2) do
|
253
|
+
render_unification 'a.foo', 'ns|a {@extend .foo}'
|
254
|
+
end
|
255
|
+
|
256
|
+
assert_extend_doesnt_match('h1', '.foo', :failed_to_unify, 2) do
|
257
|
+
render_unification 'a.foo', 'h1 {@extend .foo}'
|
258
|
+
end
|
259
|
+
|
237
260
|
assert_unification 'a.foo', 'a {@extend .foo}', 'a'
|
238
261
|
assert_unification 'a.foo', '*|a {@extend .foo}', 'a'
|
239
262
|
assert_unification '*|a.foo', 'a {@extend .foo}', '*|a.foo, a'
|
240
263
|
assert_unification '*|a.foo', '*|a {@extend .foo}', '*|a'
|
241
|
-
assert_unification 'a.foo', 'ns|a {@extend .foo}', 'a.foo, ns|a'
|
242
264
|
assert_unification '*|a.foo', 'ns|a {@extend .foo}', '*|a.foo, ns|a'
|
243
|
-
|
244
|
-
assert_extend_doesnt_match('h1', '.foo', :failed_to_unify, 2) do
|
245
|
-
render_unification 'a.foo', 'h1 {@extend .foo}'
|
246
|
-
end
|
247
265
|
end
|
248
266
|
|
249
267
|
def test_element_unification_with_namespaced_element_target
|
250
|
-
|
251
|
-
|
268
|
+
assert_extend_doesnt_match('a', '.foo', :failed_to_unify, 2) do
|
269
|
+
render_unification 'ns|a.foo', 'a {@extend .foo}'
|
270
|
+
end
|
252
271
|
|
253
272
|
assert_extend_doesnt_match('ns2|a', '.foo', :failed_to_unify, 2) do
|
254
273
|
render_unification 'ns1|a.foo', 'ns2|a {@extend .foo}'
|
255
274
|
end
|
256
275
|
|
276
|
+
assert_unification 'ns|a.foo', '*|a {@extend .foo}', 'ns|a'
|
257
277
|
assert_unification 'ns|a.foo', 'ns|a {@extend .foo}', 'ns|a'
|
258
278
|
end
|
259
279
|
|
@@ -567,7 +587,7 @@ SCSS
|
|
567
587
|
end
|
568
588
|
|
569
589
|
def test_long_extendee_runs_unification
|
570
|
-
assert_extends 'ns|*.foo.bar', 'a.baz {@extend .foo.bar}', 'ns|*.foo.bar, ns|a.baz'
|
590
|
+
assert_extends 'ns|*.foo.bar', '*|a.baz {@extend .foo.bar}', 'ns|*.foo.bar, ns|a.baz'
|
571
591
|
end
|
572
592
|
|
573
593
|
## Long Extenders
|
@@ -577,7 +597,7 @@ SCSS
|
|
577
597
|
end
|
578
598
|
|
579
599
|
def test_long_extender_runs_unification
|
580
|
-
assert_extends 'ns|*.foo.bar', 'a.baz {@extend .foo}', 'ns|*.foo.bar, ns|a.bar.baz'
|
600
|
+
assert_extends 'ns|*.foo.bar', '*|a.baz {@extend .foo}', 'ns|*.foo.bar, ns|a.bar.baz'
|
581
601
|
end
|
582
602
|
|
583
603
|
def test_long_extender_aborts_unification
|
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.
|
4
|
+
version: 3.4.24
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Natalie Weizenbaum
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2017-05-19 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: yard
|
@@ -18,28 +18,28 @@ dependencies:
|
|
18
18
|
requirements:
|
19
19
|
- - ">="
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 0.
|
21
|
+
version: 0.9.8
|
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
|
-
version: 0.
|
28
|
+
version: 0.9.8
|
29
29
|
- !ruby/object:Gem::Dependency
|
30
|
-
name:
|
30
|
+
name: redcarpet
|
31
31
|
requirement: !ruby/object:Gem::Requirement
|
32
32
|
requirements:
|
33
|
-
- - "
|
33
|
+
- - "~>"
|
34
34
|
- !ruby/object:Gem::Version
|
35
|
-
version:
|
35
|
+
version: 2.3.0
|
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
|
-
version:
|
42
|
+
version: 2.3.0
|
43
43
|
- !ruby/object:Gem::Dependency
|
44
44
|
name: minitest
|
45
45
|
requirement: !ruby/object:Gem::Requirement
|
@@ -396,34 +396,34 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
396
396
|
version: '0'
|
397
397
|
requirements: []
|
398
398
|
rubyforge_project: sass
|
399
|
-
rubygems_version: 2.
|
399
|
+
rubygems_version: 2.6.11
|
400
400
|
signing_key:
|
401
401
|
specification_version: 4
|
402
402
|
summary: A powerful but elegant CSS compiler that makes CSS fun again.
|
403
403
|
test_files:
|
404
|
-
- test/sass/extend_test.rb
|
405
|
-
- test/sass/css2sass_test.rb
|
406
|
-
- test/sass/util_test.rb
|
407
|
-
- test/sass/superselector_test.rb
|
408
|
-
- test/sass/value_helpers_test.rb
|
409
404
|
- test/sass/plugin_test.rb
|
410
|
-
- test/sass/logger_test.rb
|
411
|
-
- test/sass/functions_test.rb
|
412
|
-
- test/sass/conversion_test.rb
|
413
|
-
- test/sass/source_map_test.rb
|
414
|
-
- test/sass/cache_test.rb
|
415
405
|
- test/sass/encoding_test.rb
|
416
|
-
- test/sass/
|
406
|
+
- test/sass/importer_test.rb
|
417
407
|
- test/sass/callbacks_test.rb
|
418
|
-
- test/sass/script_conversion_test.rb
|
419
408
|
- test/sass/scss/css_test.rb
|
420
409
|
- test/sass/scss/rx_test.rb
|
421
410
|
- test/sass/scss/scss_test.rb
|
411
|
+
- test/sass/util/multibyte_string_scanner_test.rb
|
412
|
+
- test/sass/util/normalized_map_test.rb
|
413
|
+
- test/sass/util/subset_map_test.rb
|
414
|
+
- test/sass/functions_test.rb
|
415
|
+
- test/sass/util_test.rb
|
416
|
+
- test/sass/cache_test.rb
|
422
417
|
- test/sass/exec_test.rb
|
423
|
-
- test/sass/
|
418
|
+
- test/sass/value_helpers_test.rb
|
419
|
+
- test/sass/conversion_test.rb
|
420
|
+
- test/sass/script_test.rb
|
421
|
+
- test/sass/logger_test.rb
|
422
|
+
- test/sass/compiler_test.rb
|
424
423
|
- test/sass/engine_test.rb
|
424
|
+
- test/sass/css2sass_test.rb
|
425
|
+
- test/sass/superselector_test.rb
|
426
|
+
- test/sass/script_conversion_test.rb
|
425
427
|
- test/sass/css_variable_test.rb
|
426
|
-
- test/sass/
|
427
|
-
- test/sass/
|
428
|
-
- test/sass/util/normalized_map_test.rb
|
429
|
-
- test/sass/util/multibyte_string_scanner_test.rb
|
428
|
+
- test/sass/source_map_test.rb
|
429
|
+
- test/sass/extend_test.rb
|