guard-haml-coffee 1.0.0 → 1.0.1

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: 587cd4e49ab5e4d7932837ff09e3d6d54ecc21e1
4
- data.tar.gz: 0551e719daa33aaa2412c1437fa3797c1bdee0e4
3
+ metadata.gz: 7d6697a599e04e7f9eead77b24bc06978cfd2da1
4
+ data.tar.gz: d1a48068586bc2d3c675ca483ac1c232367ab5a9
5
5
  SHA512:
6
- metadata.gz: c39dd4d39d1e78ef101c3887500cc189056541697e1849b16a6a4f211e579de116f0e65af04d3a9a2a7082e31c266bfe38a82342b6697a7bb50b35a5ff65b7d6
7
- data.tar.gz: ca34da908c26799d97f5b672a2e83fa4b7b506a4fce9da80ec4e7bbb8e10738e5e0947daa25494ed46e554211e3b14d1e410cd191b71bc88de1e7cae53e60ecf
6
+ metadata.gz: 1fa2b1c70ecd84c2a944bfd6df5e877a7880b688eaf7244f1bc6145f3917c3f58cc96ffc6a2f33528e0832a9de1957ec1e8e0d73abb5be4505e6c9bb6ed2ed19
7
+ data.tar.gz: 81b51bfff2e9a9978f07622146a9d3a2c51f9d29bf1cad0724d49d406b3bb151d803d23fd90c02936003549b66d7e66e332fc196361a112e1149985dc4d2703c
@@ -0,0 +1,5 @@
1
+ language: ruby
2
+ bundler_args: --without development
3
+ rvm:
4
+ - 2.2.2
5
+ sudo: false
@@ -26,10 +26,7 @@ module Guard
26
26
 
27
27
  def start
28
28
  Compat::UI.info('Guard::HamlCoffee has started watching your files', {})
29
- source = File.read(::CoffeeScript::Source.path) + ';'
30
- source += load_config('../haml-coffee/hamlcoffee.js') + ';'
31
- source += load_config('../haml-coffee/hamlcoffee_compiler.js')
32
- @runtime = ExecJS.compile(source)
29
+ prepare
33
30
  end
34
31
 
35
32
  # Get the file path to output the html based on the file being
@@ -79,40 +76,58 @@ module Guard
79
76
  basename = File.basename(path, '.js.hamlc')
80
77
  output_file = get_output(path)
81
78
  FileUtils.mkdir_p File.dirname(output_file)
82
- options = [
83
- basename,
84
- File.read(path),
85
- jst = true,
86
- namespace = nil,
87
- format = nil,
88
- uglify = false,
89
- basename,
90
- escapeHtml = nil,
91
- escapeAttributes = nil,
92
- cleanValue = nil,
93
- customHtmlEscape = nil,
94
- customCleanValue = nil,
95
- customPreserve = nil,
96
- customFindAndPreserve = nil,
97
- customSurround = nil,
98
- customSucceed = nil,
99
- customPrecede = nil,
100
- preserveTags = nil,
101
- selfCloseTags = nil,
102
- context = false,
103
- extendScope = nil,
104
- ]
105
- output = @runtime.call('HamlCoffeeCompiler.compile', *options)
79
+ output = compile(basename, File.read(path))
106
80
  File.open(output_file, "w") { |f| f.write output }
107
- ::Guard::UI.info "# compiled haml coffee in '#{path}' to js in '#{output_file}'"
81
+ Compat::UI.info "# compiled haml coffee in '#{path}' to js in '#{output_file}'"
108
82
  end
109
83
  rescue StandardError => error
110
- ::Guard::UI.error "Guard Haml Coffee Error: " + error.message
84
+ Compat::UI.error "Guard Haml Coffee Error: " + error.message
111
85
  throw :task_has_failed
112
86
  end
113
87
 
114
88
  def load_config(file)
115
89
  File.read(File.expand_path(file, __FILE__))
116
90
  end
91
+
92
+ def prepare
93
+ runtime
94
+ end
95
+
96
+ def runtime
97
+ @runtime ||=
98
+ begin
99
+ source = File.read(::CoffeeScript::Source.path) + ';'
100
+ source += load_config('../haml-coffee/hamlcoffee.js') + ';'
101
+ source += load_config('../haml-coffee/hamlcoffee_compiler.js')
102
+ ExecJS.compile(source)
103
+ end
104
+ end
105
+
106
+ def compile(basename, code)
107
+ options = [
108
+ basename,
109
+ code,
110
+ true, # jst
111
+ nil, # namespace
112
+ nil, # format
113
+ false, # uglify
114
+ basename,
115
+ nil, # escapeHtml
116
+ nil, # escapeAttributes
117
+ nil, # cleanValue
118
+ nil, # customHtmlEscape
119
+ nil, # customCleanValue
120
+ nil, # customPreserve
121
+ nil, # customFindAndPreserve
122
+ nil, # customSurround
123
+ nil, # customSucceed
124
+ nil, # customPrecede
125
+ nil, # preserveTags
126
+ nil, # selfCloseTags
127
+ false, # context
128
+ nil, # extendScope
129
+ ]
130
+ runtime.call('HamlCoffeeCompiler.compile', *options)
131
+ end
117
132
  end
118
133
  end
@@ -1,7 +1,7 @@
1
1
  module Guard
2
2
  module Haml
3
3
  module Coffee
4
- VERSION = "1.0.0"
4
+ VERSION = "1.0.1"
5
5
  end
6
6
  end
7
7
  end
@@ -6,6 +6,8 @@ RSpec.describe Guard::HamlCoffee do
6
6
 
7
7
  let(:options) { {} }
8
8
 
9
+ let(:runtime) { double(:execjs_runtime) }
10
+
9
11
  before do
10
12
  allow(Guard::Compat::UI).to receive(:info)
11
13
  allow(File).to receive(:expand_path) do |*args|
@@ -17,6 +19,18 @@ RSpec.describe Guard::HamlCoffee do
17
19
  msg = 'unstubbed call to IO.read(%s)'
18
20
  fail msg % args.map(&:inspect).join(',')
19
21
  end
22
+
23
+ # prepare method expecations
24
+ allow(File).to receive(:expand_path).with('../coffee-script.js', anything).and_return('foo.js')
25
+ allow(IO).to receive(:read).with('foo.js').and_return('foo')
26
+
27
+ allow(File).to receive(:expand_path).with('../haml-coffee/hamlcoffee.js', anything).and_return('bar.js')
28
+ allow(IO).to receive(:read).with('bar.js').and_return('bar')
29
+
30
+ allow(File).to receive(:expand_path).with('../haml-coffee/hamlcoffee_compiler.js', anything).and_return('baz.js')
31
+ allow(IO).to receive(:read).with('baz.js').and_return('baz')
32
+
33
+ allow(ExecJS).to receive(:compile).with('foo;bar;baz').and_return(runtime)
20
34
  end
21
35
 
22
36
  describe '#initialize' do
@@ -101,10 +115,46 @@ RSpec.describe Guard::HamlCoffee do
101
115
  describe '#run_on_changes' do
102
116
  context 'with changes' do
103
117
  let(:files) { %w(foo bar) }
118
+
104
119
  it 'compiles' do
105
120
  expect(subject).to receive(:process).with(files)
106
121
  subject.run_on_changes(files)
107
122
  end
123
+
124
+ context "when compiling fails" do
125
+ before do
126
+ allow(Guard::Compat::UI).to receive(:error)
127
+ allow(subject).to receive(:throw).with(:task_has_failed)
128
+ allow(IO).to receive(:read).with('foo').and_return('foo data')
129
+ allow(runtime).to receive(:call).and_raise(Errno::ENOENT, 'foobar')
130
+ end
131
+
132
+ it "shows an error" do
133
+ expect(Guard::Compat::UI).to receive(:error)
134
+ .with("Guard Haml Coffee Error: No such file or directory - foobar")
135
+ subject.run_on_changes(files)
136
+ end
137
+
138
+ it "throws :task_failed" do
139
+ expect(subject).to receive(:throw).with(:task_has_failed)
140
+ subject.run_on_changes(files)
141
+ end
142
+ end
143
+ end
144
+
145
+ context 'when run outside Guard (without start called)' do
146
+ let(:files) { %w(foo.js.hamlc) }
147
+ let(:output) { 'js output' }
148
+
149
+ before do
150
+ allow(IO).to receive(:read).with('foo.js.hamlc').and_return('foo')
151
+
152
+ allow(runtime).to receive(:call).and_return(output)
153
+ end
154
+
155
+ it 'works' do
156
+ subject.run_on_changes(files)
157
+ end
108
158
  end
109
159
  end
110
160
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: guard-haml-coffee
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ouvrages
@@ -77,6 +77,7 @@ files:
77
77
  - ".rspec"
78
78
  - ".rubocop.yml"
79
79
  - ".rubocop_todo.yml"
80
+ - ".travis.yml"
80
81
  - Gemfile
81
82
  - Guardfile
82
83
  - LICENSE