compass 0.10.0.pre3 → 0.10.0.pre4

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,6 +1,11 @@
1
1
  COMPASS CHANGELOG
2
2
  =================
3
3
 
4
+ 0.10.0.pre4 (January 04, 2010)
5
+ ------------------------------
6
+ * Fixed an FSSM loading issue that broke the compass watcher.
7
+ * Fixed some compatibility issues with edge versions of Sass.
8
+
4
9
  0.10.0.pre3 (January 02, 2010)
5
10
  ------------------------------
6
11
 
data/REVISION CHANGED
@@ -1 +1 @@
1
- 26b3efb3e6b7b8cabac5ae203bc3a590ab62d1b8
1
+ 08894dc6ab17c4d79297868e177cbed3d338b93b
@@ -2,4 +2,4 @@
2
2
  :patch: 0
3
3
  :major: 0
4
4
  :minor: 10
5
- :build: pre3
5
+ :build: pre4
@@ -42,7 +42,7 @@ module Compass
42
42
  def out_of_date?
43
43
  Compass.configure_sass_plugin! unless Compass.sass_plugin_configured?
44
44
  sass_files.zip(css_files).each do |sass_filename, css_filename|
45
- return sass_filename if Sass::Plugin.exact_stylesheet_needs_update?(css_filename, sass_filename)
45
+ return sass_filename if Sass::Plugin.send(:exact_stylesheet_needs_update?, css_filename, sass_filename)
46
46
  end
47
47
  false
48
48
  end
@@ -99,7 +99,7 @@ module Compass
99
99
  end
100
100
 
101
101
  def should_compile?(sass_filename, css_filename)
102
- options[:force] || Sass::Plugin.exact_stylesheet_needs_update?(css_filename, sass_filename)
102
+ options[:force] || Sass::Plugin.send(:exact_stylesheet_needs_update?, css_filename, sass_filename)
103
103
  end
104
104
 
105
105
  # A sass engine for compiling a single file.
@@ -114,12 +114,13 @@ module Compass
114
114
  # if there's an error.
115
115
  def handle_exception(sass_filename, css_filename, e)
116
116
  logger.record :error, basename(sass_filename), "(Line #{e.sass_line}: #{e.message})"
117
- write_file css_filename, error_contents(e), options.merge(:force => true)
117
+ write_file css_filename, error_contents(e, sass_filename), options.merge(:force => true)
118
118
  end
119
119
 
120
120
  # Haml refactored this logic in 2.3, this is backwards compatibility for either one
121
- def error_contents(e)
121
+ def error_contents(e, sass_filename)
122
122
  if Sass::SyntaxError.respond_to?(:exception_to_css)
123
+ e.sass_template = sass_filename
123
124
  Sass::SyntaxError.exception_to_css(e, :full_exception => show_full_exception?)
124
125
  else
125
126
  Sass::Plugin.options[:full_exception] ||= show_full_exception?
@@ -2,22 +2,39 @@ require 'sass/plugin'
2
2
 
3
3
  # XXX: We can remove this monkeypatch once Sass 2.2 is released.
4
4
  module Sass::Plugin
5
- class << self
6
- unless method_defined?(:exact_stylesheet_needs_update?)
7
- def stylesheet_needs_update?(name, template_path, css_path)
8
- css_file = css_filename(name, css_path)
9
- template_file = template_filename(name, template_path)
10
- exact_stylesheet_needs_update?(css_file, template_file)
5
+
6
+ # splits the stylesheet_needs_update? method into two pieces so I can use the exact_stylesheet_needs_update? piece
7
+ module StylesheetNeedsUpdate
8
+ def stylesheet_needs_update?(name, template_path, css_path)
9
+ css_file = css_filename(name, css_path)
10
+ template_file = template_filename(name, template_path)
11
+ exact_stylesheet_needs_update?(css_file, template_file)
12
+ end
13
+ def exact_stylesheet_needs_update?(css_file, template_file)
14
+ if !File.exists?(css_file)
15
+ return true
16
+ else
17
+ css_mtime = File.mtime(css_file)
18
+ File.mtime(template_file) > css_mtime ||
19
+ dependencies(template_file).any?(&dependency_updated?(css_mtime))
11
20
  end
12
- def exact_stylesheet_needs_update?(css_file, template_file)
13
- if !File.exists?(css_file)
14
- return true
15
- else
16
- css_mtime = File.mtime(css_file)
17
- File.mtime(template_file) > css_mtime ||
18
- dependencies(template_file).any?(&dependency_updated?(css_mtime))
19
- end
21
+ end
22
+ end
23
+
24
+ # At some point Sass::Plugin changed from using the metaclass to extend self.
25
+ metaclass = class << self; self; end
26
+ if metaclass.included_modules.include?(Sass::Plugin)
27
+ if method(:stylesheet_needs_update?).arity == 2
28
+ alias exact_stylesheet_needs_update? stylesheet_needs_update?
29
+ elsif !method_defined?(:exact_stylesheet_needs_update?)
30
+ include StylesheetNeedsUpdate
31
+ end
32
+ else
33
+ class << self
34
+ unless method_defined?(:exact_stylesheet_needs_update?)
35
+ include StylesheetNeedsUpdate
20
36
  end
21
37
  end
22
38
  end
23
- end
39
+
40
+ end
@@ -1,176 +1,40 @@
1
- module FSSM::Tree
2
- module NodeBase
3
- def initialize
4
- @children = {}
5
- end
6
-
7
- protected
8
-
9
- def child(segment)
10
- @children["#{segment}"]
11
- end
12
-
13
- def child!(segment)
14
- (@children["#{segment}"] ||= Node.new)
15
- end
16
-
17
- def has_child?(segment)
18
- @children.has_key?("#{segment}")
19
- end
20
-
21
- def remove_child(segment)
22
- @children.delete("#{segment}")
23
- end
24
-
25
- def remove_children
26
- @children.clear
27
- end
28
- end
29
-
30
- module NodeEnumerable
31
- include NodeBase
32
- include Enumerable
33
-
34
- def each(prefix=nil, &block)
35
- @children.each do |segment, node|
36
- cprefix = prefix ?
37
- FSSM::Pathname.for(prefix).join(segment) :
38
- FSSM::Pathname.for(segment)
39
- block.call([cprefix, node])
40
- node.each(cprefix, &block)
41
- end
42
- end
43
- end
44
-
45
- module NodeInsertion
46
- include NodeBase
47
-
48
- def unset(path)
49
- key = key_segments(path)
50
-
51
- if key.empty?
52
- remove_children
53
- return nil
54
- end
55
-
56
- segment = key.pop
57
- node = descendant(key)
58
-
59
- return unless node
60
-
61
- node.remove_child(segment)
62
-
63
- nil
64
- end
65
-
66
- def set(path)
67
- node = descendant!(path)
68
- node.from_path(path).mtime
69
- end
70
-
71
- protected
72
-
73
- def key_segments(key)
74
- return key if key.is_a?(Array)
75
- FSSM::Pathname.for(key).segments
76
- end
1
+ dir = File.dirname(__FILE__)
2
+ $LOAD_PATH.unshift dir unless $LOAD_PATH.include?(dir)
77
3
 
78
- def descendant(path)
79
- recurse(path, false)
80
- end
4
+ module FSSM
5
+ FileNotFoundError = Class.new(StandardError)
6
+ CallbackError = Class.new(StandardError)
81
7
 
82
- def descendant!(path)
83
- recurse(path, true)
8
+ class << self
9
+ def dbg(msg=nil)
10
+ STDERR.puts(msg)
84
11
  end
85
12
 
86
- def recurse(key, create=false)
87
- key = key_segments(key)
88
- node = self
13
+ def monitor(*args, &block)
14
+ monitor = FSSM::Monitor.new
15
+ context = args.empty? ? monitor : monitor.path(*args)
89
16
 
90
- until key.empty?
91
- segment = key.shift
92
- node = create ? node.child!(segment) : node.child(segment)
93
- return nil unless node
17
+ if block_given?
18
+ if block.arity == 1
19
+ block.call(context)
20
+ else
21
+ context.instance_eval(&block)
22
+ end
94
23
  end
95
24
 
96
- node
97
- end
98
- end
99
-
100
- module CacheDebug
101
- def set(path)
102
- FSSM.dbg("Cache#set(#{path})")
103
- super
104
- end
105
-
106
- def unset(path)
107
- FSSM.dbg("Cache#unset(#{path})")
108
- super
109
- end
110
-
111
- def ftype(ft)
112
- FSSM.dbg("Cache#ftype(#{ft})")
113
- super
114
- end
115
- end
116
-
117
- class Node
118
- include NodeBase
119
- include NodeEnumerable
120
-
121
- attr_accessor :mtime
122
- attr_accessor :ftype
123
-
124
- def <=>(other)
125
- return unless other.is_a?(::FSSM::Tree::Node)
126
- self.mtime <=> other.mtime
127
- end
128
-
129
- def from_path(path)
130
- path = FSSM::Pathname.for(path)
131
- @ftype = path.ftype
132
- # this handles bad symlinks without failing. why handle bad symlinks at
133
- # all? well, we could still be interested in their creation and deletion.
134
- @mtime = path.symlink? ? Time.at(0) : path.mtime
135
- self
25
+ monitor.run
136
26
  end
137
27
  end
28
+ end
138
29
 
139
- class Cache
140
- include NodeBase
141
- include NodeEnumerable
142
- include NodeInsertion
143
- include CacheDebug if $DEBUG
144
-
145
- def set(path)
146
- # all paths set from this level need to be absolute
147
- # realpath will fail on broken links
148
- path = FSSM::Pathname.for(path).expand_path
149
- super(path)
150
- end
151
-
152
- def files
153
- ftype('file')
154
- end
155
-
156
- def directories
157
- ftype('directory')
158
- end
159
-
160
- def links
161
- ftype('link')
162
- end
163
-
164
- alias symlinks links
30
+ require 'thread'
165
31
 
166
- private
32
+ require 'fssm/pathname'
33
+ require 'fssm/support'
34
+ require 'fssm/tree'
35
+ require 'fssm/path'
36
+ require 'fssm/state'
37
+ require 'fssm/monitor'
167
38
 
168
- def ftype(ft)
169
- inject({}) do |hash, (path, node)|
170
- hash["#{path}"] = node.mtime if node.ftype == ft
171
- hash
172
- end
173
- end
174
- end
175
-
176
- end
39
+ require "fssm/backends/#{FSSM::Support.backend.downcase}"
40
+ FSSM::Backends::Default = FSSM::Backends.const_get(FSSM::Support.backend)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: compass
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.0.pre3
4
+ version: 0.10.0.pre4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Eppstein
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-01-02 00:00:00 -08:00
12
+ date: 2010-01-04 00:00:00 -08:00
13
13
  default_executable: compass
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency