Class: Harbor::ZippedIO
- Inherits:
-
Object
show all
- Defined in:
- lib/harbor/zipped_io.rb
Overview
An IO class for zipping files suitable for sending via rack.
Defined Under Namespace
Classes: Deflater, ZipCentralDirectory, ZipEntry
Constant Summary
collapse
- CENTRAL_DIRECTORY_ENTRY_SIGNATURE =
0x02014b50
- END_OF_CENTRAL_DIRECTORY_SIGNATURE =
0x06054b50
- @@block_size =
4096
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(files) ⇒ ZippedIO
Returns a new instance of ZippedIO.
11
12
13
|
# File 'lib/harbor/zipped_io.rb', line 11
def initialize(files)
@files = files
end
|
Class Method Details
.block_size ⇒ Object
53
54
55
|
# File 'lib/harbor/zipped_io.rb', line 53
def self.block_size
@@block_size
end
|
.block_size=(value) ⇒ Object
57
58
59
|
# File 'lib/harbor/zipped_io.rb', line 57
def self.block_size=(value)
@@block_size = value
end
|
Instance Method Details
#each ⇒ Object
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
# File 'lib/harbor/zipped_io.rb', line 15
def each
zip_entries.each do |entry|
yield entry.read_local_entry
deflater = Deflater.new(entry.file)
deflater.read do |data|
yield data
end
end
zip_central_directory.read do |data|
yield data
end
end
|
#size ⇒ Object
30
31
32
33
34
35
36
37
38
39
40
41
|
# File 'lib/harbor/zipped_io.rb', line 30
def size
return @size if @size
@size = 0
zip_entries.each do |entry|
@size += entry.size
end
@files.each do |file|
@size += ZippedIO::Deflater.new(file).size
end
@size += zip_central_directory.size
@size
end
|
#zip_central_directory ⇒ Object
43
44
45
|
# File 'lib/harbor/zipped_io.rb', line 43
def zip_central_directory
@zip_central_directory ||= ZipCentralDirectory.new(zip_entries)
end
|
#zip_entries ⇒ Object
47
48
49
|
# File 'lib/harbor/zipped_io.rb', line 47
def zip_entries
@zip_entries ||= @files.map { |file| ZipEntry.new(file) }
end
|