Class: IOP::ZstdDecompressor

Inherits:
Object
  • Object
show all
Includes:
Feed, Sink
Defined in:
lib/iop/zstdlib.rb

Overview

Note:

this class depends on external zstdlib gem.

Filter class to perform Gzip data compression.

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

This class can decompress .zst files.

### Use case: decompress a .zst file and compute MD5 hash sum of uncompressed data.

require 'iop/file'
require 'iop/digest'
require 'iop/zstdlib'
( IOP::FileReader.new('hello.zst') | IOP::ZstdDecompressor.new | (d = IOP::DigestComputer.new(Digest::MD5.new)) ).process!
puts d.digest.hexdigest

Since:

  • 0.1

Instance Attribute Summary

Attributes included from Sink

#upstream

Attributes included from Feed

#downstream

Instance Method Summary collapse

Methods included from Feed

#|

Constructor Details

#initialize(*args) ⇒ ZstdDecompressor

Creates class instance.

Parameters:

  • args (Array)

    arguments passed to Zstdlib::Inflate constructor

Since:

  • 0.1



81
82
83
# File 'lib/iop/zstdlib.rb', line 81

def initialize(*args)
  @args = args
end

Instance Method Details

#process(data = nil) ⇒ Object

Since:

  • 0.1



85
86
87
88
89
90
91
92
# File 'lib/iop/zstdlib.rb', line 85

def process(data = nil)
  if data.nil?
    super(@inflate.finish)
    super
  else
    super(@inflate.inflate(data))
  end
end

#process!Object

Since:

  • 0.1



94
95
96
97
98
99
100
101
# File 'lib/iop/zstdlib.rb', line 94

def process!
  @inflate = Zstdlib::Inflate.new(*@args)
  begin
    super
  ensure
    @inflate.close
  end
end