guard-coffeescript 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -75,7 +75,7 @@ will be compiled to
75
75
 
76
76
  public/javascripts/compiled/ui/buttons/toggle_button.js
77
77
 
78
- This behaviour can be switched off by passing the option ':shallow => false' to the guard, so that all JavaScripts will
78
+ This behaviour can be switched off by passing the option ':shallow => true' to the guard, so that all JavaScripts will
79
79
  be compiled directly to the output directory.
80
80
 
81
81
  == Development
@@ -4,10 +4,11 @@ module Guard
4
4
  class << self
5
5
 
6
6
  def run(files, watchers, options = {})
7
- message = notify_start(files, options)
8
- errors = compile_files(files, options, watchers)
9
- notify_result(errors, message)
10
-
7
+ notify_start(files, options)
8
+ changed_files, errors = compile_files(files, options, watchers)
9
+ notify_result(changed_files, errors)
10
+
11
+ changed_files
11
12
  rescue LoadError
12
13
  ::Guard::UI.error "Command 'coffee' not found. Please install CoffeeScript."
13
14
  end
@@ -17,22 +18,22 @@ module Guard
17
18
  def notify_start(files, options)
18
19
  message = options[:message] || "Compile #{ files.join(', ') }"
19
20
  ::Guard::UI.info message, :reset => true
20
- message
21
21
  end
22
22
 
23
23
  def compile_files(files, options, watchers)
24
- errors = []
25
- directories = detect_nested_directories(watchers, files, options)
24
+ errors = []
25
+ changed_files = []
26
+ directories = detect_nested_directories(watchers, files, options)
26
27
 
27
28
  directories.each do |directory, scripts|
28
- directory = File.expand_path(directory)
29
29
  scripts.each do |file|
30
30
  content, success = compile(file, options)
31
- process_compile_result(content, file, directory, errors, success)
31
+ changed_file = process_compile_result(content, file, directory, errors, success)
32
+ changed_files << changed_file
32
33
  end
33
34
  end
34
35
 
35
- errors
36
+ [changed_files.compact, errors]
36
37
  end
37
38
 
38
39
  def compile(file, options)
@@ -42,11 +43,16 @@ module Guard
42
43
 
43
44
  def process_compile_result(content, file, directory, errors, success)
44
45
  if success
45
- FileUtils.mkdir_p(directory) if !File.directory?(directory)
46
- File.open(File.join(directory, File.basename(file.gsub(/coffee$/, 'js'))), 'w') { |f| f.write(content) }
46
+ FileUtils.mkdir_p(File.expand_path(directory)) if !File.directory?(directory)
47
+ filename = File.join(directory, File.basename(file.gsub(/coffee$/, 'js')))
48
+ File.open(File.expand_path(filename), 'w') { |f| f.write(content) }
49
+
50
+ filename
47
51
  else
48
52
  errors << file + ': ' + content.split("\n").select { |line| line =~ /^Error:/ }.join("\n")
49
53
  ::Guard::UI.error(content)
54
+
55
+ nil
50
56
  end
51
57
  end
52
58
 
@@ -57,7 +63,7 @@ module Guard
57
63
 
58
64
  watchers.product(files).each do |watcher, file|
59
65
  if matches = file.match(watcher.pattern)
60
- target = File.join(options[:output], File.dirname(matches[1]))
66
+ target = File.join(options[:output], File.dirname(matches[1])).gsub(/\/\.$/, '')
61
67
  if directories[target]
62
68
  directories[target] << file
63
69
  else
@@ -69,9 +75,9 @@ module Guard
69
75
  directories
70
76
  end
71
77
 
72
- def notify_result(errors, message)
78
+ def notify_result(changed_files, errors)
73
79
  if errors.empty?
74
- message = message.gsub(/^Compile/, 'Successfully compiled')
80
+ message = "Successfully generated #{ changed_files.join(', ') }"
75
81
  ::Guard::Notifier.notify(message, :title => 'CoffeeScript results')
76
82
  else
77
83
  ::Guard::Notifier.notify(errors.join("\n"), :title => 'CoffeeScript results', :image => :failed)
@@ -1,5 +1,5 @@
1
1
  module Guard
2
2
  module CoffeeScriptVersion
3
- VERSION = '0.1.4'
3
+ VERSION = '0.1.5'
4
4
  end
5
5
  end
@@ -22,8 +22,18 @@ module Guard
22
22
  end
23
23
 
24
24
  def run_on_change(paths)
25
- Runner.run(Inspector.clean(paths), watchers, options)
25
+ changed_files = Runner.run(Inspector.clean(paths), watchers, options)
26
+ notify changed_files
26
27
  end
27
28
 
29
+ private
30
+
31
+ def notify changed_files
32
+ ::Guard.guards.each do |guard|
33
+ paths = Watcher.match_files(guard, changed_files)
34
+ guard.run_on_change paths unless paths.empty?
35
+ end
36
+ end
37
+
28
38
  end
29
39
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: guard-coffeescript
3
3
  version: !ruby/object:Gem::Version
4
- hash: 19
4
+ hash: 17
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 4
10
- version: 0.1.4
9
+ - 5
10
+ version: 0.1.5
11
11
  platform: ruby
12
12
  authors:
13
13
  - Michael Kessler
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-11-11 00:00:00 +01:00
18
+ date: 2010-11-12 00:00:00 +01:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency