juicer 1.0.13 → 1.0.14
Sign up to get free protection for your applications and to get access to all the features.
- 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: []
|