class IOP::GzipCompressor

Filter class to perform Gzip data compression.

This class is an adapter for the standard Ruby Zlib::GzipWriter class.

This class produces valid .gz files.

### Use case: compress a string and store it to .gz file.

require 'iop/zlib'
require 'iop/file'
require 'iop/string'
( IOP::StringSplitter.new('Hello IOP') | IOP::GzipCompressor.new | IOP::FileWriter.new('hello.gz') ).process!

@since 0.1

Public Class Methods

new(*args) click to toggle source

Creates class instance.

@param args [Array] arguments passed to Zlib::GzipWriter constructor

# File lib/iop/zlib.rb, line 129
def initialize(*args)
  @args = args
end

Public Instance Methods

process(data = nil) click to toggle source
Calls superclass method IOP::Sink#process
# File lib/iop/zlib.rb, line 133
def process(data = nil)
  if data.nil?
    @compressor.finish
    super
  else
    @compressor.write(data)
  end
end
process!() click to toggle source
Calls superclass method IOP::Sink#process!
# File lib/iop/zlib.rb, line 146
def process!
  @compressor = Zlib::GzipWriter.new(self, *@args)
  super
ensure
  @compressor.close unless @compressor.nil?
end
write(data) click to toggle source
# File lib/iop/zlib.rb, line 142
def write(data)
  downstream&.process(data)
end