tempfile_for 0.0.9 → 0.1.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.
- data/README.md +1 -2
- data/lib/tempfile_for/tempfile.rb +28 -0
- data/lib/tempfile_for/version.rb +1 -1
- data/lib/tempfile_for.rb +12 -10
- data/test/tempfile_for/tempfile_test.rb +31 -0
- data/test/tempfile_for_test.rb +1 -4
- data/test/test_helper.rb +6 -0
- metadata +4 -1
data/README.md
CHANGED
@@ -28,8 +28,7 @@ $ gem install tempfile_for
|
|
28
28
|
|
29
29
|
### for
|
30
30
|
|
31
|
-
TempfileFor is a very tiny gem,
|
32
|
-
However, it can save you lines of ugly code.
|
31
|
+
TempfileFor is a very tiny gem, but it can save you lines of ugly code.
|
33
32
|
|
34
33
|
To get a quick introduction into what TempfileFor does, check this out:
|
35
34
|
|
@@ -0,0 +1,28 @@
|
|
1
|
+
|
2
|
+
require "tempfile"
|
3
|
+
|
4
|
+
module TempfileFor
|
5
|
+
class Tempfile < ::Tempfile
|
6
|
+
def copy(options = {})
|
7
|
+
encoding = options[:encoding]
|
8
|
+
|
9
|
+
tempfile = self.class.open("tempfile", :encoding => encoding)
|
10
|
+
|
11
|
+
File.open path, :encoding => encoding do |stream|
|
12
|
+
tempfile.write_ext stream
|
13
|
+
end
|
14
|
+
|
15
|
+
tempfile.rewind
|
16
|
+
tempfile
|
17
|
+
end
|
18
|
+
|
19
|
+
def write_ext(io_or_data)
|
20
|
+
if io_or_data.respond_to?(:read)
|
21
|
+
write(io_or_data.read(1024)) until io_or_data.eof?
|
22
|
+
else
|
23
|
+
write io_or_data
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
data/lib/tempfile_for/version.rb
CHANGED
data/lib/tempfile_for.rb
CHANGED
@@ -1,28 +1,30 @@
|
|
1
1
|
|
2
2
|
require "tempfile_for/version"
|
3
|
+
require "tempfile_for/tempfile"
|
3
4
|
require "tempfile"
|
4
5
|
|
5
6
|
class Tempfile
|
6
|
-
def self.for(
|
7
|
-
blank :encoding =>
|
8
|
-
tempfile.
|
7
|
+
def self.for(io_or_data, options = {})
|
8
|
+
blank options.merge(:encoding => options[:encoding] || io_or_data.encoding) do |tempfile|
|
9
|
+
tempfile.write_ext io_or_data
|
9
10
|
tempfile.flush
|
10
11
|
|
11
|
-
yield tempfile
|
12
|
+
yield tempfile if block_given?
|
12
13
|
end
|
13
|
-
end
|
14
|
+
end
|
14
15
|
|
15
16
|
def self.blank(options = {})
|
16
|
-
|
17
|
+
encoding = options[:encoding]
|
18
|
+
|
19
|
+
tempfile = TempfileFor::Tempfile.open("tempfile", :encoding => encoding)
|
17
20
|
|
18
|
-
yield tempfile
|
21
|
+
yield tempfile if block_given?
|
19
22
|
|
20
23
|
tempfile.flush
|
21
|
-
tempfile.rewind
|
22
24
|
|
23
|
-
options[:read] != false ? tempfile.
|
25
|
+
options[:read] != false ? File.read(tempfile.path, :encoding => encoding) : tempfile.copy(:encoding => encoding)
|
24
26
|
ensure
|
25
|
-
tempfile.close!
|
27
|
+
tempfile.close!
|
26
28
|
end
|
27
29
|
end
|
28
30
|
|
@@ -0,0 +1,31 @@
|
|
1
|
+
|
2
|
+
require File.expand_path("../../test_helper", __FILE__)
|
3
|
+
require "stringio"
|
4
|
+
|
5
|
+
class TempfileFor::TemfileTest < Minitest::Test
|
6
|
+
def test_copy
|
7
|
+
tempfile = TempfileFor::Tempfile.open("tempfile", :encoding => Encoding::BINARY)
|
8
|
+
tempfile.write "test"
|
9
|
+
tempfile.flush
|
10
|
+
|
11
|
+
copy = tempfile.copy(:encoding => Encoding::ISO_8859_1).read
|
12
|
+
|
13
|
+
assert_equal "test", copy
|
14
|
+
assert_equal Encoding::ISO_8859_1, copy.encoding
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_write_ext
|
18
|
+
tempfile = TempfileFor::Tempfile.open("tempfile")
|
19
|
+
tempfile.write_ext StringIO.new("test")
|
20
|
+
tempfile.rewind
|
21
|
+
|
22
|
+
assert_equal "test", tempfile.read
|
23
|
+
|
24
|
+
tempfile = TempfileFor::Tempfile.open("tempfile")
|
25
|
+
tempfile.write_ext "test"
|
26
|
+
tempfile.rewind
|
27
|
+
|
28
|
+
assert_equal "test", tempfile.read
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
data/test/tempfile_for_test.rb
CHANGED
data/test/test_helper.rb
ADDED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tempfile_for
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -40,9 +40,12 @@ files:
|
|
40
40
|
- README.md
|
41
41
|
- Rakefile
|
42
42
|
- lib/tempfile_for.rb
|
43
|
+
- lib/tempfile_for/tempfile.rb
|
43
44
|
- lib/tempfile_for/version.rb
|
44
45
|
- tempfile_for.gemspec
|
46
|
+
- test/tempfile_for/tempfile_test.rb
|
45
47
|
- test/tempfile_for_test.rb
|
48
|
+
- test/test_helper.rb
|
46
49
|
homepage: https://github.com/mrkamel/tempfile_for
|
47
50
|
licenses:
|
48
51
|
- MIT
|