sass 3.4.18 → 3.4.19
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 +13 -5
- data/CONTRIBUTING.md +1 -1
- data/README.md +3 -3
- data/VERSION +1 -1
- data/VERSION_DATE +1 -1
- data/lib/sass/exec/sass_scss.rb +5 -3
- data/lib/sass/importers/filesystem.rb +1 -2
- data/lib/sass/script/functions.rb +1 -1
- data/lib/sass/script/tree/funcall.rb +1 -1
- data/lib/sass/script/tree/node.rb +4 -0
- data/lib/sass/script/tree/string_interpolation.rb +52 -37
- data/lib/sass/script/value/number.rb +24 -4
- data/lib/sass/script/value/string.rb +16 -4
- data/lib/sass/scss/parser.rb +5 -6
- data/lib/sass/selector/sequence.rb +4 -4
- data/lib/sass/selector/simple_sequence.rb +2 -2
- data/lib/sass/util.rb +2 -43
- data/lib/sass/util/normalized_map.rb +0 -1
- data/lib/sass/util/subset_map.rb +1 -2
- data/test/sass/engine_test.rb +0 -1
- data/test/sass/script_conversion_test.rb +4 -1
- data/test/sass/script_test.rb +9 -0
- data/test/sass/source_map_test.rb +3 -2
- data/test/sass/util_test.rb +0 -44
- metadata +98 -99
checksums.yaml
CHANGED
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
|
|
2
|
+
!binary "U0hBMQ==":
|
|
3
|
+
metadata.gz: !binary |-
|
|
4
|
+
MWUyNTcwMjI2MDViMjQ1MjdkMTUzYjAyMzAwNDM4OGMyODUwNmQ3ZA==
|
|
5
|
+
data.tar.gz: !binary |-
|
|
6
|
+
NDU0NjNmOTk2MzU2ODllMGRjMGMwYTU5OTNiOTk2YzYwNGRmYjg2MQ==
|
|
5
7
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
|
|
8
|
+
metadata.gz: !binary |-
|
|
9
|
+
ODVlN2I2NjI5NGUyNjMyZjIyNGE4YzkwNmUwYzZhOThlMWE3OWM4N2U3MDMw
|
|
10
|
+
OGNiODViMmRiMGZlZTA1MGZjNTUzYTg1MzY2YWRhOGM3MTdhZDNlMmVmODk5
|
|
11
|
+
MTJmOGJhYWQ4YWMxNzRkN2JiNjJlNGYwMWJlZWFiNWY5MjIxYTY=
|
|
12
|
+
data.tar.gz: !binary |-
|
|
13
|
+
ZWY5NDhjODk1YThkMGE5OTcyMmQ5MTY3NWZlNDEzNWFjMDI0YWMxZDlmMWU4
|
|
14
|
+
YjcwZWJiNDdkM2RlYmI5Njc1MTVmYzM0YzA5OGQ5N2UxNzA4YjUzMGQ5Nzk2
|
|
15
|
+
YzNkYzVjYjI1NTBjMDdlODdkZjcwNmMzNWI0NzBkZTY4MjgyODU=
|
data/CONTRIBUTING.md
CHANGED
data/README.md
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
# Sass [](http://badge.fury.io/rb/sass) [](http://inch-ci.org/github/sass/sass)
|
|
2
2
|
|
|
3
|
-
**Sass makes CSS fun again**. Sass is an extension of
|
|
3
|
+
**Sass makes CSS fun again**. Sass is an extension of CSS,
|
|
4
4
|
adding nested rules, variables, mixins, selector inheritance, and more.
|
|
5
5
|
It's translated to well-formatted, standard CSS
|
|
6
6
|
using the command line tool or a web-framework plugin.
|
|
7
7
|
|
|
8
8
|
Sass has two syntaxes. The new main syntax (as of Sass 3)
|
|
9
9
|
is known as "SCSS" (for "Sassy CSS"),
|
|
10
|
-
and is a superset of
|
|
11
|
-
This means that every valid
|
|
10
|
+
and is a superset of CSS's syntax.
|
|
11
|
+
This means that every valid CSS stylesheet is valid SCSS as well.
|
|
12
12
|
SCSS files use the extension `.scss`.
|
|
13
13
|
|
|
14
14
|
The second, older syntax is known as the indented syntax (or just "Sass").
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
3.4.
|
|
1
|
+
3.4.19
|
data/VERSION_DATE
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
10 October 2015 01:18:29 UTC
|
data/lib/sass/exec/sass_scss.rb
CHANGED
|
@@ -174,9 +174,6 @@ MESSAGE
|
|
|
174
174
|
'Read input from standard input instead of an input file.',
|
|
175
175
|
'This is the default if no input file is specified.') do
|
|
176
176
|
@options[:input] = $stdin
|
|
177
|
-
|
|
178
|
-
# See issue 1745
|
|
179
|
-
(@options[:for_engine][:load_paths] ||= []) << ::Sass::Importers::DeprecatedPath.new(".")
|
|
180
177
|
end
|
|
181
178
|
|
|
182
179
|
encoding_option(opts)
|
|
@@ -390,6 +387,11 @@ WARNING
|
|
|
390
387
|
input = @options[:input]
|
|
391
388
|
output = @options[:output]
|
|
392
389
|
|
|
390
|
+
if input == $stdin
|
|
391
|
+
# See issue 1745
|
|
392
|
+
(@options[:for_engine][:load_paths] ||= []) << ::Sass::Importers::DeprecatedPath.new(".")
|
|
393
|
+
end
|
|
394
|
+
|
|
393
395
|
@options[:for_engine][:syntax] ||= :scss if input.is_a?(File) && input.path =~ /\.scss$/
|
|
394
396
|
@options[:for_engine][:syntax] ||= @default_syntax
|
|
395
397
|
engine =
|
|
@@ -150,8 +150,7 @@ module Sass
|
|
|
150
150
|
full_path.gsub!(REDUNDANT_DIRECTORY, File::SEPARATOR)
|
|
151
151
|
[Sass::Util.cleanpath(full_path).to_s, s]
|
|
152
152
|
end
|
|
153
|
-
end
|
|
154
|
-
found = Sass::Util.flatten(found, 1)
|
|
153
|
+
end.flatten(1)
|
|
155
154
|
return if found.empty?
|
|
156
155
|
|
|
157
156
|
if found.size > 1 && !@same_name_warnings.include?(found.first.first)
|
|
@@ -188,7 +188,7 @@ module Sass::Script
|
|
|
188
188
|
# \{#index index($list, $value)}
|
|
189
189
|
# : Returns the position of a value within a list.
|
|
190
190
|
#
|
|
191
|
-
# \{#list_separator list-separator(
|
|
191
|
+
# \{#list_separator list-separator($list)}
|
|
192
192
|
# : Returns the separator of a list.
|
|
193
193
|
#
|
|
194
194
|
# ## Map Functions {#map-functions}
|
|
@@ -62,6 +62,10 @@ module Sass::Script::Tree
|
|
|
62
62
|
|
|
63
63
|
# Returns the text of this SassScript expression.
|
|
64
64
|
#
|
|
65
|
+
# @options opts :quote [String]
|
|
66
|
+
# The preferred quote style for quoted strings. If `:none`, strings are
|
|
67
|
+
# always emitted unquoted.
|
|
68
|
+
#
|
|
65
69
|
# @return [String]
|
|
66
70
|
def to_sass(opts = {})
|
|
67
71
|
Sass::Util.abstract(self)
|
|
@@ -3,12 +3,33 @@ module Sass::Script::Tree
|
|
|
3
3
|
#
|
|
4
4
|
# @see Interpolation
|
|
5
5
|
class StringInterpolation < Node
|
|
6
|
+
# @return [Literal] The string literal before this interpolation.
|
|
7
|
+
attr_reader :before
|
|
8
|
+
|
|
9
|
+
# @return [Node] The SassScript within the interpolation
|
|
10
|
+
attr_reader :mid
|
|
11
|
+
|
|
12
|
+
# @return [StringInterpolation, Literal]
|
|
13
|
+
# The string literal or string interpolation before this interpolation.
|
|
14
|
+
attr_reader :after
|
|
15
|
+
|
|
16
|
+
# Whether this is a CSS string or a CSS identifier. The difference is that
|
|
17
|
+
# strings are written with double-quotes, while identifiers aren't.
|
|
18
|
+
#
|
|
19
|
+
# String interpolations are only ever identifiers if they're quote-like
|
|
20
|
+
# functions such as `url()`.
|
|
21
|
+
#
|
|
22
|
+
# @return [Symbol] `:string` or `:identifier`
|
|
23
|
+
def type
|
|
24
|
+
@before.value.type
|
|
25
|
+
end
|
|
26
|
+
|
|
6
27
|
# Interpolation in a string is of the form `"before #{mid} after"`,
|
|
7
28
|
# where `before` and `after` may include more interpolation.
|
|
8
29
|
#
|
|
9
|
-
# @param before [
|
|
10
|
-
# @param mid [Node]
|
|
11
|
-
# @param after [
|
|
30
|
+
# @param before [StringInterpolation, Literal] See {StringInterpolation#before}
|
|
31
|
+
# @param mid [Node] See {StringInterpolation#mid}
|
|
32
|
+
# @param after [Literal] See {StringInterpolation#after}
|
|
12
33
|
def initialize(before, mid, after)
|
|
13
34
|
@before = before
|
|
14
35
|
@mid = mid
|
|
@@ -22,32 +43,15 @@ module Sass::Script::Tree
|
|
|
22
43
|
|
|
23
44
|
# @see Node#to_sass
|
|
24
45
|
def to_sass(opts = {})
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
before_unquote, before_quote_char, before_str = parse_str(@before.to_sass(opts))
|
|
28
|
-
after_unquote, after_quote_char, after_str = parse_str(@after.to_sass(opts))
|
|
29
|
-
unquote = before_unquote || after_unquote ||
|
|
30
|
-
(before_quote_char && !after_quote_char && !after_str.empty?) ||
|
|
31
|
-
(!before_quote_char && after_quote_char && !before_str.empty?)
|
|
32
|
-
quote_char =
|
|
33
|
-
if before_quote_char && after_quote_char && before_quote_char != after_quote_char
|
|
34
|
-
before_str.gsub!("\\'", "'")
|
|
35
|
-
before_str.gsub!('"', "\\\"")
|
|
36
|
-
after_str.gsub!("\\'", "'")
|
|
37
|
-
after_str.gsub!('"', "\\\"")
|
|
38
|
-
'"'
|
|
39
|
-
else
|
|
40
|
-
before_quote_char || after_quote_char
|
|
41
|
-
end
|
|
46
|
+
quote = type == :string ? opts[:quote] || quote_for(self) || '"' : :none
|
|
47
|
+
opts = opts.merge(:quote => quote)
|
|
42
48
|
|
|
43
49
|
res = ""
|
|
44
|
-
res <<
|
|
45
|
-
res <<
|
|
46
|
-
res <<
|
|
47
|
-
res <<
|
|
48
|
-
res <<
|
|
49
|
-
res << quote_char if quote_char
|
|
50
|
-
res << ')' if unquote
|
|
50
|
+
res << quote if quote != :none
|
|
51
|
+
res << _to_sass(before, opts)
|
|
52
|
+
res << '#{' << @mid.to_sass(opts.merge(:quote => nil)) << '}'
|
|
53
|
+
res << _to_sass(after, opts)
|
|
54
|
+
res << quote if quote != :none
|
|
51
55
|
res
|
|
52
56
|
end
|
|
53
57
|
|
|
@@ -88,17 +92,28 @@ module Sass::Script::Tree
|
|
|
88
92
|
|
|
89
93
|
private
|
|
90
94
|
|
|
91
|
-
def
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
return
|
|
99
|
-
|
|
100
|
-
return
|
|
95
|
+
def _to_sass(string_or_interp, opts)
|
|
96
|
+
result = string_or_interp.to_sass(opts)
|
|
97
|
+
opts[:quote] == :none ? result : result.slice(1...-1)
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def quote_for(string_or_interp)
|
|
101
|
+
if string_or_interp.is_a?(Sass::Script::Tree::Literal)
|
|
102
|
+
return nil if string_or_interp.value.value.empty?
|
|
103
|
+
return '"' if string_or_interp.value.value.include?("'")
|
|
104
|
+
return "'" if string_or_interp.value.value.include?('"')
|
|
105
|
+
return nil
|
|
101
106
|
end
|
|
107
|
+
|
|
108
|
+
# Double-quotes take precedence over single quotes.
|
|
109
|
+
before_quote = quote_for(string_or_interp.before)
|
|
110
|
+
return '"' if before_quote == '"'
|
|
111
|
+
after_quote = quote_for(string_or_interp.after)
|
|
112
|
+
return '"' if after_quote == '"'
|
|
113
|
+
|
|
114
|
+
# Returns "'" if either or both insist on single quotes, and nil
|
|
115
|
+
# otherwise.
|
|
116
|
+
before_quote || after_quote
|
|
102
117
|
end
|
|
103
118
|
end
|
|
104
119
|
end
|
|
@@ -43,6 +43,7 @@ module Sass::Script::Value
|
|
|
43
43
|
def self.precision=(digits)
|
|
44
44
|
@precision = digits.round
|
|
45
45
|
@precision_factor = 10.0**@precision
|
|
46
|
+
@epsilon = 1 / (@precision_factor * 10)
|
|
46
47
|
end
|
|
47
48
|
|
|
48
49
|
# the precision factor used in numeric output
|
|
@@ -51,6 +52,13 @@ module Sass::Script::Value
|
|
|
51
52
|
@precision_factor ||= 10.0**precision
|
|
52
53
|
end
|
|
53
54
|
|
|
55
|
+
# Used in checking equality of floating point numbers. Any
|
|
56
|
+
# numbers within an `epsilon` of each other are considered functionally equal.
|
|
57
|
+
# The value for epsilon is one tenth of the current numeric precision.
|
|
58
|
+
def self.epsilon
|
|
59
|
+
@epsilon ||= 1 / (precision_factor * 10)
|
|
60
|
+
end
|
|
61
|
+
|
|
54
62
|
# Used so we don't allocate two new arrays for each new number.
|
|
55
63
|
NO_UNITS = []
|
|
56
64
|
|
|
@@ -200,7 +208,7 @@ module Sass::Script::Value
|
|
|
200
208
|
rescue Sass::UnitConversionError
|
|
201
209
|
return Bool::FALSE
|
|
202
210
|
end
|
|
203
|
-
Bool.new(this.value
|
|
211
|
+
Bool.new(basically_equal?(this.value, other.value))
|
|
204
212
|
end
|
|
205
213
|
|
|
206
214
|
def hash
|
|
@@ -211,7 +219,7 @@ module Sass::Script::Value
|
|
|
211
219
|
# Hash-equality must be transitive, so it just compares the exact value,
|
|
212
220
|
# numerator units, and denominator units.
|
|
213
221
|
def eql?(other)
|
|
214
|
-
value
|
|
222
|
+
basically_equal?(value, other.value) && numerator_units == other.numerator_units &&
|
|
215
223
|
denominator_units == other.denominator_units
|
|
216
224
|
end
|
|
217
225
|
|
|
@@ -294,7 +302,7 @@ module Sass::Script::Value
|
|
|
294
302
|
|
|
295
303
|
# @return [Boolean] Whether or not this number is an integer.
|
|
296
304
|
def int?
|
|
297
|
-
value % 1
|
|
305
|
+
basically_equal?(value % 1, 0.0)
|
|
298
306
|
end
|
|
299
307
|
|
|
300
308
|
# @return [Boolean] Whether or not this number has no units.
|
|
@@ -375,11 +383,23 @@ module Sass::Script::Value
|
|
|
375
383
|
|
|
376
384
|
private
|
|
377
385
|
|
|
386
|
+
# @private
|
|
387
|
+
# @see Sass::Script::Number.basically_equal?
|
|
388
|
+
def basically_equal?(num1, num2)
|
|
389
|
+
self.class.basically_equal?(num1, num2)
|
|
390
|
+
end
|
|
391
|
+
|
|
392
|
+
# Checks whether two numbers are within an epsilon of each other.
|
|
393
|
+
# @return [Boolean]
|
|
394
|
+
def self.basically_equal?(num1, num2)
|
|
395
|
+
(num1 - num2).abs < epsilon
|
|
396
|
+
end
|
|
397
|
+
|
|
378
398
|
# @private
|
|
379
399
|
def self.round(num)
|
|
380
400
|
if num.is_a?(Float) && (num.infinite? || num.nan?)
|
|
381
401
|
num
|
|
382
|
-
elsif num % 1
|
|
402
|
+
elsif basically_equal?(num % 1, 0.0)
|
|
383
403
|
num.to_i
|
|
384
404
|
else
|
|
385
405
|
((num * precision_factor).round / precision_factor).to_f
|
|
@@ -28,9 +28,18 @@ module Sass::Script::Value
|
|
|
28
28
|
end
|
|
29
29
|
end
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
# Returns the quoted string representation of `contents`.
|
|
32
|
+
#
|
|
33
|
+
# @options opts :quote [String]
|
|
34
|
+
# The preferred quote style for quoted strings. If `:none`, strings are
|
|
35
|
+
# always emitted unquoted. If `nil`, quoting is determined automatically.
|
|
36
|
+
# @options opts :sass [String]
|
|
37
|
+
# Whether to quote strings for Sass source, as opposed to CSS. Defaults to `false`.
|
|
38
|
+
def self.quote(contents, opts = {})
|
|
39
|
+
quote = opts[:quote]
|
|
40
|
+
|
|
32
41
|
# Short-circuit if there are no characters that need quoting.
|
|
33
|
-
unless contents =~ /[\n\\"']/
|
|
42
|
+
unless contents =~ /[\n\\"']|\#\{/
|
|
34
43
|
quote ||= '"'
|
|
35
44
|
return "#{quote}#{contents}#{quote}"
|
|
36
45
|
end
|
|
@@ -50,6 +59,9 @@ module Sass::Script::Value
|
|
|
50
59
|
# Replace single backslashes with multiples.
|
|
51
60
|
contents = contents.gsub("\\", "\\\\\\\\")
|
|
52
61
|
|
|
62
|
+
# Escape interpolation.
|
|
63
|
+
contents = contents.gsub('#{', "\\\#{") if opts[:sass]
|
|
64
|
+
|
|
53
65
|
if quote == '"'
|
|
54
66
|
contents = contents.gsub('"', "\\\"")
|
|
55
67
|
else
|
|
@@ -82,12 +94,12 @@ module Sass::Script::Value
|
|
|
82
94
|
# @see Value#to_s
|
|
83
95
|
def to_s(opts = {})
|
|
84
96
|
return @value.gsub(/\n\s*/, ' ') if opts[:quote] == :none || @type == :identifier
|
|
85
|
-
|
|
97
|
+
String.quote(value, opts)
|
|
86
98
|
end
|
|
87
99
|
|
|
88
100
|
# @see Value#to_sass
|
|
89
101
|
def to_sass(opts = {})
|
|
90
|
-
to_s
|
|
102
|
+
to_s(opts.merge(:sass => true))
|
|
91
103
|
end
|
|
92
104
|
|
|
93
105
|
def inspect
|
data/lib/sass/scss/parser.rb
CHANGED
|
@@ -156,13 +156,12 @@ module Sass
|
|
|
156
156
|
else
|
|
157
157
|
value = Sass::Engine.parse_interp(
|
|
158
158
|
text, line, @scanner.pos - text.size, :filename => @filename)
|
|
159
|
-
|
|
160
|
-
newline_before_comment = string_before_comment.rindex("\n")
|
|
159
|
+
newline_before_comment = @scanner.string.rindex("\n", @scanner.pos - text.length)
|
|
161
160
|
last_line_before_comment =
|
|
162
161
|
if newline_before_comment
|
|
163
|
-
|
|
162
|
+
@scanner.string[newline_before_comment + 1...@scanner.pos - text.length]
|
|
164
163
|
else
|
|
165
|
-
|
|
164
|
+
@scanner.string[0...@scanner.pos - text.length]
|
|
166
165
|
end
|
|
167
166
|
value.unshift(last_line_before_comment.gsub(/[^\s]/, ' '))
|
|
168
167
|
end
|
|
@@ -215,12 +214,12 @@ module Sass
|
|
|
215
214
|
end
|
|
216
215
|
|
|
217
216
|
def special_directive(name, start_pos)
|
|
218
|
-
sym = name.
|
|
217
|
+
sym = name.tr('-', '_').to_sym
|
|
219
218
|
DIRECTIVES.include?(sym) && send("#{sym}_directive", start_pos)
|
|
220
219
|
end
|
|
221
220
|
|
|
222
221
|
def prefixed_directive(name, start_pos)
|
|
223
|
-
sym = deprefix(name).
|
|
222
|
+
sym = deprefix(name).tr('-', '_').to_sym
|
|
224
223
|
PREFIXED_DIRECTIVES.include?(sym) && send("#{sym}_directive", name, start_pos)
|
|
225
224
|
end
|
|
226
225
|
|
|
@@ -228,11 +228,11 @@ module Sass
|
|
|
228
228
|
next if current.empty?
|
|
229
229
|
current = current.dup
|
|
230
230
|
last_current = [current.pop]
|
|
231
|
-
prefixes =
|
|
231
|
+
prefixes = prefixes.map do |prefix|
|
|
232
232
|
sub = subweave(prefix, current)
|
|
233
233
|
next [] unless sub
|
|
234
234
|
sub.map {|seqs| seqs + last_current}
|
|
235
|
-
end
|
|
235
|
+
end.flatten(1)
|
|
236
236
|
end
|
|
237
237
|
prefixes
|
|
238
238
|
end
|
|
@@ -551,7 +551,7 @@ module Sass
|
|
|
551
551
|
def trim(seqses)
|
|
552
552
|
# Avoid truly horrific quadratic behavior. TODO: I think there
|
|
553
553
|
# may be a way to get perfect trimming without going quadratic.
|
|
554
|
-
return
|
|
554
|
+
return seqses.flatten(1) if seqses.size > 100
|
|
555
555
|
|
|
556
556
|
# Keep the results in a separate array so we can be sure we aren't
|
|
557
557
|
# comparing against an already-trimmed selector. This ensures that two
|
|
@@ -586,7 +586,7 @@ module Sass
|
|
|
586
586
|
end
|
|
587
587
|
end
|
|
588
588
|
end
|
|
589
|
-
|
|
589
|
+
result.flatten(1)
|
|
590
590
|
end
|
|
591
591
|
|
|
592
592
|
def _hash
|
|
@@ -332,12 +332,12 @@ MESSAGE
|
|
|
332
332
|
end
|
|
333
333
|
|
|
334
334
|
def _hash
|
|
335
|
-
[base,
|
|
335
|
+
[base, rest.hash].hash
|
|
336
336
|
end
|
|
337
337
|
|
|
338
338
|
def _eql?(other)
|
|
339
339
|
other.base.eql?(base) && other.pseudo_elements == pseudo_elements &&
|
|
340
|
-
|
|
340
|
+
other.rest.eql?(rest) && other.subject? == subject?
|
|
341
341
|
end
|
|
342
342
|
end
|
|
343
343
|
end
|
data/lib/sass/util.rb
CHANGED
|
@@ -276,7 +276,7 @@ module Sass
|
|
|
276
276
|
# # [2, 4, 5]]
|
|
277
277
|
def paths(arrs)
|
|
278
278
|
arrs.inject([[]]) do |paths, arr|
|
|
279
|
-
|
|
279
|
+
arr.map {|e| paths.map {|path| path + [e]}}.flatten(1)
|
|
280
280
|
end
|
|
281
281
|
end
|
|
282
282
|
|
|
@@ -783,15 +783,6 @@ module Sass
|
|
|
783
783
|
(RUBY_VERSION_COMPONENTS[0] == 1 && RUBY_VERSION_COMPONENTS[1] < 9)
|
|
784
784
|
end
|
|
785
785
|
|
|
786
|
-
# Whether or not this is running under Ruby 1.8.6 or lower.
|
|
787
|
-
# Note that lower versions are not officially supported.
|
|
788
|
-
#
|
|
789
|
-
# @return [Boolean]
|
|
790
|
-
def ruby1_8_6?
|
|
791
|
-
return @ruby1_8_6 if defined?(@ruby1_8_6)
|
|
792
|
-
@ruby1_8_6 = ruby1_8? && RUBY_VERSION_COMPONENTS[2] < 7
|
|
793
|
-
end
|
|
794
|
-
|
|
795
786
|
# Whether or not this is running under Ruby 1.9.2 exactly.
|
|
796
787
|
#
|
|
797
788
|
# @return [Boolean]
|
|
@@ -841,7 +832,7 @@ module Sass
|
|
|
841
832
|
end
|
|
842
833
|
|
|
843
834
|
return Hash[pairs_or_hash] unless ruby1_8?
|
|
844
|
-
(pairs_or_hash.is_a?(NormalizedMap) ? NormalizedMap : OrderedHash)[*flatten(
|
|
835
|
+
(pairs_or_hash.is_a?(NormalizedMap) ? NormalizedMap : OrderedHash)[*pairs_or_hash.flatten(1)]
|
|
845
836
|
end
|
|
846
837
|
|
|
847
838
|
unless ruby1_8?
|
|
@@ -987,17 +978,6 @@ module Sass
|
|
|
987
978
|
ruby1_8? ? c[0] : c.ord
|
|
988
979
|
end
|
|
989
980
|
|
|
990
|
-
# Flattens the first `n` nested arrays in a cross-version manner.
|
|
991
|
-
#
|
|
992
|
-
# @param arr [Array] The array to flatten
|
|
993
|
-
# @param n [Fixnum] The number of levels to flatten
|
|
994
|
-
# @return [Array] The flattened array
|
|
995
|
-
def flatten(arr, n)
|
|
996
|
-
return arr.flatten(n) unless ruby1_8_6?
|
|
997
|
-
return arr if n == 0
|
|
998
|
-
arr.inject([]) {|res, e| e.is_a?(Array) ? res.concat(flatten(e, n - 1)) : res << e}
|
|
999
|
-
end
|
|
1000
|
-
|
|
1001
981
|
# Flattens the first level of nested arrays in `arrs`. Unlike
|
|
1002
982
|
# `Array#flatten`, this orders the result by taking the first
|
|
1003
983
|
# values from each array in order, then the second, and so on.
|
|
@@ -1016,27 +996,6 @@ module Sass
|
|
|
1016
996
|
result
|
|
1017
997
|
end
|
|
1018
998
|
|
|
1019
|
-
# Returns the hash code for a set in a cross-version manner.
|
|
1020
|
-
# Aggravatingly, this is order-dependent in Ruby 1.8.6.
|
|
1021
|
-
#
|
|
1022
|
-
# @param set [Set]
|
|
1023
|
-
# @return [Fixnum] The order-independent hashcode of `set`
|
|
1024
|
-
def set_hash(set)
|
|
1025
|
-
return set.hash unless ruby1_8_6?
|
|
1026
|
-
set.map {|e| e.hash}.uniq.sort.hash
|
|
1027
|
-
end
|
|
1028
|
-
|
|
1029
|
-
# Tests the hash-equality of two sets in a cross-version manner.
|
|
1030
|
-
# Aggravatingly, this is order-dependent in Ruby 1.8.6.
|
|
1031
|
-
#
|
|
1032
|
-
# @param set1 [Set]
|
|
1033
|
-
# @param set2 [Set]
|
|
1034
|
-
# @return [Boolean] Whether or not the sets are hashcode equal
|
|
1035
|
-
def set_eql?(set1, set2)
|
|
1036
|
-
return set1.eql?(set2) unless ruby1_8_6?
|
|
1037
|
-
set1.to_a.uniq.sort_by {|e| e.hash}.eql?(set2.to_a.uniq.sort_by {|e| e.hash})
|
|
1038
|
-
end
|
|
1039
|
-
|
|
1040
999
|
# Like `Object#inspect`, but preserves non-ASCII characters rather than
|
|
1041
1000
|
# escaping them under Ruby 1.9.2. This is necessary so that the
|
|
1042
1001
|
# precompiled Haml template can be `#encode`d into `@options[:encoding]`
|
data/lib/sass/util/subset_map.rb
CHANGED
data/test/sass/engine_test.rb
CHANGED
|
@@ -78,7 +78,6 @@ MSG
|
|
|
78
78
|
"& a\n :b c" => ["Base-level rules cannot contain the parent-selector-referencing character '&'.", 1],
|
|
79
79
|
"a\n :b\n c" => "Illegal nesting: Only properties may be nested beneath properties.",
|
|
80
80
|
"$a: b\n :c d\n" => "Illegal nesting: Nothing may be nested beneath variable declarations.",
|
|
81
|
-
"$a: b\n :c d\n" => "Illegal nesting: Nothing may be nested beneath variable declarations.",
|
|
82
81
|
"@import templates/basic\n foo" => "Illegal nesting: Nothing may be nested beneath import directives.",
|
|
83
82
|
"foo\n @import foo.css" => "CSS import directives may only be used at the root of a document.",
|
|
84
83
|
"@if true\n @import foo" => "Import directives may not be used within control directives or mixins.",
|
|
@@ -334,7 +334,10 @@ RUBY
|
|
|
334
334
|
assert_renders '"foo #{$bar} #{$bang} baz"'
|
|
335
335
|
assert_renders '"#{$bar}baz"'
|
|
336
336
|
assert_renders '"foo#{$bar}"'
|
|
337
|
-
|
|
337
|
+
assert_renders '"#{$bar}"'
|
|
338
|
+
|
|
339
|
+
assert_renders "'\"\#{\"bar\"}\"'"
|
|
340
|
+
assert_renders '"\#{bar}"'
|
|
338
341
|
|
|
339
342
|
assert_equal '"foo#{$bar}baz"', render("'foo\#{$bar}baz'")
|
|
340
343
|
end
|
data/test/sass/script_test.rb
CHANGED
|
@@ -44,6 +44,7 @@ class SassScriptTest < MiniTest::Test
|
|
|
44
44
|
assert_equal "☃f", resolve("\"\\2603 f\"")
|
|
45
45
|
assert_equal "☃x", resolve("\"\\2603x\"")
|
|
46
46
|
assert_equal "\\2603", resolve("\"\\\\2603\"")
|
|
47
|
+
assert_equal "\#{foo}", resolve("\"\\\#{foo}\"")
|
|
47
48
|
|
|
48
49
|
# U+FFFD is the replacement character, "�".
|
|
49
50
|
assert_equal [0xFFFD].pack("U"), resolve("\"\\0\"")
|
|
@@ -71,6 +72,7 @@ class SassScriptTest < MiniTest::Test
|
|
|
71
72
|
assert_equal '"☃abcdef"', resolve_quoted('"\2603 abcdef"')
|
|
72
73
|
assert_equal '"\\\\"', resolve_quoted('"\\\\"')
|
|
73
74
|
assert_equal '"foobar"', resolve_quoted("\"foo\\\nbar\"")
|
|
75
|
+
assert_equal '"#{foo}"', resolve_quoted("\"\\\#{foo}\"")
|
|
74
76
|
end
|
|
75
77
|
|
|
76
78
|
def test_color_names
|
|
@@ -1162,6 +1164,13 @@ SASS
|
|
|
1162
1164
|
assert_equal "NaN", resolve("(0.0/0.0)")
|
|
1163
1165
|
end
|
|
1164
1166
|
|
|
1167
|
+
def test_equality_uses_an_epsilon
|
|
1168
|
+
# At least on my machine, this calculation introduces a floating point error:
|
|
1169
|
+
# 29.0 / 7 * 7
|
|
1170
|
+
# => 29.000000000000004
|
|
1171
|
+
assert_equal "true", resolve("29 == (29 / 7 * 7)")
|
|
1172
|
+
end
|
|
1173
|
+
|
|
1165
1174
|
private
|
|
1166
1175
|
|
|
1167
1176
|
def resolve(str, opts = {}, environment = env)
|
|
@@ -881,11 +881,12 @@ JSON
|
|
|
881
881
|
source_ranges = build_ranges(source, source_file_name)
|
|
882
882
|
target_ranges = build_ranges(css)
|
|
883
883
|
map = Sass::Source::Map.new
|
|
884
|
-
|
|
884
|
+
source_ranges.map do |(name, sources)|
|
|
885
885
|
assert(sources.length == 1, "#{sources.length} source ranges encountered for annotation #{name}")
|
|
886
886
|
assert(target_ranges[name], "No target ranges for annotation #{name}")
|
|
887
887
|
target_ranges[name].map {|target_range| [sources.first, target_range]}
|
|
888
|
-
end
|
|
888
|
+
end.
|
|
889
|
+
flatten(1).
|
|
889
890
|
sort_by {|(_, target)| [target.start_pos.line, target.start_pos.offset]}.
|
|
890
891
|
each {|(s2, target)| map.add(s2, target)}
|
|
891
892
|
map
|
data/test/sass/util_test.rb
CHANGED
|
@@ -206,20 +206,6 @@ class UtilTest < MiniTest::Test
|
|
|
206
206
|
assert_equal(98, ord("bar"))
|
|
207
207
|
end
|
|
208
208
|
|
|
209
|
-
def test_flatten
|
|
210
|
-
assert_equal([1, 2, 3], flatten([1, 2, 3], 0))
|
|
211
|
-
assert_equal([1, 2, 3], flatten([1, 2, 3], 1))
|
|
212
|
-
assert_equal([1, 2, 3], flatten([1, 2, 3], 2))
|
|
213
|
-
|
|
214
|
-
assert_equal([[1, 2], 3], flatten([[1, 2], 3], 0))
|
|
215
|
-
assert_equal([1, 2, 3], flatten([[1, 2], 3], 1))
|
|
216
|
-
assert_equal([1, 2, 3], flatten([[1, 2], 3], 2))
|
|
217
|
-
|
|
218
|
-
assert_equal([[[1], 2], [3], 4], flatten([[[1], 2], [3], 4], 0))
|
|
219
|
-
assert_equal([[1], 2, 3, 4], flatten([[[1], 2], [3], 4], 1))
|
|
220
|
-
assert_equal([1, 2, 3, 4], flatten([[[1], 2], [3], 4], 2))
|
|
221
|
-
end
|
|
222
|
-
|
|
223
209
|
def test_flatten_vertically
|
|
224
210
|
assert_equal([1, 2, 3], flatten_vertically([1, 2, 3]))
|
|
225
211
|
assert_equal([1, 3, 5, 2, 4, 6], flatten_vertically([[1, 2], [3, 4], [5, 6]]))
|
|
@@ -227,36 +213,6 @@ class UtilTest < MiniTest::Test
|
|
|
227
213
|
assert_equal([1, 4, 6, 2, 5, 3], flatten_vertically([[1, 2, 3], [4, 5], 6]))
|
|
228
214
|
end
|
|
229
215
|
|
|
230
|
-
def test_set_hash
|
|
231
|
-
assert(set_hash(Set[1, 2, 3]) == set_hash(Set[3, 2, 1]))
|
|
232
|
-
assert(set_hash(Set[1, 2, 3]) == set_hash(Set[1, 2, 3]))
|
|
233
|
-
|
|
234
|
-
s1 = Set[]
|
|
235
|
-
s1 << 1
|
|
236
|
-
s1 << 2
|
|
237
|
-
s1 << 3
|
|
238
|
-
s2 = Set[]
|
|
239
|
-
s2 << 3
|
|
240
|
-
s2 << 2
|
|
241
|
-
s2 << 1
|
|
242
|
-
assert(set_hash(s1) == set_hash(s2))
|
|
243
|
-
end
|
|
244
|
-
|
|
245
|
-
def test_set_eql
|
|
246
|
-
assert(set_eql?(Set[1, 2, 3], Set[3, 2, 1]))
|
|
247
|
-
assert(set_eql?(Set[1, 2, 3], Set[1, 2, 3]))
|
|
248
|
-
|
|
249
|
-
s1 = Set[]
|
|
250
|
-
s1 << 1
|
|
251
|
-
s1 << 2
|
|
252
|
-
s1 << 3
|
|
253
|
-
s2 = Set[]
|
|
254
|
-
s2 << 3
|
|
255
|
-
s2 << 2
|
|
256
|
-
s2 << 1
|
|
257
|
-
assert(set_eql?(s1, s2))
|
|
258
|
-
end
|
|
259
|
-
|
|
260
216
|
def test_extract_and_inject_values
|
|
261
217
|
test = lambda {|arr| assert_equal(arr, with_extracted_values(arr) {|str| str})}
|
|
262
218
|
|
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.19
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Natalie Weizenbaum
|
|
@@ -10,55 +10,54 @@ authors:
|
|
|
10
10
|
autorequire:
|
|
11
11
|
bindir: bin
|
|
12
12
|
cert_chain: []
|
|
13
|
-
date: 2015-
|
|
13
|
+
date: 2015-10-10 00:00:00.000000000 Z
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|
|
16
16
|
name: yard
|
|
17
17
|
requirement: !ruby/object:Gem::Requirement
|
|
18
18
|
requirements:
|
|
19
|
-
- - '>='
|
|
19
|
+
- - ! '>='
|
|
20
20
|
- !ruby/object:Gem::Version
|
|
21
21
|
version: 0.5.3
|
|
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
28
|
version: 0.5.3
|
|
29
29
|
- !ruby/object:Gem::Dependency
|
|
30
30
|
name: maruku
|
|
31
31
|
requirement: !ruby/object:Gem::Requirement
|
|
32
32
|
requirements:
|
|
33
|
-
- - '>='
|
|
33
|
+
- - ! '>='
|
|
34
34
|
- !ruby/object:Gem::Version
|
|
35
35
|
version: 0.5.9
|
|
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
42
|
version: 0.5.9
|
|
43
43
|
- !ruby/object:Gem::Dependency
|
|
44
44
|
name: minitest
|
|
45
45
|
requirement: !ruby/object:Gem::Requirement
|
|
46
46
|
requirements:
|
|
47
|
-
- - '>='
|
|
47
|
+
- - ! '>='
|
|
48
48
|
- !ruby/object:Gem::Version
|
|
49
49
|
version: '5'
|
|
50
50
|
type: :development
|
|
51
51
|
prerelease: false
|
|
52
52
|
version_requirements: !ruby/object:Gem::Requirement
|
|
53
53
|
requirements:
|
|
54
|
-
- - '>='
|
|
54
|
+
- - ! '>='
|
|
55
55
|
- !ruby/object:Gem::Version
|
|
56
56
|
version: '5'
|
|
57
|
-
description:
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
command line tool or a web-framework plugin.
|
|
57
|
+
description: ! " Sass makes CSS fun again. Sass is an extension of CSS, adding\n
|
|
58
|
+
\ nested rules, variables, mixins, selector inheritance, and more.\n It's
|
|
59
|
+
translated to well-formatted, standard CSS using the\n command line tool or
|
|
60
|
+
a web-framework plugin.\n"
|
|
62
61
|
email: sass-lang@googlegroups.com
|
|
63
62
|
executables:
|
|
64
63
|
- sass
|
|
@@ -67,31 +66,47 @@ executables:
|
|
|
67
66
|
extensions: []
|
|
68
67
|
extra_rdoc_files: []
|
|
69
68
|
files:
|
|
70
|
-
-
|
|
69
|
+
- .yardopts
|
|
70
|
+
- CODE_OF_CONDUCT.md
|
|
71
|
+
- CONTRIBUTING.md
|
|
72
|
+
- MIT-LICENSE
|
|
73
|
+
- README.md
|
|
74
|
+
- REVISION
|
|
75
|
+
- Rakefile
|
|
76
|
+
- VERSION
|
|
77
|
+
- VERSION_DATE
|
|
78
|
+
- VERSION_NAME
|
|
79
|
+
- bin/sass
|
|
80
|
+
- bin/sass-convert
|
|
81
|
+
- bin/scss
|
|
82
|
+
- extra/update_watch.rb
|
|
83
|
+
- init.rb
|
|
84
|
+
- lib/sass.rb
|
|
85
|
+
- lib/sass/cache_stores.rb
|
|
71
86
|
- lib/sass/cache_stores/base.rb
|
|
72
87
|
- lib/sass/cache_stores/chain.rb
|
|
73
88
|
- lib/sass/cache_stores/filesystem.rb
|
|
74
89
|
- lib/sass/cache_stores/memory.rb
|
|
75
90
|
- lib/sass/cache_stores/null.rb
|
|
76
|
-
- lib/sass/cache_stores.rb
|
|
77
91
|
- lib/sass/callbacks.rb
|
|
78
92
|
- lib/sass/css.rb
|
|
79
93
|
- lib/sass/engine.rb
|
|
80
94
|
- lib/sass/environment.rb
|
|
81
95
|
- lib/sass/error.rb
|
|
96
|
+
- lib/sass/exec.rb
|
|
82
97
|
- lib/sass/exec/base.rb
|
|
83
98
|
- lib/sass/exec/sass_convert.rb
|
|
84
99
|
- lib/sass/exec/sass_scss.rb
|
|
85
|
-
- lib/sass/exec.rb
|
|
86
100
|
- lib/sass/features.rb
|
|
101
|
+
- lib/sass/importers.rb
|
|
87
102
|
- lib/sass/importers/base.rb
|
|
88
103
|
- lib/sass/importers/deprecated_path.rb
|
|
89
104
|
- lib/sass/importers/filesystem.rb
|
|
90
|
-
- lib/sass/
|
|
105
|
+
- lib/sass/logger.rb
|
|
91
106
|
- lib/sass/logger/base.rb
|
|
92
107
|
- lib/sass/logger/log_level.rb
|
|
93
|
-
- lib/sass/logger.rb
|
|
94
108
|
- lib/sass/media.rb
|
|
109
|
+
- lib/sass/plugin.rb
|
|
95
110
|
- lib/sass/plugin/compiler.rb
|
|
96
111
|
- lib/sass/plugin/configuration.rb
|
|
97
112
|
- lib/sass/plugin/generic.rb
|
|
@@ -99,15 +114,16 @@ files:
|
|
|
99
114
|
- lib/sass/plugin/rack.rb
|
|
100
115
|
- lib/sass/plugin/rails.rb
|
|
101
116
|
- lib/sass/plugin/staleness_checker.rb
|
|
102
|
-
- lib/sass/plugin.rb
|
|
103
117
|
- lib/sass/railtie.rb
|
|
104
118
|
- lib/sass/repl.rb
|
|
105
119
|
- lib/sass/root.rb
|
|
120
|
+
- lib/sass/script.rb
|
|
106
121
|
- lib/sass/script/css_lexer.rb
|
|
107
122
|
- lib/sass/script/css_parser.rb
|
|
108
123
|
- lib/sass/script/functions.rb
|
|
109
124
|
- lib/sass/script/lexer.rb
|
|
110
125
|
- lib/sass/script/parser.rb
|
|
126
|
+
- lib/sass/script/tree.rb
|
|
111
127
|
- lib/sass/script/tree/funcall.rb
|
|
112
128
|
- lib/sass/script/tree/interpolation.rb
|
|
113
129
|
- lib/sass/script/tree/list_literal.rb
|
|
@@ -119,7 +135,7 @@ files:
|
|
|
119
135
|
- lib/sass/script/tree/string_interpolation.rb
|
|
120
136
|
- lib/sass/script/tree/unary_operation.rb
|
|
121
137
|
- lib/sass/script/tree/variable.rb
|
|
122
|
-
- lib/sass/script/
|
|
138
|
+
- lib/sass/script/value.rb
|
|
123
139
|
- lib/sass/script/value/arg_list.rb
|
|
124
140
|
- lib/sass/script/value/base.rb
|
|
125
141
|
- lib/sass/script/value/bool.rb
|
|
@@ -130,22 +146,20 @@ files:
|
|
|
130
146
|
- lib/sass/script/value/null.rb
|
|
131
147
|
- lib/sass/script/value/number.rb
|
|
132
148
|
- lib/sass/script/value/string.rb
|
|
133
|
-
- lib/sass/
|
|
134
|
-
- lib/sass/script.rb
|
|
149
|
+
- lib/sass/scss.rb
|
|
135
150
|
- lib/sass/scss/css_parser.rb
|
|
136
151
|
- lib/sass/scss/parser.rb
|
|
137
152
|
- lib/sass/scss/rx.rb
|
|
138
153
|
- lib/sass/scss/script_lexer.rb
|
|
139
154
|
- lib/sass/scss/script_parser.rb
|
|
140
155
|
- lib/sass/scss/static_parser.rb
|
|
141
|
-
- lib/sass/
|
|
156
|
+
- lib/sass/selector.rb
|
|
142
157
|
- lib/sass/selector/abstract_sequence.rb
|
|
143
158
|
- lib/sass/selector/comma_sequence.rb
|
|
144
159
|
- lib/sass/selector/pseudo.rb
|
|
145
160
|
- lib/sass/selector/sequence.rb
|
|
146
161
|
- lib/sass/selector/simple.rb
|
|
147
162
|
- lib/sass/selector/simple_sequence.rb
|
|
148
|
-
- lib/sass/selector.rb
|
|
149
163
|
- lib/sass/shared.rb
|
|
150
164
|
- lib/sass/source/map.rb
|
|
151
165
|
- lib/sass/source/position.rb
|
|
@@ -189,54 +203,15 @@ files:
|
|
|
189
203
|
- lib/sass/tree/visitors/to_css.rb
|
|
190
204
|
- lib/sass/tree/warn_node.rb
|
|
191
205
|
- lib/sass/tree/while_node.rb
|
|
206
|
+
- lib/sass/util.rb
|
|
192
207
|
- lib/sass/util/cross_platform_random.rb
|
|
193
208
|
- lib/sass/util/multibyte_string_scanner.rb
|
|
194
209
|
- lib/sass/util/normalized_map.rb
|
|
195
210
|
- lib/sass/util/ordered_hash.rb
|
|
196
211
|
- lib/sass/util/subset_map.rb
|
|
197
212
|
- lib/sass/util/test.rb
|
|
198
|
-
- lib/sass/util.rb
|
|
199
213
|
- lib/sass/version.rb
|
|
200
|
-
-
|
|
201
|
-
- vendor/listen/CHANGELOG.md
|
|
202
|
-
- vendor/listen/CONTRIBUTING.md
|
|
203
|
-
- vendor/listen/Gemfile
|
|
204
|
-
- vendor/listen/Guardfile
|
|
205
|
-
- vendor/listen/lib/listen/adapter.rb
|
|
206
|
-
- vendor/listen/lib/listen/adapters/bsd.rb
|
|
207
|
-
- vendor/listen/lib/listen/adapters/darwin.rb
|
|
208
|
-
- vendor/listen/lib/listen/adapters/linux.rb
|
|
209
|
-
- vendor/listen/lib/listen/adapters/polling.rb
|
|
210
|
-
- vendor/listen/lib/listen/adapters/windows.rb
|
|
211
|
-
- vendor/listen/lib/listen/directory_record.rb
|
|
212
|
-
- vendor/listen/lib/listen/listener.rb
|
|
213
|
-
- vendor/listen/lib/listen/turnstile.rb
|
|
214
|
-
- vendor/listen/lib/listen/version.rb
|
|
215
|
-
- vendor/listen/lib/listen.rb
|
|
216
|
-
- vendor/listen/LICENSE
|
|
217
|
-
- vendor/listen/listen.gemspec
|
|
218
|
-
- vendor/listen/Rakefile
|
|
219
|
-
- vendor/listen/README.md
|
|
220
|
-
- vendor/listen/spec/listen/adapter_spec.rb
|
|
221
|
-
- vendor/listen/spec/listen/adapters/bsd_spec.rb
|
|
222
|
-
- vendor/listen/spec/listen/adapters/darwin_spec.rb
|
|
223
|
-
- vendor/listen/spec/listen/adapters/linux_spec.rb
|
|
224
|
-
- vendor/listen/spec/listen/adapters/polling_spec.rb
|
|
225
|
-
- vendor/listen/spec/listen/adapters/windows_spec.rb
|
|
226
|
-
- vendor/listen/spec/listen/directory_record_spec.rb
|
|
227
|
-
- vendor/listen/spec/listen/listener_spec.rb
|
|
228
|
-
- vendor/listen/spec/listen/turnstile_spec.rb
|
|
229
|
-
- vendor/listen/spec/listen_spec.rb
|
|
230
|
-
- vendor/listen/spec/spec_helper.rb
|
|
231
|
-
- vendor/listen/spec/support/adapter_helper.rb
|
|
232
|
-
- vendor/listen/spec/support/directory_record_helper.rb
|
|
233
|
-
- vendor/listen/spec/support/fixtures_helper.rb
|
|
234
|
-
- vendor/listen/spec/support/listeners_helper.rb
|
|
235
|
-
- vendor/listen/spec/support/platform_helper.rb
|
|
236
|
-
- vendor/listen/Vagrantfile
|
|
237
|
-
- bin/sass
|
|
238
|
-
- bin/sass-convert
|
|
239
|
-
- bin/scss
|
|
214
|
+
- rails/init.rb
|
|
240
215
|
- test/sass/cache_test.rb
|
|
241
216
|
- test/sass/callbacks_test.rb
|
|
242
217
|
- test/sass/compiler_test.rb
|
|
@@ -361,18 +336,42 @@ files:
|
|
|
361
336
|
- test/sass/util_test.rb
|
|
362
337
|
- test/sass/value_helpers_test.rb
|
|
363
338
|
- test/test_helper.rb
|
|
364
|
-
-
|
|
365
|
-
-
|
|
366
|
-
-
|
|
367
|
-
-
|
|
368
|
-
-
|
|
369
|
-
-
|
|
370
|
-
-
|
|
371
|
-
-
|
|
372
|
-
-
|
|
373
|
-
-
|
|
374
|
-
-
|
|
375
|
-
-
|
|
339
|
+
- vendor/listen/CHANGELOG.md
|
|
340
|
+
- vendor/listen/CONTRIBUTING.md
|
|
341
|
+
- vendor/listen/Gemfile
|
|
342
|
+
- vendor/listen/Guardfile
|
|
343
|
+
- vendor/listen/LICENSE
|
|
344
|
+
- vendor/listen/README.md
|
|
345
|
+
- vendor/listen/Rakefile
|
|
346
|
+
- vendor/listen/Vagrantfile
|
|
347
|
+
- vendor/listen/lib/listen.rb
|
|
348
|
+
- vendor/listen/lib/listen/adapter.rb
|
|
349
|
+
- vendor/listen/lib/listen/adapters/bsd.rb
|
|
350
|
+
- vendor/listen/lib/listen/adapters/darwin.rb
|
|
351
|
+
- vendor/listen/lib/listen/adapters/linux.rb
|
|
352
|
+
- vendor/listen/lib/listen/adapters/polling.rb
|
|
353
|
+
- vendor/listen/lib/listen/adapters/windows.rb
|
|
354
|
+
- vendor/listen/lib/listen/directory_record.rb
|
|
355
|
+
- vendor/listen/lib/listen/listener.rb
|
|
356
|
+
- vendor/listen/lib/listen/turnstile.rb
|
|
357
|
+
- vendor/listen/lib/listen/version.rb
|
|
358
|
+
- vendor/listen/listen.gemspec
|
|
359
|
+
- vendor/listen/spec/listen/adapter_spec.rb
|
|
360
|
+
- vendor/listen/spec/listen/adapters/bsd_spec.rb
|
|
361
|
+
- vendor/listen/spec/listen/adapters/darwin_spec.rb
|
|
362
|
+
- vendor/listen/spec/listen/adapters/linux_spec.rb
|
|
363
|
+
- vendor/listen/spec/listen/adapters/polling_spec.rb
|
|
364
|
+
- vendor/listen/spec/listen/adapters/windows_spec.rb
|
|
365
|
+
- vendor/listen/spec/listen/directory_record_spec.rb
|
|
366
|
+
- vendor/listen/spec/listen/listener_spec.rb
|
|
367
|
+
- vendor/listen/spec/listen/turnstile_spec.rb
|
|
368
|
+
- vendor/listen/spec/listen_spec.rb
|
|
369
|
+
- vendor/listen/spec/spec_helper.rb
|
|
370
|
+
- vendor/listen/spec/support/adapter_helper.rb
|
|
371
|
+
- vendor/listen/spec/support/directory_record_helper.rb
|
|
372
|
+
- vendor/listen/spec/support/fixtures_helper.rb
|
|
373
|
+
- vendor/listen/spec/support/listeners_helper.rb
|
|
374
|
+
- vendor/listen/spec/support/platform_helper.rb
|
|
376
375
|
homepage: http://sass-lang.com/
|
|
377
376
|
licenses:
|
|
378
377
|
- MIT
|
|
@@ -383,43 +382,43 @@ require_paths:
|
|
|
383
382
|
- lib
|
|
384
383
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
385
384
|
requirements:
|
|
386
|
-
- - '>='
|
|
385
|
+
- - ! '>='
|
|
387
386
|
- !ruby/object:Gem::Version
|
|
388
387
|
version: 1.8.7
|
|
389
388
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
390
389
|
requirements:
|
|
391
|
-
- - '>='
|
|
390
|
+
- - ! '>='
|
|
392
391
|
- !ruby/object:Gem::Version
|
|
393
392
|
version: '0'
|
|
394
393
|
requirements: []
|
|
395
394
|
rubyforge_project: sass
|
|
396
|
-
rubygems_version: 2.
|
|
395
|
+
rubygems_version: 2.4.3
|
|
397
396
|
signing_key:
|
|
398
397
|
specification_version: 4
|
|
399
398
|
summary: A powerful but elegant CSS compiler that makes CSS fun again.
|
|
400
399
|
test_files:
|
|
400
|
+
- test/sass/importer_test.rb
|
|
401
|
+
- test/sass/engine_test.rb
|
|
402
|
+
- test/sass/value_helpers_test.rb
|
|
403
|
+
- test/sass/superselector_test.rb
|
|
404
|
+
- test/sass/logger_test.rb
|
|
405
|
+
- test/sass/util_test.rb
|
|
401
406
|
- test/sass/cache_test.rb
|
|
402
|
-
- test/sass/callbacks_test.rb
|
|
403
|
-
- test/sass/compiler_test.rb
|
|
404
|
-
- test/sass/conversion_test.rb
|
|
405
|
-
- test/sass/css2sass_test.rb
|
|
406
407
|
- test/sass/encoding_test.rb
|
|
407
|
-
- test/sass/
|
|
408
|
+
- test/sass/source_map_test.rb
|
|
409
|
+
- test/sass/css2sass_test.rb
|
|
410
|
+
- test/sass/plugin_test.rb
|
|
411
|
+
- test/sass/conversion_test.rb
|
|
412
|
+
- test/sass/util/subset_map_test.rb
|
|
413
|
+
- test/sass/util/multibyte_string_scanner_test.rb
|
|
414
|
+
- test/sass/util/normalized_map_test.rb
|
|
408
415
|
- test/sass/exec_test.rb
|
|
409
|
-
- test/sass/
|
|
416
|
+
- test/sass/scss/rx_test.rb
|
|
417
|
+
- test/sass/scss/scss_test.rb
|
|
418
|
+
- test/sass/scss/css_test.rb
|
|
419
|
+
- test/sass/callbacks_test.rb
|
|
410
420
|
- test/sass/functions_test.rb
|
|
411
|
-
- test/sass/
|
|
412
|
-
- test/sass/logger_test.rb
|
|
413
|
-
- test/sass/plugin_test.rb
|
|
421
|
+
- test/sass/extend_test.rb
|
|
414
422
|
- test/sass/script_conversion_test.rb
|
|
415
423
|
- test/sass/script_test.rb
|
|
416
|
-
- test/sass/
|
|
417
|
-
- test/sass/scss/rx_test.rb
|
|
418
|
-
- test/sass/scss/scss_test.rb
|
|
419
|
-
- test/sass/source_map_test.rb
|
|
420
|
-
- test/sass/superselector_test.rb
|
|
421
|
-
- test/sass/util/multibyte_string_scanner_test.rb
|
|
422
|
-
- test/sass/util/normalized_map_test.rb
|
|
423
|
-
- test/sass/util/subset_map_test.rb
|
|
424
|
-
- test/sass/util_test.rb
|
|
425
|
-
- test/sass/value_helpers_test.rb
|
|
424
|
+
- test/sass/compiler_test.rb
|