juicer 1.0.13 → 1.0.14
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/GPATH +0 -0
- data/GRTAGS +0 -0
- data/GSYMS +0 -0
- data/GTAGS +0 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +33 -0
- data/History.txt +3 -0
- data/Rakefile +96 -0
- data/VERSION +1 -1
- data/lib/juicer.rb +1 -1
- data/lib/juicer/asset/path.rb +10 -10
- data/lib/juicer/asset/path_resolver.rb +2 -2
- data/lib/juicer/binary.rb +1 -1
- data/lib/juicer/cache_buster.rb +1 -1
- data/lib/juicer/command/merge.rb +10 -8
- data/lib/juicer/datafy/datafy.rb +2 -2
- data/lib/juicer/dependency_resolver/css_dependency_resolver.rb +29 -29
- data/lib/juicer/dependency_resolver/javascript_dependency_resolver.rb +23 -23
- data/lib/juicer/image_embed.rb +24 -18
- data/lib/juicer/install/closure_compiler_installer.rb +1 -1
- data/lib/juicer/install/rhino_installer.rb +1 -1
- data/lib/juicer/install/yui_compressor_installer.rb +1 -1
- data/lib/juicer/merger/javascript_merger.rb +29 -29
- data/lib/juicer/merger/stylesheet_merger.rb +111 -111
- data/lib/juicer/minifyer/java_base.rb +8 -1
- data/test/bin/jslint-1.0.js +523 -0
- data/test/bin/jslint.js +523 -0
- data/test/bin/rhino1_7R1.zip +0 -0
- data/test/bin/rhino1_7R2-RC1.jar +0 -0
- data/test/bin/rhino1_7R2-RC1.zip +0 -0
- data/test/bin/rhino1_7R3.jar +0 -0
- data/test/bin/rhino1_7R3.zip +0 -0
- data/test/bin/yuicompressor +0 -0
- data/test/bin/yuicompressor-2.3.5.zip +0 -0
- data/test/bin/yuicompressor-2.4.2.jar +0 -0
- data/test/bin/yuicompressor-2.4.2.zip +0 -0
- data/test/data/Changelog.txt +10 -0
- data/test/data/a.css +3 -0
- data/test/data/a.js +5 -0
- data/test/data/a1.css +5 -0
- data/test/data/b.css +1 -0
- data/test/data/b.js +5 -0
- data/test/data/b1.css +5 -0
- data/test/data/b2.css +5 -0
- data/test/data/c1.css +3 -0
- data/test/data/css/2.gif +1 -0
- data/test/data/css/test.css +15 -0
- data/test/data/css/test2.css +1 -0
- data/test/data/css/test3.css +12 -0
- data/test/data/d1.css +3 -0
- data/test/data/images/1.png +1 -0
- data/test/data/my_app.js +2 -0
- data/test/data/not-ok.js +2 -0
- data/test/data/ok.js +3 -0
- data/test/data/path_test.css +5 -0
- data/test/data/path_test2.css +14 -0
- data/test/data/pkg/module/moda.js +2 -0
- data/test/data/pkg/module/modb.js +3 -0
- data/test/data/pkg/pkg.js +1 -0
- data/test/fixtures/rhino-download.html +42 -0
- data/test/fixtures/yui-download.html +375 -0
- data/test/test_helper.rb +10 -7
- data/test/unit/juicer/cache_buster_test.rb +1 -1
- data/test/unit/juicer/command/install_test.rb +2 -2
- data/test/unit/juicer/command/merge_test.rb +3 -3
- data/test/unit/juicer/command/verify_test.rb +2 -2
- data/test/unit/juicer/css_cache_buster_test.rb +2 -2
- data/test/unit/juicer/datafy_test.rb +1 -1
- data/test/unit/juicer/image_embed_test.rb +39 -6
- data/test/unit/juicer/jslint_test.rb +3 -3
- data/test/unit/juicer/merger/stylesheet_merger_test.rb +1 -1
- data/test/unit/juicer/minifyer/closure_compressor_test.rb +4 -4
- data/test/unit/juicer/minifyer/yui_compressor_test.rb +21 -4
- data/test/unit/juicer_test.rb +1 -1
- metadata +180 -154
data/test/test_helper.rb
CHANGED
@@ -1,5 +1,14 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler'
|
3
|
+
|
4
|
+
begin
|
5
|
+
require 'turn'
|
6
|
+
rescue LoadError => err
|
7
|
+
puts "Protip: Install turn gem for better test reports. #{err.message}"
|
8
|
+
end
|
9
|
+
|
10
|
+
Bundler.setup
|
1
11
|
|
2
|
-
require "rubygems"
|
3
12
|
require 'fileutils'
|
4
13
|
require 'test/unit'
|
5
14
|
require 'shoulda'
|
@@ -7,12 +16,6 @@ require 'mocha'
|
|
7
16
|
require 'open-uri'
|
8
17
|
require 'juicer'
|
9
18
|
|
10
|
-
begin
|
11
|
-
require 'turn'
|
12
|
-
rescue LoadError => err
|
13
|
-
puts "Protip: Install turn gem for better test reports. #{err.message}"
|
14
|
-
end
|
15
|
-
|
16
19
|
if RUBY_VERSION < "1.9"
|
17
20
|
require 'redgreen' if ENV['TM_DIRECTORY'].nil?
|
18
21
|
end
|
@@ -36,7 +36,7 @@ class CacheBusterTest < Test::Unit::TestCase
|
|
36
36
|
should "remove cache buster query parameters with custom name" do
|
37
37
|
assert_equal @filename, Juicer::CacheBuster.clean("#@filename?cb=1234567890", :cb)
|
38
38
|
end
|
39
|
-
|
39
|
+
|
40
40
|
should "remove hard cache buster" do
|
41
41
|
assert_equal @filename, Juicer::CacheBuster.clean(@filename.sub(/(\.txt)/, '-jcb1234567890\1'))
|
42
42
|
end
|
@@ -31,7 +31,7 @@ class TestInstallCommand < Test::Unit::TestCase
|
|
31
31
|
|
32
32
|
@command.instance_eval { @path = path(".juicer") }
|
33
33
|
@command.execute("jslint")
|
34
|
-
|
34
|
+
|
35
35
|
assert installer.installed?
|
36
36
|
end
|
37
37
|
|
@@ -51,7 +51,7 @@ class TestInstallCommand < Test::Unit::TestCase
|
|
51
51
|
@command.instance_eval { @path = path(".juicer") }
|
52
52
|
@command.instance_eval { @version = "0.9" }
|
53
53
|
@command.execute("jslint")
|
54
|
-
|
54
|
+
|
55
55
|
assert installer.installed?("0.9")
|
56
56
|
end
|
57
57
|
end
|
@@ -131,7 +131,7 @@ class TestMergeCommand < Test::Unit::TestCase
|
|
131
131
|
begin
|
132
132
|
@merge.instance_eval { @output = path("a.min.css") }
|
133
133
|
assert @merge.execute(path("a1.css"))
|
134
|
-
assert_match "h2{font-size:10px
|
134
|
+
assert_match "h2{font-size:10px}html{background:red}h1{font-size:12px}body{width:800px}", IO.read(path("a.min.css"))
|
135
135
|
rescue Test::Unit::AssertionFailedError => err
|
136
136
|
raise err
|
137
137
|
rescue Exception => err
|
@@ -149,14 +149,14 @@ class TestMergeCommand < Test::Unit::TestCase
|
|
149
149
|
|
150
150
|
should "ignore jslint problems" do
|
151
151
|
@merge.instance_eval { @ignore = true }
|
152
|
-
|
152
|
+
|
153
153
|
assert_nothing_raised do
|
154
154
|
@merge.execute(path("not-ok.js"))
|
155
155
|
assert_match(/Problems were detected during verification/, @io.string)
|
156
156
|
assert_match(/Ignoring detected problems/, @io.string)
|
157
157
|
end
|
158
158
|
end
|
159
|
-
|
159
|
+
|
160
160
|
should_eventually "warn about duplicated image urls for embedding"
|
161
161
|
end
|
162
162
|
end
|
@@ -38,9 +38,9 @@ class TestVerifyCommand < Test::Unit::TestCase
|
|
38
38
|
Juicer::JsLint.any_instance.expects(:check).with(files[0]).returns(Juicer::JsLint::Report.new)
|
39
39
|
Juicer::JsLint.any_instance.expects(:check).with(files[1]).returns(Juicer::JsLint::Report.new(["Oops"]))
|
40
40
|
Juicer::JsLint.any_instance.expects(:check).with(files[2]).returns(Juicer::JsLint::Report.new)
|
41
|
-
|
41
|
+
|
42
42
|
@command.execute(files)
|
43
|
-
|
43
|
+
|
44
44
|
assert_match(/OK!/, @io.string)
|
45
45
|
assert_match(/Problems detected/, @io.string)
|
46
46
|
end
|
@@ -95,7 +95,7 @@ class TestCssCacheBuster < Test::Unit::TestCase
|
|
95
95
|
buster.urls(output).each { |asset| assert_match /\?\d+$/, asset.path }
|
96
96
|
end
|
97
97
|
end
|
98
|
-
|
98
|
+
|
99
99
|
context "hard cache busters" do
|
100
100
|
should "should alter file name" do
|
101
101
|
File.open(path("a2.css"), "w") { |f| f.puts "" }
|
@@ -115,7 +115,7 @@ class TestCssCacheBuster < Test::Unit::TestCase
|
|
115
115
|
buster = Juicer::CssCacheBuster.new :document_root => path("")
|
116
116
|
|
117
117
|
assert_nothing_raised do
|
118
|
-
buster.save file
|
118
|
+
buster.save file
|
119
119
|
end
|
120
120
|
end
|
121
121
|
end
|
@@ -80,11 +80,11 @@ class TestImageEmbed < Test::Unit::TestCase
|
|
80
80
|
@files = [{ :path => "#{@document_root}/images/custom-file.png", :filename => '/images/custom-file.png', :content => "hello png!" }]
|
81
81
|
create_files(@files)
|
82
82
|
end
|
83
|
-
|
83
|
+
|
84
84
|
should "embed urls with embedder" do
|
85
85
|
stylesheets = [{ :path => "#{@document_root}/stylesheets/test_absolute_path.css", :content => "body: { background: url(#{@files.first[:filename]}?embed=true); }" }]
|
86
86
|
create_files(stylesheets)
|
87
|
-
|
87
|
+
|
88
88
|
@another_embedder.save stylesheets.first[:path]
|
89
89
|
css_contents = File.read(stylesheets.first[:path])
|
90
90
|
|
@@ -95,11 +95,11 @@ class TestImageEmbed < Test::Unit::TestCase
|
|
95
95
|
# make sure the encoded data_uri is present in the stylesheet
|
96
96
|
assert css_contents.include?(data_uri)
|
97
97
|
end
|
98
|
-
|
98
|
+
|
99
99
|
should "not embed urls with embedder" do
|
100
100
|
stylesheets = [{ :path => "#{@document_root}/stylesheets/test_absolute_path.css", :content => "body: { background: url(#{@files.first[:filename]}?embed=false); }" }]
|
101
101
|
create_files(stylesheets)
|
102
|
-
|
102
|
+
|
103
103
|
@another_embedder.save stylesheets.first[:path]
|
104
104
|
css_contents = File.read(stylesheets.first[:path])
|
105
105
|
|
@@ -192,6 +192,40 @@ class TestImageEmbed < Test::Unit::TestCase
|
|
192
192
|
end
|
193
193
|
end
|
194
194
|
|
195
|
+
should "force embedding images into css file" do
|
196
|
+
@embedder = Juicer::ImageEmbed.new(:type => :data_uri, :document_root => '', :force => true)
|
197
|
+
@stylesheets = [
|
198
|
+
{
|
199
|
+
:path => '/stylesheets/test_embed_true.css',
|
200
|
+
:content => "body: { background: url(#{@supported_assets.first[:path]}); }"
|
201
|
+
}
|
202
|
+
]
|
203
|
+
create_files( @stylesheets )
|
204
|
+
|
205
|
+
@stylesheets.each do |stylesheet|
|
206
|
+
old_contents = File.read( stylesheet[:path] )
|
207
|
+
|
208
|
+
# make sure there are no errors
|
209
|
+
assert_nothing_raised do
|
210
|
+
@embedder.save stylesheet[:path]
|
211
|
+
end
|
212
|
+
|
213
|
+
css_contents = File.read( stylesheet[:path] )
|
214
|
+
|
215
|
+
# make sure the original url does not exist anymore
|
216
|
+
assert_no_match( Regexp.new( @supported_assets.first[:path] ), css_contents )
|
217
|
+
|
218
|
+
# make sure the url has been converted into a data uri
|
219
|
+
image_contents = File.read( @supported_assets.first[:path] )
|
220
|
+
|
221
|
+
# # create the data uri from the image contents
|
222
|
+
data_uri = Datafy::make_data_uri( image_contents, 'image/png' )
|
223
|
+
|
224
|
+
# let's see if the data uri exists in the file
|
225
|
+
assert css_contents.include?( data_uri )
|
226
|
+
end
|
227
|
+
end
|
228
|
+
|
195
229
|
should "not embed unflagged images" do
|
196
230
|
@stylesheets = [
|
197
231
|
{
|
@@ -249,7 +283,6 @@ class TestImageEmbed < Test::Unit::TestCase
|
|
249
283
|
end
|
250
284
|
end
|
251
285
|
|
252
|
-
|
253
286
|
end # context
|
254
287
|
|
255
288
|
context "embed method" do
|
@@ -275,7 +308,7 @@ class TestImageEmbed < Test::Unit::TestCase
|
|
275
308
|
end
|
276
309
|
end
|
277
310
|
|
278
|
-
should "not
|
311
|
+
should "not encode unsupported asset types" do
|
279
312
|
@unsupported_assets.each do |asset|
|
280
313
|
path = "#{asset[:path]}?embed=true"
|
281
314
|
assert_equal( path, @embedder.embed_data_uri( path ) )
|
@@ -6,7 +6,7 @@ class TestJsLint < Test::Unit::TestCase
|
|
6
6
|
@file = path("jsltest.js")
|
7
7
|
super
|
8
8
|
end
|
9
|
-
|
9
|
+
|
10
10
|
def setup
|
11
11
|
FileUtils.mkdir(path("")) unless File.exists?(path(""))
|
12
12
|
File.open(@file, "w") { |f| f.puts "" }
|
@@ -20,7 +20,7 @@ class TestJsLint < Test::Unit::TestCase
|
|
20
20
|
should "shell out to rhino/jslint" do
|
21
21
|
jslint = Juicer::JsLint.new(:bin_path => @path)
|
22
22
|
jslint.expects(:execute).with("-jar \"#{@path}/rhino1_7R3.jar\" \"#{@path}/jslint-1.0.js\" \"#{@file}\"").returns("jslint: No problems")
|
23
|
-
|
23
|
+
|
24
24
|
assert jslint.check(@file).ok?
|
25
25
|
end
|
26
26
|
end
|
@@ -36,7 +36,7 @@ class TestJsLint < Test::Unit::TestCase
|
|
36
36
|
should "be a report object for invalid files" do
|
37
37
|
jslint = Juicer::JsLint.new(:bin_path => @path)
|
38
38
|
jslint.expects(:execute).returns("Wrong use of semicolon\nWrong blabla")
|
39
|
-
|
39
|
+
|
40
40
|
assert_equal Juicer::JsLint::Report, jslint.check(path("not-ok.js")).class
|
41
41
|
end
|
42
42
|
end
|
@@ -44,7 +44,7 @@ class ClosureCompilerTest < Test::Unit::TestCase
|
|
44
44
|
File.delete('compiler.jar') if File.exists?('compiler.jar')
|
45
45
|
FileUtils.rm_rf("another") if File.exists?("another")
|
46
46
|
end
|
47
|
-
|
47
|
+
|
48
48
|
should "not find jar when no jars on path" do
|
49
49
|
Juicer::Minifyer::ClosureCompiler.publicize_methods do
|
50
50
|
closure = Juicer::Minifyer::ClosureCompiler.new
|
@@ -69,7 +69,7 @@ class ClosureCompilerTest < Test::Unit::TestCase
|
|
69
69
|
File.open('compiler-2.3.5.jar', 'w') { |f| f.puts '' }
|
70
70
|
|
71
71
|
closure = Juicer::Minifyer::ClosureCompiler.new
|
72
|
-
|
72
|
+
|
73
73
|
# Test
|
74
74
|
assert_equal File.expand_path('compiler-2.3.5.jar'), closure.locate_jar
|
75
75
|
end
|
@@ -83,7 +83,7 @@ class ClosureCompilerTest < Test::Unit::TestCase
|
|
83
83
|
File.open('compiler.jar', 'w') { |f| f.puts '' }
|
84
84
|
|
85
85
|
closure = Juicer::Minifyer::ClosureCompiler.new
|
86
|
-
|
86
|
+
|
87
87
|
# Test
|
88
88
|
assert_equal File.expand_path('compiler.jar'), closure.locate_jar
|
89
89
|
end
|
@@ -96,7 +96,7 @@ class ClosureCompilerTest < Test::Unit::TestCase
|
|
96
96
|
File.open('another/compiler-2.3.4.jar', 'w') { |f| f.puts "" }
|
97
97
|
|
98
98
|
closure = Juicer::Minifyer::ClosureCompiler.new
|
99
|
-
|
99
|
+
|
100
100
|
# Test
|
101
101
|
assert_nil closure.locate_jar
|
102
102
|
closure = Juicer::Minifyer::ClosureCompiler.new({ :bin_path => 'another' })
|
@@ -52,8 +52,9 @@ class TestYuiCompressor < Test::Unit::TestCase
|
|
52
52
|
File.delete('yuicompressor-2.3.5.jar') if File.exists?('yuicompressor-2.3.5.jar')
|
53
53
|
File.delete('yuicompressor.jar') if File.exists?('yuicompressor.jar')
|
54
54
|
FileUtils.rm_rf("another") if File.exists?("another")
|
55
|
+
FileUtils.rm_rf("athird") if File.exists?("athird")
|
55
56
|
end
|
56
|
-
|
57
|
+
|
57
58
|
should "not find jar when no jars on path" do
|
58
59
|
Juicer::Minifyer::YuiCompressor.publicize_methods do
|
59
60
|
yui_compressor = Juicer::Minifyer::YuiCompressor.new
|
@@ -78,7 +79,7 @@ class TestYuiCompressor < Test::Unit::TestCase
|
|
78
79
|
File.open('yuicompressor-2.3.5.jar', 'w') { |f| f.puts '' }
|
79
80
|
|
80
81
|
yui_compressor = Juicer::Minifyer::YuiCompressor.new
|
81
|
-
|
82
|
+
|
82
83
|
# Test
|
83
84
|
assert_equal File.expand_path('yuicompressor-2.3.5.jar'), yui_compressor.locate_jar
|
84
85
|
end
|
@@ -92,7 +93,7 @@ class TestYuiCompressor < Test::Unit::TestCase
|
|
92
93
|
File.open('yuicompressor.jar', 'w') { |f| f.puts '' }
|
93
94
|
|
94
95
|
yui_compressor = Juicer::Minifyer::YuiCompressor.new
|
95
|
-
|
96
|
+
|
96
97
|
# Test
|
97
98
|
assert_equal File.expand_path('yuicompressor.jar'), yui_compressor.locate_jar
|
98
99
|
end
|
@@ -105,12 +106,28 @@ class TestYuiCompressor < Test::Unit::TestCase
|
|
105
106
|
File.open('another/yuicompressor-2.3.4.jar', 'w') { |f| f.puts "" }
|
106
107
|
|
107
108
|
yui_compressor = Juicer::Minifyer::YuiCompressor.new
|
108
|
-
|
109
|
+
|
109
110
|
# Test
|
110
111
|
assert_nil yui_compressor.locate_jar
|
111
112
|
yui_compressor = Juicer::Minifyer::YuiCompressor.new({ :bin_path => 'another' })
|
112
113
|
assert_equal File.expand_path('another/yuicompressor-2.3.4.jar'), yui_compressor.locate_jar
|
113
114
|
end
|
114
115
|
end
|
116
|
+
|
117
|
+
should "find jar in one of several custom directories" do
|
118
|
+
Juicer::Minifyer::YuiCompressor.publicize_methods do
|
119
|
+
# Prepare
|
120
|
+
Dir.mkdir('another')
|
121
|
+
Dir.mkdir('athird')
|
122
|
+
File.open('athird/yuicompressor-2.3.4.jar', 'w') { |f| f.puts "" }
|
123
|
+
|
124
|
+
yui_compressor = Juicer::Minifyer::YuiCompressor.new
|
125
|
+
|
126
|
+
# Test
|
127
|
+
assert_nil yui_compressor.locate_jar
|
128
|
+
yui_compressor = Juicer::Minifyer::YuiCompressor.new({ :bin_path => ['another', 'athird'] })
|
129
|
+
assert_equal File.expand_path('athird/yuicompressor-2.3.4.jar'), yui_compressor.locate_jar
|
130
|
+
end
|
131
|
+
end
|
115
132
|
end
|
116
133
|
end
|
data/test/unit/juicer_test.rb
CHANGED
@@ -1 +1 @@
|
|
1
|
-
require "test_helper"
|
1
|
+
require "test_helper"
|
metadata
CHANGED
@@ -1,142 +1,165 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: juicer
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
6
|
-
segments:
|
7
|
-
- 1
|
8
|
-
- 0
|
9
|
-
- 13
|
10
|
-
version: 1.0.13
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.14
|
5
|
+
prerelease:
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Christian Johansen
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
12
|
+
date: 2012-04-13 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: juicer
|
16
|
+
requirement: &21762820 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
|
24
|
+
version_requirements: *21762820
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: shoulda
|
27
|
+
requirement: &21733400 !ruby/object:Gem::Requirement
|
25
28
|
none: false
|
26
|
-
requirements:
|
27
|
-
- -
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
hash: 35
|
30
|
-
segments:
|
31
|
-
- 2
|
32
|
-
- 10
|
33
|
-
- 2
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
34
32
|
version: 2.10.2
|
35
33
|
type: :development
|
36
|
-
version_requirements: *id001
|
37
|
-
- !ruby/object:Gem::Dependency
|
38
|
-
name: mocha
|
39
34
|
prerelease: false
|
40
|
-
|
35
|
+
version_requirements: *21733400
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: mocha
|
38
|
+
requirement: &21732820 !ruby/object:Gem::Requirement
|
41
39
|
none: false
|
42
|
-
requirements:
|
43
|
-
- -
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
hash: 43
|
46
|
-
segments:
|
47
|
-
- 0
|
48
|
-
- 9
|
49
|
-
- 8
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
50
43
|
version: 0.9.8
|
51
44
|
type: :development
|
52
|
-
version_requirements: *id002
|
53
|
-
- !ruby/object:Gem::Dependency
|
54
|
-
name: fakefs
|
55
45
|
prerelease: false
|
56
|
-
|
46
|
+
version_requirements: *21732820
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: fakefs
|
49
|
+
requirement: &21732260 !ruby/object:Gem::Requirement
|
57
50
|
none: false
|
58
|
-
requirements:
|
59
|
-
- -
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
hash: 21
|
62
|
-
segments:
|
63
|
-
- 0
|
64
|
-
- 2
|
65
|
-
- 1
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
66
54
|
version: 0.2.1
|
67
55
|
type: :development
|
68
|
-
|
69
|
-
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *21732260
|
58
|
+
- !ruby/object:Gem::Dependency
|
70
59
|
name: jeweler
|
60
|
+
requirement: &21731740 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ! '>='
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: 0.2.1
|
66
|
+
type: :development
|
71
67
|
prerelease: false
|
72
|
-
|
68
|
+
version_requirements: *21731740
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: shoulda
|
71
|
+
requirement: &21731140 !ruby/object:Gem::Requirement
|
73
72
|
none: false
|
74
|
-
requirements:
|
75
|
-
- -
|
76
|
-
- !ruby/object:Gem::Version
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: 2.10.2
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: *21731140
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: mocha
|
82
|
+
requirement: &21730560 !ruby/object:Gem::Requirement
|
83
|
+
none: false
|
84
|
+
requirements:
|
85
|
+
- - ! '>='
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: 0.9.8
|
88
|
+
type: :development
|
89
|
+
prerelease: false
|
90
|
+
version_requirements: *21730560
|
91
|
+
- !ruby/object:Gem::Dependency
|
92
|
+
name: fakefs
|
93
|
+
requirement: &21729980 !ruby/object:Gem::Requirement
|
94
|
+
none: false
|
95
|
+
requirements:
|
96
|
+
- - ! '>='
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: 0.2.1
|
99
|
+
type: :development
|
100
|
+
prerelease: false
|
101
|
+
version_requirements: *21729980
|
102
|
+
- !ruby/object:Gem::Dependency
|
103
|
+
name: jeweler
|
104
|
+
requirement: &21729400 !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
82
109
|
version: 0.2.1
|
83
110
|
type: :development
|
84
|
-
version_requirements: *id004
|
85
|
-
- !ruby/object:Gem::Dependency
|
86
|
-
name: cmdparse
|
87
111
|
prerelease: false
|
88
|
-
|
112
|
+
version_requirements: *21729400
|
113
|
+
- !ruby/object:Gem::Dependency
|
114
|
+
name: cmdparse
|
115
|
+
requirement: &21728800 !ruby/object:Gem::Requirement
|
89
116
|
none: false
|
90
|
-
requirements:
|
91
|
-
- -
|
92
|
-
- !ruby/object:Gem::Version
|
93
|
-
|
94
|
-
segments:
|
95
|
-
- 0
|
96
|
-
version: "0"
|
117
|
+
requirements:
|
118
|
+
- - ! '>='
|
119
|
+
- !ruby/object:Gem::Version
|
120
|
+
version: '0'
|
97
121
|
type: :runtime
|
98
|
-
version_requirements: *id005
|
99
|
-
- !ruby/object:Gem::Dependency
|
100
|
-
name: nokogiri
|
101
122
|
prerelease: false
|
102
|
-
|
123
|
+
version_requirements: *21728800
|
124
|
+
- !ruby/object:Gem::Dependency
|
125
|
+
name: nokogiri
|
126
|
+
requirement: &21728220 !ruby/object:Gem::Requirement
|
103
127
|
none: false
|
104
|
-
requirements:
|
105
|
-
- -
|
106
|
-
- !ruby/object:Gem::Version
|
107
|
-
hash: 3
|
108
|
-
segments:
|
109
|
-
- 1
|
110
|
-
- 5
|
111
|
-
- 0
|
128
|
+
requirements:
|
129
|
+
- - ! '>='
|
130
|
+
- !ruby/object:Gem::Version
|
112
131
|
version: 1.5.0
|
113
132
|
type: :runtime
|
114
|
-
version_requirements: *id006
|
115
|
-
- !ruby/object:Gem::Dependency
|
116
|
-
name: rubyzip
|
117
133
|
prerelease: false
|
118
|
-
|
134
|
+
version_requirements: *21728220
|
135
|
+
- !ruby/object:Gem::Dependency
|
136
|
+
name: rubyzip
|
137
|
+
requirement: &21727640 !ruby/object:Gem::Requirement
|
119
138
|
none: false
|
120
|
-
requirements:
|
121
|
-
- -
|
122
|
-
- !ruby/object:Gem::Version
|
123
|
-
|
124
|
-
segments:
|
125
|
-
- 0
|
126
|
-
version: "0"
|
139
|
+
requirements:
|
140
|
+
- - ! '>='
|
141
|
+
- !ruby/object:Gem::Version
|
142
|
+
version: '0'
|
127
143
|
type: :runtime
|
128
|
-
|
129
|
-
|
144
|
+
prerelease: false
|
145
|
+
version_requirements: *21727640
|
146
|
+
description: Resolve dependencies, merge and minify CSS and JavaScript files with
|
147
|
+
Juicer - the command line tool for frontend engineers
|
130
148
|
email: christian@cjohansen.no
|
131
|
-
executables:
|
149
|
+
executables:
|
132
150
|
- juicer
|
133
151
|
extensions: []
|
134
|
-
|
135
152
|
extra_rdoc_files: []
|
136
|
-
|
137
|
-
|
153
|
+
files:
|
154
|
+
- GPATH
|
155
|
+
- GRTAGS
|
156
|
+
- GSYMS
|
157
|
+
- GTAGS
|
158
|
+
- Gemfile
|
159
|
+
- Gemfile.lock
|
138
160
|
- History.txt
|
139
161
|
- Manifest.txt
|
162
|
+
- Rakefile
|
140
163
|
- Readme.rdoc
|
141
164
|
- VERSION
|
142
165
|
- bin/juicer
|
@@ -175,6 +198,42 @@ files:
|
|
175
198
|
- lib/juicer/minifyer/closure_compiler.rb
|
176
199
|
- lib/juicer/minifyer/java_base.rb
|
177
200
|
- lib/juicer/minifyer/yui_compressor.rb
|
201
|
+
- test/bin/jslint-1.0.js
|
202
|
+
- test/bin/jslint.js
|
203
|
+
- test/bin/rhino1_7R1.zip
|
204
|
+
- test/bin/rhino1_7R2-RC1.jar
|
205
|
+
- test/bin/rhino1_7R2-RC1.zip
|
206
|
+
- test/bin/rhino1_7R3.jar
|
207
|
+
- test/bin/rhino1_7R3.zip
|
208
|
+
- test/bin/yuicompressor
|
209
|
+
- test/bin/yuicompressor-2.3.5.zip
|
210
|
+
- test/bin/yuicompressor-2.4.2.jar
|
211
|
+
- test/bin/yuicompressor-2.4.2.zip
|
212
|
+
- test/data/Changelog.txt
|
213
|
+
- test/data/a.css
|
214
|
+
- test/data/a.js
|
215
|
+
- test/data/a1.css
|
216
|
+
- test/data/b.css
|
217
|
+
- test/data/b.js
|
218
|
+
- test/data/b1.css
|
219
|
+
- test/data/b2.css
|
220
|
+
- test/data/c1.css
|
221
|
+
- test/data/css/2.gif
|
222
|
+
- test/data/css/test.css
|
223
|
+
- test/data/css/test2.css
|
224
|
+
- test/data/css/test3.css
|
225
|
+
- test/data/d1.css
|
226
|
+
- test/data/images/1.png
|
227
|
+
- test/data/my_app.js
|
228
|
+
- test/data/not-ok.js
|
229
|
+
- test/data/ok.js
|
230
|
+
- test/data/path_test.css
|
231
|
+
- test/data/path_test2.css
|
232
|
+
- test/data/pkg/module/moda.js
|
233
|
+
- test/data/pkg/module/modb.js
|
234
|
+
- test/data/pkg/pkg.js
|
235
|
+
- test/fixtures/rhino-download.html
|
236
|
+
- test/fixtures/yui-download.html
|
178
237
|
- test/test_helper.rb
|
179
238
|
- test/unit/juicer/asset/path_resolver_test.rb
|
180
239
|
- test/unit/juicer/asset/path_test.rb
|
@@ -203,74 +262,41 @@ files:
|
|
203
262
|
- test/unit/juicer/minifyer/closure_compressor_test.rb
|
204
263
|
- test/unit/juicer/minifyer/yui_compressor_test.rb
|
205
264
|
- test/unit/juicer_test.rb
|
206
|
-
has_rdoc: true
|
207
265
|
homepage: http://github.com/cjohansen/juicer
|
208
266
|
licenses: []
|
267
|
+
post_install_message: ! 'Juicer does not ship with third party libraries. You probably
|
268
|
+
want to install
|
209
269
|
|
210
|
-
post_install_message: |
|
211
|
-
Juicer does not ship with third party libraries. You probably want to install
|
212
270
|
Yui Compressor and JsLint now:
|
213
|
-
|
271
|
+
|
272
|
+
|
214
273
|
juicer install yui_compressor
|
274
|
+
|
215
275
|
juicer install jslint
|
216
|
-
|
276
|
+
|
277
|
+
|
217
278
|
Happy juicing!
|
218
279
|
|
280
|
+
'
|
219
281
|
rdoc_options: []
|
220
|
-
|
221
|
-
require_paths:
|
282
|
+
require_paths:
|
222
283
|
- lib
|
223
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
284
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
224
285
|
none: false
|
225
|
-
requirements:
|
226
|
-
- -
|
227
|
-
- !ruby/object:Gem::Version
|
228
|
-
|
229
|
-
|
230
|
-
- 0
|
231
|
-
version: "0"
|
232
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
286
|
+
requirements:
|
287
|
+
- - ! '>='
|
288
|
+
- !ruby/object:Gem::Version
|
289
|
+
version: '0'
|
290
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
233
291
|
none: false
|
234
|
-
requirements:
|
235
|
-
- -
|
236
|
-
- !ruby/object:Gem::Version
|
237
|
-
|
238
|
-
segments:
|
239
|
-
- 0
|
240
|
-
version: "0"
|
292
|
+
requirements:
|
293
|
+
- - ! '>='
|
294
|
+
- !ruby/object:Gem::Version
|
295
|
+
version: '0'
|
241
296
|
requirements: []
|
242
|
-
|
243
297
|
rubyforge_project: juicer
|
244
|
-
rubygems_version: 1.
|
298
|
+
rubygems_version: 1.8.10
|
245
299
|
signing_key:
|
246
300
|
specification_version: 3
|
247
301
|
summary: Command line tool for CSS and JavaScript developers
|
248
|
-
test_files:
|
249
|
-
- test/test_helper.rb
|
250
|
-
- test/unit/juicer/asset/path_resolver_test.rb
|
251
|
-
- test/unit/juicer/asset/path_test.rb
|
252
|
-
- test/unit/juicer/cache_buster_test.rb
|
253
|
-
- test/unit/juicer/chainable_test.rb
|
254
|
-
- test/unit/juicer/command/install_test.rb
|
255
|
-
- test/unit/juicer/command/list_test.rb
|
256
|
-
- test/unit/juicer/command/merge_test.rb
|
257
|
-
- test/unit/juicer/command/util_test.rb
|
258
|
-
- test/unit/juicer/command/verify_test.rb
|
259
|
-
- test/unit/juicer/css_cache_buster_test.rb
|
260
|
-
- test/unit/juicer/datafy_test.rb
|
261
|
-
- test/unit/juicer/dependency_resolver/css_dependency_resolver_test.rb
|
262
|
-
- test/unit/juicer/dependency_resolver/javascript_dependency_resolver_test.rb
|
263
|
-
- test/unit/juicer/ext/string_test.rb
|
264
|
-
- test/unit/juicer/ext/symbol_test.rb
|
265
|
-
- test/unit/juicer/image_embed_test.rb
|
266
|
-
- test/unit/juicer/install/installer_base_test.rb
|
267
|
-
- test/unit/juicer/install/jslint_installer_test.rb
|
268
|
-
- test/unit/juicer/install/rhino_installer_test.rb
|
269
|
-
- test/unit/juicer/install/yui_compressor_test.rb
|
270
|
-
- test/unit/juicer/jslint_test.rb
|
271
|
-
- test/unit/juicer/merger/base_test.rb
|
272
|
-
- test/unit/juicer/merger/javascript_merger_test.rb
|
273
|
-
- test/unit/juicer/merger/stylesheet_merger_test.rb
|
274
|
-
- test/unit/juicer/minifyer/closure_compressor_test.rb
|
275
|
-
- test/unit/juicer/minifyer/yui_compressor_test.rb
|
276
|
-
- test/unit/juicer_test.rb
|
302
|
+
test_files: []
|