doo_dah 0.1.0 → 0.1.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.
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