guard-haml-ext 0.6

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 1c511c716e07156432d4acd997e324a962566214
4
+ data.tar.gz: ef7ddbc18f417cba46571264eb48ba761efeaf20
5
+ SHA512:
6
+ metadata.gz: 81954ecbe85cf06ecf05a56ec8dd5a2805852b6db336d2a5c720afa4914dea354c53dc407f85e04a7854acb176529675fd7dd19221db47a0366e88de94a7353a
7
+ data.tar.gz: 81f47a0c8a3301049b8d2d1d57e4e638dc424451ca5d7b7cc1226df766a62a04d516737e0a2f443ae53ebd0d4e7ceea9b69c6039e7c9a3c0ab2ebae79ff8fe9b
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ # A sample Gemfile
2
+ source "http://rubygems.org"
3
+
4
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,19 @@
1
+ Copyright (C) 2011 by Immanuel Häussermann
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ of this software and associated documentation files (the "Software"), to deal
5
+ in the Software without restriction, including without limitation the rights
6
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ copies of the Software, and to permit persons to whom the Software is
8
+ furnished to do so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in
11
+ all copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
+ THE SOFTWARE.
@@ -0,0 +1,100 @@
1
+ # Guard::Haml
2
+
3
+ Watches HAML files, compiles them to HTML on change.
4
+
5
+ [![Build Status](https://secure.travis-ci.org/manufaktor/guard-haml.png?branch=development)](http://travis-ci.org/manufaktor/guard-haml)
6
+
7
+
8
+ ## Install
9
+
10
+ As the gem name suggests this is a guard extension. Make sure you get [guard](https://github.com/guard/guard) first.
11
+
12
+ Install the gem:
13
+
14
+ gem install guard-haml
15
+
16
+ Add it to your Gemfile if you're using bundler (you should)
17
+
18
+ gem 'guard-haml'
19
+
20
+ Add a basic guard setup:
21
+
22
+ guard init haml
23
+
24
+ ## Options
25
+
26
+ ### Configuring the output destination
27
+
28
+ If you want to change the output directory use the `output` option in your
29
+ Guardfile, e.g.:
30
+
31
+ guard 'haml', :output => 'public' do
32
+ watch %r{^src/.+(\.html\.haml)}
33
+ end
34
+
35
+ This output is relative to the Guardfile.
36
+
37
+ ### Multiple output option
38
+
39
+ This lets you compile to two (or more) html files from one haml file. This comes in handy if you want to compile to both a dev and prod build directory, for example:
40
+
41
+ guard 'haml', { :input => 'markup', :output => ['public/dev', 'public/build'] } do
42
+ watch(%r{^.+(\.haml)$})
43
+ end
44
+
45
+ If you maintain your haml files in a directory that should not be part of the output path, you can set the `input` option, e.g.:
46
+
47
+ guard 'haml', :output => 'public', :input => 'src' do
48
+ watch %r{^src/.+(\.html\.haml)}
49
+ end
50
+
51
+ So when you edit a file `src/partials/_partial.html.haml`
52
+ it will be saved to `public/partials/_partial.html` without the `src`.
53
+
54
+ ### File extensions
55
+
56
+ The guard extension will try to add the correct extension based off the input file name. You can provide multiple extensions to control the file name.
57
+
58
+ "foo.haml" -> "foo.html"
59
+ "foo" -> "foo.html"
60
+ "foo.txt" -> "foo.txt.html"
61
+ "foo.php.haml" -> "foo.php"
62
+
63
+ You can override the default extension (`html`) using the `default_ext` option:
64
+
65
+ guard 'haml', :default_ext => 'txt' do
66
+ watch %r{^src/.+(\.html\.haml)}
67
+ end
68
+
69
+ ### Compile when starting guard
70
+
71
+ If you want to compile haml files on guard start you can use `run_at_start` option.
72
+
73
+ guard 'haml', :output => 'public', :input => 'src', :run_at_start => true do
74
+ watch %r{^src/.+(\.html\.haml)}
75
+ end
76
+
77
+ ### Guard notifications
78
+
79
+ Also you can configure guard notifications (to Growl/lib-notify/Notifu) by setting `notifications` option to `true`
80
+
81
+ guard 'haml', :output => 'public', :input => 'src', :notifications => true do
82
+ watch %r{^src/.+(\.html\.haml)}
83
+ end
84
+
85
+ ### Configuring HAML
86
+
87
+ If you want to pass options to the Haml engine, you can set the `haml_options` option, e.g.:
88
+
89
+ guard 'haml', :output => 'public', :input => 'src', :haml_options => { :ugly => true } do
90
+ watch %r{^src/.+(\.html\.haml)}
91
+ end
92
+
93
+ This will produce compressed HTML. See [Haml Reference](http://haml.info/docs/yardoc/file.HAML_REFERENCE.html#options) for more details.
94
+
95
+ ## Development
96
+
97
+ * Source is hosted on [Github: guard-haml](https://github.com/manufaktor/guard-haml)
98
+ * Report issues/questions/feature requests on the [Github Issue tracker for guard-haml](https://github.com/manufaktor/guard-haml/issues)
99
+
100
+ Pull requests are welcome. If you are adding something new that is worth documenting, please do not forget to note it in the README.
@@ -0,0 +1,125 @@
1
+ require 'guard'
2
+ require 'guard/guard'
3
+ require 'guard/watcher'
4
+ require 'haml'
5
+
6
+ module Guard
7
+ class Haml < Guard
8
+ autoload :Notifier, 'guard/haml/notifier'
9
+
10
+ def initialize(watchers = [], options = {})
11
+ @options = {
12
+ :notifications => true,
13
+ :default_ext => 'html'
14
+ }.merge options
15
+ super(watchers, @options)
16
+ end
17
+
18
+ def start
19
+ run_all if @options[:run_at_start]
20
+ end
21
+
22
+ def stop
23
+ true
24
+ end
25
+
26
+ def reload
27
+ run_all
28
+ end
29
+
30
+ def run_all
31
+ run_on_changes(Watcher.match_files(self, Dir.glob(File.join('**', '*.*'))))
32
+ end
33
+
34
+ def run_on_changes(paths)
35
+ paths.each do |file|
36
+ output_files = get_output(file)
37
+ compiled_haml = compile_haml(file)
38
+ output_files.each do |output_file|
39
+ FileUtils.mkdir_p File.dirname(output_file)
40
+ File.open(output_file, 'w') { |f| f.write(compiled_haml) }
41
+ end
42
+ message = "Successfully compiled haml to html!\n"
43
+ message += "# #{file} -> #{output_files.join(', ')}".gsub("#{Bundler.root.to_s}/", '')
44
+ ::Guard::UI.info message
45
+ Notifier.notify( true, message ) if @options[:notifications]
46
+ end
47
+ notify paths
48
+ end
49
+
50
+ private
51
+
52
+ def compile_haml file
53
+ begin
54
+ content = File.new(file).read
55
+ engine = ::Haml::Engine.new(content, (@options[:haml_options] || {}))
56
+ engine.render
57
+ rescue StandardError => error
58
+ message = "HAML compilation failed!\nError: #{error.message}"
59
+ ::Guard::UI.error message
60
+ Notifier.notify( false, message ) if @options[:notifications]
61
+ throw :task_has_failed
62
+ end
63
+ end
64
+
65
+ # Get the file path to output the html based on the file being
66
+ # built. The output path is relative to where guard is being run.
67
+ #
68
+ # @param file [String, Array<String>] path to file being built
69
+ # @return [Array<String>] path(s) to file where output should be written
70
+ #
71
+ def get_output(file)
72
+ input_file_dir = File.dirname(file)
73
+
74
+ file_name = get_file_name(file)
75
+
76
+ input_file_dir = input_file_dir.gsub(Regexp.new("#{@options[:input]}(\/){0,1}"), '') if @options[:input]
77
+ if @options[:output]
78
+ Array(@options[:output]).map do |output_dir|
79
+ File.join(output_dir, input_file_dir, file_name)
80
+ end
81
+ else
82
+ if input_file_dir == ''
83
+ [file_name]
84
+ else
85
+ [File.join(input_file_dir, file_name)]
86
+ end
87
+ end
88
+ end
89
+
90
+ # Generate a file name based on the provided file path.
91
+ # Provide a logical extension.
92
+ #
93
+ # Examples:
94
+ # "path/foo.haml" -> "foo.html"
95
+ # "path/foo" -> "foo.html"
96
+ # "path/foo.bar" -> "foo.bar.html"
97
+ # "path/foo.bar.haml" -> "foo.bar"
98
+ #
99
+ # @param file String path to file
100
+ # @return String file name including extension
101
+ #
102
+ def get_file_name(file)
103
+ sub_strings = File.basename(file).split('.')
104
+ base_name, extensions = sub_strings.first, sub_strings[1..-1]
105
+
106
+ if extensions.last == 'haml'
107
+ extensions.pop
108
+ if extensions.empty?
109
+ [base_name, @options[:default_ext]].join('.')
110
+ else
111
+ [base_name, extensions].flatten.join('.')
112
+ end
113
+ else
114
+ [base_name, extensions, @options[:default_ext]].flatten.join('.')
115
+ end
116
+ end
117
+
118
+ def notify(changed_files)
119
+ ::Guard.guards.reject{ |guard| guard == self }.each do |guard|
120
+ paths = Watcher.match_files(guard, changed_files)
121
+ guard.run_on_changes paths unless paths.empty?
122
+ end
123
+ end
124
+ end
125
+ end
@@ -0,0 +1,20 @@
1
+ # encoding: utf-8
2
+
3
+ module Guard
4
+ class Haml
5
+ class Notifier
6
+ class << self
7
+ def image result
8
+ result ? :success : :failed
9
+ end
10
+
11
+ def notify( result, message )
12
+ ::Guard::Notifier.notify( message,
13
+ :title => 'Guard::Haml',
14
+ :image => image( result )
15
+ )
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,11 @@
1
+ # Sample guardfile block for Guard::Haml
2
+ # You can use some options to change guard-haml configuration
3
+ # :output => 'public' set output directory for compiled files
4
+ # :input => 'src' set input directory with haml files
5
+ # :run_at_start => true compile files when guard starts
6
+ # :notifications => true send notifictions to Growl/libnotify/Notifu
7
+ # :haml_options => { :ugly => true } pass options to the Haml engine
8
+
9
+ guard 'haml' do
10
+ watch(/^.+(\.html\.haml)/)
11
+ end
@@ -0,0 +1,5 @@
1
+ module Guard
2
+ class HamlVersion
3
+ VERSION = '0.6'
4
+ end
5
+ end
@@ -0,0 +1,10 @@
1
+ !!!
2
+ %html(lang="en")
3
+ %head
4
+ %meta(charset="utf-8")
5
+ %title Guard::Haml
6
+ %body
7
+ .content
8
+ %h1 Welcome to Guard::Haml
9
+ %p Testing
10
+ = FAILED!
@@ -0,0 +1,9 @@
1
+ !!!
2
+ %html(lang="en")
3
+ %head
4
+ %meta(charset="utf-8")
5
+ %title Guard::Haml
6
+ %body
7
+ .content
8
+ %h1 Welcome to Guard::Haml
9
+ %p Testing
@@ -0,0 +1,9 @@
1
+ !!!
2
+ %html(lang="en")
3
+ %head
4
+ %meta(charset="utf-8")
5
+ %title Guard::Haml
6
+ %body
7
+ .content
8
+ %h1 Welcome to Guard::Haml
9
+ %p Testing
@@ -0,0 +1,39 @@
1
+ require 'spec_helper'
2
+
3
+ describe Guard::Haml::Notifier do
4
+ subject { described_class }
5
+
6
+ describe '#image' do
7
+ context 'when recieves true' do
8
+ specify { subject.image(true).should be :success }
9
+ end
10
+
11
+ context 'when recieves false' do
12
+ specify { subject.image(false).should be :failed }
13
+ end
14
+ end
15
+
16
+ describe '#notify' do
17
+ context 'when recieves true with message' do
18
+ it 'should call Guard::Notifier with success image' do
19
+ ::Guard::Notifier.should_receive(:notify).with(
20
+ 'Successful compilation!',
21
+ :title => 'Guard::Haml',
22
+ :image => :success
23
+ )
24
+ subject.notify(true, 'Successful compilation!')
25
+ end
26
+ end
27
+
28
+ context 'when recieves false with message' do
29
+ it 'should call Guard::Notifier with failed image' do
30
+ ::Guard::Notifier.should_receive(:notify).with(
31
+ 'Compilation failed!',
32
+ :title => 'Guard::Haml',
33
+ :image => :failed
34
+ )
35
+ subject.notify(false, 'Compilation failed!')
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,259 @@
1
+ require 'spec_helper'
2
+
3
+ describe Guard::Haml do
4
+ let(:subject_with_options) { described_class.new( [],
5
+ :notifications => false,
6
+ :run_at_start => true) }
7
+ let(:subject_notifiable) { described_class.new( [],
8
+ :notifications => true ) }
9
+ let(:notifier) { Guard::Haml::Notifier }
10
+
11
+ describe "class" do
12
+ it 'should autoload Notifier class' do
13
+ expect { Guard::Haml::Notifier }.not_to raise_error
14
+ end
15
+ end
16
+
17
+ describe '#new' do
18
+ context 'notifications option by default' do
19
+ specify { subject.options[:notifications].should be_true }
20
+ end
21
+
22
+ context "when recieves options hash" do
23
+ it 'should merge it to @options instance variable' do
24
+ subject_with_options.options[:notifications].should be_false
25
+ subject_with_options.options[:run_at_start].should be_true
26
+ end
27
+ end
28
+ end
29
+
30
+ describe '#start' do
31
+ context 'by default' do
32
+ it 'should not call #run_all' do
33
+ subject.should_not_receive(:run_all).and_return(true)
34
+ subject.start
35
+ end
36
+ end
37
+
38
+ context 'when run_on_start option set to true' do
39
+ it 'should call #run_all' do
40
+ subject_with_options.should_receive(:run_all).and_return(true)
41
+ subject_with_options.start
42
+ end
43
+ end
44
+
45
+ context 'when run_on_start option set to false' do
46
+ before do
47
+ subject.options[:run_at_start] = false
48
+ end
49
+
50
+ it 'should not call #run_all' do
51
+ subject.should_not_receive(:run_all).and_return(true)
52
+ subject.start
53
+ end
54
+ end
55
+ end
56
+
57
+ describe '#stop' do
58
+ specify { subject.stop.should be_true }
59
+ end
60
+
61
+ describe '#reload' do
62
+ it 'should call #run_all' do
63
+ subject.should_receive(:run_all).and_return(true)
64
+ subject.reload
65
+ end
66
+ end
67
+
68
+ describe '#run_all' do
69
+ it 'should rebuild all files being watched' do
70
+ Guard::Haml.stub(:run_on_change).with([]).and_return([])
71
+ Guard.stub(:guards).and_return([subject])
72
+ subject.run_all
73
+ end
74
+ end
75
+
76
+ describe '#get_output' do
77
+ context 'by default' do
78
+ it 'should return test/index.html.haml as [test/index.html]' do
79
+ subject.send(:get_output, 'test/index.html.haml').
80
+ should eq(['test/index.html'])
81
+ end
82
+
83
+ it 'should return test/index.htm.haml as [test/index.htm]' do
84
+ subject.send(:get_output, 'test/index.htm.haml').
85
+ should eq(['test/index.htm'])
86
+ end
87
+
88
+ it 'should return test/index.haml as [test/index.html]' do
89
+ subject.send(:get_output, 'test/index.haml').
90
+ should eq(['test/index.html'])
91
+ end
92
+ end
93
+
94
+ context 'when the output option is set to "demo/output"' do
95
+ before do
96
+ subject.options[:output] = 'demo/output'
97
+ end
98
+
99
+ it 'should return test/index.html.haml as [demo/output/test/index.html.haml]' do
100
+ subject.send(:get_output, 'test/index.html.haml').
101
+ should eq(['demo/output/test/index.html'])
102
+ end
103
+ end
104
+
105
+ context 'when the output option is set to ["demo/output", "demo2/output"]' do
106
+ before do
107
+ subject.options[:output] = ['demo1/output', 'demo2/output']
108
+ end
109
+
110
+ it 'should return test/index.html.haml as [demo1/output/test/index.html.haml, demo2/output/test/index.html.haml]' do
111
+ subject.send(:get_output, 'test/index.html.haml').
112
+ should eq(['demo1/output/test/index.html', 'demo2/output/test/index.html'])
113
+ end
114
+ end
115
+
116
+ context 'when the default extensions is set to "txt"' do
117
+ before do
118
+ subject.options[:default_ext] = 'txt'
119
+ end
120
+
121
+ it 'should return test/index.haml as test/index.txt' do
122
+ subject.send(:get_output, 'test/index.haml').
123
+ should eq(['test/index.txt'])
124
+ end
125
+
126
+ it 'should return test/index.php.haml as test/index.php due to the second extension' do
127
+ subject.send(:get_output, 'test/index.php.haml').
128
+ should eq(['test/index.php'])
129
+ end
130
+ end
131
+
132
+
133
+
134
+ context 'when the exclude_base_dir option is set to "test/ignore"' do
135
+ before do
136
+ subject.options[:input] = 'test/ignore'
137
+ end
138
+
139
+ it 'should return test/ignore/index.html.haml as [index.html]' do
140
+ subject.send(:get_output, 'test/ignore/index.html.haml').
141
+ should eq(['index.html'])
142
+ end
143
+
144
+ context 'when the output option is set to "demo/output"' do
145
+ before do
146
+ subject.options[:output] = 'demo/output'
147
+ end
148
+
149
+ it 'should return test/ignore/abc/index.html.haml as [demo/output/abc/index.html]' do
150
+ subject.send(:get_output, 'test/ignore/abc/index.html.haml').
151
+ should eq(['demo/output/abc/index.html'])
152
+ end
153
+ end
154
+ end
155
+
156
+ context 'when the input file contains a second extension"' do
157
+ it 'should return test/index.php.haml as [test/index.php]' do
158
+ subject.send(:get_output, 'test/index.php.haml').
159
+ should eq(['test/index.php'])
160
+ end
161
+ end
162
+ end
163
+
164
+ describe '#get_file_name' do
165
+ context 'by default (if a ".haml" extension has been defined)' do
166
+ it 'should return the file name with the default extension ".html"' do
167
+ subject.send(:get_file_name, 'test/index.haml').
168
+ should eq('index.html')
169
+ end
170
+ end
171
+
172
+ context 'if no extension has been defined at all' do
173
+ it 'should return the file name with the default extension ".html"' do
174
+ subject.send(:get_file_name, 'test/index').
175
+ should eq('index.html')
176
+ end
177
+ end
178
+
179
+ context 'if an extension other than ".haml" has been defined' do
180
+ it 'should return the file name with the default extension ".html"' do
181
+ subject.send(:get_file_name, 'test/index.foo').
182
+ should eq('index.foo.html')
183
+ end
184
+ end
185
+
186
+ context 'if multiple extensions including ".haml" have been defined' do
187
+ it 'should return the file name with the extension second to last' do
188
+ subject.send(:get_file_name, 'test/index.foo.haml').
189
+ should eq('index.foo')
190
+ end
191
+ end
192
+ end
193
+
194
+ describe '#run_on_changes' do
195
+ it 'should notify other guards upon completion' do
196
+ subject.should_receive(:notify).with([])
197
+ subject.run_on_changes([])
198
+ end
199
+
200
+ context 'when notifications option set to true' do
201
+ let(:success_message) { "Successfully compiled haml to html!\n" }
202
+
203
+ context 'with one output' do
204
+ after do
205
+ File.unlink "#{@fixture_path}/test.html"
206
+ end
207
+
208
+ it 'should call Notifier.notify with 1 output' do
209
+ message = success_message + "# spec/fixtures/test.html.haml -> spec/fixtures/test.html"
210
+ notifier.should_receive(:notify).with(true, message)
211
+ subject_notifiable.run_on_changes(["#{@fixture_path}/test.html.haml"])
212
+ end
213
+ end
214
+
215
+ it 'should call Notifier.notify' do
216
+ message = "Successfully compiled haml to html!\n"
217
+ message += "# spec/fixtures/test.html.haml -> spec/fixtures/test.html"
218
+ notifier.should_receive(:notify).with(true, message)
219
+ subject_notifiable.run_on_changes(["#{@fixture_path}/test.html.haml"])
220
+ end
221
+
222
+ context 'with two outputs' do
223
+ before do
224
+ subject_notifiable.stub(:get_output).and_return(["#{@fixture_path}/test.html", "#{@fixture_path}/test2.html"])
225
+ end
226
+
227
+ after do
228
+ File.unlink "#{@fixture_path}/test.html"
229
+ File.unlink "#{@fixture_path}/test2.html"
230
+ end
231
+
232
+ it 'should call Notifier.notify with 2 outputs' do
233
+ message = success_message + "# spec/fixtures/test.html.haml -> spec/fixtures/test.html, spec/fixtures/test2.html"
234
+ notifier.should_receive(:notify).with(true, message)
235
+ subject_notifiable.run_on_changes(["#{@fixture_path}/test.html.haml"])
236
+ end
237
+ end
238
+ end
239
+ end
240
+
241
+ describe '#compile_haml' do
242
+ it 'throws :task_has_failed when an error occurs' do
243
+ expect { subject.send(:compile_haml, "#{@fixture_path}/fail_test.html.haml") }.
244
+ to throw_symbol :task_has_failed
245
+ end
246
+
247
+ context 'when notifications option set to true' do
248
+ it 'should call Notifier.notify when an error occurs' do
249
+ message = "HAML compilation failed!\n"
250
+ message += "Error: Illegal nesting: content can't be both given on the same line as %p and nested within it."
251
+ notifier.should_receive(:notify).with(false, message)
252
+ catch(:task_has_failed) do
253
+ subject_notifiable.send(:compile_haml, "#{@fixture_path}/fail_test.html.haml")
254
+ end.should be_nil
255
+
256
+ end
257
+ end
258
+ end
259
+ end
@@ -0,0 +1,14 @@
1
+ require 'rspec'
2
+ require 'guard/haml'
3
+
4
+ RSpec.configure do |config|
5
+ config.color_enabled = true
6
+ config.filter_run :focus => true
7
+ config.run_all_when_everything_filtered = true
8
+
9
+ config.before(:each) do
10
+ ENV["GUARD_ENV"] = 'test'
11
+ @fixture_path = Pathname.new "#{Bundler.root}/spec/fixtures"
12
+ @lib_path = Pathname.new "#{Bundler.root}/lib"
13
+ end
14
+ end
metadata ADDED
@@ -0,0 +1,121 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: guard-haml-ext
3
+ version: !ruby/object:Gem::Version
4
+ version: '0.6'
5
+ platform: ruby
6
+ authors:
7
+ - Immanuel Häussermann
8
+ - Florian Plank
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-04-22 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: guard
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - '>='
19
+ - !ruby/object:Gem::Version
20
+ version: '1.1'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - '>='
26
+ - !ruby/object:Gem::Version
27
+ version: '1.1'
28
+ - !ruby/object:Gem::Dependency
29
+ name: haml
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - '>='
33
+ - !ruby/object:Gem::Version
34
+ version: '3.0'
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - '>='
40
+ - !ruby/object:Gem::Version
41
+ version: '3.0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: rspec
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - '>='
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ - !ruby/object:Gem::Dependency
57
+ name: rake
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - '>='
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ description: Fork of @manufaktor’s guard-haml with support for file extension detection.
71
+ Compiles file.html.haml into file.html
72
+ email:
73
+ - haeussermann@gmail.com
74
+ - florian@polarblau.com
75
+ executables: []
76
+ extensions: []
77
+ extra_rdoc_files: []
78
+ files:
79
+ - lib/guard/haml/notifier.rb
80
+ - lib/guard/haml/templates/Guardfile
81
+ - lib/guard/haml/version.rb
82
+ - lib/guard/haml.rb
83
+ - LICENSE
84
+ - README.md
85
+ - Gemfile
86
+ - spec/fixtures/fail_test.html.haml
87
+ - spec/fixtures/test.html.haml
88
+ - spec/fixtures/test2.html.haml
89
+ - spec/guard/haml/notifier_spec.rb
90
+ - spec/guard/haml_spec.rb
91
+ - spec/spec_helper.rb
92
+ homepage: ''
93
+ licenses: []
94
+ metadata: {}
95
+ post_install_message:
96
+ rdoc_options: []
97
+ require_paths:
98
+ - lib
99
+ required_ruby_version: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ required_rubygems_version: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - '>='
107
+ - !ruby/object:Gem::Version
108
+ version: '0'
109
+ requirements: []
110
+ rubyforge_project: guard-haml-ext
111
+ rubygems_version: 2.0.3
112
+ signing_key:
113
+ specification_version: 4
114
+ summary: Guard gem for Haml
115
+ test_files:
116
+ - spec/fixtures/fail_test.html.haml
117
+ - spec/fixtures/test.html.haml
118
+ - spec/fixtures/test2.html.haml
119
+ - spec/guard/haml/notifier_spec.rb
120
+ - spec/guard/haml_spec.rb
121
+ - spec/spec_helper.rb