sass 3.2.0.alpha.64 → 3.2.0.alpha.70

Sign up to get free protection for your applications and to get access to all the features.
@@ -110,6 +110,30 @@ CSS
110
110
  File.delete(tempfile_loc('bork1'))
111
111
  end
112
112
 
113
+ def test_single_level_import_loop
114
+ File.delete(tempfile_loc('single_import_loop'))
115
+ check_for_updates!
116
+ File.open(tempfile_loc('single_import_loop')) do |file|
117
+ assert_equal(<<CSS.strip, file.read.split("\n")[0...2].join("\n"))
118
+ /*
119
+ Sass::SyntaxError: An @import loop has been found: #{template_loc('single_import_loop')} imports itself
120
+ CSS
121
+ end
122
+ end
123
+
124
+ def test_double_level_import_loop
125
+ File.delete(tempfile_loc('double_import_loop1'))
126
+ check_for_updates!
127
+ File.open(tempfile_loc('double_import_loop1')) do |file|
128
+ assert_equal(<<CSS.strip, file.read.split("\n")[0...4].join("\n"))
129
+ /*
130
+ Sass::SyntaxError: An @import loop has been found:
131
+ #{template_loc('double_import_loop1')} imports #{template_loc('_double_import_loop2')}
132
+ #{template_loc('_double_import_loop2')} imports #{template_loc('double_import_loop1')}
133
+ CSS
134
+ end
135
+ end
136
+
113
137
  def test_nonfull_exception_handling
114
138
  old_full_exception = Sass::Plugin.options[:full_exception]
115
139
  Sass::Plugin.options[:full_exception] = false
@@ -0,0 +1 @@
1
+ @import "double_import_loop1"
@@ -0,0 +1 @@
1
+ @import "double_import_loop2"
@@ -0,0 +1 @@
1
+ @import "single_import_loop"
@@ -0,0 +1,14 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $LOAD_PATH.unshift(File.expand_path('../lib', File.dirname(__FILE__)))
3
+
4
+ require 'rubygems/dependency_installer'
5
+ require 'fssm'
6
+
7
+ # semi-elegant solution or hack? *shrug*
8
+ task :default do
9
+ name, version = FSSM::Support.optimal_backend_dependency
10
+ if name and version
11
+ installer = Gem::DependencyInstaller.new({:domain => :both, :env_shebang => true})
12
+ installer.install name, version
13
+ end
14
+ end
@@ -19,6 +19,9 @@ Gem::Specification.new do |s|
19
19
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
20
20
  s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
21
21
  s.require_paths = ["lib"]
22
+
23
+ # s.extensions = 'ext/rakefile.rb'
22
24
 
25
+ s.add_development_dependency "rake"
23
26
  s.add_development_dependency "rspec", ">= 2.4.0"
24
27
  end
@@ -1,12 +1,62 @@
1
- dir = File.dirname(__FILE__)
1
+ dir = File.expand_path(File.dirname(__FILE__))
2
2
  $LOAD_PATH.unshift dir unless $LOAD_PATH.include?(dir)
3
3
 
4
- #noinspection ALL
5
- module FSSM
6
- FileNotFoundError = Class.new(StandardError)
7
- FileNotRealError = Class.new(StandardError)
8
- CallbackError = Class.new(StandardError)
4
+ require 'thread'
9
5
 
6
+ module FSSM
7
+
8
+ FSSMError = Class.new(StandardError)
9
+ FileNotFoundError = Class.new(FSSMError)
10
+ FileNotRealError = Class.new(FSSMError)
11
+ CallbackError = Class.new(FSSMError)
12
+
13
+ autoload :VERSION, 'fssm/version'
14
+ autoload :Pathname, 'fssm/pathname'
15
+ autoload :Support, 'fssm/support'
16
+ autoload :Tree, 'fssm/tree'
17
+ autoload :Path, 'fssm/path'
18
+ autoload :Monitor, 'fssm/monitor'
19
+
20
+ module State
21
+ autoload :Directory, 'fssm/state/directory'
22
+ autoload :File, 'fssm/state/file'
23
+ end
24
+
25
+ module Backends
26
+ autoload :Polling, 'fssm/backends/polling'
27
+ autoload :FSEvents, 'fssm/backends/fsevents'
28
+ autoload :RBFSEvent, 'fssm/backends/rbfsevent'
29
+ autoload :Inotify, 'fssm/backends/inotify'
30
+
31
+ class << self
32
+ def set_backend(const_symbol=nil, value=nil)
33
+ const_symbol ||= :Default
34
+ value ||= ::FSSM::Support.backend
35
+
36
+ if (value.is_a?(Symbol) || value.is_a?(String))
37
+ unless const_defined?(value)
38
+ raise NameError,
39
+ "uninitialized constant FSSM::Backends::#{value}"
40
+ end
41
+ value = const_get(value)
42
+ end
43
+
44
+ unless value.is_a?(Class)
45
+ raise ArgumentError,
46
+ "value must be a class or the symbol of an existing backend"
47
+ end
48
+
49
+ remove_const(const_symbol) if const_defined?(const_symbol)
50
+ const_set(const_symbol, value)
51
+ end
52
+
53
+ def const_missing(symbol)
54
+ symbol == :Default ? set_backend(symbol, FSSM::Support.backend) : super
55
+ end
56
+
57
+ end
58
+ end
59
+
10
60
  class << self
11
61
  def dbg(msg=nil)
12
62
  STDERR.puts("FSSM -> #{msg}")
@@ -20,18 +70,5 @@ module FSSM
20
70
  monitor.run
21
71
  end
22
72
  end
73
+
23
74
  end
24
-
25
- require 'thread'
26
-
27
- require 'fssm/version'
28
- require 'fssm/pathname'
29
- require 'fssm/support'
30
- require 'fssm/tree'
31
- require 'fssm/path'
32
- require 'fssm/state/directory'
33
- require 'fssm/state/file'
34
- require 'fssm/monitor'
35
-
36
- require "fssm/backends/#{FSSM::Support.backend.downcase}"
37
- FSSM::Backends::Default = FSSM::Backends.const_get(FSSM::Support.backend)
@@ -3,29 +3,24 @@ require 'rbconfig'
3
3
  module FSSM::Support
4
4
  class << self
5
5
  def usable_backend
6
- choice = case
7
- when mac? && !lion? && !jruby? && carbon_core?
8
- 'FSEvents'
9
- when mac? && rb_fsevent?
10
- 'RBFSEvent'
11
- when linux? && rb_inotify?
12
- 'Inotify'
13
- else
14
- 'Polling'
15
- end
16
-
17
- if (mac? || linux?) && choice == 'Polling'
18
- optimal = case
19
- when mac?
20
- 'rb-fsevent'
21
- when linux?
22
- 'rb-inotify'
23
- end
24
- FSSM.dbg("An optimized backend is available for this platform!")
25
- FSSM.dbg(" gem install #{optimal}")
6
+ case
7
+ when mac? && !lion? && !jruby? && carbon_core?
8
+ 'FSEvents'
9
+ when mac? && rb_fsevent?
10
+ 'RBFSEvent'
11
+ when linux? && rb_inotify?
12
+ 'Inotify'
13
+ else
14
+ 'Polling'
15
+ end
16
+ end
17
+
18
+ def optimal_backend_dependency
19
+ return case
20
+ when mac? then ['rb-fsevent', '>= 0.4.3.1']
21
+ when linux? then ['rb-inotify', '>= 0.8.8']
22
+ else [nil, nil]
26
23
  end
27
-
28
- choice
29
24
  end
30
25
 
31
26
  def backend
@@ -37,15 +32,15 @@ module FSSM::Support
37
32
  end
38
33
 
39
34
  def mac?
40
- Config::CONFIG['target_os'] =~ /darwin/i
35
+ RbConfig::CONFIG['target_os'] =~ /darwin/i
41
36
  end
42
37
 
43
38
  def lion?
44
- Config::CONFIG['target_os'] =~ /darwin11/i
39
+ RbConfig::CONFIG['target_os'] =~ /darwin11/i
45
40
  end
46
41
 
47
42
  def linux?
48
- Config::CONFIG['target_os'] =~ /linux/i
43
+ RbConfig::CONFIG['target_os'] =~ /linux/i
49
44
  end
50
45
 
51
46
  def carbon_core?
@@ -1,3 +1,3 @@
1
1
  module FSSM
2
- VERSION = "0.2.7"
2
+ VERSION = "0.2.8.1"
3
3
  end
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sass
3
3
  version: !ruby/object:Gem::Version
4
- hash: 592303005
4
+ hash: 592302993
5
5
  prerelease: 6
6
6
  segments:
7
7
  - 3
8
8
  - 2
9
9
  - 0
10
10
  - alpha
11
- - 64
12
- version: 3.2.0.alpha.64
11
+ - 70
12
+ version: 3.2.0.alpha.70
13
13
  platform: ruby
14
14
  authors:
15
15
  - Nathan Weizenbaum
@@ -19,7 +19,7 @@ autorequire:
19
19
  bindir: bin
20
20
  cert_chain: []
21
21
 
22
- date: 2012-02-05 00:00:00 -05:00
22
+ date: 2012-02-09 00:00:00 -05:00
23
23
  default_executable:
24
24
  dependencies:
25
25
  - !ruby/object:Gem::Dependency
@@ -86,7 +86,7 @@ files:
86
86
  - lib/sass/logger.rb
87
87
  - lib/sass/logger/base.rb
88
88
  - lib/sass/logger/log_level.rb
89
- - lib/sass/util.rb
89
+ - lib/sass/repl.rb
90
90
  - lib/sass/plugin.rb
91
91
  - lib/sass/plugin/compiler.rb
92
92
  - lib/sass/plugin/configuration.rb
@@ -96,7 +96,7 @@ files:
96
96
  - lib/sass/plugin/rails.rb
97
97
  - lib/sass/plugin/staleness_checker.rb
98
98
  - lib/sass/railtie.rb
99
- - lib/sass/repl.rb
99
+ - lib/sass/media.rb
100
100
  - lib/sass/root.rb
101
101
  - lib/sass/script.rb
102
102
  - lib/sass/script/bool.rb
@@ -151,7 +151,6 @@ files:
151
151
  - lib/sass/tree/root_node.rb
152
152
  - lib/sass/tree/rule_node.rb
153
153
  - lib/sass/tree/content_node.rb
154
- - lib/sass/tree/trace_node.rb
155
154
  - lib/sass/tree/variable_node.rb
156
155
  - lib/sass/tree/visitors/base.rb
157
156
  - lib/sass/tree/visitors/check_nesting.rb
@@ -163,7 +162,8 @@ files:
163
162
  - lib/sass/tree/visitors/to_css.rb
164
163
  - lib/sass/tree/warn_node.rb
165
164
  - lib/sass/tree/while_node.rb
166
- - lib/sass/media.rb
165
+ - lib/sass/tree/trace_node.rb
166
+ - lib/sass/util.rb
167
167
  - lib/sass/util/multibyte_string_scanner.rb
168
168
  - lib/sass/util/subset_map.rb
169
169
  - lib/sass/version.rb
@@ -172,6 +172,7 @@ files:
172
172
  - vendor/fssm/README.markdown
173
173
  - vendor/fssm/Rakefile
174
174
  - vendor/fssm/example.rb
175
+ - vendor/fssm/ext/rakefile.rb
175
176
  - vendor/fssm/fssm.gemspec
176
177
  - vendor/fssm/lib/fssm.rb
177
178
  - vendor/fssm/lib/fssm/backends/fsevents.rb
@@ -306,6 +307,9 @@ files:
306
307
  - test/sass/templates/units.sass
307
308
  - test/sass/templates/warn.sass
308
309
  - test/sass/templates/warn_imported.sass
310
+ - test/sass/templates/_double_import_loop2.sass
311
+ - test/sass/templates/double_import_loop1.sass
312
+ - test/sass/templates/single_import_loop.sass
309
313
  - test/sass/test_helper.rb
310
314
  - test/sass/util/multibyte_string_scanner_test.rb
311
315
  - test/sass/util/subset_map_test.rb