### Home Classes Methods

### In Files

- lib/yui/compressor.rb

### Parent

Object

### Namespace

- CLASS YUI::Compressor::Error
- CLASS YUI::Compressor::OptionError
- CLASS YUI::Compressor::RuntimeError

### Methods

- #compress

### Class/Module Index

Quicksearch

- YUI
- YUI::Compressor
- YUI::Compressor::Error
- YUI::Compressor::OptionError
- YUI::Compressor::RuntimeError
- YUI::CssCompressor
- YUI::JavaScriptCompressor

No matching classes.

# YUI::Compressor

### Constants

VERSION

### Attributes

options[R]

### Public Instance Methods

compress(stream_or_string) click to toggle source

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.

#### Example: Compress CSS

    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;}"

#### Example: Compress JavaScript

    compressor = YUI::JavaScriptCompressor.new
    compressor.compress('(function () { var foo = {}; foo["bar"] = "baz"; })()')
    # => "(function(){var foo={};foo.bar=\"baz\"})();"

#### Example: Compress and gzip a file on disk

    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 65
    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

[Validate]

Generated with the Darkfish Rdoc Generator 2.