sass 3.1.17 → 3.1.18
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.
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/lib/sass/script/functions.rb +2 -2
- data/lib/sass/tree/directive_node.rb +5 -0
- data/lib/sass/tree/extend_node.rb +12 -0
- data/lib/sass/tree/visitors/base.rb +1 -1
- data/lib/sass/tree/visitors/check_nesting.rb +24 -18
- data/lib/sass/tree/visitors/cssize.rb +1 -0
- data/test/sass/engine_test.rb +2 -0
- data/test/sass/extend_test.rb +37 -0
- data/vendor/listen/README.md +3 -0
- data/vendor/listen/lib/listen/adapter.rb +9 -1
- data/vendor/listen/lib/listen/adapters/linux.rb +18 -7
- data/vendor/listen/lib/listen/directory_record.rb +43 -17
- data/vendor/listen/lib/listen/listener.rb +16 -1
- data/vendor/listen/spec/listen/adapters/linux_spec.rb +11 -0
- data/vendor/listen/spec/listen/directory_record_spec.rb +32 -11
- data/vendor/listen/spec/support/adapter_helper.rb +100 -0
- data/vendor/listen/spec/support/directory_record_helper.rb +13 -1
- data/vendor/listen/spec/support/listeners_helper.rb +11 -0
- metadata +213 -211
data/Rakefile
CHANGED
@@ -147,7 +147,7 @@ def get_version
|
|
147
147
|
version.map! {|n| n =~ /^[0-9]+$/ ? n.to_i : n}
|
148
148
|
return written_version unless version.size == 5 && version[3] == "alpha" # prerelease
|
149
149
|
|
150
|
-
return written_version if (commit_count = `git log --pretty=oneline
|
150
|
+
return written_version if (commit_count = `git log --pretty=oneline HEAD ^stable | wc -l`).empty?
|
151
151
|
version[4] = commit_count.strip
|
152
152
|
version.join('.')
|
153
153
|
end
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.1.
|
1
|
+
3.1.18
|
@@ -1148,8 +1148,8 @@ module Sass::Script
|
|
1148
1148
|
# Rounds a number up to the nearest whole number.
|
1149
1149
|
#
|
1150
1150
|
# @example
|
1151
|
-
#
|
1152
|
-
#
|
1151
|
+
# ceil(10.4px) => 11px
|
1152
|
+
# ceil(10.6px) => 11px
|
1153
1153
|
# @param value [Number] The number
|
1154
1154
|
# @return [Number] The rounded number
|
1155
1155
|
# @raise [ArgumentError] if `value` isn't a number
|
@@ -25,5 +25,17 @@ module Sass::Tree
|
|
25
25
|
@selector = selector
|
26
26
|
super()
|
27
27
|
end
|
28
|
+
|
29
|
+
# Disables this `@extend` due to it being inside a directive.
|
30
|
+
def disable!
|
31
|
+
@disabled = true
|
32
|
+
end
|
33
|
+
|
34
|
+
# Whether this `@extend` is disabled due to it being inside a directive.
|
35
|
+
#
|
36
|
+
# @return [Boolean]
|
37
|
+
def disabled?
|
38
|
+
@disabled
|
39
|
+
end
|
28
40
|
end
|
29
41
|
end
|
@@ -33,7 +33,7 @@ module Sass::Tree::Visitors
|
|
33
33
|
# @return [Object] The return value of the `visit_*` method for this node.
|
34
34
|
def visit(node)
|
35
35
|
method = "visit_#{node_name node}"
|
36
|
-
if self.respond_to?(method)
|
36
|
+
if self.respond_to?(method, true)
|
37
37
|
self.send(method, node) {visit_children(node)}
|
38
38
|
else
|
39
39
|
visit_children(node)
|
@@ -2,13 +2,14 @@
|
|
2
2
|
class Sass::Tree::Visitors::CheckNesting < Sass::Tree::Visitors::Base
|
3
3
|
protected
|
4
4
|
|
5
|
+
def initialize
|
6
|
+
@parents = []
|
7
|
+
end
|
8
|
+
|
5
9
|
def visit(node)
|
6
|
-
if error =
|
7
|
-
|
8
|
-
|
9
|
-
(@real_parent && (
|
10
|
-
try_send("invalid_#{node_name @real_parent}_real_child?", @real_parent, node) ||
|
11
|
-
try_send("invalid_#{node_name node}_real_parent?", @real_parent, node)))
|
10
|
+
if error = @parent && (
|
11
|
+
try_send("invalid_#{node_name @parent}_child?", @parent, node) ||
|
12
|
+
try_send("invalid_#{node_name node}_parent?", @parent, node))
|
12
13
|
raise Sass::SyntaxError.new(error)
|
13
14
|
end
|
14
15
|
super
|
@@ -22,11 +23,11 @@ class Sass::Tree::Visitors::CheckNesting < Sass::Tree::Visitors::Base
|
|
22
23
|
def visit_children(parent)
|
23
24
|
old_parent = @parent
|
24
25
|
@parent = parent unless is_any_of?(parent, SCRIPT_NODES)
|
25
|
-
|
26
|
+
@parents.push parent
|
26
27
|
super
|
27
28
|
ensure
|
28
29
|
@parent = old_parent
|
29
|
-
@
|
30
|
+
@parents.pop
|
30
31
|
end
|
31
32
|
|
32
33
|
def visit_root(node)
|
@@ -51,7 +52,19 @@ class Sass::Tree::Visitors::CheckNesting < Sass::Tree::Visitors::Base
|
|
51
52
|
VALID_EXTEND_PARENTS = [Sass::Tree::RuleNode, Sass::Tree::MixinDefNode]
|
52
53
|
def invalid_extend_parent?(parent, child)
|
53
54
|
unless is_any_of?(parent, VALID_EXTEND_PARENTS)
|
54
|
-
"Extend directives may only be used within rules."
|
55
|
+
return "Extend directives may only be used within rules."
|
56
|
+
end
|
57
|
+
|
58
|
+
if !child.disabled? &&
|
59
|
+
directive = @parents.find {|p| p.is_a?(Sass::Tree::DirectiveNode)}
|
60
|
+
child.disable!
|
61
|
+
Sass::Util.sass_warn <<WARNING
|
62
|
+
DEPRECATION WARNING on line #{child.line}#{" of #{child.filename}" if child.filename}:
|
63
|
+
Using @extend within directives (e.g. #{directive.name}) is deprecated.
|
64
|
+
It will be an error in Sass 3.2.
|
65
|
+
This will only work once @extend is supported natively in the browser.
|
66
|
+
WARNING
|
67
|
+
nil
|
55
68
|
end
|
56
69
|
end
|
57
70
|
|
@@ -69,12 +82,9 @@ class Sass::Tree::Visitors::CheckNesting < Sass::Tree::Visitors::Base
|
|
69
82
|
end
|
70
83
|
end
|
71
84
|
|
72
|
-
|
73
|
-
Sass::Tree::IfNode, Sass::Tree::ForNode, Sass::Tree::WhileNode,
|
74
|
-
Sass::Tree::EachNode, Sass::Tree::MixinDefNode
|
75
|
-
]
|
85
|
+
INVALID_IMPORT_PARENTS = CONTROL_NODES + [Sass::Tree::MixinDefNode]
|
76
86
|
def invalid_import_parent?(parent, child)
|
77
|
-
|
87
|
+
unless (@parents.map {|p| p.class} & INVALID_IMPORT_PARENTS).empty?
|
78
88
|
return "Import directives may not be used within control directives or mixins."
|
79
89
|
end
|
80
90
|
return if parent.is_a?(Sass::Tree::RootNode)
|
@@ -89,10 +99,6 @@ class Sass::Tree::Visitors::CheckNesting < Sass::Tree::Visitors::Base
|
|
89
99
|
raise e
|
90
100
|
end
|
91
101
|
|
92
|
-
def invalid_import_real_parent?(parent, child)
|
93
|
-
|
94
|
-
end
|
95
|
-
|
96
102
|
def invalid_mixindef_parent?(parent, child)
|
97
103
|
"Mixins may only be defined at the root of a document." unless parent.is_a?(Sass::Tree::RootNode)
|
98
104
|
end
|
@@ -82,6 +82,7 @@ class Sass::Tree::Visitors::Cssize < Sass::Tree::Visitors::Base
|
|
82
82
|
|
83
83
|
# Registers an extension in the `@extends` subset map.
|
84
84
|
def visit_extend(node)
|
85
|
+
return [] if node.disabled?
|
85
86
|
node.resolved_selector.members.each do |seq|
|
86
87
|
if seq.members.size > 1
|
87
88
|
raise Sass::SyntaxError.new("Can't extend #{seq.to_a.join}: can't extend nested selectors")
|
data/test/sass/engine_test.rb
CHANGED
@@ -61,7 +61,9 @@ MSG
|
|
61
61
|
"@import templates/basic\n foo" => "Illegal nesting: Nothing may be nested beneath import directives.",
|
62
62
|
"foo\n @import foo.css" => "CSS import directives may only be used at the root of a document.",
|
63
63
|
"@if true\n @import foo" => "Import directives may not be used within control directives or mixins.",
|
64
|
+
"@if true\n .foo\n @import foo" => "Import directives may not be used within control directives or mixins.",
|
64
65
|
"@mixin foo\n @import foo" => "Import directives may not be used within control directives or mixins.",
|
66
|
+
"@mixin foo\n .foo\n @import foo" => "Import directives may not be used within control directives or mixins.",
|
65
67
|
"@import foo;" => "Invalid @import: expected end of line, was \";\".",
|
66
68
|
'$foo: "bar" "baz" !' => %Q{Invalid CSS after ""bar" "baz" ": expected expression (e.g. 1px, bold), was "!"},
|
67
69
|
'$foo: "bar" "baz" $' => %Q{Invalid CSS after ""bar" "baz" ": expected expression (e.g. 1px, bold), was "$"},
|
data/test/sass/extend_test.rb
CHANGED
@@ -1369,6 +1369,43 @@ CSS
|
|
1369
1369
|
SCSS
|
1370
1370
|
end
|
1371
1371
|
|
1372
|
+
|
1373
|
+
def test_extend_in_media
|
1374
|
+
assert_warning(<<WARN) {assert_equal(<<CSS, render(<<SCSS))}
|
1375
|
+
DEPRECATION WARNING on line 3 of test_extend_in_media_inline.sass:
|
1376
|
+
Using @extend within directives (e.g. @media) is deprecated.
|
1377
|
+
It will be an error in Sass 3.2.
|
1378
|
+
This will only work once @extend is supported natively in the browser.
|
1379
|
+
WARN
|
1380
|
+
.foo {
|
1381
|
+
a: b; }
|
1382
|
+
CSS
|
1383
|
+
.foo {a: b}
|
1384
|
+
@media screen {
|
1385
|
+
.bar {@extend .foo}
|
1386
|
+
}
|
1387
|
+
SCSS
|
1388
|
+
end
|
1389
|
+
|
1390
|
+
def test_extend_in_unknown_directive
|
1391
|
+
assert_warning(<<WARN) {assert_equal(<<CSS, render(<<SCSS))}
|
1392
|
+
DEPRECATION WARNING on line 3 of test_extend_in_unknown_directive_inline.sass:
|
1393
|
+
Using @extend within directives (e.g. @flooblehoof) is deprecated.
|
1394
|
+
It will be an error in Sass 3.2.
|
1395
|
+
This will only work once @extend is supported natively in the browser.
|
1396
|
+
WARN
|
1397
|
+
.foo {
|
1398
|
+
a: b; }
|
1399
|
+
|
1400
|
+
@flooblehoof {}
|
1401
|
+
CSS
|
1402
|
+
.foo {a: b}
|
1403
|
+
@flooblehoof {
|
1404
|
+
.bar {@extend .foo}
|
1405
|
+
}
|
1406
|
+
SCSS
|
1407
|
+
end
|
1408
|
+
|
1372
1409
|
# Regression Tests
|
1373
1410
|
|
1374
1411
|
def test_duplicated_selector_with_newlines
|
data/vendor/listen/README.md
CHANGED
@@ -193,6 +193,9 @@ These options can be set through `Listen.to` params or via methods (see the "Obj
|
|
193
193
|
:latency => 0.5 # Set the delay (**in seconds**) between checking for changes
|
194
194
|
# default: 0.1 sec (1.0 sec for polling)
|
195
195
|
|
196
|
+
:relative_paths => true # Enable the use of relative paths in the callback.
|
197
|
+
# default: false
|
198
|
+
|
196
199
|
:force_polling => true # Force the use of the polling adapter
|
197
200
|
# default: none
|
198
201
|
|
@@ -83,6 +83,14 @@ module Listen
|
|
83
83
|
@turnstile.signal # ensure no thread is blocked
|
84
84
|
end
|
85
85
|
|
86
|
+
# Returns whether the adapter is statred or not
|
87
|
+
#
|
88
|
+
# @return [Boolean] whether the adapter is started or not
|
89
|
+
#
|
90
|
+
def started?
|
91
|
+
@stop.nil? ? false : !@stop
|
92
|
+
end
|
93
|
+
|
86
94
|
# Blocks the main thread until the poll thread
|
87
95
|
# calls the callback.
|
88
96
|
#
|
@@ -129,7 +137,7 @@ module Listen
|
|
129
137
|
ensure
|
130
138
|
Thread.kill(t) if t
|
131
139
|
FileUtils.rm(test_file) if File.exists?(test_file)
|
132
|
-
adapter.stop
|
140
|
+
adapter.stop if adapter && adapter.started?
|
133
141
|
end
|
134
142
|
|
135
143
|
private
|
@@ -1,22 +1,33 @@
|
|
1
1
|
module Listen
|
2
2
|
module Adapters
|
3
3
|
|
4
|
-
# Watched INotify EVENTS
|
5
|
-
#
|
6
|
-
# @see http://www.tin.org/bin/man.cgi?section=7&topic=inotify
|
7
|
-
# @see https://github.com/nex3/rb-inotify/blob/master/lib/rb-inotify/notifier.rb#L99-L177
|
8
|
-
#
|
9
|
-
EVENTS = %w[recursive attrib close modify move create delete delete_self move_self]
|
10
|
-
|
11
4
|
# Listener implementation for Linux `inotify`.
|
12
5
|
#
|
13
6
|
class Linux < Adapter
|
14
7
|
|
8
|
+
# Watched inotify events
|
9
|
+
#
|
10
|
+
# @see http://www.tin.org/bin/man.cgi?section=7&topic=inotify
|
11
|
+
# @see https://github.com/nex3/rb-inotify/blob/master/lib/rb-inotify/notifier.rb#L99-L177
|
12
|
+
#
|
13
|
+
EVENTS = %w[recursive attrib close modify move create delete delete_self move_self]
|
14
|
+
|
15
|
+
# The message to show when the limit of inotify watchers is not enough
|
16
|
+
#
|
17
|
+
INOTIFY_LIMIT_MESSAGE = <<-EOS.gsub(/^\s*/, '')
|
18
|
+
Listen error: unable to monitor directories for changes.
|
19
|
+
|
20
|
+
Please head to https://github.com/guard/listen/wiki/Increasing-the-amount-of-inotify-watchers
|
21
|
+
for information on how to solve this issue.
|
22
|
+
EOS
|
23
|
+
|
15
24
|
# Initializes the Adapter. See {Listen::Adapter#initialize} for more info.
|
16
25
|
#
|
17
26
|
def initialize(directories, options = {}, &callback)
|
18
27
|
super
|
19
28
|
@worker = init_worker
|
29
|
+
rescue Errno::ENOSPC
|
30
|
+
abort(INOTIFY_LIMIT_MESSAGE)
|
20
31
|
end
|
21
32
|
|
22
33
|
# Starts the adapter.
|
@@ -15,6 +15,15 @@ module Listen
|
|
15
15
|
|
16
16
|
DEFAULT_IGNORED_EXTENSIONS = %w[.DS_Store]
|
17
17
|
|
18
|
+
# Defines the used precision based on the type of mtime returned by the
|
19
|
+
# system (whether its in milliseconds or just seconds)
|
20
|
+
#
|
21
|
+
HIGH_PRECISION_SUPPORTED = File.mtime(__FILE__).to_f.to_s[-2..-1] != '.0'
|
22
|
+
|
23
|
+
# Data structure used to save meta data about a path
|
24
|
+
#
|
25
|
+
MetaData = Struct.new(:type, :mtime)
|
26
|
+
|
18
27
|
# Class methods
|
19
28
|
#
|
20
29
|
class << self
|
@@ -71,7 +80,7 @@ module Listen
|
|
71
80
|
# Adds ignoring patterns to the record.
|
72
81
|
#
|
73
82
|
# @example Ignore some paths
|
74
|
-
# ignore
|
83
|
+
# ignore %r{^ignored/path/}, /man/
|
75
84
|
#
|
76
85
|
# @param [Regexp] regexp a pattern for ignoring paths
|
77
86
|
#
|
@@ -86,8 +95,6 @@ module Listen
|
|
86
95
|
#
|
87
96
|
# @param [Regexp] regexp a pattern for filtering paths
|
88
97
|
#
|
89
|
-
# @return [Listen::Listener] the listener itself
|
90
|
-
#
|
91
98
|
def filter(*regexps)
|
92
99
|
@filtering_patterns.merge(regexps)
|
93
100
|
end
|
@@ -123,7 +130,6 @@ module Listen
|
|
123
130
|
def build
|
124
131
|
@paths = Hash.new { |h, k| h[k] = Hash.new }
|
125
132
|
important_paths { |path| insert_path(path) }
|
126
|
-
@updated_at = Time.now.to_i
|
127
133
|
end
|
128
134
|
|
129
135
|
# Detects changes in the passed directories, updates
|
@@ -139,13 +145,13 @@ module Listen
|
|
139
145
|
def fetch_changes(directories, options = {})
|
140
146
|
@changes = { :modified => [], :added => [], :removed => [] }
|
141
147
|
directories = directories.sort_by { |el| el.length }.reverse # diff sub-dir first
|
142
|
-
|
148
|
+
|
143
149
|
directories.each do |directory|
|
144
150
|
next unless directory[@directory] # Path is or inside directory
|
145
151
|
detect_modifications_and_removals(directory, options)
|
146
152
|
detect_additions(directory, options)
|
147
153
|
end
|
148
|
-
|
154
|
+
|
149
155
|
@changes
|
150
156
|
end
|
151
157
|
|
@@ -174,10 +180,10 @@ module Listen
|
|
174
180
|
# @option options [Boolean] relative_paths whether or not to use relative paths for changes
|
175
181
|
#
|
176
182
|
def detect_modifications_and_removals(directory, options = {})
|
177
|
-
@paths[directory].each do |basename,
|
183
|
+
@paths[directory].each do |basename, meta_data|
|
178
184
|
path = File.join(directory, basename)
|
179
185
|
|
180
|
-
case type
|
186
|
+
case meta_data.type
|
181
187
|
when 'Dir'
|
182
188
|
if File.directory?(path)
|
183
189
|
detect_modifications_and_removals(path, options) if options[:recursive]
|
@@ -188,8 +194,15 @@ module Listen
|
|
188
194
|
end
|
189
195
|
when 'File'
|
190
196
|
if File.exist?(path)
|
191
|
-
new_mtime =
|
192
|
-
|
197
|
+
new_mtime = mtime_of(path)
|
198
|
+
|
199
|
+
# First check if we are in the same second (to update checksums)
|
200
|
+
# before checking the time difference
|
201
|
+
if (meta_data.mtime.to_i == new_mtime.to_i && content_modified?(path)) || meta_data.mtime < new_mtime
|
202
|
+
# Update the meta data of the files
|
203
|
+
meta_data.mtime = new_mtime
|
204
|
+
@paths[directory][basename] = meta_data
|
205
|
+
|
193
206
|
@changes[:modified] << (options[:relative_paths] ? relative_to_base(path) : path)
|
194
207
|
end
|
195
208
|
else
|
@@ -239,12 +252,12 @@ module Listen
|
|
239
252
|
#
|
240
253
|
def content_modified?(path)
|
241
254
|
sha1_checksum = Digest::SHA1.file(path).to_s
|
242
|
-
if @sha1_checksums[path]
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
255
|
+
return false if @sha1_checksums[path] == sha1_checksum
|
256
|
+
|
257
|
+
had_no_checksum = @sha1_checksums[path].nil?
|
258
|
+
@sha1_checksums[path] = sha1_checksum
|
259
|
+
|
260
|
+
had_no_checksum ? false : true
|
248
261
|
end
|
249
262
|
|
250
263
|
# Traverses the base directory looking for paths that should
|
@@ -275,7 +288,10 @@ module Listen
|
|
275
288
|
# @param [String] path the path to insert in @paths.
|
276
289
|
#
|
277
290
|
def insert_path(path)
|
278
|
-
|
291
|
+
meta_data = MetaData.new
|
292
|
+
meta_data.type = File.directory?(path) ? 'Dir' : 'File'
|
293
|
+
meta_data.mtime = mtime_of(path) unless meta_data.type == 'Dir' # mtimes of dirs are not used yet
|
294
|
+
@paths[File.dirname(path)][File.basename(path)] = meta_data
|
279
295
|
end
|
280
296
|
|
281
297
|
# Returns whether or not a path exists in the paths hash.
|
@@ -287,5 +303,15 @@ module Listen
|
|
287
303
|
def existing_path?(path)
|
288
304
|
@paths[File.dirname(path)][File.basename(path)] != nil
|
289
305
|
end
|
306
|
+
|
307
|
+
# Returns the modification time of a file based on the precision defined by the system
|
308
|
+
#
|
309
|
+
# @param [String] file the file for which the mtime must be returned
|
310
|
+
#
|
311
|
+
# @return [Fixnum, Float] the mtime of the file
|
312
|
+
#
|
313
|
+
def mtime_of(file)
|
314
|
+
File.mtime(file).send(HIGH_PRECISION_SUPPORTED ? :to_f : :to_i)
|
315
|
+
end
|
290
316
|
end
|
291
317
|
end
|
@@ -119,7 +119,7 @@ module Listen
|
|
119
119
|
self
|
120
120
|
end
|
121
121
|
|
122
|
-
#
|
122
|
+
# Sets whether the use of the polling adapter
|
123
123
|
# should be forced or not.
|
124
124
|
#
|
125
125
|
# @example Forcing the use of the polling adapter
|
@@ -134,6 +134,21 @@ module Listen
|
|
134
134
|
self
|
135
135
|
end
|
136
136
|
|
137
|
+
# Sets whether the paths in the callback should be
|
138
|
+
# relative or absolute.
|
139
|
+
#
|
140
|
+
# @example Enabling relative paths in the callback
|
141
|
+
# relative_paths true
|
142
|
+
#
|
143
|
+
# @param [Boolean] value whether to enable relative paths in the callback or not
|
144
|
+
#
|
145
|
+
# @return [Listen::Listener] the listener
|
146
|
+
#
|
147
|
+
def relative_paths(value)
|
148
|
+
@use_relative_paths = value
|
149
|
+
self
|
150
|
+
end
|
151
|
+
|
137
152
|
# Defines a custom polling fallback message of disable it.
|
138
153
|
#
|
139
154
|
# @example Disabling the polling fallback message
|
@@ -9,6 +9,17 @@ describe Listen::Adapters::Linux do
|
|
9
9
|
|
10
10
|
it_should_behave_like 'a filesystem adapter'
|
11
11
|
it_should_behave_like 'an adapter that call properly listener#on_change'
|
12
|
+
|
13
|
+
describe '#initialize' do
|
14
|
+
context 'when the inotify limit for watched files is not enough' do
|
15
|
+
before { INotify::Notifier.any_instance.should_receive(:watch).and_raise(Errno::ENOSPC) }
|
16
|
+
|
17
|
+
it 'fails gracefully' do
|
18
|
+
described_class.any_instance.should_receive(:abort).with(described_class::INOTIFY_LIMIT_MESSAGE)
|
19
|
+
described_class.new(File.dirname(__FILE__))
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
12
23
|
else
|
13
24
|
it "isn't usable on Linux with #{RbConfig::CONFIG['RUBY_INSTALL_NAME']}" do
|
14
25
|
described_class.should_not be_usable
|
@@ -125,9 +125,9 @@ describe Listen::DirectoryRecord do
|
|
125
125
|
record = described_class.new(path)
|
126
126
|
record.build
|
127
127
|
|
128
|
-
record.paths[path]['file.rb'].should eq 'File'
|
129
|
-
record.paths[path]['a_directory'].should eq 'Dir'
|
130
|
-
record.paths["#{path}/a_directory"]['file.txt'].should eq 'File'
|
128
|
+
record.paths[path]['file.rb'].type.should eq 'File'
|
129
|
+
record.paths[path]['a_directory'].type.should eq 'Dir'
|
130
|
+
record.paths["#{path}/a_directory"]['file.txt'].type.should eq 'File'
|
131
131
|
end
|
132
132
|
end
|
133
133
|
|
@@ -175,9 +175,9 @@ describe Listen::DirectoryRecord do
|
|
175
175
|
record.build
|
176
176
|
|
177
177
|
record.paths[path]['file.rb'].should be_nil
|
178
|
-
record.paths[path]['file.zip'].should eq 'File'
|
179
|
-
record.paths[path]['a_directory'].should eq 'Dir'
|
180
|
-
record.paths["#{path}/a_directory"]['file.txt'].should eq 'File'
|
178
|
+
record.paths[path]['file.zip'].type.should eq 'File'
|
179
|
+
record.paths[path]['a_directory'].type.should eq 'Dir'
|
180
|
+
record.paths["#{path}/a_directory"]['file.txt'].type.should eq 'File'
|
181
181
|
record.paths["#{path}/a_directory"]['file.rb'].should be_nil
|
182
182
|
end
|
183
183
|
end
|
@@ -365,13 +365,17 @@ describe Listen::DirectoryRecord do
|
|
365
365
|
end
|
366
366
|
end
|
367
367
|
|
368
|
-
context 'during the same second' do
|
369
|
-
|
368
|
+
context 'during the same second at which we are checking for changes' do
|
369
|
+
before { ensure_same_second }
|
370
|
+
|
371
|
+
# The following test can only be run on systems that report
|
372
|
+
# modification times in milliseconds.
|
373
|
+
it 'always detects the modified file the first time', :if => described_class::HIGH_PRECISION_SUPPORTED do
|
370
374
|
fixtures do |path|
|
371
375
|
touch 'existing_file.txt'
|
372
376
|
|
373
377
|
modified, added, removed = changes(path) do
|
374
|
-
|
378
|
+
sleep 0.3 # make sure the mtime is changed a bit
|
375
379
|
touch 'existing_file.txt'
|
376
380
|
end
|
377
381
|
|
@@ -381,6 +385,23 @@ describe Listen::DirectoryRecord do
|
|
381
385
|
end
|
382
386
|
end
|
383
387
|
|
388
|
+
context '#27 - when a file is created and then checked for modifications at the same second' do
|
389
|
+
# This issue was the result of checking a file for content changes when
|
390
|
+
# the mtime and the checking time are the same. In this case there
|
391
|
+
# is no checksum saved, so the file was reported as being changed.
|
392
|
+
it ' does not report any changes' do
|
393
|
+
fixtures do |path|
|
394
|
+
touch 'a_file.rb'
|
395
|
+
|
396
|
+
modified, added, removed = changes(path)
|
397
|
+
|
398
|
+
added.should be_empty
|
399
|
+
modified.should be_empty
|
400
|
+
removed.should be_empty
|
401
|
+
end
|
402
|
+
end
|
403
|
+
end
|
404
|
+
|
384
405
|
it "doesn't detects the modified file the second time if the content haven't changed" do
|
385
406
|
fixtures do |path|
|
386
407
|
touch 'existing_file.txt'
|
@@ -408,7 +429,6 @@ describe Listen::DirectoryRecord do
|
|
408
429
|
end
|
409
430
|
|
410
431
|
modified, added, removed = changes(path, :use_last_record => true) do
|
411
|
-
small_time_difference
|
412
432
|
open('existing_file.txt', 'w') { |f| f.write('foo') }
|
413
433
|
end
|
414
434
|
|
@@ -869,8 +889,9 @@ describe Listen::DirectoryRecord do
|
|
869
889
|
touch 'a_directory/a_file.rb'
|
870
890
|
touch 'a_directory/b_file.rb'
|
871
891
|
|
892
|
+
small_time_difference
|
893
|
+
|
872
894
|
modified, added, removed = changes(path) do
|
873
|
-
small_time_difference
|
874
895
|
touch 'b_file.rb'
|
875
896
|
touch 'a_directory/a_file.rb'
|
876
897
|
end
|
@@ -43,6 +43,31 @@ shared_examples_for 'a filesystem adapter' do
|
|
43
43
|
end
|
44
44
|
end
|
45
45
|
end
|
46
|
+
|
47
|
+
describe '#started?' do
|
48
|
+
context 'with a new adapter' do
|
49
|
+
it 'returns false' do
|
50
|
+
subject.should_not be_started
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
context 'with a stopped adapter' do
|
55
|
+
before { subject.start(false); subject.stop }
|
56
|
+
|
57
|
+
it 'returns false' do
|
58
|
+
subject.should_not be_started
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
context 'with a started adapter' do
|
63
|
+
before { subject.start(false) }
|
64
|
+
after { subject.start }
|
65
|
+
|
66
|
+
it 'returns true' do
|
67
|
+
subject.should be_started
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
46
71
|
end
|
47
72
|
|
48
73
|
shared_examples_for 'an adapter that call properly listener#on_change' do |*args|
|
@@ -66,6 +91,24 @@ shared_examples_for 'an adapter that call properly listener#on_change' do |*args
|
|
66
91
|
end
|
67
92
|
end
|
68
93
|
|
94
|
+
context 'given a symlink' do
|
95
|
+
it 'detects the added file' do
|
96
|
+
fixtures do |path|
|
97
|
+
if options[:recursive]
|
98
|
+
listener.should_receive(:on_change).once.with([path], :recursive => true)
|
99
|
+
else
|
100
|
+
listener.should_receive(:on_change).once.with([path], {})
|
101
|
+
end
|
102
|
+
|
103
|
+
touch 'new_file.rb'
|
104
|
+
|
105
|
+
watch(listener, path) do
|
106
|
+
ln_s 'new_file.rb', 'new_file_symlink.rb'
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
69
112
|
context 'given a new created directory' do
|
70
113
|
it 'detects the added file' do
|
71
114
|
fixtures do |path|
|
@@ -141,6 +184,25 @@ shared_examples_for 'an adapter that call properly listener#on_change' do |*args
|
|
141
184
|
end
|
142
185
|
end
|
143
186
|
|
187
|
+
context 'given a symlink' do
|
188
|
+
it 'detects the modified file' do
|
189
|
+
fixtures do |path|
|
190
|
+
if options[:recursive]
|
191
|
+
listener.should_receive(:on_change).once.with([path], :recursive => true)
|
192
|
+
else
|
193
|
+
listener.should_receive(:on_change).once.with([path], {})
|
194
|
+
end
|
195
|
+
|
196
|
+
touch 'existing_file.rb'
|
197
|
+
ln_s 'existing_file.rb', 'existing_file_symlink.rb'
|
198
|
+
|
199
|
+
watch(listener, path) do
|
200
|
+
touch 'existing_file.rb'
|
201
|
+
end
|
202
|
+
end
|
203
|
+
end
|
204
|
+
end
|
205
|
+
|
144
206
|
context 'given a hidden file' do
|
145
207
|
it 'detects the modified file' do
|
146
208
|
fixtures do |path|
|
@@ -235,6 +297,25 @@ shared_examples_for 'an adapter that call properly listener#on_change' do |*args
|
|
235
297
|
end
|
236
298
|
end
|
237
299
|
|
300
|
+
context 'given a symlink' do
|
301
|
+
it 'detects the file move' do
|
302
|
+
fixtures do |path|
|
303
|
+
if options[:recursive]
|
304
|
+
listener.should_receive(:on_change).once.with([path], :recursive => true)
|
305
|
+
else
|
306
|
+
listener.should_receive(:on_change).once.with([path], {})
|
307
|
+
end
|
308
|
+
|
309
|
+
touch 'move_me.rb'
|
310
|
+
ln_s 'move_me.rb', 'move_me_symlink.rb'
|
311
|
+
|
312
|
+
watch(listener, path) do
|
313
|
+
mv 'move_me_symlink.rb', 'new_symlink.rb'
|
314
|
+
end
|
315
|
+
end
|
316
|
+
end
|
317
|
+
end
|
318
|
+
|
238
319
|
context 'given an existing directory' do
|
239
320
|
it 'detects the file move into the directory' do
|
240
321
|
fixtures do |path|
|
@@ -335,6 +416,25 @@ shared_examples_for 'an adapter that call properly listener#on_change' do |*args
|
|
335
416
|
end
|
336
417
|
end
|
337
418
|
|
419
|
+
context 'given a symlink' do
|
420
|
+
it 'detects the file removal' do
|
421
|
+
fixtures do |path|
|
422
|
+
if options[:recursive]
|
423
|
+
listener.should_receive(:on_change).once.with([path], :recursive => true)
|
424
|
+
else
|
425
|
+
listener.should_receive(:on_change).once.with([path], {})
|
426
|
+
end
|
427
|
+
|
428
|
+
touch 'unnecessary.rb'
|
429
|
+
ln_s 'unnecessary.rb', 'unnecessary_symlink.rb'
|
430
|
+
|
431
|
+
watch(listener, path) do
|
432
|
+
rm 'unnecessary_symlink.rb'
|
433
|
+
end
|
434
|
+
end
|
435
|
+
end
|
436
|
+
end
|
437
|
+
|
338
438
|
context 'given an existing directory' do
|
339
439
|
it 'detects the file removal' do
|
340
440
|
fixtures do |path|
|
@@ -19,7 +19,7 @@ def changes(root_path, options = {})
|
|
19
19
|
@record.build
|
20
20
|
end
|
21
21
|
|
22
|
-
yield
|
22
|
+
yield if block_given?
|
23
23
|
|
24
24
|
paths = options.delete(:paths) || [root_path]
|
25
25
|
options[:recursive] = true if options[:recursive].nil?
|
@@ -41,3 +41,15 @@ def small_time_difference
|
|
41
41
|
|
42
42
|
sleep( 1.5 - (diff < 0.5 ? diff : 0.4) )
|
43
43
|
end
|
44
|
+
|
45
|
+
# Ensures that the test runs at almost the same second at which
|
46
|
+
# changes are being checked.
|
47
|
+
#
|
48
|
+
def ensure_same_second
|
49
|
+
t = Time.now
|
50
|
+
diff = t.to_f - t.to_i
|
51
|
+
|
52
|
+
if diff > 0.1 # We are not at the beginning of a second
|
53
|
+
sleep 1.1 - diff # 1.1 is used instead of 1 to account for the processing time (estimated at 0.1 sec)
|
54
|
+
end
|
55
|
+
end
|
@@ -115,6 +115,17 @@ shared_examples_for 'a listener to changes on a file-system' do
|
|
115
115
|
end
|
116
116
|
end
|
117
117
|
|
118
|
+
describe '#relative_paths' do
|
119
|
+
it 'sets the relative paths option for paths in the callback' do
|
120
|
+
subject.relative_paths(true)
|
121
|
+
subject.instance_variable_get(:@use_relative_paths).should be_true
|
122
|
+
end
|
123
|
+
|
124
|
+
it 'returns the same listener to allow chaining' do
|
125
|
+
subject.relative_paths(true).should equal subject
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
118
129
|
describe '#polling_fallback_message' do
|
119
130
|
it 'sets custom polling fallback message to @adapter_options' do
|
120
131
|
subject.polling_fallback_message('custom message')
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sass
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 39
|
5
|
+
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 3
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 3.1.
|
9
|
+
- 18
|
10
|
+
version: 3.1.18
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Nathan Weizenbaum
|
@@ -17,7 +17,8 @@ autorequire:
|
|
17
17
|
bindir: bin
|
18
18
|
cert_chain: []
|
19
19
|
|
20
|
-
date: 2012-05-
|
20
|
+
date: 2012-05-11 00:00:00 -07:00
|
21
|
+
default_executable:
|
21
22
|
dependencies:
|
22
23
|
- !ruby/object:Gem::Dependency
|
23
24
|
name: yard
|
@@ -63,258 +64,259 @@ extra_rdoc_files: []
|
|
63
64
|
|
64
65
|
files:
|
65
66
|
- rails/init.rb
|
66
|
-
- lib/sass
|
67
|
-
- lib/sass/
|
68
|
-
- lib/sass/shared.rb
|
69
|
-
- lib/sass/error.rb
|
70
|
-
- lib/sass/importers.rb
|
71
|
-
- lib/sass/cache_stores/filesystem.rb
|
72
|
-
- lib/sass/cache_stores/chain.rb
|
73
|
-
- lib/sass/cache_stores/memory.rb
|
74
|
-
- lib/sass/cache_stores/null.rb
|
75
|
-
- lib/sass/cache_stores/base.rb
|
76
|
-
- lib/sass/environment.rb
|
77
|
-
- lib/sass/plugin/rack.rb
|
78
|
-
- lib/sass/plugin/staleness_checker.rb
|
67
|
+
- lib/sass.rb
|
68
|
+
- lib/sass/cache_stores.rb
|
79
69
|
- lib/sass/plugin/compiler.rb
|
80
|
-
- lib/sass/plugin/configuration.rb
|
81
70
|
- lib/sass/plugin/merb.rb
|
71
|
+
- lib/sass/plugin/staleness_checker.rb
|
72
|
+
- lib/sass/plugin/rack.rb
|
82
73
|
- lib/sass/plugin/rails.rb
|
74
|
+
- lib/sass/plugin/configuration.rb
|
83
75
|
- lib/sass/plugin/generic.rb
|
84
|
-
- lib/sass/railtie.rb
|
85
|
-
- lib/sass/logger.rb
|
86
|
-
- lib/sass/callbacks.rb
|
87
|
-
- lib/sass/script/string.rb
|
88
|
-
- lib/sass/script/node.rb
|
89
|
-
- lib/sass/script/lexer.rb
|
90
|
-
- lib/sass/script/string_interpolation.rb
|
91
|
-
- lib/sass/script/css_parser.rb
|
92
|
-
- lib/sass/script/variable.rb
|
93
|
-
- lib/sass/script/literal.rb
|
94
|
-
- lib/sass/script/bool.rb
|
95
|
-
- lib/sass/script/number.rb
|
96
|
-
- lib/sass/script/unary_operation.rb
|
97
|
-
- lib/sass/script/css_lexer.rb
|
98
|
-
- lib/sass/script/operation.rb
|
99
|
-
- lib/sass/script/parser.rb
|
100
|
-
- lib/sass/script/funcall.rb
|
101
|
-
- lib/sass/script/color.rb
|
102
|
-
- lib/sass/script/interpolation.rb
|
103
|
-
- lib/sass/script/list.rb
|
104
|
-
- lib/sass/script/functions.rb
|
105
76
|
- lib/sass/version.rb
|
106
|
-
- lib/sass/
|
107
|
-
- lib/sass/
|
108
|
-
- lib/sass/
|
109
|
-
- lib/sass/
|
110
|
-
- lib/sass/
|
111
|
-
- lib/sass/
|
112
|
-
- lib/sass/
|
113
|
-
- lib/sass/
|
77
|
+
- lib/sass/cache_stores/chain.rb
|
78
|
+
- lib/sass/cache_stores/memory.rb
|
79
|
+
- lib/sass/cache_stores/null.rb
|
80
|
+
- lib/sass/cache_stores/filesystem.rb
|
81
|
+
- lib/sass/cache_stores/base.rb
|
82
|
+
- lib/sass/shared.rb
|
83
|
+
- lib/sass/repl.rb
|
84
|
+
- lib/sass/error.rb
|
85
|
+
- lib/sass/tree/import_node.rb
|
86
|
+
- lib/sass/tree/return_node.rb
|
114
87
|
- lib/sass/tree/root_node.rb
|
115
|
-
- lib/sass/tree/node.rb
|
116
88
|
- lib/sass/tree/if_node.rb
|
117
89
|
- lib/sass/tree/charset_node.rb
|
118
|
-
- lib/sass/tree/
|
119
|
-
- lib/sass/tree/
|
120
|
-
- lib/sass/tree/
|
121
|
-
- lib/sass/tree/
|
122
|
-
- lib/sass/tree/mixin_node.rb
|
123
|
-
- lib/sass/tree/prop_node.rb
|
124
|
-
- lib/sass/tree/warn_node.rb
|
90
|
+
- lib/sass/tree/function_node.rb
|
91
|
+
- lib/sass/tree/media_node.rb
|
92
|
+
- lib/sass/tree/while_node.rb
|
93
|
+
- lib/sass/tree/for_node.rb
|
125
94
|
- lib/sass/tree/directive_node.rb
|
95
|
+
- lib/sass/tree/rule_node.rb
|
126
96
|
- lib/sass/tree/each_node.rb
|
97
|
+
- lib/sass/tree/node.rb
|
98
|
+
- lib/sass/tree/mixin_node.rb
|
99
|
+
- lib/sass/tree/extend_node.rb
|
100
|
+
- lib/sass/tree/mixin_def_node.rb
|
101
|
+
- lib/sass/tree/visitors/perform.rb
|
102
|
+
- lib/sass/tree/visitors/to_css.rb
|
103
|
+
- lib/sass/tree/visitors/check_nesting.rb
|
104
|
+
- lib/sass/tree/visitors/deep_copy.rb
|
105
|
+
- lib/sass/tree/visitors/set_options.rb
|
106
|
+
- lib/sass/tree/visitors/cssize.rb
|
107
|
+
- lib/sass/tree/visitors/convert.rb
|
108
|
+
- lib/sass/tree/visitors/base.rb
|
127
109
|
- lib/sass/tree/comment_node.rb
|
128
|
-
- lib/sass/tree/
|
129
|
-
- lib/sass/tree/variable_node.rb
|
130
|
-
- lib/sass/tree/function_node.rb
|
110
|
+
- lib/sass/tree/warn_node.rb
|
131
111
|
- lib/sass/tree/debug_node.rb
|
132
|
-
- lib/sass/tree/
|
133
|
-
- lib/sass/tree/
|
134
|
-
- lib/sass/
|
112
|
+
- lib/sass/tree/prop_node.rb
|
113
|
+
- lib/sass/tree/variable_node.rb
|
114
|
+
- lib/sass/engine.rb
|
115
|
+
- lib/sass/plugin.rb
|
116
|
+
- lib/sass/root.rb
|
117
|
+
- lib/sass/importers.rb
|
118
|
+
- lib/sass/logger.rb
|
119
|
+
- lib/sass/util/multibyte_string_scanner.rb
|
120
|
+
- lib/sass/util/subset_map.rb
|
121
|
+
- lib/sass/scss.rb
|
122
|
+
- lib/sass/scss/static_parser.rb
|
123
|
+
- lib/sass/scss/parser.rb
|
135
124
|
- lib/sass/scss/sass_parser.rb
|
136
|
-
- lib/sass/scss/script_parser.rb
|
137
|
-
- lib/sass/scss/css_parser.rb
|
138
125
|
- lib/sass/scss/script_lexer.rb
|
139
126
|
- lib/sass/scss/rx.rb
|
140
|
-
- lib/sass/scss/
|
141
|
-
- lib/sass/scss/
|
127
|
+
- lib/sass/scss/script_parser.rb
|
128
|
+
- lib/sass/scss/css_parser.rb
|
129
|
+
- lib/sass/logger/log_level.rb
|
130
|
+
- lib/sass/logger/base.rb
|
131
|
+
- lib/sass/css.rb
|
132
|
+
- lib/sass/script.rb
|
133
|
+
- lib/sass/util.rb
|
134
|
+
- lib/sass/importers/filesystem.rb
|
135
|
+
- lib/sass/importers/base.rb
|
136
|
+
- lib/sass/script/color.rb
|
137
|
+
- lib/sass/script/variable.rb
|
138
|
+
- lib/sass/script/operation.rb
|
139
|
+
- lib/sass/script/funcall.rb
|
140
|
+
- lib/sass/script/literal.rb
|
141
|
+
- lib/sass/script/parser.rb
|
142
|
+
- lib/sass/script/functions.rb
|
143
|
+
- lib/sass/script/number.rb
|
144
|
+
- lib/sass/script/string_interpolation.rb
|
145
|
+
- lib/sass/script/interpolation.rb
|
146
|
+
- lib/sass/script/node.rb
|
147
|
+
- lib/sass/script/bool.rb
|
148
|
+
- lib/sass/script/unary_operation.rb
|
149
|
+
- lib/sass/script/lexer.rb
|
150
|
+
- lib/sass/script/list.rb
|
151
|
+
- lib/sass/script/css_lexer.rb
|
152
|
+
- lib/sass/script/string.rb
|
153
|
+
- lib/sass/script/css_parser.rb
|
154
|
+
- lib/sass/selector.rb
|
142
155
|
- lib/sass/less.rb
|
143
|
-
- lib/sass/
|
156
|
+
- lib/sass/callbacks.rb
|
144
157
|
- lib/sass/selector/simple.rb
|
145
158
|
- lib/sass/selector/sequence.rb
|
146
159
|
- lib/sass/selector/abstract_sequence.rb
|
147
160
|
- lib/sass/selector/comma_sequence.rb
|
148
|
-
- lib/sass/
|
149
|
-
- lib/sass/
|
150
|
-
- lib/sass/
|
151
|
-
- lib/sass/css.rb
|
152
|
-
- lib/sass/selector.rb
|
153
|
-
- lib/sass/engine.rb
|
154
|
-
- lib/sass/plugin.rb
|
155
|
-
- lib/sass/logger/log_level.rb
|
156
|
-
- lib/sass/logger/base.rb
|
157
|
-
- lib/sass/repl.rb
|
158
|
-
- lib/sass/scss.rb
|
161
|
+
- lib/sass/selector/simple_sequence.rb
|
162
|
+
- lib/sass/railtie.rb
|
163
|
+
- lib/sass/environment.rb
|
159
164
|
- lib/sass/exec.rb
|
160
|
-
-
|
161
|
-
-
|
162
|
-
-
|
163
|
-
- lib/sass.rb
|
164
|
-
- vendor/listen/lib/listen.rb
|
165
|
+
- vendor/listen/README.md
|
166
|
+
- vendor/listen/Guardfile
|
167
|
+
- vendor/listen/Gemfile
|
165
168
|
- vendor/listen/lib/listen/turnstile.rb
|
169
|
+
- vendor/listen/lib/listen/directory_record.rb
|
170
|
+
- vendor/listen/lib/listen/version.rb
|
166
171
|
- vendor/listen/lib/listen/multi_listener.rb
|
167
|
-
- vendor/listen/lib/listen/
|
172
|
+
- vendor/listen/lib/listen/listener.rb
|
168
173
|
- vendor/listen/lib/listen/adapters/polling.rb
|
169
|
-
- vendor/listen/lib/listen/adapters/
|
174
|
+
- vendor/listen/lib/listen/adapters/darwin.rb
|
170
175
|
- vendor/listen/lib/listen/adapters/linux.rb
|
176
|
+
- vendor/listen/lib/listen/adapters/windows.rb
|
171
177
|
- vendor/listen/lib/listen/adapter.rb
|
172
|
-
- vendor/listen/lib/listen
|
173
|
-
- vendor/listen/lib/listen/version.rb
|
174
|
-
- vendor/listen/lib/listen/directory_record.rb
|
175
|
-
- vendor/listen/Vagrantfile
|
178
|
+
- vendor/listen/lib/listen.rb
|
176
179
|
- vendor/listen/CHANGELOG.md
|
177
|
-
- vendor/listen/LICENSE
|
178
180
|
- vendor/listen/Rakefile
|
179
|
-
- vendor/listen/
|
180
|
-
- vendor/listen/README.md
|
181
|
-
- vendor/listen/Guardfile
|
181
|
+
- vendor/listen/LICENSE
|
182
182
|
- vendor/listen/listen.gemspec
|
183
|
-
- vendor/listen/
|
184
|
-
- vendor/listen/spec/
|
185
|
-
- vendor/listen/spec/support/directory_record_helper.rb
|
186
|
-
- vendor/listen/spec/support/fixtures_helper.rb
|
187
|
-
- vendor/listen/spec/support/listeners_helper.rb
|
188
|
-
- vendor/listen/spec/support/platform_helper.rb
|
189
|
-
- vendor/listen/spec/support/adapter_helper.rb
|
190
|
-
- vendor/listen/spec/listen/turnstile_spec.rb
|
191
|
-
- vendor/listen/spec/listen/adapters/windows_spec.rb
|
192
|
-
- vendor/listen/spec/listen/adapters/darwin_spec.rb
|
183
|
+
- vendor/listen/Vagrantfile
|
184
|
+
- vendor/listen/spec/listen/directory_record_spec.rb
|
193
185
|
- vendor/listen/spec/listen/adapters/linux_spec.rb
|
186
|
+
- vendor/listen/spec/listen/adapters/darwin_spec.rb
|
194
187
|
- vendor/listen/spec/listen/adapters/polling_spec.rb
|
188
|
+
- vendor/listen/spec/listen/adapters/windows_spec.rb
|
189
|
+
- vendor/listen/spec/listen/turnstile_spec.rb
|
195
190
|
- vendor/listen/spec/listen/adapter_spec.rb
|
196
|
-
- vendor/listen/spec/listen/directory_record_spec.rb
|
197
191
|
- vendor/listen/spec/listen/listener_spec.rb
|
198
192
|
- vendor/listen/spec/listen/multi_listener_spec.rb
|
199
|
-
-
|
200
|
-
-
|
193
|
+
- vendor/listen/spec/listen_spec.rb
|
194
|
+
- vendor/listen/spec/spec_helper.rb
|
195
|
+
- vendor/listen/spec/support/directory_record_helper.rb
|
196
|
+
- vendor/listen/spec/support/listeners_helper.rb
|
197
|
+
- vendor/listen/spec/support/adapter_helper.rb
|
198
|
+
- vendor/listen/spec/support/platform_helper.rb
|
199
|
+
- vendor/listen/spec/support/fixtures_helper.rb
|
201
200
|
- bin/sass-convert
|
202
|
-
-
|
203
|
-
-
|
204
|
-
- test/
|
201
|
+
- bin/scss
|
202
|
+
- bin/sass
|
203
|
+
- test/Gemfile
|
204
|
+
- test/Gemfile.lock
|
205
|
+
- test/test_helper.rb
|
206
|
+
- test/sass/engine_test.rb
|
207
|
+
- test/sass/functions_test.rb
|
208
|
+
- test/sass/fixtures/test_staleness_check_across_importers.scss
|
209
|
+
- test/sass/fixtures/test_staleness_check_across_importers.css
|
210
|
+
- test/sass/data/hsl-rgb.txt
|
211
|
+
- test/sass/extend_test.rb
|
212
|
+
- test/sass/logger_test.rb
|
213
|
+
- test/sass/css2sass_test.rb
|
205
214
|
- test/sass/templates/basic.sass
|
206
|
-
- test/sass/templates/
|
207
|
-
- test/sass/templates/
|
208
|
-
- test/sass/templates/
|
209
|
-
- test/sass/templates/
|
210
|
-
- test/sass/templates/
|
215
|
+
- test/sass/templates/mixins.sass
|
216
|
+
- test/sass/templates/options.sass
|
217
|
+
- test/sass/templates/scss_import.scss
|
218
|
+
- test/sass/templates/subdir/subdir.sass
|
219
|
+
- test/sass/templates/subdir/nested_subdir/_nested_partial.sass
|
220
|
+
- test/sass/templates/subdir/nested_subdir/nested_subdir.sass
|
221
|
+
- test/sass/templates/alt.sass
|
222
|
+
- test/sass/templates/nested_bork1.sass
|
223
|
+
- test/sass/templates/complex.sass
|
224
|
+
- test/sass/templates/units.sass
|
225
|
+
- test/sass/templates/nested_import.sass
|
226
|
+
- test/sass/templates/importee.sass
|
211
227
|
- test/sass/templates/importee.less
|
212
|
-
- test/sass/templates/warn.sass
|
213
|
-
- test/sass/templates/single_import_loop.sass
|
214
|
-
- test/sass/templates/parent_ref.sass
|
215
|
-
- test/sass/templates/nested_bork3.sass
|
216
|
-
- test/sass/templates/script.sass
|
217
|
-
- test/sass/templates/import.sass
|
218
228
|
- test/sass/templates/scss_importee.scss
|
219
|
-
- test/sass/templates/
|
220
|
-
- test/sass/templates/
|
221
|
-
- test/sass/templates/importee.sass
|
222
|
-
- test/sass/templates/_partial.sass
|
223
|
-
- test/sass/templates/units.sass
|
224
|
-
- test/sass/templates/nested_bork1.sass
|
225
|
-
- test/sass/templates/_double_import_loop2.sass
|
229
|
+
- test/sass/templates/line_numbers.sass
|
230
|
+
- test/sass/templates/expanded.sass
|
226
231
|
- test/sass/templates/bork3.sass
|
227
|
-
- test/sass/templates/
|
228
|
-
- test/sass/templates/complex.sass
|
229
|
-
- test/sass/templates/if.sass
|
232
|
+
- test/sass/templates/bork5.sass
|
230
233
|
- test/sass/templates/nested_bork5.sass
|
234
|
+
- test/sass/templates/warn_imported.sass
|
231
235
|
- test/sass/templates/import_charset_ibm866.sass
|
232
|
-
- test/sass/templates/
|
233
|
-
- test/sass/templates/
|
234
|
-
- test/sass/templates/
|
236
|
+
- test/sass/templates/bork1.sass
|
237
|
+
- test/sass/templates/warn.sass
|
238
|
+
- test/sass/templates/bork2.sass
|
239
|
+
- test/sass/templates/nested.sass
|
235
240
|
- test/sass/templates/compact.sass
|
241
|
+
- test/sass/templates/single_import_loop.sass
|
242
|
+
- test/sass/templates/multiline.sass
|
236
243
|
- test/sass/templates/_imported_charset_ibm866.sass
|
237
|
-
- test/sass/templates/
|
238
|
-
- test/sass/templates/
|
239
|
-
- test/sass/templates/
|
240
|
-
- test/sass/templates/
|
241
|
-
- test/sass/templates/
|
242
|
-
- test/sass/templates/
|
244
|
+
- test/sass/templates/double_import_loop1.sass
|
245
|
+
- test/sass/templates/_double_import_loop2.sass
|
246
|
+
- test/sass/templates/import_charset.sass
|
247
|
+
- test/sass/templates/parent_ref.sass
|
248
|
+
- test/sass/templates/import.sass
|
249
|
+
- test/sass/templates/nested_bork3.sass
|
250
|
+
- test/sass/templates/script.sass
|
243
251
|
- test/sass/templates/bork4.sass
|
244
|
-
- test/sass/templates/
|
252
|
+
- test/sass/templates/if.sass
|
253
|
+
- test/sass/templates/_partial.sass
|
254
|
+
- test/sass/templates/nested_mixin_bork.sass
|
245
255
|
- test/sass/templates/import_charset_1_8.sass
|
256
|
+
- test/sass/templates/nested_bork2.sass
|
257
|
+
- test/sass/templates/mixin_bork.sass
|
258
|
+
- test/sass/templates/compressed.sass
|
246
259
|
- test/sass/templates/nested_bork4.sass
|
247
|
-
- test/sass/templates/
|
248
|
-
- test/sass/templates/multiline.sass
|
249
|
-
- test/sass/templates/expanded.sass
|
250
|
-
- test/sass/templates/mixins.sass
|
251
|
-
- test/sass/templates/bork2.sass
|
252
|
-
- test/sass/script_conversion_test.rb
|
253
|
-
- test/sass/mock_importer.rb
|
254
|
-
- test/sass/test_helper.rb
|
255
|
-
- test/sass/logger_test.rb
|
256
|
-
- test/sass/fixtures/test_staleness_check_across_importers.css
|
257
|
-
- test/sass/fixtures/test_staleness_check_across_importers.scss
|
258
|
-
- test/sass/functions_test.rb
|
259
|
-
- test/sass/util_test.rb
|
260
|
-
- test/sass/less_conversion_test.rb
|
261
|
-
- test/sass/more_results/more1.css
|
262
|
-
- test/sass/more_results/more1_with_line_comments.css
|
263
|
-
- test/sass/more_results/more_import.css
|
264
|
-
- test/sass/data/hsl-rgb.txt
|
265
|
-
- test/sass/scss/test_helper.rb
|
266
|
-
- test/sass/scss/css_test.rb
|
267
|
-
- test/sass/scss/rx_test.rb
|
268
|
-
- test/sass/scss/scss_test.rb
|
269
|
-
- test/sass/script_test.rb
|
270
|
-
- test/sass/importer_test.rb
|
271
|
-
- test/sass/cache_test.rb
|
260
|
+
- test/sass/templates/_imported_charset_utf8.sass
|
272
261
|
- test/sass/conversion_test.rb
|
273
|
-
- test/sass/
|
274
|
-
- test/sass/
|
275
|
-
- test/sass/
|
276
|
-
- test/sass/extend_test.rb
|
277
|
-
- test/sass/engine_test.rb
|
278
|
-
- test/sass/css2sass_test.rb
|
262
|
+
- test/sass/script_test.rb
|
263
|
+
- test/sass/util/subset_map_test.rb
|
264
|
+
- test/sass/util/multibyte_string_scanner_test.rb
|
279
265
|
- test/sass/callbacks_test.rb
|
280
|
-
- test/sass/
|
281
|
-
- test/sass/
|
282
|
-
- test/sass/
|
283
|
-
- test/sass/
|
284
|
-
- test/sass/
|
266
|
+
- test/sass/importer_test.rb
|
267
|
+
- test/sass/scss/css_test.rb
|
268
|
+
- test/sass/scss/scss_test.rb
|
269
|
+
- test/sass/scss/rx_test.rb
|
270
|
+
- test/sass/scss/test_helper.rb
|
271
|
+
- test/sass/util_test.rb
|
272
|
+
- test/sass/results/mixins.css
|
273
|
+
- test/sass/results/warn_imported.css
|
285
274
|
- test/sass/results/expanded.css
|
286
|
-
- test/sass/results/
|
287
|
-
- test/sass/results/
|
288
|
-
- test/sass/results/
|
289
|
-
- test/sass/results/
|
290
|
-
- test/sass/results/
|
275
|
+
- test/sass/results/compact.css
|
276
|
+
- test/sass/results/compressed.css
|
277
|
+
- test/sass/results/scss_importee.css
|
278
|
+
- test/sass/results/basic.css
|
279
|
+
- test/sass/results/subdir/nested_subdir/nested_subdir.css
|
280
|
+
- test/sass/results/subdir/subdir.css
|
291
281
|
- test/sass/results/options.css
|
292
|
-
- test/sass/results/
|
282
|
+
- test/sass/results/scss_import.css
|
283
|
+
- test/sass/results/units.css
|
293
284
|
- test/sass/results/parent_ref.css
|
285
|
+
- test/sass/results/script.css
|
286
|
+
- test/sass/results/complex.css
|
287
|
+
- test/sass/results/import_charset.css
|
288
|
+
- test/sass/results/alt.css
|
289
|
+
- test/sass/results/if.css
|
294
290
|
- test/sass/results/multiline.css
|
291
|
+
- test/sass/results/import_charset_1_8.css
|
292
|
+
- test/sass/results/warn.css
|
295
293
|
- test/sass/results/import_charset_ibm866.css
|
296
|
-
- test/sass/results/subdir/subdir.css
|
297
|
-
- test/sass/results/subdir/nested_subdir/nested_subdir.css
|
298
|
-
- test/sass/results/warn_imported.css
|
299
|
-
- test/sass/results/compact.css
|
300
|
-
- test/sass/results/mixins.css
|
301
|
-
- test/sass/results/complex.css
|
302
|
-
- test/sass/results/compressed.css
|
303
294
|
- test/sass/results/import.css
|
304
|
-
- test/sass/results/
|
305
|
-
- test/
|
306
|
-
- test/
|
307
|
-
- test/
|
295
|
+
- test/sass/results/nested.css
|
296
|
+
- test/sass/results/line_numbers.css
|
297
|
+
- test/sass/test_helper.rb
|
298
|
+
- test/sass/more_templates/_more_partial.sass
|
299
|
+
- test/sass/more_templates/more_import.sass
|
300
|
+
- test/sass/more_templates/more1.sass
|
301
|
+
- test/sass/script_conversion_test.rb
|
302
|
+
- test/sass/less_conversion_test.rb
|
303
|
+
- test/sass/more_results/more1.css
|
304
|
+
- test/sass/more_results/more1_with_line_comments.css
|
305
|
+
- test/sass/more_results/more_import.css
|
306
|
+
- test/sass/mock_importer.rb
|
307
|
+
- test/sass/cache_test.rb
|
308
|
+
- test/sass/plugin_test.rb
|
308
309
|
- extra/update_watch.rb
|
309
310
|
- Rakefile
|
310
311
|
- init.rb
|
311
312
|
- .yardopts
|
312
|
-
-
|
313
|
+
- README.md
|
314
|
+
- VERSION_NAME
|
313
315
|
- REVISION
|
316
|
+
- MIT-LICENSE
|
314
317
|
- VERSION
|
315
|
-
- VERSION_NAME
|
316
|
-
- README.md
|
317
318
|
- CONTRIBUTING
|
319
|
+
has_rdoc: false
|
318
320
|
homepage: http://sass-lang.com/
|
319
321
|
licenses: []
|
320
322
|
|
@@ -346,27 +348,27 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
346
348
|
requirements: []
|
347
349
|
|
348
350
|
rubyforge_project: sass
|
349
|
-
rubygems_version: 1.
|
351
|
+
rubygems_version: 1.3.7
|
350
352
|
signing_key:
|
351
353
|
specification_version: 3
|
352
354
|
summary: A powerful but elegant CSS compiler that makes CSS fun again.
|
353
355
|
test_files:
|
354
|
-
- test/sass/
|
356
|
+
- test/sass/engine_test.rb
|
357
|
+
- test/sass/functions_test.rb
|
358
|
+
- test/sass/extend_test.rb
|
359
|
+
- test/sass/logger_test.rb
|
360
|
+
- test/sass/css2sass_test.rb
|
361
|
+
- test/sass/conversion_test.rb
|
362
|
+
- test/sass/script_test.rb
|
355
363
|
- test/sass/util/subset_map_test.rb
|
356
364
|
- test/sass/util/multibyte_string_scanner_test.rb
|
357
|
-
- test/sass/
|
358
|
-
- test/sass/
|
359
|
-
- test/sass/functions_test.rb
|
360
|
-
- test/sass/util_test.rb
|
361
|
-
- test/sass/less_conversion_test.rb
|
365
|
+
- test/sass/callbacks_test.rb
|
366
|
+
- test/sass/importer_test.rb
|
362
367
|
- test/sass/scss/css_test.rb
|
363
|
-
- test/sass/scss/rx_test.rb
|
364
368
|
- test/sass/scss/scss_test.rb
|
365
|
-
- test/sass/
|
366
|
-
- test/sass/
|
369
|
+
- test/sass/scss/rx_test.rb
|
370
|
+
- test/sass/util_test.rb
|
371
|
+
- test/sass/script_conversion_test.rb
|
372
|
+
- test/sass/less_conversion_test.rb
|
367
373
|
- test/sass/cache_test.rb
|
368
|
-
- test/sass/
|
369
|
-
- test/sass/extend_test.rb
|
370
|
-
- test/sass/engine_test.rb
|
371
|
-
- test/sass/css2sass_test.rb
|
372
|
-
- test/sass/callbacks_test.rb
|
374
|
+
- test/sass/plugin_test.rb
|