adamh-asset_library 0.2.0 → 0.3.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.
- data/lib/asset_library/asset_module.rb +7 -6
- data/lib/asset_library.rb +7 -0
- data/spec/asset_library/asset_module_spec.rb +54 -46
- metadata +13 -4
@@ -27,12 +27,13 @@ class AssetLibrary
|
|
27
27
|
def assets_with_extra_suffix(extra_suffix)
|
28
28
|
return nil unless config
|
29
29
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
30
|
+
GlobFu.find(
|
31
|
+
config[:files],
|
32
|
+
:suffix => config[:suffix],
|
33
|
+
:extra_suffix => extra_suffix,
|
34
|
+
:root => File.join(*([AssetLibrary.root, config[:base]].compact)),
|
35
|
+
:optional_suffix => config[:optional_suffix]
|
36
|
+
).collect { |f| Asset.new(f) }
|
36
37
|
end
|
37
38
|
|
38
39
|
# Returns an Array of Assets to include.
|
data/lib/asset_library.rb
CHANGED
@@ -1,64 +1,67 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/../spec_helper'
|
2
2
|
|
3
3
|
require 'set'
|
4
|
-
require 'rglob'
|
5
4
|
|
6
5
|
describe(AssetLibrary::AssetModule) do
|
7
6
|
before(:each) do
|
8
|
-
AssetLibrary.stub!(:root).and_return(
|
7
|
+
AssetLibrary.stub!(:root).and_return(prefix)
|
8
|
+
end
|
9
|
+
|
10
|
+
after(:each) do
|
11
|
+
wipe_fs
|
9
12
|
end
|
10
13
|
|
11
14
|
describe('#assets') do
|
12
15
|
it('should include file1 and file2') do
|
13
16
|
files = [ '/c/file1.css', '/c/file2.css' ]
|
14
17
|
stub_fs(files)
|
15
|
-
m(css_config(:files => ['file1', 'file2'])).assets.collect{|a| a.absolute_path}.should ==
|
18
|
+
m(css_config(:files => ['file1', 'file2'])).assets.collect{|a| a.absolute_path}.should == ["#{prefix}/c/file1.css", "#{prefix}/c/file2.css"]
|
16
19
|
end
|
17
20
|
|
18
21
|
it('should not include file2 if that does not exist') do
|
19
22
|
files = [ '/c/file1.css' ]
|
20
23
|
stub_fs(files)
|
21
|
-
m(css_config(:files => ['file1', 'file2'])).assets.collect{|a| a.absolute_path}.should ==
|
24
|
+
m(css_config(:files => ['file1', 'file2'])).assets.collect{|a| a.absolute_path}.should == [ "#{prefix}/c/file1.css" ]
|
22
25
|
end
|
23
26
|
|
24
27
|
it('should not include other files') do
|
25
28
|
files = [ '/c/file1.css', '/c/file2.css' ]
|
26
29
|
stub_fs(files)
|
27
|
-
m(css_config(:files => ['file1'])).assets.collect{|a| a.absolute_path}.should == [
|
30
|
+
m(css_config(:files => ['file1'])).assets.collect{|a| a.absolute_path}.should == [ "#{prefix}/c/file1.css" ]
|
28
31
|
end
|
29
32
|
|
30
33
|
it('should glob filenames') do
|
31
34
|
files = [ '/c/file1.css', '/c/file2.css', '/c/other_file.css' ]
|
32
35
|
stub_fs(files)
|
33
|
-
m(css_config(:files => ['file*'])).assets.collect{|a| a.absolute_path}.should ==
|
36
|
+
m(css_config(:files => ['file*'])).assets.collect{|a| a.absolute_path}.should == ["#{prefix}/c/file1.css", "#{prefix}/c/file2.css"]
|
34
37
|
end
|
35
38
|
|
36
39
|
it('should glob directories') do
|
37
40
|
files = [ '/c/file1.css', '/c/a/file2.css', '/c/b/a/file3.css' ]
|
38
41
|
stub_fs(files)
|
39
|
-
m(css_config(:files => ['**/file*'])).assets.collect{|a| a.absolute_path}.should ==
|
42
|
+
m(css_config(:files => ['**/file*'])).assets.collect{|a| a.absolute_path}.should == ["#{prefix}/c/a/file2.css", "#{prefix}/c/b/a/file3.css", "#{prefix}/c/file1.css"]
|
40
43
|
end
|
41
44
|
|
42
45
|
it('should use :optional_suffix when appropriate') do
|
43
|
-
files = [ '/c/file1.css', '/c/file1.o
|
46
|
+
files = [ '/c/file1.css', '/c/file1.css.o' ]
|
44
47
|
stub_fs(files)
|
45
|
-
m(css_config(:optional_suffix => 'o', :files => ['file1'])).assets.collect{|a| a.absolute_path}.should ==
|
48
|
+
m(css_config(:optional_suffix => 'o', :files => ['file1'])).assets.collect{|a| a.absolute_path}.should == ["#{prefix}/c/file1.css.o"]
|
46
49
|
end
|
47
50
|
|
48
|
-
it('should
|
49
|
-
files = [ '/c/file1.o
|
51
|
+
it('should show :optional_suffix file even if original is absent') do
|
52
|
+
files = [ '/c/file1.css.o' ]
|
50
53
|
stub_fs(files)
|
51
|
-
m(css_config(:optional_suffix => 'o', :files => ['file1'])).assets.collect{|a| a.absolute_path}.should == []
|
54
|
+
m(css_config(:optional_suffix => 'o', :files => ['file1'])).assets.collect{|a| a.absolute_path}.should == ["#{prefix}/c/file1.css.o"]
|
52
55
|
end
|
53
56
|
|
54
57
|
it('should ignore :optional_suffix when suffixed file is not present') do
|
55
58
|
stub_fs([ '/c/file1.css' ])
|
56
|
-
m(css_config(:optional_suffix => 'o', :files => ['file1'])).assets.collect{|a| a.absolute_path}.should == [
|
59
|
+
m(css_config(:optional_suffix => 'o', :files => ['file1'])).assets.collect{|a| a.absolute_path}.should == [ "#{prefix}/c/file1.css" ]
|
57
60
|
end
|
58
61
|
|
59
62
|
it('should pick files with :extra_suffix') do
|
60
63
|
stub_fs([ '/c/file1.e.css' ])
|
61
|
-
m(css_config(:files => ['file1'])).assets_with_extra_suffix('e').collect{|a| a.absolute_path}.should == [
|
64
|
+
m(css_config(:files => ['file1'])).assets_with_extra_suffix('e').collect{|a| a.absolute_path}.should == [ "#{prefix}/c/file1.e.css" ]
|
62
65
|
end
|
63
66
|
|
64
67
|
it('should ignore non-suffixed files when :extra_suffix is set') do
|
@@ -68,22 +71,22 @@ describe(AssetLibrary::AssetModule) do
|
|
68
71
|
|
69
72
|
it('should use extra suffixes with format') do
|
70
73
|
stub_fs([ '/c/file1.e1.css', '/c/file1.e2.css' ])
|
71
|
-
m(css_config(:files => ['file1'], :formats => { :f1 => [ 'e1', 'e2' ] })).assets_with_format(:f1).collect{|a| a.absolute_path}.should == [
|
74
|
+
m(css_config(:files => ['file1'], :formats => { :f1 => [ 'e1', 'e2' ] })).assets_with_format(:f1).collect{|a| a.absolute_path}.should == [ "#{prefix}/c/file1.e1.css", "#{prefix}/c/file1.e2.css" ]
|
72
75
|
end
|
73
76
|
|
74
77
|
it('should ignore extra suffixes unspecified in format') do
|
75
78
|
stub_fs([ '/c/file1.e1.css', '/c/file1.e2.css' ])
|
76
|
-
m(css_config(:files => ['file1'], :formats => { :f1 => [ 'e1' ] })).assets_with_format(:f1).collect{|a| a.absolute_path}.should == [
|
79
|
+
m(css_config(:files => ['file1'], :formats => { :f1 => [ 'e1' ] })).assets_with_format(:f1).collect{|a| a.absolute_path}.should == [ "#{prefix}/c/file1.e1.css" ]
|
77
80
|
end
|
78
81
|
|
79
82
|
it('should allow nil suffixes in format') do
|
80
83
|
stub_fs([ '/c/file1.css', '/c/file1.e1.css' ])
|
81
|
-
m(css_config(:files => ['file1'], :formats => { :f1 => [nil, 'e1'] })).assets_with_format(:f1).collect{|a| a.absolute_path}.should == [
|
84
|
+
m(css_config(:files => ['file1'], :formats => { :f1 => [nil, 'e1'] })).assets_with_format(:f1).collect{|a| a.absolute_path}.should == ["#{prefix}/c/file1.css", "#{prefix}/c/file1.e1.css" ]
|
82
85
|
end
|
83
86
|
|
84
87
|
it('should combine :extra_suffix with :optional_suffix') do
|
85
|
-
stub_fs([ '/c/file1.e.css', '/c/file1.e.o
|
86
|
-
m(css_config(:files => ['file1'], :optional_suffix => 'o')).assets_with_extra_suffix('e').collect{|a| a.absolute_path}.should == [
|
88
|
+
stub_fs([ '/c/file1.e.css', '/c/file1.e.css.o' ])
|
89
|
+
m(css_config(:files => ['file1'], :optional_suffix => 'o')).assets_with_extra_suffix('e').collect{|a| a.absolute_path}.should == [ "#{prefix}/c/file1.e.css.o" ]
|
87
90
|
end
|
88
91
|
|
89
92
|
it('should ignore too many dots when globbing') do
|
@@ -93,17 +96,17 @@ describe(AssetLibrary::AssetModule) do
|
|
93
96
|
|
94
97
|
it('should pick files with :extra_suffix when globbing') do
|
95
98
|
stub_fs([ '/c/file1.e.css', '/c/file2.css' ])
|
96
|
-
m(css_config(:files => ['file*'])).assets_with_extra_suffix('e').collect{|a| a.absolute_path}.should == [
|
99
|
+
m(css_config(:files => ['file*'])).assets_with_extra_suffix('e').collect{|a| a.absolute_path}.should == [ "#{prefix}/c/file1.e.css" ]
|
97
100
|
end
|
98
101
|
|
99
102
|
it('should pick files with :optional_suffix when globbing') do
|
100
|
-
stub_fs([ '/c/file.css', '/c/file.o
|
101
|
-
m(css_config(:optional_suffix => 'o', :files => ['file*'])).assets.collect{|a| a.absolute_path}.should == [
|
103
|
+
stub_fs([ '/c/file.css', '/c/file.css.o' ])
|
104
|
+
m(css_config(:optional_suffix => 'o', :files => ['file*'])).assets.collect{|a| a.absolute_path}.should == [ "#{prefix}/c/file.css.o" ]
|
102
105
|
end
|
103
106
|
|
104
107
|
it('should pick files with both :extra_suffix and :optional_suffix when globbing') do
|
105
|
-
stub_fs([ '/c/file.css', '/c/file.e.css', '/c/file.e.o
|
106
|
-
m(css_config(:optional_suffix => 'o', :files => ['file*'])).assets_with_extra_suffix('e').collect{|a| a.absolute_path}.should == [
|
108
|
+
stub_fs([ '/c/file.css', '/c/file.e.css', '/c/file.e.css.o' ])
|
109
|
+
m(css_config(:optional_suffix => 'o', :files => ['file*'])).assets_with_extra_suffix('e').collect{|a| a.absolute_path}.should == [ "#{prefix}/c/file.e.css.o" ]
|
107
110
|
end
|
108
111
|
end
|
109
112
|
|
@@ -115,52 +118,49 @@ describe(AssetLibrary::AssetModule) do
|
|
115
118
|
|
116
119
|
it('should concatenate individual file contents') do
|
117
120
|
stub_fs([ '/c/file1.css', '/c/file2.css' ])
|
118
|
-
m(css_config(:files => ['file*'])).contents.read.should ==
|
121
|
+
m(css_config(:files => ['file*'])).contents.read.should == "/c/file1.css\n/c/file2.css\n"
|
119
122
|
end
|
120
123
|
end
|
121
124
|
|
122
125
|
describe('#cache_asset') do
|
123
126
|
it('should use options[:cache]') do
|
124
|
-
m(css_config).cache_asset.absolute_path.should ==
|
127
|
+
m(css_config).cache_asset.absolute_path.should == "#{prefix}/c/cache.css"
|
125
128
|
end
|
126
129
|
|
127
130
|
it('should use :format if set') do
|
128
|
-
m(css_config).cache_asset(:e).absolute_path.should ==
|
131
|
+
m(css_config).cache_asset(:e).absolute_path.should == "#{prefix}/c/cache.e.css"
|
129
132
|
end
|
130
133
|
end
|
131
134
|
|
132
135
|
describe('#write_cache') do
|
133
136
|
it('should write to cache.css') do
|
134
|
-
File.should_receive(:open).with(
|
137
|
+
File.should_receive(:open).with("#{prefix}/c/cache.css", 'w')
|
135
138
|
m(css_config).write_cache
|
136
139
|
end
|
137
140
|
|
138
141
|
it('should write cache contents to cache') do
|
139
|
-
f = StringIO.new
|
140
|
-
File.stub!(:open).with('/c/cache.css', 'w').and_yield(f)
|
141
142
|
stub_fs([ '/c/file1.css', '/c/file2.css' ])
|
142
143
|
m(css_config(:files => ['file*'])).write_cache
|
143
|
-
f.
|
144
|
-
f.read.should == '/c/file1.css/c/file2.css'
|
144
|
+
File.open("#{prefix}/c/cache.css") { |f| f.read.should == "/c/file1.css\n/c/file2.css\n" }
|
145
145
|
end
|
146
146
|
|
147
147
|
it('should use :format to determine CSS output file') do
|
148
|
-
File.should_receive(:open).with(
|
148
|
+
File.should_receive(:open).with("#{prefix}/c/cache.e.css", 'w')
|
149
149
|
m(css_config).write_cache(:e)
|
150
150
|
end
|
151
151
|
end
|
152
152
|
|
153
153
|
describe('#write_all_caches') do
|
154
154
|
it('should write cache.css (no :format)') do
|
155
|
-
File.should_receive(:open).with(
|
155
|
+
File.should_receive(:open).with("#{prefix}/c/cache.css", 'w')
|
156
156
|
m(css_config).write_all_caches
|
157
157
|
end
|
158
158
|
|
159
159
|
it('should write no-format and all format files') do
|
160
160
|
formats = { :e1 => [], :e2 => [] }
|
161
|
-
File.should_receive(:open).with(
|
161
|
+
File.should_receive(:open).with("#{prefix}/c/cache.css", 'w')
|
162
162
|
formats.keys.each do |format|
|
163
|
-
File.should_receive(:open).with("/c/cache.#{format}.css", 'w')
|
163
|
+
File.should_receive(:open).with("#{prefix}/c/cache.#{format}.css", 'w')
|
164
164
|
end
|
165
165
|
m(css_config(:formats => formats)).write_all_caches
|
166
166
|
end
|
@@ -190,19 +190,27 @@ describe(AssetLibrary::AssetModule) do
|
|
190
190
|
}.merge(options)
|
191
191
|
end
|
192
192
|
|
193
|
-
def
|
194
|
-
|
195
|
-
|
196
|
-
filenames.include?(path)
|
197
|
-
end
|
193
|
+
def prefix
|
194
|
+
@prefix ||= File.dirname(__FILE__) + '/deleteme'
|
195
|
+
end
|
198
196
|
|
199
|
-
|
200
|
-
|
197
|
+
def stub_fs(filenames)
|
198
|
+
wipe_fs
|
199
|
+
FileUtils.mkdir(prefix)
|
200
|
+
|
201
|
+
filenames.each do |file|
|
202
|
+
path = File.join(prefix, file)
|
203
|
+
dir = File.dirname(path)
|
204
|
+
unless File.exist?(dir)
|
205
|
+
FileUtils.mkdir_p(dir)
|
206
|
+
end
|
207
|
+
File.open(path, 'w') { |f| f.write("#{file}\n") }
|
201
208
|
end
|
209
|
+
end
|
202
210
|
|
203
|
-
|
204
|
-
|
205
|
-
|
211
|
+
def wipe_fs
|
212
|
+
if File.exist?(prefix)
|
213
|
+
FileUtils.rm_r(prefix)
|
206
214
|
end
|
207
215
|
end
|
208
216
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: adamh-asset_library
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- adamh
|
@@ -9,10 +9,19 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-08-
|
12
|
+
date: 2009-08-19 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
|
-
dependencies:
|
15
|
-
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: adamh-glob_fu
|
17
|
+
type: :runtime
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 0.0.4
|
24
|
+
version:
|
16
25
|
description:
|
17
26
|
email: adam@adamhooper.com
|
18
27
|
executables: []
|