iostreams 0.10.1 → 0.11.0
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 +4 -4
- data/lib/io_streams/io_streams.rb +12 -6
- data/lib/io_streams/streams.rb +1 -1
- data/lib/io_streams/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 79c7b3bec464587bc14ad4cb1c951f6b08f8ffd2
|
4
|
+
data.tar.gz: 106e0fc38ffc1396ee5714ef19f9a14ea38113ae
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3f61f7b6a5a07f0419ac4f322fa2b2e986adf0f104d8b65c7f20539e8adbdb3c629f24af3ab8376202d1fb4f18f8376cd6720a83ba654be6b8d784b36c22c1ad
|
7
|
+
data.tar.gz: bf2604ec77e4fd5923aaed1a478f66464e7f9a73c695574b3420b078723752be9b1eaed2b0f930da714b2958d649435711619c1528802ff4d60ce1e23d779d61
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'concurrent'
|
2
2
|
module IOStreams
|
3
3
|
# A registry to hold formats for processing files during upload or download
|
4
|
-
|
4
|
+
@extensions = Concurrent::Map.new
|
5
5
|
|
6
6
|
UTF8_ENCODING = Encoding.find('UTF-8').freeze
|
7
7
|
BINARY_ENCODING = Encoding.find('BINARY').freeze
|
@@ -36,7 +36,7 @@ module IOStreams
|
|
36
36
|
parts = file_name.split('.')
|
37
37
|
extensions = []
|
38
38
|
while extension = parts.pop
|
39
|
-
break unless
|
39
|
+
break unless @extensions[extension.to_sym]
|
40
40
|
extensions.unshift(extension.to_sym)
|
41
41
|
end
|
42
42
|
extensions << :file if extensions.size == 0
|
@@ -52,7 +52,7 @@ module IOStreams
|
|
52
52
|
# register_extension(:xls, MyXls::Reader, MyXls::Writer)
|
53
53
|
def self.register_extension(extension, reader_class, writer_class)
|
54
54
|
raise(ArgumentError, "Invalid extension #{extension.inspect}") unless extension.to_s =~ /\A\w+\Z/
|
55
|
-
|
55
|
+
@extensions[extension.to_sym] = Extension.new(reader_class, writer_class)
|
56
56
|
end
|
57
57
|
|
58
58
|
# De-Register a file extension
|
@@ -63,7 +63,7 @@ module IOStreams
|
|
63
63
|
# register_extension(:xls)
|
64
64
|
def self.deregister_extension(extension)
|
65
65
|
raise(ArgumentError, "Invalid extension #{extension.inspect}") unless extension.to_s =~ /\A\w+\Z/
|
66
|
-
|
66
|
+
@extensions.delete(extension.to_sym)
|
67
67
|
end
|
68
68
|
|
69
69
|
# Returns a Reader for reading a file / stream
|
@@ -209,12 +209,18 @@ module IOStreams
|
|
209
209
|
file_name_or_io.respond_to?(:write)
|
210
210
|
end
|
211
211
|
|
212
|
-
# Returns [true|false] whether the file is compressed
|
212
|
+
# Returns [true|false] whether the file is compressed.
|
213
213
|
# Note: Currently only looks at the file name extension
|
214
214
|
def self.compressed?(file_name)
|
215
215
|
!(file_name =~ /\.(zip|gz|gzip|xls.|)\z/i).nil?
|
216
216
|
end
|
217
217
|
|
218
|
+
# Returns [true|false] whether the file is encrypted.
|
219
|
+
# Note: Currently only looks at the file name extension
|
220
|
+
def self.encrypted?(file_name)
|
221
|
+
!(file_name =~ /\.(enc|pgp|gpg)\z/i).nil?
|
222
|
+
end
|
223
|
+
|
218
224
|
# Deletes the specified stream from the supplied streams if present
|
219
225
|
# Returns deleted stream, or nil if not found
|
220
226
|
def self.delete_stream(stream, streams)
|
@@ -282,7 +288,7 @@ module IOStreams
|
|
282
288
|
end
|
283
289
|
|
284
290
|
def self.stream_struct_for_stream(type, stream, options={})
|
285
|
-
ext =
|
291
|
+
ext = @extensions[stream.to_sym] || raise(ArgumentError, "Unknown Stream type: #{stream.inspect}")
|
286
292
|
klass = ext.send("#{type}_class")
|
287
293
|
StreamStruct.new(klass, options)
|
288
294
|
end
|
data/lib/io_streams/streams.rb
CHANGED
@@ -97,7 +97,7 @@ module IOStreams
|
|
97
97
|
parts = file_name.split('.')
|
98
98
|
extensions = []
|
99
99
|
while extension = parts.pop
|
100
|
-
break unless
|
100
|
+
break unless @extensions[extension.to_sym]
|
101
101
|
extensions.unshift(extension.to_sym)
|
102
102
|
end
|
103
103
|
extensions << :file if extensions.size == 0
|
data/lib/io_streams/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: iostreams
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.11.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Reid Morrison
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-05-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: concurrent-ruby
|
@@ -94,7 +94,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
94
94
|
version: '0'
|
95
95
|
requirements: []
|
96
96
|
rubyforge_project:
|
97
|
-
rubygems_version: 2.6.
|
97
|
+
rubygems_version: 2.6.11
|
98
98
|
signing_key:
|
99
99
|
specification_version: 4
|
100
100
|
summary: Ruby file streaming. Supports Text, Zip, Gzip, Xlsx, csv, PGP / GPG and Symmetric
|