Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

48 lines (39 sloc) 1.258 kB
require 'open3'
require 'stringio'
module Closure
# The Closure::Compiler is a basic wrapper around the actual JAR. There's not
# much to see here.
class Compiler
# When you create a Compiler, pass in the flags and options.
def initialize(options={})
@java = options.delete(:java) || JAVA_COMMAND
@jar = options.delete(:jar_file) || COMPILER_JAR
@options = serialize_options(options)
end
# Can compile a JavaScript string or open IO object. Returns the compiled
# JavaScript as a string or yields an IO object containing the response to a
# block, for streaming.
def compile(io)
Open3.popen3(*command) do |stdin, stdout, stderr|
if io.respond_to? :read
while buffer = io.read(4096) do
stdin.write(buffer)
end
else
stdin.write(io.to_s)
end
stdin.close
block_given? ? yield(stdout) : stdout.read
end
end
alias_method :compress, :compile
private
# Serialize hash options to the command-line format.
def serialize_options(options)
options.map {|k, v| ["--#{k}", v.to_s] }.flatten
end
def command
[@java, '-jar', @jar, @options].flatten
end
end
end
Jump to Line
Something went wrong with that request. Please try again.