external 0.3.0 → 0.3.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.
data/History CHANGED
@@ -1,3 +1,8 @@
1
+ == 0.3.1 / 2009-06-29
2
+
3
+ * updates to gem dependencies
4
+ * experimentally added IO as an accepted type in Utils
5
+
1
6
  == 0.3.0 / 2008-10-27
2
7
 
3
8
  Major update with refactoring (ex ExtArr is now ExternalArray)
@@ -24,9 +24,14 @@ module External
24
24
  # used (in which case mode gets ignored as Tempfiles always open
25
25
  # in 'r+' mode).
26
26
  def open(path=nil, mode="rb", *argv)
27
- path = File.open(path, mode) unless path == nil
28
- base = new(path, *argv)
29
-
27
+ begin
28
+ io = path == nil ? nil : File.open(path, mode)
29
+ base = new(io, *argv)
30
+ rescue(Errno::ENOENT)
31
+ io.close if io
32
+ raise
33
+ end
34
+
30
35
  if block_given?
31
36
  begin
32
37
  yield(base)
@@ -13,15 +13,15 @@ module External
13
13
  # Nested classes have '::' replaced by '_'. Thus to add support
14
14
  # for Some::Unknown::IO, extend External::IO as below:
15
15
  #
16
- # module External::IO
17
- # def some_unknown_io_mode(io)
18
- # ...
19
- # end
16
+ # module External::IO
17
+ # def some_unknown_io_mode(io)
18
+ # ...
19
+ # end
20
20
  #
21
- # def some_unknown_io_length(io)
22
- # ...
23
- # end
24
- # end
21
+ # def some_unknown_io_length(io)
22
+ # ...
23
+ # end
24
+ # end
25
25
  #
26
26
  # See stringio_mode and stringio_length for more details.
27
27
  def try_handle(io, method)
@@ -78,9 +78,9 @@ module External
78
78
  end
79
79
  end
80
80
 
81
- # Returns an array of bools determining if the input File
81
+ # Returns an array of bools determining if the input Io
82
82
  # is readable and writable.
83
- def file_mode(io)
83
+ def io_mode(io)
84
84
  begin
85
85
  dup = io.dup
86
86
 
@@ -104,10 +104,18 @@ module External
104
104
  end
105
105
  end
106
106
 
107
- # Returns the length of the input File
108
- def file_length(io)
107
+ # Returns the length of the input IO
108
+ def io_length(io)
109
109
  io.fsync
110
- File.size(io.path)
110
+ io.stat.size
111
+ end
112
+
113
+ def file_mode(io)
114
+ io_mode(io)
115
+ end
116
+
117
+ def file_length(io)
118
+ io_length(io)
111
119
  end
112
120
 
113
121
  # Returns an array of bools determining if the input Tempfile
@@ -76,12 +76,18 @@ class ExternalArchive < External::Base
76
76
  FileUtils.touch(index) unless File.exists?(index)
77
77
  end
78
78
 
79
- io_index = case index
80
- when Array, ExternalIndex then index
81
- else ExternalIndex.open(index, 'r+', :format => 'II')
79
+ begin
80
+ io = path == nil ? nil : File.open(path, mode)
81
+ io_index = case index
82
+ when Array, ExternalIndex then index
83
+ else ExternalIndex.open(index, 'r+', :format => 'II')
84
+ end
85
+ rescue(Errno::ENOENT)
86
+ io.close if io
87
+ io_index.close if io_index
88
+ raise
82
89
  end
83
90
 
84
- io = path == nil ? nil : File.open(path, mode)
85
91
  extarc = new(io, io_index)
86
92
 
87
93
  # reindex if necessary
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: external
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Simon Chiang
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-09-27 00:00:00 -06:00
12
+ date: 2009-06-29 00:00:00 -06:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -18,9 +18,9 @@ dependencies:
18
18
  version_requirement:
19
19
  version_requirements: !ruby/object:Gem::Requirement
20
20
  requirements:
21
- - - ~>
21
+ - - ">="
22
22
  - !ruby/object:Gem::Version
23
- version: 0.10.7
23
+ version: 0.18.0
24
24
  version:
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: mspec
@@ -30,7 +30,7 @@ dependencies:
30
30
  requirements:
31
31
  - - ~>
32
32
  - !ruby/object:Gem::Version
33
- version: 1.5.0
33
+ version: "1.5"
34
34
  version:
35
35
  description:
36
36
  email: simon.a.chiang@gmail.com
@@ -60,6 +60,8 @@ files:
60
60
  - History
61
61
  has_rdoc: true
62
62
  homepage: http://rubyforge.org/projects/external/
63
+ licenses: []
64
+
63
65
  post_install_message:
64
66
  rdoc_options: []
65
67
 
@@ -80,9 +82,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
80
82
  requirements: []
81
83
 
82
84
  rubyforge_project: external
83
- rubygems_version: 1.2.0
85
+ rubygems_version: 1.3.4
84
86
  signing_key:
85
- specification_version: 2
87
+ specification_version: 3
86
88
  summary: array-like access to external data files
87
89
  test_files: []
88
90