zippo 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +6 -14
- data/.rubocop.yml +35 -0
- data/.travis.yml +3 -0
- data/README.md +4 -0
- data/Rakefile +8 -2
- data/lib/zippo.rb +1 -1
- data/lib/zippo/binary_structure/base.rb +10 -8
- data/lib/zippo/binary_structure/binary_packer.rb +2 -2
- data/lib/zippo/binary_structure/meta.rb +9 -11
- data/lib/zippo/binary_structure/structure.rb +6 -4
- data/lib/zippo/binary_structure/structure_member.rb +1 -1
- data/lib/zippo/cd_file_header.rb +14 -14
- data/lib/zippo/central_directory_entries_unpacker.rb +3 -2
- data/lib/zippo/central_directory_reader.rb +4 -3
- data/lib/zippo/end_cd_record.rb +6 -6
- data/lib/zippo/filter/base.rb +3 -2
- data/lib/zippo/filter/compressor.rb +4 -4
- data/lib/zippo/filter/compressor/deflate.rb +1 -0
- data/lib/zippo/filter/null_filters.rb +1 -0
- data/lib/zippo/filter/uncompressor.rb +3 -5
- data/lib/zippo/filter/uncompressor/deflate.rb +1 -0
- data/lib/zippo/io_zip_member.rb +1 -1
- data/lib/zippo/local_file_header.rb +8 -8
- data/lib/zippo/version.rb +1 -1
- data/lib/zippo/zip_directory.rb +15 -12
- data/lib/zippo/zip_file.rb +8 -6
- data/lib/zippo/zip_file_writer.rb +4 -4
- data/lib/zippo/zip_member.rb +4 -3
- data/spec/binary_structure_spec.rb +26 -28
- data/spec/central_directory_entries_unpacker_spec.rb +2 -3
- data/spec/central_directory_parser_spec.rb +4 -4
- data/spec/central_directory_unpacker_spec.rb +0 -1
- data/spec/deflate_compressor_spec.rb +4 -4
- data/spec/deflate_uncompressor_spec.rb +5 -6
- data/spec/integration/compressors_spec.rb +1 -1
- data/spec/integration/zippo_spec.rb +4 -3
- data/spec/spec_helper.rb +9 -0
- data/spec/store_compressor_spec.rb +3 -3
- data/spec/store_uncompressor_spec.rb +1 -1
- data/spec/zip_directory_spec.rb +15 -15
- data/spec/zip_file_spec.rb +1 -1
- data/spec/zip_file_writer_spec.rb +0 -1
- data/spec/zip_member_spec.rb +4 -6
- data/yard_extensions.rb +1 -1
- data/zippo.gemspec +7 -6
- metadata +59 -19
data/spec/spec_helper.rb
CHANGED
@@ -1,6 +1,15 @@
|
|
1
|
+
require "pathname"
|
2
|
+
|
3
|
+
RSpec.configure do |config|
|
4
|
+
config.expect_with :rspec do |c|
|
5
|
+
c.syntax = [:should, :expect]
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
1
9
|
def io_for(filename)
|
2
10
|
File.open test_file(filename), "rb:ASCII-8BIT"
|
3
11
|
end
|
12
|
+
|
4
13
|
def test_file(filename)
|
5
14
|
File.join(File.join(File.dirname(__FILE__), 'data'), filename)
|
6
15
|
end
|
@@ -4,9 +4,9 @@ require "zippo/filter/compressor/store"
|
|
4
4
|
|
5
5
|
module Zippo::Filter
|
6
6
|
describe StoreCompressor do
|
7
|
-
let
|
8
|
-
let
|
9
|
-
let
|
7
|
+
let(:data) { "a" * 20 }
|
8
|
+
let(:io) { StringIO.new data }
|
9
|
+
let(:out) { StringIO.new }
|
10
10
|
it "should write the data" do
|
11
11
|
compressor = StoreCompressor.new(io)
|
12
12
|
size, csize, crc32 = compressor.compress_to out
|
@@ -5,7 +5,7 @@ require "zippo/filter/uncompressor/store"
|
|
5
5
|
module Zippo::Filter
|
6
6
|
describe StoreUncompressor do
|
7
7
|
let(:io) { StringIO.new "foobarbazquux" }
|
8
|
-
let
|
8
|
+
let(:out) { StringIO.new }
|
9
9
|
it "should read only the specified amount" do
|
10
10
|
io.seek 3
|
11
11
|
StoreUncompressor.new(io, 3).uncompress.should eq "bar"
|
data/spec/zip_directory_spec.rb
CHANGED
@@ -5,21 +5,21 @@ require 'zippo/zip_file'
|
|
5
5
|
module Zippo
|
6
6
|
describe ZipDirectory do
|
7
7
|
context "when opening a file" do
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
8
|
+
let(:io) { File.open(file, "rb:ASCII-8BIT") }
|
9
|
+
after(:each) { io.close }
|
10
|
+
subject { ZipDirectory.new io }
|
11
|
+
context "when reading a simple file" do
|
12
|
+
let(:file) { test_file "test.zip" }
|
13
|
+
specify { subject.entries.size.should eq 1 }
|
14
|
+
specify { subject["test.file"].should_not be_nil }
|
15
|
+
it { should_not be_empty }
|
16
|
+
end
|
17
|
+
context "when reading a larger zip" do
|
18
|
+
let(:file) { test_file "multi.zip" }
|
19
|
+
specify { subject.entries.size.should eq 2 }
|
20
|
+
specify { subject["test.file"].should_not be_nil }
|
21
|
+
specify { subject["other.test"].should_not be_nil }
|
22
|
+
end
|
23
23
|
end
|
24
24
|
context "when inserting" do
|
25
25
|
let(:io) { StringIO.new "" }
|
data/spec/zip_file_spec.rb
CHANGED
@@ -35,7 +35,7 @@ module Zippo
|
|
35
35
|
it "should write the file when closed" do
|
36
36
|
zip.close
|
37
37
|
Pathname.new(file).should exist
|
38
|
-
Zippo::ZipFile.open(file) {|f| f["new.file"].read }.should eq "foo"
|
38
|
+
Zippo::ZipFile.open(file) { |f| f["new.file"].read }.should eq "foo"
|
39
39
|
end
|
40
40
|
end
|
41
41
|
end
|
@@ -13,7 +13,6 @@ module Zippo
|
|
13
13
|
directory["file.ext"] = "foo"
|
14
14
|
writer = ZipFileWriter.new directory, "out.zip"
|
15
15
|
writer.write
|
16
|
-
File.open("/home/jma/yay.zip","w") {|f| f.write File.read("out.zip") }
|
17
16
|
Zippo.open("out.zip") do |f|
|
18
17
|
f['file.ext'].crc32.should eq 0x8c736521
|
19
18
|
f['file.ext'].compressed_size.should eq 5
|
data/spec/zip_member_spec.rb
CHANGED
@@ -9,9 +9,9 @@ module Zippo
|
|
9
9
|
let(:io) { io_for "test.zip" }
|
10
10
|
let(:cio) { io_for "deflate.zip" }
|
11
11
|
let(:str) { "The quick brown fox jumps over the lazy dog.\n" }
|
12
|
-
let(:header) {
|
13
|
-
let(:dheader) {
|
14
|
-
let(:cheader) {
|
12
|
+
let(:header) { double(:header, name: "foo", compression_method: 0, compressed_size: 45, uncompressed_size: 45, crc32: 3947940970, local_file_header_offset: 0) }
|
13
|
+
let(:dheader) { double(:header, name: "foo/") }
|
14
|
+
let(:cheader) { double(:header, compression_method: 8, compressed_size: 37, local_file_header_offset: 0) }
|
15
15
|
it "should work" do
|
16
16
|
member = ZipMember.new io, header
|
17
17
|
member.read.should eq str
|
@@ -34,9 +34,7 @@ module Zippo
|
|
34
34
|
member = ZipMember.new cio, cheader
|
35
35
|
member.read.should eq "Methinks it is like a weasel.\n" * 10
|
36
36
|
end
|
37
|
-
|
38
|
-
pending
|
39
|
-
end
|
37
|
+
pending "should be able to write to an IO using a streaming approach"
|
40
38
|
pending "should be able to choose between recompressing or re-using the compressed data"
|
41
39
|
end
|
42
40
|
end
|
data/yard_extensions.rb
CHANGED
data/zippo.gemspec
CHANGED
@@ -4,20 +4,21 @@ require File.expand_path('../lib/zippo/version', __FILE__)
|
|
4
4
|
Gem::Specification.new do |gem|
|
5
5
|
gem.authors = ["Jonathon M. Abbott"]
|
6
6
|
gem.email = ["jma@dandaraga.net"]
|
7
|
-
gem.summary =
|
7
|
+
gem.summary = 'An (almost) pure-ruby Zip library'
|
8
8
|
gem.description = gem.summary
|
9
9
|
gem.homepage = "https://github.com/JonathonMA/zippo"
|
10
10
|
gem.license = "MIT"
|
11
11
|
|
12
|
-
gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
12
|
+
gem.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
|
13
13
|
gem.files = `git ls-files`.split("\n")
|
14
14
|
gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
15
15
|
gem.name = "zippo"
|
16
16
|
gem.require_paths = ["lib"]
|
17
17
|
gem.version = Zippo::VERSION
|
18
18
|
|
19
|
-
gem.add_development_dependency
|
20
|
-
gem.add_development_dependency
|
21
|
-
gem.add_development_dependency
|
22
|
-
gem.add_development_dependency
|
19
|
+
gem.add_development_dependency "rspec", "~> 3.0"
|
20
|
+
gem.add_development_dependency "rake"
|
21
|
+
gem.add_development_dependency "yard", '>= 0.8'
|
22
|
+
gem.add_development_dependency "redcarpet"
|
23
|
+
gem.add_development_dependency "rubocop", '~> 0.27.0'
|
23
24
|
end
|
metadata
CHANGED
@@ -1,71 +1,85 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zippo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jonathon M. Abbott
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-06-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0'
|
19
|
+
version: '3.0'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '0'
|
26
|
+
version: '3.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: yard
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0.8'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0.8'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: redcarpet
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rubocop
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 0.27.0
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 0.27.0
|
69
83
|
description: An (almost) pure-ruby Zip library
|
70
84
|
email:
|
71
85
|
- jma@dandaraga.net
|
@@ -73,9 +87,11 @@ executables: []
|
|
73
87
|
extensions: []
|
74
88
|
extra_rdoc_files: []
|
75
89
|
files:
|
76
|
-
- .gitignore
|
77
|
-
- .rspec
|
78
|
-
- .
|
90
|
+
- ".gitignore"
|
91
|
+
- ".rspec"
|
92
|
+
- ".rubocop.yml"
|
93
|
+
- ".travis.yml"
|
94
|
+
- ".yardopts"
|
79
95
|
- Gemfile
|
80
96
|
- LICENSE
|
81
97
|
- README.md
|
@@ -145,19 +161,43 @@ require_paths:
|
|
145
161
|
- lib
|
146
162
|
required_ruby_version: !ruby/object:Gem::Requirement
|
147
163
|
requirements:
|
148
|
-
- -
|
164
|
+
- - ">="
|
149
165
|
- !ruby/object:Gem::Version
|
150
166
|
version: '0'
|
151
167
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
152
168
|
requirements:
|
153
|
-
- -
|
169
|
+
- - ">="
|
154
170
|
- !ruby/object:Gem::Version
|
155
171
|
version: '0'
|
156
172
|
requirements: []
|
157
173
|
rubyforge_project:
|
158
|
-
rubygems_version: 2.
|
174
|
+
rubygems_version: 2.4.5
|
159
175
|
signing_key:
|
160
176
|
specification_version: 4
|
161
177
|
summary: An (almost) pure-ruby Zip library
|
162
|
-
test_files:
|
178
|
+
test_files:
|
179
|
+
- spec/binary_structure_spec.rb
|
180
|
+
- spec/central_directory_entries_unpacker_spec.rb
|
181
|
+
- spec/central_directory_parser_spec.rb
|
182
|
+
- spec/central_directory_unpacker_spec.rb
|
183
|
+
- spec/compressor_spec.rb
|
184
|
+
- spec/data/comment.zip
|
185
|
+
- spec/data/deflate.zip
|
186
|
+
- spec/data/multi.zip
|
187
|
+
- spec/data/not_a.zip
|
188
|
+
- spec/data/test.zip
|
189
|
+
- spec/deflate_compressor_spec.rb
|
190
|
+
- spec/deflate_uncompressor_spec.rb
|
191
|
+
- spec/integration/compressors_spec.rb
|
192
|
+
- spec/integration/zippo_spec.rb
|
193
|
+
- spec/io_zip_member_spec.rb
|
194
|
+
- spec/local_file_header_spec.rb
|
195
|
+
- spec/spec_helper.rb
|
196
|
+
- spec/store_compressor_spec.rb
|
197
|
+
- spec/store_uncompressor_spec.rb
|
198
|
+
- spec/uncompressor_spec.rb
|
199
|
+
- spec/zip_directory_spec.rb
|
200
|
+
- spec/zip_file_spec.rb
|
201
|
+
- spec/zip_file_writer_spec.rb
|
202
|
+
- spec/zip_member_spec.rb
|
163
203
|
has_rdoc:
|