Class: ZipKit::Streamer::Writable
- Inherits:
-
Object
- Object
- ZipKit::Streamer::Writable
- Includes:
- WriteShovel
- Defined in:
- lib/zip_kit/streamer/writable.rb
Overview
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)
Direct Known Subclasses
Instance Method Summary collapse
-
#<<(d) ⇒ self
Writes the given data to the output stream.
-
#close ⇒ Object
Flushes the writer and recovers the CRC32/size values.
-
#initialize(streamer, writer) ⇒ Writable
constructor
Initializes a new Writable with the object it delegates the writes to.
Methods included from WriteShovel
Constructor Details
#initialize(streamer, writer) ⇒ Writable
Initializes a new Writable with the object it delegates the writes to. Normally you would not need to use this method directly
13 14 15 16 17 |
# File 'lib/zip_kit/streamer/writable.rb', line 13 def initialize(streamer, writer) @streamer = streamer @writer = writer @closed = false end |
Instance Method Details
#<<(d) ⇒ self
Writes the given data to the output stream
23 24 25 26 27 |
# File 'lib/zip_kit/streamer/writable.rb', line 23 def <<(d) raise "Trying to write to a closed Writable" if @closed @writer << d self end |
#close ⇒ Object
Flushes the writer and recovers the CRC32/size values. It then calls
update_last_entry_and_write_data_descriptor
on the given Streamer.
31 32 33 34 35 |
# File 'lib/zip_kit/streamer/writable.rb', line 31 def close return if @closed @streamer.update_last_entry_and_write_data_descriptor(**@writer.finish) @closed = true end |