ptools 1.2.3 → 1.2.4
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/CHANGES +5 -0
- data/Rakefile +7 -0
- data/lib/ptools.rb +12 -10
- data/ptools.gemspec +1 -1
- data/test/img/test.gif +0 -0
- data/test/img/test.jpg +0 -0
- data/test/img/test.png +0 -0
- data/test/test_binary.rb +27 -9
- data/test/test_constants.rb +1 -1
- data/test/test_image.rb +30 -13
- data/test/txt/english.txt +1 -0
- data/test/txt/korean.txt +1 -0
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8b1ad5b7756616fecd9369472860f83dd3294f5e
|
4
|
+
data.tar.gz: 44943151f729df7c9c2f5a00fbfd9491ac3ea694
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3f05fdc52605e22f394c85b575aa9dccb475b707665da115615ba2fafd807b9649a860446ca2088f27ee7973f83b3f3bb1a129b464e1a094c5845ef990949e74
|
7
|
+
data.tar.gz: 6447938245ae44d917b9013a3d0a128e80b26218db680f4b81a01e5d9734b91b591ab8f673afab7d36eb4fe23638cde85fe7c98e6c564a90aa34e51529e730b3
|
data/CHANGES
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
== 1.2.4 - 25-Feb-2014
|
2
|
+
* The File.binary method now always returns false for images. It is meant to
|
3
|
+
detect executables, shared objects, etc. Use File.image? to detect images.
|
4
|
+
* Encoding fixes for the File.image? method.
|
5
|
+
|
1
6
|
== 1.2.3 - 19-Feb-2014
|
2
7
|
* Fixed a bug where File.binary? would return true for unicode text. Thanks go
|
3
8
|
to Ben Hollis for the spot.
|
data/Rakefile
CHANGED
@@ -68,6 +68,13 @@ namespace 'test' do
|
|
68
68
|
t.test_files = FileList['test/test_head.rb']
|
69
69
|
end
|
70
70
|
|
71
|
+
Rake::TestTask.new('image') do |t|
|
72
|
+
t.libs << 'test'
|
73
|
+
t.verbose = true
|
74
|
+
t.warning = true
|
75
|
+
t.test_files = FileList['test/test_image.rb']
|
76
|
+
end
|
77
|
+
|
71
78
|
Rake::TestTask.new('middle') do |t|
|
72
79
|
t.libs << 'test'
|
73
80
|
t.verbose = true
|
data/lib/ptools.rb
CHANGED
@@ -3,7 +3,7 @@ require 'win32/file' if File::ALT_SEPARATOR
|
|
3
3
|
|
4
4
|
class File
|
5
5
|
# The version of the ptools library.
|
6
|
-
PTOOLS_VERSION = '1.2.
|
6
|
+
PTOOLS_VERSION = '1.2.4'
|
7
7
|
|
8
8
|
# :stopdoc:
|
9
9
|
|
@@ -28,13 +28,12 @@ class File
|
|
28
28
|
#
|
29
29
|
# This method does some simple read and extension checks. For a version
|
30
30
|
# that is more robust, but which depends on a 3rd party C library (and is
|
31
|
-
# difficult to build on MS Windows), see the 'filemagic' library
|
32
|
-
# on the RAA.
|
31
|
+
# difficult to build on MS Windows), see the 'filemagic' library.
|
33
32
|
#
|
34
33
|
# Examples:
|
35
34
|
#
|
36
35
|
# File.image?('somefile.jpg') # => true
|
37
|
-
# File.image?('somefile.txt') # =>
|
36
|
+
# File.image?('somefile.txt') # => false
|
38
37
|
#--
|
39
38
|
# The approach I used here is based on information found at
|
40
39
|
# http://en.wikipedia.org/wiki/Magic_number_(programming)
|
@@ -75,9 +74,10 @@ class File
|
|
75
74
|
alias null_device null
|
76
75
|
end
|
77
76
|
|
78
|
-
# Returns whether or not +file+ is a binary file.
|
79
|
-
#
|
80
|
-
# on a simple test of the first
|
77
|
+
# Returns whether or not +file+ is a binary non-image file, i.e. executable,
|
78
|
+
# shared object, ect. Note that this is NOT guaranteed to be 100% accurate.
|
79
|
+
# It performs a "best guess" based on a simple test of the first
|
80
|
+
# +File.blksize+ characters.
|
81
81
|
#
|
82
82
|
# Example:
|
83
83
|
#
|
@@ -88,7 +88,9 @@ class File
|
|
88
88
|
# based on Perl's -B switch).
|
89
89
|
#
|
90
90
|
def self.binary?(file)
|
91
|
-
|
91
|
+
return false if image?(file)
|
92
|
+
s = (File.read(file, File.stat(file).blksize) || "")
|
93
|
+
s = s.encode('US-ASCII', :undef => :replace).split(//)
|
92
94
|
((s.size - s.grep(" ".."~").size) / s.size.to_f) > 0.30
|
93
95
|
end
|
94
96
|
|
@@ -416,11 +418,11 @@ class File
|
|
416
418
|
end
|
417
419
|
|
418
420
|
def self.jpg?(file)
|
419
|
-
IO.read(file, 10) == "\377\330\377\340\000\020JFIF"
|
421
|
+
IO.read(file, 10, encoding: 'binary') == "\377\330\377\340\000\020JFIF".force_encoding(Encoding::BINARY)
|
420
422
|
end
|
421
423
|
|
422
424
|
def self.png?(file)
|
423
|
-
IO.read(file, 4) == "\211PNG"
|
425
|
+
IO.read(file, 4, encoding: 'binary') == "\211PNG".force_encoding(Encoding::BINARY)
|
424
426
|
end
|
425
427
|
|
426
428
|
def self.gif?(file)
|
data/ptools.gemspec
CHANGED
data/test/img/test.gif
ADDED
Binary file
|
data/test/img/test.jpg
ADDED
Binary file
|
data/test/img/test.png
ADDED
Binary file
|
data/test/test_binary.rb
CHANGED
@@ -10,8 +10,6 @@ require 'ptools'
|
|
10
10
|
|
11
11
|
class TC_Ptools_Binary < Test::Unit::TestCase
|
12
12
|
def self.startup
|
13
|
-
@@txt_file = 'test_binary.txt'
|
14
|
-
|
15
13
|
if File::ALT_SEPARATOR
|
16
14
|
@@bin_file = File.join(ENV['windir'], 'notepad.exe')
|
17
15
|
else
|
@@ -19,29 +17,49 @@ class TC_Ptools_Binary < Test::Unit::TestCase
|
|
19
17
|
end
|
20
18
|
|
21
19
|
Dir.chdir('test') if File.exist?('test')
|
20
|
+
end
|
22
21
|
|
23
|
-
|
22
|
+
def setup
|
23
|
+
@txt_file = File.join('txt', 'english.txt')
|
24
|
+
@uni_file = File.join('txt', 'korean.txt')
|
25
|
+
@png_file = File.join('img', 'test.png')
|
26
|
+
@jpg_file = File.join('img', 'test.jpg')
|
27
|
+
@gif_file = File.join('img', 'test.gif')
|
24
28
|
end
|
25
29
|
|
26
30
|
test "File.binary? basic functionality" do
|
27
31
|
assert_respond_to(File, :binary?)
|
28
|
-
assert_nothing_raised{ File.binary?(
|
32
|
+
assert_nothing_raised{ File.binary?(@txt_file) }
|
29
33
|
end
|
30
34
|
|
31
|
-
test "File.binary? returns
|
32
|
-
assert_false(File.binary?(@@txt_file))
|
35
|
+
test "File.binary? returns true for binary files" do
|
33
36
|
assert_true(File.binary?(@@bin_file))
|
34
37
|
end
|
35
38
|
|
39
|
+
test "File.binary? returns false for text files" do
|
40
|
+
assert_false(File.binary?(@txt_file))
|
41
|
+
assert_false(File.binary?(@uni_file))
|
42
|
+
end
|
43
|
+
|
44
|
+
test "File.binary? returns false for image files" do
|
45
|
+
assert_false(File.binary?(@png_file))
|
46
|
+
assert_false(File.binary?(@jpg_file))
|
47
|
+
assert_false(File.binary?(@gif_file))
|
48
|
+
end
|
49
|
+
|
36
50
|
test "File.binary? raises an error if the file cannot be found" do
|
37
51
|
assert_raise_kind_of(SystemCallError){ File.binary?('bogus') }
|
38
52
|
end
|
39
53
|
|
40
54
|
test "File.binary? only accepts one argument" do
|
41
|
-
assert_raise_kind_of(ArgumentError){ File.binary?(
|
55
|
+
assert_raise_kind_of(ArgumentError){ File.binary?(@txt_file, @@bin_file) }
|
42
56
|
end
|
43
57
|
|
44
|
-
def
|
45
|
-
|
58
|
+
def teardown
|
59
|
+
@txt_file = nil
|
60
|
+
@uni_file = nil
|
61
|
+
@png_file = nil
|
62
|
+
@jpg_file = nil
|
63
|
+
@gif_file = nil
|
46
64
|
end
|
47
65
|
end
|
data/test/test_constants.rb
CHANGED
@@ -15,7 +15,7 @@ class TC_Ptools_Constants < Test::Unit::TestCase
|
|
15
15
|
end
|
16
16
|
|
17
17
|
test "PTOOLS_VERSION constant is set to expected value" do
|
18
|
-
assert_equal('1.2.
|
18
|
+
assert_equal('1.2.4', File::PTOOLS_VERSION)
|
19
19
|
end
|
20
20
|
|
21
21
|
test "IMAGE_EXT constant is set to array of values" do
|
data/test/test_image.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
# test_image.rb
|
3
3
|
#
|
4
4
|
# Test case for the File.image? method. You should run this test
|
5
|
-
# via the 'rake
|
5
|
+
# via the 'rake test:image' task.
|
6
6
|
#####################################################################
|
7
7
|
require 'test-unit'
|
8
8
|
require 'ptools'
|
@@ -10,31 +10,48 @@ require 'ptools'
|
|
10
10
|
class TC_Ptools_Image < Test::Unit::TestCase
|
11
11
|
def self.startup
|
12
12
|
Dir.chdir('test') if File.exist?('test')
|
13
|
-
File.open('test_file1.txt', 'w'){ |fh| 25.times{ |n| fh.puts "line#{n+1}" } }
|
14
13
|
end
|
15
14
|
|
16
15
|
def setup
|
17
|
-
@
|
16
|
+
@txt_file = File.join(Dir.pwd, 'txt', 'english.txt')
|
17
|
+
@uni_file = File.join(Dir.pwd, 'txt', 'korean.txt')
|
18
|
+
@jpg_file = File.join(Dir.pwd, 'img', 'test.jpg')
|
19
|
+
@png_file = File.join(Dir.pwd, 'img', 'test.png')
|
20
|
+
@gif_file = File.join(Dir.pwd, 'img', 'test.gif')
|
18
21
|
end
|
19
22
|
|
20
|
-
|
23
|
+
test "image? method basic functionality" do
|
21
24
|
assert_respond_to(File, :image?)
|
22
|
-
assert_nothing_raised{ File.image?(@
|
25
|
+
assert_nothing_raised{ File.image?(@txt_file) }
|
26
|
+
assert_boolean(File.image?(@txt_file))
|
23
27
|
end
|
24
28
|
|
25
|
-
|
26
|
-
|
29
|
+
test "image? method returns false for a text file" do
|
30
|
+
assert_false(File.image?(@txt_file))
|
31
|
+
assert_false(File.image?(@uni_file))
|
27
32
|
end
|
28
33
|
|
29
|
-
|
30
|
-
|
34
|
+
test "image? method returns true for a gif" do
|
35
|
+
assert_true(File.image?(@gif_file))
|
31
36
|
end
|
32
37
|
|
33
|
-
|
34
|
-
@
|
38
|
+
test "image? method returns true for a jpeg" do
|
39
|
+
assert_true(File.image?(@jpg_file))
|
40
|
+
end
|
41
|
+
|
42
|
+
test "image? method returns true for a png" do
|
43
|
+
assert_true(File.image?(@png_file))
|
35
44
|
end
|
36
45
|
|
37
|
-
|
38
|
-
|
46
|
+
test "image? method raises an error if the file does not exist" do
|
47
|
+
assert_raises(Errno::ENOENT, ArgumentError){ File.image?('bogus') }
|
48
|
+
end
|
49
|
+
|
50
|
+
def teardown
|
51
|
+
@txt_file = nil
|
52
|
+
@uni_file = nil
|
53
|
+
@jpg_file = nil
|
54
|
+
@png_file = nil
|
55
|
+
@gif_file = nil
|
39
56
|
end
|
40
57
|
end
|
@@ -0,0 +1 @@
|
|
1
|
+
Hello World
|
data/test/txt/korean.txt
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
한국어의 내용분석을 위한
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ptools
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel J. Berger
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-02-
|
11
|
+
date: 2014-02-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: test-unit
|
@@ -43,6 +43,9 @@ files:
|
|
43
43
|
- Rakefile
|
44
44
|
- lib/ptools.rb
|
45
45
|
- ptools.gemspec
|
46
|
+
- test/img/test.gif
|
47
|
+
- test/img/test.jpg
|
48
|
+
- test/img/test.png
|
46
49
|
- test/test_binary.rb
|
47
50
|
- test/test_constants.rb
|
48
51
|
- test/test_head.rb
|
@@ -56,6 +59,8 @@ files:
|
|
56
59
|
- test/test_wc.rb
|
57
60
|
- test/test_whereis.rb
|
58
61
|
- test/test_which.rb
|
62
|
+
- test/txt/english.txt
|
63
|
+
- test/txt/korean.txt
|
59
64
|
homepage: https://github.com/djberg96/ptools
|
60
65
|
licenses:
|
61
66
|
- Artistic 2.0
|