Object
Compress a stream or string of code with YUI Compressor. (A stream is any object that responds to read and close like an IO.) If a block is given, you can read the compressed code from the block’s argument. Otherwise, compress returns a string of compressed code.
compressor = YUI::CssCompressor.new compressor.compress(<<-END_CSS) div.error { color: red; } div.warning { display: none; } END_CSS # => "div.error{color:red;}div.warning{display:none;}"
compressor = YUI::JavaScriptCompressor.new compressor.compress('(function () { var foo = {}; foo["bar"] = "baz"; })()') # => "(function(){var foo={};foo.bar=\"baz\"})();"
File.open("my.js", "r") do |source| Zlib::GzipWriter.open("my.js.gz", "w") do |gzip| compressor.compress(source) do |compressed| while buffer = compressed.read(4096) gzip.write(buffer) end end end end
# File lib/yui/compressor.rb, line 70 def compress(stream_or_string) streamify(stream_or_string) do |stream| output = true status = POpen4.popen4(command, "b") do |stdout, stderr, stdin, pid| begin stdin.binmode transfer(stream, stdin) if block_given? yield stdout else output = stdout.read end rescue Exception => e raise RuntimeError, "compression failed" end end if status.exitstatus.zero? output else raise RuntimeError, "compression failed" end end end
Generated with the Darkfish Rdoc Generator 2.