Sha256: d9484e91941530e2948572e97622d634dfa68dbc055cc728a8da30fd2a032745

Contents?: true

Size: 774 Bytes

Versions: 8

Compression:

Stored size: 774 Bytes

Contents

# frozen_string_literal: true

# Rubocop: convention: Missing top-level class documentation comment.
class ZipKit::FileReader::StoredReader
  def initialize(from_io, compressed_data_size)
    @io = from_io
    @compressed_data_size = compressed_data_size
    @already_read = 0
  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
    compressed_chunk
  end

  def eof?
    @already_read >= @compressed_data_size
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
zip_kit-6.3.2 lib/zip_kit/file_reader/stored_reader.rb
zip_kit-6.3.1 lib/zip_kit/file_reader/stored_reader.rb
zip_kit-6.3.0 lib/zip_kit/file_reader/stored_reader.rb
zip_kit-6.2.2 lib/zip_kit/file_reader/stored_reader.rb
zip_kit-6.2.1 lib/zip_kit/file_reader/stored_reader.rb
zip_kit-6.2.0 lib/zip_kit/file_reader/stored_reader.rb
zip_kit-6.0.1 lib/zip_kit/file_reader/stored_reader.rb
zip_kit-6.0.0 lib/zip_kit/file_reader/stored_reader.rb