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