ptools 1.1.4 → 1.1.5
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/CHANGES +3 -0
- data/MANIFEST +1 -0
- data/lib/ptools.rb +38 -1
- data/test/tc_constants.rb +5 -1
- data/test/tc_image.rb +32 -0
- data/test/ts_all.rb +1 -0
- metadata +4 -3
data/CHANGES
CHANGED
data/MANIFEST
CHANGED
data/lib/ptools.rb
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
require 'win32/file' if RUBY_PLATFORM.match('mswin')
|
|
2
2
|
|
|
3
3
|
class File
|
|
4
|
-
PTOOLS_VERSION = '1.1.
|
|
4
|
+
PTOOLS_VERSION = '1.1.5'
|
|
5
5
|
|
|
6
6
|
# :stopdoc:
|
|
7
7
|
|
|
@@ -16,8 +16,27 @@ class File
|
|
|
16
16
|
IS_WINDOWS = false
|
|
17
17
|
end
|
|
18
18
|
|
|
19
|
+
IMAGE_EXT = %w/.bmp .gif .jpg .jpeg .png/
|
|
20
|
+
|
|
19
21
|
# :startdoc:
|
|
20
22
|
|
|
23
|
+
# Returns whether or not the file is an image. Only JPEG, PNG, BMP and
|
|
24
|
+
# GIF are checked against.
|
|
25
|
+
#
|
|
26
|
+
# This method does some simple read and extension checks. For a version
|
|
27
|
+
# that is more robust, but which depends on a 3rd party C library (and is
|
|
28
|
+
# difficult to build on MS Windows), see the 'filemagic' library, available
|
|
29
|
+
# on the RAA.
|
|
30
|
+
#--
|
|
31
|
+
# Approach used here is based on information found at
|
|
32
|
+
# http://en.wikipedia.org/wiki/Magic_number_(programming)
|
|
33
|
+
#
|
|
34
|
+
def self.image?(file)
|
|
35
|
+
bool = IMAGE_EXT.include?(File.extname(file).downcase) # Match ext
|
|
36
|
+
bool = bmp?(file) || jpg?(file) || png?(file) || gif?(file) # Check data
|
|
37
|
+
bool
|
|
38
|
+
end
|
|
39
|
+
|
|
21
40
|
# Returns the null device (aka bitbucket) on your platform. On most
|
|
22
41
|
# Unix-like systems this is '/dev/null', on Windows it's 'NUL', etc.
|
|
23
42
|
#--
|
|
@@ -281,4 +300,22 @@ class File
|
|
|
281
300
|
return [bytes,chars,words,lines]
|
|
282
301
|
end
|
|
283
302
|
end
|
|
303
|
+
|
|
304
|
+
private
|
|
305
|
+
|
|
306
|
+
def self.bmp?(file)
|
|
307
|
+
IO.read(file, 3) == "BM6"
|
|
308
|
+
end
|
|
309
|
+
|
|
310
|
+
def self.jpg?(file)
|
|
311
|
+
IO.read(file, 10) == "\377\330\377\340\000\020JFIF"
|
|
312
|
+
end
|
|
313
|
+
|
|
314
|
+
def self.png?(file)
|
|
315
|
+
IO.read(file, 4) == "\211PNG"
|
|
316
|
+
end
|
|
317
|
+
|
|
318
|
+
def self.gif?(file)
|
|
319
|
+
['GIF89a', 'GIF97a'].include?(IO.read(file, 6))
|
|
320
|
+
end
|
|
284
321
|
end
|
data/test/tc_constants.rb
CHANGED
|
@@ -9,7 +9,11 @@ require 'ptools'
|
|
|
9
9
|
|
|
10
10
|
class TC_Constants < Test::Unit::TestCase
|
|
11
11
|
def test_version
|
|
12
|
-
assert_equal('1.1.
|
|
12
|
+
assert_equal('1.1.5', File::PTOOLS_VERSION)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def test_image_ext
|
|
16
|
+
assert_equal(%w/.bmp .gif .jpeg .jpg .png/, File::IMAGE_EXT.sort)
|
|
13
17
|
end
|
|
14
18
|
|
|
15
19
|
if RUBY_PLATFORM.match('mswin')
|
data/test/tc_image.rb
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
#####################################################################
|
|
2
|
+
# tc_image.rb
|
|
3
|
+
#
|
|
4
|
+
# Test case for the File.image? method. You should run this test
|
|
5
|
+
# via the 'rake test_image' task.
|
|
6
|
+
#####################################################################
|
|
7
|
+
require 'test/unit'
|
|
8
|
+
require 'ptools'
|
|
9
|
+
|
|
10
|
+
class TC_Ptools_Image < Test::Unit::TestCase
|
|
11
|
+
def setup
|
|
12
|
+
Dir.chdir('test') unless File.basename(Dir.pwd) == 'test'
|
|
13
|
+
@text_file = 'test_file1.txt'
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def test_image_basic
|
|
17
|
+
assert_respond_to(File, :image?)
|
|
18
|
+
assert_nothing_raised{ File.image?(@text_file) }
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def test_image_expected_results
|
|
22
|
+
assert_equal(false, File.image?(@text_file))
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def test_image_expected_errors
|
|
26
|
+
assert_raises(Errno::ENOENT, ArgumentError){ File.image?('bogus') }
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def teardown
|
|
30
|
+
@text_file = nil
|
|
31
|
+
end
|
|
32
|
+
end
|
data/test/ts_all.rb
CHANGED
metadata
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
|
-
rubygems_version: 0.9.
|
|
2
|
+
rubygems_version: 0.9.4
|
|
3
3
|
specification_version: 1
|
|
4
4
|
name: ptools
|
|
5
5
|
version: !ruby/object:Gem::Version
|
|
6
|
-
version: 1.1.
|
|
7
|
-
date: 2007-
|
|
6
|
+
version: 1.1.5
|
|
7
|
+
date: 2007-07-19 00:00:00 -06:00
|
|
8
8
|
summary: Extra methods for the File class
|
|
9
9
|
require_paths:
|
|
10
10
|
- lib
|
|
@@ -37,6 +37,7 @@ files:
|
|
|
37
37
|
- test/tc_binary.rb
|
|
38
38
|
- test/tc_constants.rb
|
|
39
39
|
- test/tc_head.rb
|
|
40
|
+
- test/tc_image.rb
|
|
40
41
|
- test/tc_middle.rb
|
|
41
42
|
- test/tc_nlconvert.rb
|
|
42
43
|
- test/tc_null.rb
|