guard-coffeescript 1.4.0 → 2.0.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4efe9a6c2d20f53277808c0ecac3363fd384c296
4
- data.tar.gz: b77baf675bad3beae577351f9c6c3af593dd83f3
3
+ metadata.gz: 887d4228743c3c6c58f84dc764a8405e970d27be
4
+ data.tar.gz: 8d2b16ee663c98be7a22c730909bec4a5c9fd384
5
5
  SHA512:
6
- metadata.gz: 6f8a4f2e07387e25247dd3c6a8e590c865d40a9538b5e734a04eeeca1673278dd2dd1b1ce6d939e8336af61268d530751ddde2b4c94048a04a6371a4b80e5b39
7
- data.tar.gz: fc1704c85997a7eccb89ece38c5e1dde02e21b2d759a507a7c4ff748e4fdcb0cd9d271e239aae21e7960d681991cca7ddc97d2f9f20629c44c123b5e7ba6fbb1
6
+ metadata.gz: f2fec52e08b973acfa91184d7e471fa86bf39a16b7c3ada117fa3f0514a8ae15800ead30c80faaf6e0458685ce829e24ddd677e4f70a4f72809b284773d94e38
7
+ data.tar.gz: 3c541bcb267c644d37aa5b9690fdc3110422fa13e40e3313066608259d10b91ea39e6f868c876e0618b20031ac95391f6523a49de71e896a50dba1022ed3ea33
@@ -1,34 +1,31 @@
1
- require 'guard'
2
- require 'guard/guard'
3
- require 'guard/watcher'
1
+ require 'guard/compat/plugin'
4
2
 
5
3
  module Guard
6
-
7
4
  # The CoffeeScript guard that gets notifications about the following
8
5
  # Guard events: `start`, `stop`, `reload`, `run_all` and `run_on_change`.
9
6
  #
10
- class CoffeeScript < Guard
11
-
12
- autoload :Formatter, 'guard/coffeescript/formatter'
13
- autoload :Inspector, 'guard/coffeescript/inspector'
14
- autoload :Runner, 'guard/coffeescript/runner'
7
+ class CoffeeScript < Plugin
8
+ require 'guard/coffeescript/formatter'
9
+ require 'guard/coffeescript/inspector'
10
+ require 'guard/coffeescript/runner'
15
11
 
16
12
  DEFAULT_OPTIONS = {
17
- :bare => false,
18
- :shallow => false,
19
- :hide_success => false,
20
- :noop => false,
21
- :error_to_js => false,
22
- :all_on_start => false,
23
- :source_map => false
13
+ bare: false,
14
+ shallow: false,
15
+ hide_success: false,
16
+ noop: false,
17
+ error_to_js: false,
18
+ all_on_start: false,
19
+ source_map: false
24
20
  }
25
21
 
26
22
  # Initialize Guard::CoffeeScript.
27
23
  #
28
- # @param [Array<Guard::Watcher>] watchers the watchers in the Guard block
24
+
29
25
  # @param [Hash] options the options for the Guard
30
26
  # @option options [String] :input the input directory
31
27
  # @option options [String] :output the output directory
28
+ # @option options [Array<Guard::Watcher>] :watchers the watchers in the Guard block
32
29
  # @option options [Boolean] :bare do not wrap the output in a top level function
33
30
  # @option options [Boolean] :shallow do not create nested directories
34
31
  # @option options [Boolean] :hide_success hide success message notification
@@ -36,16 +33,23 @@ module Guard
36
33
  # @option options [Boolean] :noop do not generate an output file
37
34
  # @option options [Boolean] :source_map generate the source map files
38
35
  #
39
- def initialize(watchers = [], options = {})
40
- watchers = [] if !watchers
36
+
37
+ attr_reader :patterns
38
+
39
+ def initialize(options = {})
41
40
  defaults = DEFAULT_OPTIONS.clone
42
41
 
43
- if options[:input]
44
- defaults.merge!({ :output => options[:input] })
45
- watchers << ::Guard::Watcher.new(%r{^#{ options[:input] }/(.+\.(?:coffee|coffee\.md|litcoffee))$})
46
- end
42
+ @patterns = options.dup.delete(:patterns) || []
47
43
 
48
- super(watchers, defaults.merge(options))
44
+ msg = 'Invalid :patterns argument. Expected: Array, got %s'
45
+ fail ArgumentError, format(msg, @patterns.inspect) unless @patterns.is_a?(Array)
46
+
47
+ msg = ':input option not provided (see current template Guardfile)'
48
+ fail msg unless options[:input]
49
+
50
+ options[:output] = options[:input] unless options[:output]
51
+
52
+ super(defaults.merge(options))
49
53
  end
50
54
 
51
55
  # Gets called once when Guard starts.
@@ -61,7 +65,14 @@ module Guard
61
65
  # @raise [:task_has_failed] when stop has failed
62
66
  #
63
67
  def run_all
64
- run_on_modifications(Watcher.match_files(self, Dir.glob('**{,/*/**}/*.{coffee,coffee.md,litcoffee}')))
68
+ found = Dir.glob('**{,/*/**}/*.{coffee,coffee.md,litcoffee}')
69
+ found.select! do |file|
70
+ @patterns.any? do |pattern|
71
+ pattern.match(file)
72
+ end
73
+ end
74
+
75
+ run_on_modifications(found)
65
76
  end
66
77
 
67
78
  # Gets called when watched paths and files have changes.
@@ -70,7 +81,7 @@ module Guard
70
81
  # @raise [:task_has_failed] when stop has failed
71
82
  #
72
83
  def run_on_modifications(paths)
73
- changed_files, success = Runner.run(Inspector.clean(paths), watchers, options)
84
+ _changed_files, success = Runner.run(Inspector.clean(paths), @patterns, options)
74
85
 
75
86
  throw :task_has_failed unless success
76
87
  end
@@ -81,8 +92,7 @@ module Guard
81
92
  # @raise [:task_has_failed] when run_on_change has failed
82
93
  #
83
94
  def run_on_removals(paths)
84
- Runner.remove(Inspector.clean(paths, :missing_ok => true), watchers, options)
95
+ Runner.remove(Inspector.clean(paths, missing_ok: true), @patterns, options)
85
96
  end
86
-
87
97
  end
88
98
  end
@@ -0,0 +1,88 @@
1
+ require 'guard'
2
+ require 'guard/guard'
3
+ require 'guard/watcher'
4
+
5
+ module Guard
6
+
7
+ # The CoffeeScript guard that gets notifications about the following
8
+ # Guard events: `start`, `stop`, `reload`, `run_all` and `run_on_change`.
9
+ #
10
+ class CoffeeScript < Guard
11
+
12
+ autoload :Formatter, 'guard/coffeescript/formatter'
13
+ autoload :Inspector, 'guard/coffeescript/inspector'
14
+ autoload :Runner, 'guard/coffeescript/runner'
15
+
16
+ DEFAULT_OPTIONS = {
17
+ :bare => false,
18
+ :shallow => false,
19
+ :hide_success => false,
20
+ :noop => false,
21
+ :error_to_js => false,
22
+ :all_on_start => false,
23
+ :source_map => false
24
+ }
25
+
26
+ # Initialize Guard::CoffeeScript.
27
+ #
28
+ # @param [Array<Guard::Watcher>] watchers the watchers in the Guard block
29
+ # @param [Hash] options the options for the Guard
30
+ # @option options [String] :input the input directory
31
+ # @option options [String] :output the output directory
32
+ # @option options [Boolean] :bare do not wrap the output in a top level function
33
+ # @option options [Boolean] :shallow do not create nested directories
34
+ # @option options [Boolean] :hide_success hide success message notification
35
+ # @option options [Boolean] :all_on_start generate all JavaScripts files on start
36
+ # @option options [Boolean] :noop do not generate an output file
37
+ # @option options [Boolean] :source_map generate the source map files
38
+ #
39
+ def initialize(watchers = [], options = {})
40
+ watchers = [] if !watchers
41
+ defaults = DEFAULT_OPTIONS.clone
42
+
43
+ if options[:input]
44
+ defaults.merge!({ :output => options[:input] })
45
+ watchers << ::Guard::Watcher.new(%r{^#{ options[:input] }/(.+\.(?:coffee|coffee\.md|litcoffee))$})
46
+ end
47
+
48
+ super(watchers, defaults.merge(options))
49
+ end
50
+
51
+ # Gets called once when Guard starts.
52
+ #
53
+ # @raise [:task_has_failed] when stop has failed
54
+ #
55
+ def start
56
+ run_all if options[:all_on_start]
57
+ end
58
+
59
+ # Gets called when all files should be regenerated.
60
+ #
61
+ # @raise [:task_has_failed] when stop has failed
62
+ #
63
+ def run_all
64
+ run_on_modifications(Watcher.match_files(self, Dir.glob('**{,/*/**}/*.{coffee,coffee.md,litcoffee}')))
65
+ end
66
+
67
+ # Gets called when watched paths and files have changes.
68
+ #
69
+ # @param [Array<String>] paths the changed paths and files
70
+ # @raise [:task_has_failed] when stop has failed
71
+ #
72
+ def run_on_modifications(paths)
73
+ changed_files, success = Runner.run(Inspector.clean(paths), watchers, options)
74
+
75
+ throw :task_has_failed unless success
76
+ end
77
+
78
+ # Called on file(s) deletions that the Guard watches.
79
+ #
80
+ # @param [Array<String>] paths the deleted files or paths
81
+ # @raise [:task_has_failed] when run_on_change has failed
82
+ #
83
+ def run_on_removals(paths)
84
+ Runner.remove(Inspector.clean(paths, :missing_ok => true), watchers, options)
85
+ end
86
+
87
+ end
88
+ end
@@ -1,21 +1,19 @@
1
1
  module Guard
2
2
  class CoffeeScript
3
-
4
3
  # The Guard::CoffeeScript formatter collects console and
5
4
  # system notification methods and enhances them with
6
5
  # some color information.
7
6
  #
8
7
  module Formatter
9
8
  class << self
10
-
11
9
  # Print an info message to the console.
12
10
  #
13
11
  # @param [String] message the message to print
14
12
  # @param [Hash] options the output options
15
13
  # @option options [Boolean] :reset reset the UI
16
14
  #
17
- def info(message, options = { })
18
- ::Guard::UI.info(message, options)
15
+ def info(message, options = {})
16
+ Compat::UI.info(message, options)
19
17
  end
20
18
 
21
19
  # Print a debug message to the console.
@@ -24,8 +22,8 @@ module Guard
24
22
  # @param [Hash] options the output options
25
23
  # @option options [Boolean] :reset reset the UI
26
24
  #
27
- def debug(message, options = { })
28
- ::Guard::UI.debug(message, options)
25
+ def debug(message, options = {})
26
+ Compat::UI.debug(message, options)
29
27
  end
30
28
 
31
29
  # Print a red error message to the console.
@@ -34,8 +32,8 @@ module Guard
34
32
  # @param [Hash] options the output options
35
33
  # @option options [Boolean] :reset reset the UI
36
34
  #
37
- def error(message, options = { })
38
- ::Guard::UI.error(color(message, ';31'), options)
35
+ def error(message, options = {})
36
+ Compat::UI.error(color(message, ';31'), options)
39
37
  end
40
38
 
41
39
  # Print a green success message to the console.
@@ -44,9 +42,9 @@ module Guard
44
42
  # @param [Hash] options the output options
45
43
  # @option options [Boolean] :reset reset the UI
46
44
  #
47
- def success(message, options = { })
45
+ def success(message, options = {})
48
46
  stamped_message = "#{Time.now.strftime('%r')} #{message}"
49
- ::Guard::UI.info(color(stamped_message, ';32'), options)
47
+ Compat::UI.info(color(stamped_message, ';32'), options)
50
48
  end
51
49
 
52
50
  # Outputs a system notification.
@@ -56,8 +54,8 @@ module Guard
56
54
  # @option options [Symbol, String] :image the image to use, either :failed, :pending or :success, or an image path
57
55
  # @option options [String] :title the title of the system notification
58
56
  #
59
- def notify(message, options = { })
60
- ::Guard::Notifier.notify(message, options)
57
+ def notify(message, options = {})
58
+ Compat::UI.notify(message, options)
61
59
  end
62
60
 
63
61
  private
@@ -68,9 +66,8 @@ module Guard
68
66
  # @param [String] color_code the color code
69
67
  #
70
68
  def color(text, color_code)
71
- ::Guard::UI.send(:color_enabled?) ? "\e[0#{ color_code }m#{ text }\e[0m" : text
69
+ Compat::UI.send(:color_enabled?) ? "\e[0#{ color_code }m#{ text }\e[0m" : text
72
70
  end
73
-
74
71
  end
75
72
  end
76
73
  end
@@ -0,0 +1,74 @@
1
+ module Guard
2
+ class CoffeeScript
3
+ # The Guard::CoffeeScript formatter collects console and
4
+ # system notification methods and enhances them with
5
+ # some color information.
6
+ #
7
+ module Formatter
8
+ class << self
9
+ # Print an info message to the console.
10
+ #
11
+ # @param [String] message the message to print
12
+ # @param [Hash] options the output options
13
+ # @option options [Boolean] :reset reset the UI
14
+ #
15
+ def info(message, options = {})
16
+ ::Guard::UI.info(message, options)
17
+ end
18
+
19
+ # Print a debug message to the console.
20
+ #
21
+ # @param [String] message the message to print
22
+ # @param [Hash] options the output options
23
+ # @option options [Boolean] :reset reset the UI
24
+ #
25
+ def debug(message, options = {})
26
+ ::Guard::UI.debug(message, options)
27
+ end
28
+
29
+ # Print a red error message to the console.
30
+ #
31
+ # @param [String] message the message to print
32
+ # @param [Hash] options the output options
33
+ # @option options [Boolean] :reset reset the UI
34
+ #
35
+ def error(message, options = {})
36
+ ::Guard::UI.error(color(message, ';31'), options)
37
+ end
38
+
39
+ # Print a green success message to the console.
40
+ #
41
+ # @param [String] message the message to print
42
+ # @param [Hash] options the output options
43
+ # @option options [Boolean] :reset reset the UI
44
+ #
45
+ def success(message, options = {})
46
+ stamped_message = "#{Time.now.strftime('%r')} #{message}"
47
+ ::Guard::UI.info(color(stamped_message, ';32'), options)
48
+ end
49
+
50
+ # Outputs a system notification.
51
+ #
52
+ # @param [String] message the message to print
53
+ # @param [Hash] options the output options
54
+ # @option options [Symbol, String] :image the image to use, either :failed, :pending or :success, or an image path
55
+ # @option options [String] :title the title of the system notification
56
+ #
57
+ def notify(message, options = {})
58
+ ::Guard::Notifier.notify(message, options)
59
+ end
60
+
61
+ private
62
+
63
+ # Print a info message to the console.
64
+ #
65
+ # @param [String] text the text to colorize
66
+ # @param [String] color_code the color code
67
+ #
68
+ def color(text, color_code)
69
+ ::Guard::UI.send(:color_enabled?) ? "\e[0#{ color_code }m#{ text }\e[0m" : text
70
+ end
71
+ end
72
+ end
73
+ end
74
+ end
@@ -1,12 +1,10 @@
1
1
  module Guard
2
2
  class CoffeeScript
3
-
4
3
  # The inspector verifies of the changed paths are valid
5
4
  # for Guard::CoffeeScript.
6
5
  #
7
6
  module Inspector
8
7
  class << self
9
-
10
8
  # Clean the changed paths and return only valid
11
9
  # CoffeeScript files.
12
10
  #
@@ -31,9 +29,8 @@ module Guard
31
29
  # @return [Boolean] when the file valid
32
30
  #
33
31
  def coffee_file?(path, options)
34
- path =~ /\.(?:coffee|coffee\.md|litcoffee)$/ && (options[:missing_ok] || File.exists?(path))
32
+ path =~ /\.(?:coffee|coffee\.md|litcoffee)$/ && (options[:missing_ok] || File.exist?(path))
35
33
  end
36
-
37
34
  end
38
35
  end
39
36
  end
@@ -4,7 +4,6 @@ module Guard
4
4
  class CoffeeScript
5
5
  module Runner
6
6
  class << self
7
-
8
7
  attr_accessor :last_run_failed
9
8
 
10
9
  # The CoffeeScript runner handles the CoffeeScript compilation,
@@ -12,7 +11,7 @@ module Guard
12
11
  # to the console and triggers optional system notifications.
13
12
  #
14
13
  # @param [Array<String>] files the spec files or directories
15
- # @param [Array<Guard::Watcher>] watchers the Guard watchers in the block
14
+ # @param [Array<Regexp>] patterns the patterns in the block
16
15
  # @param [Hash] options the options for the execution
17
16
  # @option options [String] :input the input directory
18
17
  # @option options [String] :output the output directory
@@ -23,11 +22,10 @@ module Guard
23
22
  # @option options [Boolean] :source_map generate the source map files
24
23
  # @return [Array<Array<String>, Boolean>] the result for the compilation run
25
24
  #
26
- def run(files, watchers, options = { })
25
+ def run(files, patterns, options = {})
27
26
  notify_start(files, options)
28
- changed_files, errors = compile_files(files, watchers, options)
27
+ changed_files, errors = compile_files(files, patterns, options)
29
28
  notify_result(changed_files, errors, options)
30
-
31
29
  [changed_files, errors.empty?]
32
30
  end
33
31
 
@@ -35,30 +33,30 @@ module Guard
35
33
  # locating the output javascript file and removing it.
36
34
  #
37
35
  # @param [Array<String>] files the spec files or directories
38
- # @param [Array<Guard::Watcher>] watchers the Guard watchers in the block
36
+ # @param [Array<Regexp>] patterns the patterns in the block
39
37
  # @param [Hash] options the options for the removal
40
38
  # @option options [String] :output the output directory
41
39
  # @option options [Boolean] :shallow do not create nested directories
42
40
  #
43
- def remove(files, watchers, options = { })
41
+ def remove(files, patterns, options = {})
44
42
  removed_files = []
45
- directories = detect_nested_directories(watchers, files, options)
43
+ directories = detect_nested_directories(files, patterns, options)
46
44
 
47
45
  directories.each do |directory, scripts|
48
46
  scripts.each do |file|
49
47
  javascript = javascript_file_name(file, directory)
50
- if File.exists?(javascript)
48
+ if File.exist?(javascript)
51
49
  FileUtils.remove_file(javascript)
52
50
  removed_files << javascript
53
51
  end
54
52
  end
55
53
  end
56
54
 
57
- if removed_files.length > 0
58
- message = "Removed #{ removed_files.join(', ') }"
59
- Formatter.success(message)
60
- Formatter.notify(message, :title => 'CoffeeScript results')
61
- end
55
+ return unless removed_files.length > 0
56
+
57
+ message = "Removed #{ removed_files.join(', ') }"
58
+ Formatter.success(message)
59
+ Formatter.notify(message, title: 'CoffeeScript results')
62
60
  end
63
61
 
64
62
  private
@@ -71,20 +69,19 @@ module Guard
71
69
  #
72
70
  def notify_start(files, options)
73
71
  message = options[:message] || (options[:noop] ? 'Verify ' : 'Compile ') + files.join(', ')
74
- Formatter.info(message, :reset => true)
72
+ Formatter.info(message, reset: true)
75
73
  end
76
74
 
77
75
  # Compiles all CoffeeScript files and writes the JavaScript files.
78
76
  #
79
77
  # @param [Array<String>] files the files to compile
80
- # @param [Array<Guard::Watcher>] watchers the Guard watchers in the block
81
78
  # @param [Hash] options the options for the execution
82
79
  # @return [Array<Array<String>, Array<String>] the result for the compilation run
83
80
  #
84
- def compile_files(files, watchers, options)
81
+ def compile_files(files, patterns, options)
85
82
  errors = []
86
83
  changed_files = []
87
- directories = detect_nested_directories(watchers, files, options)
84
+ directories = detect_nested_directories(files, patterns, options)
88
85
 
89
86
  directories.each do |directory, scripts|
90
87
  scripts.each do |file|
@@ -92,7 +89,7 @@ module Guard
92
89
  js, map = compile(file, options)
93
90
  changed_files << write_javascript_file(js, map, file, directory, options)
94
91
 
95
- rescue => e
92
+ rescue RuntimeError, ::CoffeeScript::EngineError, ::CoffeeScript::CompilationError => e
96
93
  error_message = file + ': ' + e.message.to_s
97
94
 
98
95
  if options[:error_to_js]
@@ -123,6 +120,7 @@ module Guard
123
120
  if options[:source_map]
124
121
  file_options.merge! options_for_source_map(filename, options)
125
122
  result = ::CoffeeScript.compile(file, file_options)
123
+ fail 'CoffeeScript.compile returned nil' if result.nil?
126
124
  js, map = result['js'], result['v3SourceMap']
127
125
  else
128
126
  js = ::CoffeeScript.compile(file, file_options)
@@ -147,9 +145,7 @@ module Guard
147
145
  file_options[:bare] = file_options[:bare].include?(filename)
148
146
  end
149
147
 
150
- if file[/\.(?:coffee\.md|litcoffee)$/]
151
- file_options[:literate] = true
152
- end
148
+ file_options[:literate] = true if file[/\.(?:coffee\.md|litcoffee)$/]
153
149
 
154
150
  file_options
155
151
  end
@@ -164,10 +160,10 @@ module Guard
164
160
  filename = Pathname.new(filename).relative_path_from(Pathname.new(options[:input])).to_s if options[:input]
165
161
 
166
162
  {
167
- :sourceMap => true,
168
- :generatedFile => filename.gsub(/((?:js\.)?(?:coffee|coffee\.md|litcoffee))$/, 'js'),
169
- :sourceFiles => [filename],
170
- :sourceRoot => options[:source_root] || options[:input] || '',
163
+ sourceMap: true,
164
+ generatedFile: filename.gsub(/((?:js\.)?(?:coffee|coffee\.md|litcoffee))$/, 'js'),
165
+ sourceFiles: [filename],
166
+ sourceRoot: options[:source_root] || options[:input] || ''
171
167
  }
172
168
  end
173
169
 
@@ -190,10 +186,10 @@ module Guard
190
186
 
191
187
  if options[:source_map]
192
188
  map_name = filename + '.map'
193
- js += "\n/*\n//@ sourceMappingURL=#{File.basename(map_name)}\n*/\n"
189
+ js += "\n//# sourceMappingURL=#{File.basename(map_name)}\n"
194
190
  end
195
191
 
196
- FileUtils.mkdir_p(File.expand_path(directory)) if !File.directory?(directory)
192
+ FileUtils.mkdir_p(File.expand_path(directory)) unless File.directory?(directory)
197
193
  File.open(File.expand_path(filename), 'w') { |f| f.write(js) }
198
194
 
199
195
  if options[:source_map]
@@ -215,28 +211,28 @@ module Guard
215
211
  end
216
212
 
217
213
  # Detects the output directory for each CoffeeScript file. Builds
218
- # the product of all watchers and assigns to each directory
214
+ # the product of all patterns and assigns to each directory
219
215
  # the files to which it belongs to.
220
216
  #
221
- # @param [Array<Guard::Watcher>] watchers the Guard watchers in the block
222
217
  # @param [Array<String>] files the CoffeeScript files
218
+ # @param [Array<Regexp>] patterns the patterns in the block
223
219
  # @param [Hash] options the options for the execution
224
220
  # @option options [String] :output the output directory
225
221
  # @option options [Boolean] :shallow do not create nested directories
226
222
  #
227
- def detect_nested_directories(watchers, files, options)
223
+ def detect_nested_directories(files, patterns, options)
228
224
  return { options[:output] => files } if options[:shallow]
229
225
 
230
- directories = { }
226
+ directories = {}
231
227
 
232
- watchers.product(files).each do |watcher, file|
233
- if matches = file.match(watcher.pattern)
234
- target = matches[1] ? File.join(options[:output], File.dirname(matches[1])).gsub(/\/\.$/, '') : options[:output] || File.dirname(file)
235
- if directories[target]
236
- directories[target] << file
237
- else
238
- directories[target] = [file]
239
- end
228
+ patterns.product(files).each do |pattern, file|
229
+ next unless (matches = file.match(pattern))
230
+
231
+ target = matches[1] ? File.join(options[:output], File.dirname(matches[1])).gsub(/\/\.$/, '') : options[:output] || File.dirname(file)
232
+ if directories[target]
233
+ directories[target] << file
234
+ else
235
+ directories[target] = [file]
240
236
  end
241
237
  end
242
238
 
@@ -251,18 +247,17 @@ module Guard
251
247
  # @option options [Boolean] :hide_success hide success message notification
252
248
  # @option options [Boolean] :noop do not generate an output file
253
249
  #
254
- def notify_result(changed_files, errors, options = { })
250
+ def notify_result(changed_files, errors, options = {})
255
251
  if !errors.empty?
256
252
  self.last_run_failed = true
257
- Formatter.notify(errors.join("\n"), :title => 'CoffeeScript results', :image => :failed, :priority => 2)
253
+ Formatter.notify(errors.join("\n"), title: 'CoffeeScript results', image: :failed, priority: 2)
258
254
  elsif !options[:hide_success] || last_run_failed
259
255
  self.last_run_failed = false
260
256
  message = "Successfully #{ options[:noop] ? 'verified' : 'generated' } #{ changed_files.join(', ') }"
261
257
  Formatter.success(message)
262
- Formatter.notify(message, :title => 'CoffeeScript results')
258
+ Formatter.notify(message, title: 'CoffeeScript results')
263
259
  end
264
260
  end
265
-
266
261
  end
267
262
  end
268
263
  end