sass 3.4.23 → 3.4.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|