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 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 --first-parent stable.. | wc -l`).empty?
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.17
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
- # ciel(10.4px) => 11px
1152
- # ciel(10.6px) => 11px
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
@@ -19,5 +19,10 @@ module Sass::Tree
19
19
  @value = value
20
20
  super()
21
21
  end
22
+
23
+ # @return [String] The name of the directive, including `@`.
24
+ def name
25
+ value.gsub(/ .*$/, '')
26
+ end
22
27
  end
23
28
  end
@@ -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 = (@parent && (
7
- try_send("invalid_#{node_name @parent}_child?", @parent, node) ||
8
- try_send("invalid_#{node_name node}_parent?", @parent, node))) ||
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
- old_real_parent, @real_parent = @real_parent, parent
26
+ @parents.push parent
26
27
  super
27
28
  ensure
28
29
  @parent = old_parent
29
- @real_parent = old_real_parent
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
- VALID_IMPORT_PARENTS = [
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
- if is_any_of?(@real_parent, VALID_IMPORT_PARENTS)
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")
@@ -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 "$"},
@@ -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
@@ -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 ".git", ".svn"
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
- update_time = Time.now.to_i
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
- @updated_at = update_time
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, type|
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 = File.mtime(path).to_i
192
- if @updated_at < new_mtime || (@updated_at == new_mtime && content_modified?(path))
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] != sha1_checksum
243
- @sha1_checksums[path] = sha1_checksum
244
- true
245
- else
246
- false
247
- end
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
- @paths[File.dirname(path)][File.basename(path)] = File.directory?(path) ? 'Dir' : 'File'
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
- # Defines whether the use of the polling adapter
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
- it 'always detects the modified file the first time' do
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
- small_time_difference
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: 33
5
- prerelease:
4
+ hash: 39
5
+ prerelease: false
6
6
  segments:
7
7
  - 3
8
8
  - 1
9
- - 17
10
- version: 3.1.17
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-05 00:00:00 Z
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/util/multibyte_string_scanner.rb
67
- - lib/sass/util/subset_map.rb
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/tree/visitors/deep_copy.rb
107
- - lib/sass/tree/visitors/set_options.rb
108
- - lib/sass/tree/visitors/cssize.rb
109
- - lib/sass/tree/visitors/to_css.rb
110
- - lib/sass/tree/visitors/perform.rb
111
- - lib/sass/tree/visitors/base.rb
112
- - lib/sass/tree/visitors/check_nesting.rb
113
- - lib/sass/tree/visitors/convert.rb
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/extend_node.rb
119
- - lib/sass/tree/rule_node.rb
120
- - lib/sass/tree/mixin_def_node.rb
121
- - lib/sass/tree/return_node.rb
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/media_node.rb
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/import_node.rb
133
- - lib/sass/tree/while_node.rb
134
- - lib/sass/tree/for_node.rb
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/parser.rb
141
- - lib/sass/scss/static_parser.rb
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/selector/simple_sequence.rb
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/root.rb
149
- - lib/sass/importers/filesystem.rb
150
- - lib/sass/importers/base.rb
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
- - lib/sass/util.rb
161
- - lib/sass/cache_stores.rb
162
- - lib/sass/script.rb
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/adapters/darwin.rb
172
+ - vendor/listen/lib/listen/listener.rb
168
173
  - vendor/listen/lib/listen/adapters/polling.rb
169
- - vendor/listen/lib/listen/adapters/windows.rb
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/listener.rb
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/Gemfile
180
- - vendor/listen/README.md
181
- - vendor/listen/Guardfile
181
+ - vendor/listen/LICENSE
182
182
  - vendor/listen/listen.gemspec
183
- - vendor/listen/spec/spec_helper.rb
184
- - vendor/listen/spec/listen_spec.rb
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
- - bin/sass
200
- - bin/scss
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
- - test/sass/plugin_test.rb
203
- - test/sass/util/subset_map_test.rb
204
- - test/sass/util/multibyte_string_scanner_test.rb
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/line_numbers.sass
207
- - test/sass/templates/nested_bork2.sass
208
- - test/sass/templates/_imported_charset_utf8.sass
209
- - test/sass/templates/mixin_bork.sass
210
- - test/sass/templates/import_charset.sass
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/bork1.sass
220
- - test/sass/templates/compressed.sass
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/nested_mixin_bork.sass
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/double_import_loop1.sass
233
- - test/sass/templates/alt.sass
234
- - test/sass/templates/scss_import.scss
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/nested.sass
238
- - test/sass/templates/subdir/subdir.sass
239
- - test/sass/templates/subdir/nested_subdir/_nested_partial.sass
240
- - test/sass/templates/subdir/nested_subdir/nested_subdir.sass
241
- - test/sass/templates/warn_imported.sass
242
- - test/sass/templates/options.sass
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/bork5.sass
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/nested_import.sass
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/more_templates/more1.sass
274
- - test/sass/more_templates/_more_partial.sass
275
- - test/sass/more_templates/more_import.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/results/units.css
281
- - test/sass/results/alt.css
282
- - test/sass/results/scss_importee.css
283
- - test/sass/results/line_numbers.css
284
- - test/sass/results/import_charset.css
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/warn.css
287
- - test/sass/results/script.css
288
- - test/sass/results/if.css
289
- - test/sass/results/scss_import.css
290
- - test/sass/results/nested.css
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/import_charset_1_8.css
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/basic.css
305
- - test/test_helper.rb
306
- - test/Gemfile.lock
307
- - test/Gemfile
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
- - MIT-LICENSE
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.8.15
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/plugin_test.rb
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/script_conversion_test.rb
358
- - test/sass/logger_test.rb
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/script_test.rb
366
- - test/sass/importer_test.rb
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/conversion_test.rb
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