class ZipTricks::Streamer::Writable

Gets yielded from the writing methods of the Streamer and accepts the data being written into the ZIP for deflate or stored modes. Can be used as a destination for `IO.copy_stream`

IO.copy_stream(File.open('source.bin', 'rb), writable)

Public Class Methods

new(streamer, writer) click to toggle source

Initializes a new Writable with the object it delegates the writes to. Normally you would not need to use this method directly

# File lib/zip_tricks/streamer/writable.rb, line 11
def initialize(streamer, writer)
  @streamer = streamer
  @writer = writer
  @closed = false
end

Public Instance Methods

<<(d) click to toggle source

Writes the given data to the output stream

@param d the binary string to write (part of the uncompressed file) @return [self]

# File lib/zip_tricks/streamer/writable.rb, line 21
def <<(d)
  raise 'Trying to write to a closed Writable' if @closed
  @writer << d
  self
end
close() click to toggle source

Flushes the writer and recovers the CRC32/size values. It then calls `update_last_entry_and_write_data_descriptor` on the given Streamer.

# File lib/zip_tricks/streamer/writable.rb, line 38
def close
  return if @closed
  @streamer.update_last_entry_and_write_data_descriptor(**@writer.finish)
  @closed = true
end
write(d) click to toggle source

Writes the given data to the output stream

@param d the binary string to write (part of the uncompressed file) @return [Fixnum] the number of bytes written

# File lib/zip_tricks/streamer/writable.rb, line 31
def write(d)
  self << d
  d.bytesize
end