closure-compiler 0.2.2 → 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/README.textile
CHANGED
@@ -2,9 +2,9 @@ h1. The Closure Compiler (as a Ruby Gem)
|
|
2
2
|
|
3
3
|
The *closure-compiler* gem is a svelte wrapper around the "Google Closure Compiler":http://code.google.com/closure/compiler/ for JavaScript compression.
|
4
4
|
|
5
|
-
Latest Version: *"0.
|
5
|
+
Latest Version: *"0.3.0":http://gemcutter.org/gems/closure-compiler*
|
6
6
|
|
7
|
-
The Closure Compiler's *2010-
|
7
|
+
The Closure Compiler's *2010-05-15* JAR-file is included with the gem, so you'll need *Java 6* installed in order to run the compiler.
|
8
8
|
|
9
9
|
h2. Installation
|
10
10
|
|
data/closure-compiler.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'closure-compiler'
|
3
|
-
s.version = '0.
|
4
|
-
s.date = '2010-
|
3
|
+
s.version = '0.3.0' # Keep version in sync with closure-compiler.rb
|
4
|
+
s.date = '2010-6-10'
|
5
5
|
|
6
6
|
s.homepage = "http://github.com/documentcloud/closure-compiler/"
|
7
7
|
s.summary = "Ruby Wrapper for the Google Closure Compiler"
|
@@ -20,8 +20,6 @@ Gem::Specification.new do |s|
|
|
20
20
|
'--exclude' << 'test' <<
|
21
21
|
'--all'
|
22
22
|
|
23
|
-
s.add_dependency 'POpen4', ['>= 0.1.4']
|
24
|
-
|
25
23
|
s.files = Dir['lib/**/*', 'vendor/**/*', 'closure-compiler.gemspec', 'README.textile', 'LICENSE', 'COPYING']
|
26
24
|
|
27
25
|
end
|
data/lib/closure-compiler.rb
CHANGED
@@ -1,13 +1,17 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + '/closure/compiler')
|
2
|
-
|
3
1
|
module Closure
|
4
2
|
|
5
|
-
VERSION = "0.
|
3
|
+
VERSION = "0.3.0"
|
6
4
|
|
7
|
-
COMPILER_VERSION = "
|
5
|
+
COMPILER_VERSION = "20100514"
|
8
6
|
|
9
7
|
JAVA_COMMAND = 'java'
|
10
8
|
|
11
|
-
|
9
|
+
COMPILER_ROOT = File.expand_path(File.dirname(__FILE__))
|
10
|
+
|
11
|
+
COMPILER_JAR = COMPILER_ROOT + "/../vendor/closure-compiler-#{COMPILER_VERSION}.jar"
|
12
|
+
|
13
|
+
end
|
12
14
|
|
13
|
-
|
15
|
+
require 'stringio'
|
16
|
+
require Closure::COMPILER_ROOT + '/closure/popen'
|
17
|
+
require Closure::COMPILER_ROOT + '/closure/compiler'
|
data/lib/closure/compiler.rb
CHANGED
@@ -1,7 +1,3 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'popen4'
|
3
|
-
require 'stringio'
|
4
|
-
|
5
1
|
module Closure
|
6
2
|
|
7
3
|
# We raise a Closure::Error when compilation fails for any reason.
|
@@ -23,7 +19,7 @@ module Closure
|
|
23
19
|
# block, for streaming.
|
24
20
|
def compile(io)
|
25
21
|
result, error = nil, nil
|
26
|
-
|
22
|
+
pid = Closure::Popen.popen(*command) do |stdin, stdout, stderr|
|
27
23
|
if io.respond_to? :read
|
28
24
|
while buffer = io.read(4096) do
|
29
25
|
stdin.write(buffer)
|
@@ -37,7 +33,8 @@ module Closure
|
|
37
33
|
out_thread.join and err_thread.join
|
38
34
|
yield(StringIO.new(result)) if block_given?
|
39
35
|
end
|
40
|
-
|
36
|
+
Process.waitpid pid
|
37
|
+
raise Error, error unless $?.success?
|
41
38
|
result
|
42
39
|
end
|
43
40
|
alias_method :compress, :compile
|
@@ -0,0 +1,43 @@
|
|
1
|
+
module Closure
|
2
|
+
|
3
|
+
# A slightly modified version of Ruby 1.8's Open3, that doesn't use a
|
4
|
+
# grandchild process, and returns the pid of the external process.
|
5
|
+
module Popen
|
6
|
+
|
7
|
+
def self.popen(*cmd)
|
8
|
+
# pipe[0] for read, pipe[1] for write
|
9
|
+
pw, pr, pe = IO.pipe, IO.pipe, IO.pipe
|
10
|
+
|
11
|
+
pid = fork {
|
12
|
+
pw[1].close
|
13
|
+
STDIN.reopen(pw[0])
|
14
|
+
pw[0].close
|
15
|
+
|
16
|
+
pr[0].close
|
17
|
+
STDOUT.reopen(pr[1])
|
18
|
+
pr[1].close
|
19
|
+
|
20
|
+
pe[0].close
|
21
|
+
STDERR.reopen(pe[1])
|
22
|
+
pe[1].close
|
23
|
+
|
24
|
+
exec(*cmd)
|
25
|
+
}
|
26
|
+
|
27
|
+
pw[0].close
|
28
|
+
pr[1].close
|
29
|
+
pe[1].close
|
30
|
+
pi = [pw[1], pr[0], pe[0]]
|
31
|
+
pw[1].sync = true
|
32
|
+
begin
|
33
|
+
if block_given?
|
34
|
+
yield(*pi)
|
35
|
+
end
|
36
|
+
ensure
|
37
|
+
pi.each{|p| p.close unless p.closed?}
|
38
|
+
end
|
39
|
+
pid
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
end
|
Binary file
|
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
-
-
|
8
|
-
-
|
9
|
-
version: 0.
|
7
|
+
- 3
|
8
|
+
- 0
|
9
|
+
version: 0.3.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Jeremy Ashkenas
|
@@ -15,23 +15,10 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-
|
18
|
+
date: 2010-06-10 00:00:00 -04:00
|
19
19
|
default_executable:
|
20
|
-
dependencies:
|
21
|
-
|
22
|
-
name: POpen4
|
23
|
-
prerelease: false
|
24
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
-
requirements:
|
26
|
-
- - ">="
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
segments:
|
29
|
-
- 0
|
30
|
-
- 1
|
31
|
-
- 4
|
32
|
-
version: 0.1.4
|
33
|
-
type: :runtime
|
34
|
-
version_requirements: *id001
|
20
|
+
dependencies: []
|
21
|
+
|
35
22
|
description: " A Ruby Wrapper for the Google Closure Compiler.\n"
|
36
23
|
email: jeremy@documentcloud.org
|
37
24
|
executables: []
|
@@ -42,8 +29,9 @@ extra_rdoc_files: []
|
|
42
29
|
|
43
30
|
files:
|
44
31
|
- lib/closure/compiler.rb
|
32
|
+
- lib/closure/popen.rb
|
45
33
|
- lib/closure-compiler.rb
|
46
|
-
- vendor/closure-compiler-
|
34
|
+
- vendor/closure-compiler-20100514.jar
|
47
35
|
- closure-compiler.gemspec
|
48
36
|
- README.textile
|
49
37
|
- LICENSE
|