ptools 1.4.1 → 1.4.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 35f02ac0737f1acf24a7edccb33f60990b5690259fe715520eeb803badc514ae
4
- data.tar.gz: 469380e8d9f7107868b0ec17e8ca7aa4c8e5e1db19a7263c88995e1346f9c634
3
+ metadata.gz: 36406684b5e92604183390f36512e57d842143d4f7cdc29f9f728cb8085c99f6
4
+ data.tar.gz: 736ef4ab5f6ff12ec22e4158eeb09f1a5d3db94f969ae4991ac7732fa2d4b0e5
5
5
  SHA512:
6
- metadata.gz: 114dec925795c5ebfc3f84209602490d22d54031fede8cf9914d635c4bb4180cce1d77dcb3f87d970f491a43b307f7017a29a1239b7d23442aaa01f701d13071
7
- data.tar.gz: 60b1f3ad73a5019ed89b24ae82b0032f014b8770d8feb6b447ad72f459a6029cf678fa0fe96c5e8ec23eb1dc2818a66dbbabc499d4bc8ac858c256ad786236b0
6
+ metadata.gz: 872ba6353a2e52e845bb2b2e6b1fced1e334873b5da3edcd9764d481f4db1434b07d8b85e5e60e222e467b9ca67e36b019aac639a172c414f64398a1a29cf463
7
+ data.tar.gz: b38ac907b048d378c89807fae43e3a6d5c38e2f34b3afbfbacd333cb0860393e2be4faab59bcb0f800cb2f02f49e5110b05fc21b6a870ce2f2829560fdf1759e
Binary file
data.tar.gz.sig CHANGED
Binary file
data/CHANGES.md CHANGED
@@ -1,3 +1,11 @@
1
+ ## 1.4.2 - 6-Jan-2021
2
+ * Fixed a private access modifier that wasn't actually working as intended.
3
+ * Two Windows constants that were never meant for public consumption have been marked private.
4
+ * Minor tweak to one of the touch specs.
5
+ * The Gemfile now just uses the gemspec.
6
+ * The image? singleton method was effectively ignoring filename extensions. This
7
+ has been fixed, though with the option to disable that check if desired.
8
+
1
9
  ## 1.4.1 - 29-Dec-2020
2
10
  * Switch from rdoc to markdown since github is not rendering rdoc properly.
3
11
  * Added metadata to gemspec.
data/Gemfile CHANGED
@@ -1,12 +1,3 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- gem 'structured_warnings'
4
-
5
- group :production do
6
- gem 'win32-file' if File::ALT_SEPARATOR
7
- end
8
-
9
- group :test do
10
- gem 'rake'
11
- gem 'rspec'
12
- end
3
+ gemspec
@@ -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.4.1'.freeze
6
+ PTOOLS_VERSION = '1.4.2'.freeze
7
7
 
8
8
  # :stopdoc:
9
9
 
@@ -19,17 +19,26 @@ class File
19
19
  MSWINDOWS = false
20
20
  end
21
21
 
22
- IMAGE_EXT = %w[.bmp .gif .jpg .jpeg .png]
22
+ if File::ALT_SEPARATOR
23
+ private_constant :WIN32EXTS
24
+ private_constant :MSWINDOWS
25
+ end
26
+
27
+ IMAGE_EXT = %w[.bmp .gif .jpg .jpeg .png .ico]
23
28
 
24
29
  # :startdoc:
25
30
 
26
31
  # Returns whether or not the file is an image. Only JPEG, PNG, BMP,
27
32
  # GIF, and ICO are checked against.
28
33
  #
29
- # This method does some simple read and extension checks. For a version
34
+ # This reads and checks the first few bytes of the file. For a version
30
35
  # that is more robust, but which depends on a 3rd party C library (and is
31
36
  # difficult to build on MS Windows), see the 'filemagic' library.
32
37
  #
38
+ # By default the filename extension is also checked. You can disable this
39
+ # by passing false as the second argument, in which case only the contents
40
+ # are checked.
41
+ #
33
42
  # Examples:
34
43
  #
35
44
  # File.image?('somefile.jpg') # => true
@@ -38,9 +47,13 @@ class File
38
47
  # The approach I used here is based on information found at
39
48
  # http://en.wikipedia.org/wiki/Magic_number_(programming)
40
49
  #
41
- def self.image?(file)
42
- bool = IMAGE_EXT.include?(File.extname(file).downcase)
50
+ def self.image?(file, check_file_extension = true)
43
51
  bool = bmp?(file) || jpg?(file) || png?(file) || gif?(file) || tiff?(file) || ico?(file)
52
+
53
+ if check_file_extension
54
+ bool = bool && IMAGE_EXT.include?(File.extname(file).downcase)
55
+ end
56
+
44
57
  bool
45
58
  end
46
59
 
@@ -402,8 +415,6 @@ class File
402
415
  end
403
416
  end
404
417
 
405
- private
406
-
407
418
  # Returns whether or not the given +text+ contains a BOM marker.
408
419
  # If present, we can generally assume it's a text file.
409
420
  #
@@ -418,6 +429,10 @@ class File
418
429
  bool
419
430
  end
420
431
 
432
+ private_class_method :check_bom?
433
+
434
+ # Returns the newline characters for the given platform.
435
+ #
421
436
  def self.nl_for_platform(platform)
422
437
  platform = RbConfig::CONFIG["host_os"] if platform == 'local'
423
438
 
@@ -433,22 +448,32 @@ class File
433
448
  end
434
449
  end
435
450
 
451
+ # Is the file a bitmap file?
452
+ #
436
453
  def self.bmp?(file)
437
454
  IO.read(file, 3) == "BM6"
438
455
  end
439
456
 
457
+ # Is the file a jpeg file?
458
+ #
440
459
  def self.jpg?(file)
441
460
  IO.read(file, 10, nil, :encoding => 'binary') == "\377\330\377\340\000\020JFIF".force_encoding(Encoding::BINARY)
442
461
  end
443
462
 
463
+ # Is the file a png file?
464
+ #
444
465
  def self.png?(file)
445
466
  IO.read(file, 4, nil, :encoding => 'binary') == "\211PNG".force_encoding(Encoding::BINARY)
446
467
  end
447
468
 
469
+ # Is the file a gif?
470
+ #
448
471
  def self.gif?(file)
449
472
  ['GIF89a', 'GIF97a'].include?(IO.read(file, 6))
450
473
  end
451
474
 
475
+ # Is the file a tiff?
476
+ #
452
477
  def self.tiff?(file)
453
478
  return false if File.size(file) < 12
454
479
 
@@ -470,6 +495,8 @@ class File
470
495
  true
471
496
  end
472
497
 
498
+ # Is the file an ico file?
499
+ #
473
500
  def self.ico?(file)
474
501
  ["\000\000\001\000", "\000\000\002\000"].include?(IO.read(file, 4, nil, :encoding => 'binary'))
475
502
  end
@@ -2,7 +2,7 @@ require 'rbconfig'
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = 'ptools'
5
- spec.version = '1.4.1'
5
+ spec.version = '1.4.2'
6
6
  spec.license = 'Artistic-2.0'
7
7
  spec.author = 'Daniel J. Berger'
8
8
  spec.email = 'djberg96@gmail.com'
@@ -13,21 +13,11 @@ RSpec.describe File, :constants do
13
13
  let(:windows) { File::ALT_SEPARATOR }
14
14
 
15
15
  example "PTOOLS_VERSION constant is set to expected value" do
16
- expect(File::PTOOLS_VERSION).to eq('1.4.1')
16
+ expect(File::PTOOLS_VERSION).to eq('1.4.2')
17
17
  expect(File::PTOOLS_VERSION.frozen?).to be true
18
18
  end
19
19
 
20
20
  example "IMAGE_EXT constant is set to array of values" do
21
- expect(File::IMAGE_EXT.sort).to eq(%w[.bmp .gif .jpeg .jpg .png])
22
- end
23
-
24
- example "WINDOWS constant is defined on MS Windows" do
25
- skip "skipped unless MS Windows" unless windows
26
- expect(File::MSWINDOWS).not_to be_nil
27
- end
28
-
29
- example "WIN32EXTS constant is defined on MS Windows" do
30
- skip "skipped unless MS Windows" unless windows
31
- expect(File::WIN32EXTS).not_to be_nil
21
+ expect(File::IMAGE_EXT).to match_array(%w[.bmp .gif .ico .jpeg .jpg .png])
32
22
  end
33
23
  end
@@ -30,7 +30,7 @@ RSpec.describe File, :touch do
30
30
 
31
31
  example "touch an existing file returns expected results" do
32
32
  stat = File.stat(xfile)
33
- sleep 0.5
33
+ sleep 1
34
34
  expect{ File.touch(xfile) }.not_to raise_error
35
35
  expect(File.size(xfile) == stat.size).to be true
36
36
  expect(File.mtime(xfile) == stat.mtime).to be false
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ptools
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.1
4
+ version: 1.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel J. Berger
@@ -35,7 +35,7 @@ cert_chain:
35
35
  ORVCZpRuCPpmC8qmqxUnARDArzucjaclkxjLWvCVHeFa9UP7K3Nl9oTjJNv+7/jM
36
36
  WZs4eecIcUc4tKdHxcAJ0MO/Dkqq7hGaiHpwKY76wQ1+8xAh
37
37
  -----END CERTIFICATE-----
38
- date: 2020-12-29 00:00:00.000000000 Z
38
+ date: 2021-01-06 00:00:00.000000000 Z
39
39
  dependencies:
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: rake
@@ -126,7 +126,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
126
126
  - !ruby/object:Gem::Version
127
127
  version: '0'
128
128
  requirements: []
129
- rubygems_version: 3.2.3
129
+ rubygems_version: 3.0.3
130
130
  signing_key:
131
131
  specification_version: 4
132
132
  summary: Extra methods for the File class
metadata.gz.sig CHANGED
Binary file