Files
fizzy/app/models/zip_file/reader/extractor_io.rb
T
2026-02-02 14:09:04 +01:00

35 lines
534 B
Ruby

class ZipFile::Reader::ExtractorIO
def initialize(entry, io)
@entry = entry
@io = io
@extractor = @entry.extractor_from(@io)
end
def read(length = nil, buffer = nil)
return nil if @extractor.eof?
data = @extractor.extract(length)
return nil if data.nil?
if buffer
buffer.replace(data)
buffer
else
data
end
end
def eof?
@extractor.eof?
end
def rewind
@extractor = @entry.extractor_from(@io)
0
end
def size
@entry.uncompressed_size
end
end