sass 3.1.16 → 3.1.17

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.
@@ -1,59 +0,0 @@
1
- # A wrapper around the Listen gem. Adds support for listening to individual
2
- # files, as well as a somewhat cleaner event dispatch API.
3
- #
4
- # @private
5
- class Sass::Plugin::Listener
6
- def initialize
7
- @directories = {}
8
- yield self
9
- begin
10
- start!
11
- rescue Exception => e
12
- raise e unless e.is_a?(Interrupt)
13
- end
14
- end
15
-
16
- def directory(path, events)
17
- (@directories[path] ||= []) << events
18
- end
19
-
20
- def file(path, events)
21
- file_base = File.basename(path)
22
- directory(File.dirname(path), {
23
- :modified => file_event_fn(events[:modified], file_base),
24
- :added => file_event_fn(events[:added], file_base),
25
- :removed => file_event_fn(events[:removed], file_base)
26
- })
27
- end
28
-
29
- def start!
30
- listener = Listen::MultiListener.new(*@directories.keys) do |modified, added, removed|
31
- modified = modified.group_by {|path| File.dirname(path)}
32
- added = added.group_by {|path| File.dirname(path)}
33
- removed = removed.group_by {|path| File.dirname(path)}
34
-
35
- @directories.each do |dir, events|
36
- events.each do |e|
37
- run_events(modified[dir], e[:modified], dir)
38
- run_events(added[dir], e[:added], dir)
39
- run_events(removed[dir], e[:removed], dir)
40
- end
41
- end
42
- end.start
43
- end
44
-
45
- private
46
-
47
- def file_event_fn(event, file_base)
48
- lambda do |dir, base|
49
- next unless event
50
- next unless base == file_base
51
- event.call
52
- end
53
- end
54
-
55
- def run_events(paths, event, path)
56
- return if paths.nil? || event.nil?
57
- paths.each {|p| event[File.dirname(p), File.basename(p)]}
58
- end
59
- end