doo_dah 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. data/VERSION +1 -1
  2. data/doo_dah.gemspec +80 -0
  3. data/lib/doo_dah/zip_entry.rb +18 -4
  4. metadata +18 -8
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.1.1
data/doo_dah.gemspec ADDED
@@ -0,0 +1,80 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{doo_dah}
8
+ s.version = "0.1.1"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Michael Collas"]
12
+ s.date = %q{2012-06-05}
13
+ s.description = %q{ This gem creates zip files using the STORE method - i.e. with no compression. This enables the generation of
14
+ zip files with a known size from streamed data, providing the size of the input files is known.
15
+ }
16
+ s.email = %q{mcollas@yahoo.com}
17
+ s.extra_rdoc_files = [
18
+ "README"
19
+ ]
20
+ s.files = [
21
+ ".rspec",
22
+ "README",
23
+ "Rakefile",
24
+ "VERSION",
25
+ "config/defaults.reek",
26
+ "doo_dah.gemspec",
27
+ "example/multi-language.rb",
28
+ "lib/doo_dah.rb",
29
+ "lib/doo_dah/dos_time.rb",
30
+ "lib/doo_dah/zip_entry.rb",
31
+ "lib/doo_dah/zip_header.rb",
32
+ "lib/doo_dah/zip_output_stream.rb",
33
+ "spec/central_directory_spec.rb",
34
+ "spec/dos_time_spec.rb",
35
+ "spec/local_directory_header_spec.rb",
36
+ "spec/spec_helper.rb",
37
+ "spec/support/byte_matcher.rb",
38
+ "spec/support/write_capturing_example_group.rb",
39
+ "spec/zip_entry_header_spec.rb",
40
+ "spec/zip_entry_spec.rb",
41
+ "spec/zip_header_spec.rb",
42
+ "spec/zip_output_stream_spec.rb"
43
+ ]
44
+ s.homepage = %q{http://github.com/michaelcollas/doo_dah}
45
+ s.require_paths = ["lib"]
46
+ s.rubygems_version = %q{1.3.7}
47
+ s.summary = %q{Creates zip files suitable for streaming.}
48
+ s.test_files = [
49
+ "spec/central_directory_spec.rb",
50
+ "spec/dos_time_spec.rb",
51
+ "spec/local_directory_header_spec.rb",
52
+ "spec/spec_helper.rb",
53
+ "spec/support/byte_matcher.rb",
54
+ "spec/support/write_capturing_example_group.rb",
55
+ "spec/zip_entry_header_spec.rb",
56
+ "spec/zip_entry_spec.rb",
57
+ "spec/zip_header_spec.rb",
58
+ "spec/zip_output_stream_spec.rb"
59
+ ]
60
+
61
+ if s.respond_to? :specification_version then
62
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
63
+ s.specification_version = 3
64
+
65
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
66
+ s.add_development_dependency(%q<rspec>, [">= 2.8.0"])
67
+ s.add_development_dependency(%q<reek>, [">= 1.2.8"])
68
+ s.add_development_dependency(%q<sexp_processor>, [">= 3.0.4"])
69
+ else
70
+ s.add_dependency(%q<rspec>, [">= 2.8.0"])
71
+ s.add_dependency(%q<reek>, [">= 1.2.8"])
72
+ s.add_dependency(%q<sexp_processor>, [">= 3.0.4"])
73
+ end
74
+ else
75
+ s.add_dependency(%q<rspec>, [">= 2.8.0"])
76
+ s.add_dependency(%q<reek>, [">= 1.2.8"])
77
+ s.add_dependency(%q<sexp_processor>, [">= 3.0.4"])
78
+ end
79
+ end
80
+
@@ -6,24 +6,38 @@ module DooDah
6
6
  include LocalDirectoryHeader
7
7
  include CentralDirectoryHeader
8
8
 
9
- attr_reader :size, :crc, :name, :closed
9
+ attr_reader :name, :closed
10
10
  alias_method :closed?, :closed
11
11
 
12
12
  extend ::Forwardable
13
13
  def_delegators :@zip_stream, :write, :current_offset
14
14
 
15
- def initialize(zip_stream, name, size = 0)
15
+ def initialize(zip_stream, name, size = 0, crc = 0)
16
16
  @zip_stream = zip_stream
17
17
  @name = name
18
18
  @crc = 0
19
- @size = size
19
+ @size = 0
20
+ @expected_crc = crc
21
+ @expected_size = size
20
22
  @closed = false
21
23
  write_local_header
22
24
  end
23
25
 
26
+ def size
27
+ @expected_size != 0 ? @expected_size : @size
28
+ end
29
+
30
+ def crc
31
+ @expected_crc != 0 ? @expected_crc : @crc
32
+ end
33
+
34
+ def local_footer_required?
35
+ @expected_size == 0 || @expected_crc == 0
36
+ end
37
+
24
38
  def close
25
39
  return if closed
26
- write_local_footer
40
+ write_local_footer if local_footer_required?
27
41
  @closed = true
28
42
  end
29
43
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: doo_dah
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
5
- prerelease:
4
+ hash: 25
5
+ prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 0
10
- version: 0.1.0
9
+ - 1
10
+ version: 0.1.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Michael Collas
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-06-04 00:00:00 +10:00
18
+ date: 2012-06-05 00:00:00 +10:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -80,6 +80,7 @@ files:
80
80
  - Rakefile
81
81
  - VERSION
82
82
  - config/defaults.reek
83
+ - doo_dah.gemspec
83
84
  - example/multi-language.rb
84
85
  - lib/doo_dah.rb
85
86
  - lib/doo_dah/dos_time.rb
@@ -126,9 +127,18 @@ required_rubygems_version: !ruby/object:Gem::Requirement
126
127
  requirements: []
127
128
 
128
129
  rubyforge_project:
129
- rubygems_version: 1.5.2
130
+ rubygems_version: 1.3.7
130
131
  signing_key:
131
132
  specification_version: 3
132
133
  summary: Creates zip files suitable for streaming.
133
- test_files: []
134
-
134
+ test_files:
135
+ - spec/central_directory_spec.rb
136
+ - spec/dos_time_spec.rb
137
+ - spec/local_directory_header_spec.rb
138
+ - spec/spec_helper.rb
139
+ - spec/support/byte_matcher.rb
140
+ - spec/support/write_capturing_example_group.rb
141
+ - spec/zip_entry_header_spec.rb
142
+ - spec/zip_entry_spec.rb
143
+ - spec/zip_header_spec.rb
144
+ - spec/zip_output_stream_spec.rb