Sha256: 7891d155bedcac880bdbe39a44a4ffe8a6014a016f520a2c400e30a1f660b4fa

Contents?: true

Size: 849 Bytes

Versions: 22

Compression:

Stored size: 849 Bytes

Contents

# frozen_string_literal: true

# Rubocop: convention: Missing top-level class documentation comment.
class ZipTricks::FileReader::InflatingReader
  def initialize(from_io, compressed_data_size)
    @io = from_io
    @compressed_data_size = compressed_data_size
    @already_read = 0
    @zlib_inflater = ::Zlib::Inflate.new(-Zlib::MAX_WBITS)
  end

  def extract(n_bytes = nil)
    n_bytes ||= (@compressed_data_size - @already_read)

    return if eof?

    available = @compressed_data_size - @already_read

    return if available.zero?

    n_bytes = available if n_bytes > available

    return '' if n_bytes.zero?

    compressed_chunk = @io.read(n_bytes)

    return if compressed_chunk.nil?

    @already_read += compressed_chunk.bytesize
    @zlib_inflater.inflate(compressed_chunk)
  end

  def eof?
    @zlib_inflater.finished?
  end
end

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
zip_tricks-5.6.0 lib/zip_tricks/file_reader/inflating_reader.rb
zip_tricks-5.5.0 lib/zip_tricks/file_reader/inflating_reader.rb
zip_tricks-5.4.0 lib/zip_tricks/file_reader/inflating_reader.rb
zip_tricks-4.8.3 lib/zip_tricks/file_reader/inflating_reader.rb
zip_tricks-5.3.1 lib/zip_tricks/file_reader/inflating_reader.rb
zip_tricks-4.8.2 lib/zip_tricks/file_reader/inflating_reader.rb
zip_tricks-5.3.0 lib/zip_tricks/file_reader/inflating_reader.rb
zip_tricks-5.2.0 lib/zip_tricks/file_reader/inflating_reader.rb
zip_tricks-4.8.1 lib/zip_tricks/file_reader/inflating_reader.rb
zip_tricks-5.1.1 lib/zip_tricks/file_reader/inflating_reader.rb
zip_tricks-5.1.0 lib/zip_tricks/file_reader/inflating_reader.rb
zip_tricks-5.0.0 lib/zip_tricks/file_reader/inflating_reader.rb
zip_tricks-4.8.0 lib/zip_tricks/file_reader/inflating_reader.rb
zip_tricks-4.7.4 lib/zip_tricks/file_reader/inflating_reader.rb
zip_tricks-4.7.3 lib/zip_tricks/file_reader/inflating_reader.rb
zip_tricks-4.7.2 lib/zip_tricks/file_reader/inflating_reader.rb
zip_tricks-4.7.1 lib/zip_tricks/file_reader/inflating_reader.rb
zip_tricks-4.7.0 lib/zip_tricks/file_reader/inflating_reader.rb
zip_tricks-4.6.0 lib/zip_tricks/file_reader/inflating_reader.rb
zip_tricks-4.5.2 lib/zip_tricks/file_reader/inflating_reader.rb