ptools 1.3.2 → 1.3.7
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 +5 -5
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +2 -0
- data/CHANGES +29 -0
- data/MANIFEST +3 -0
- data/README +3 -1
- data/Rakefile +6 -10
- data/certs/djberg96_pub.pem +26 -0
- data/lib/ptools.rb +31 -7
- data/ptools.gemspec +17 -17
- data/test/img/test.ico +0 -0
- data/test/test_binary.rb +9 -0
- data/test/test_constants.rb +3 -2
- data/test/test_image.rb +5 -0
- data/{.gemtest → test/txt/empty.txt} +0 -0
- data/test/txt/english.utf16 +0 -0
- metadata +66 -32
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 60d8a2d183abbb54bd0140d4681625c0c6d1aec1a4f03c0de4a63ef7e6b8625e
|
4
|
+
data.tar.gz: 8e850bf76e10e887dd089b15a580e63dae8b32f159a7120f4bd2a4700870101c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 22ed87d408f7f324838f3cd6a88428e28fcc5fcba6356c9c40117ec08be5fbc1dd6f36a1da75cfea6bd4d1ebc8d51bb219a8cff0435c326e89b704552c8464e5
|
7
|
+
data.tar.gz: a7a276fc8b777a95edd4ac38cc4637fcde6567f9e321f02bc2b3b094c56556034d465bc60c9f834fd696c3b0928b9c65130ce853275b6b977b4571ec95e20b38
|
checksums.yaml.gz.sig
ADDED
Binary file
|
data.tar.gz.sig
ADDED
data/CHANGES
CHANGED
@@ -1,3 +1,32 @@
|
|
1
|
+
== 1.3.7 - 24-Jun-2020
|
2
|
+
* Fixed a bug where the File.binary? method would bomb on a zero byte file.
|
3
|
+
Thanks go to Alexandru Emil Lupu for the spot and patch.
|
4
|
+
* Remove Gemfile.lock from repo. You can generate that yourself locally if
|
5
|
+
you want.
|
6
|
+
|
7
|
+
== 1.3.6 - 7-Jun-2020
|
8
|
+
* Updated gemspec, added more versions to .travis.yml file, fixed typo.
|
9
|
+
Thanks go to Al Snow for the updates.
|
10
|
+
* Fixed a bug where the File.binary? method would return true for utf16
|
11
|
+
or utf32 encoded files. Thanks go to Andrew McAndre for the spot.
|
12
|
+
* Updated cert.
|
13
|
+
|
14
|
+
== 1.3.5 - 3-Sep-2017
|
15
|
+
* The File.image? method now checks against .ico files.
|
16
|
+
* Eliminated Fixnum warning that showed up in Ruby 2.4.x.
|
17
|
+
* Updated cert.
|
18
|
+
|
19
|
+
== 1.3.4 - 4-Jul-2017
|
20
|
+
* The File.binary? method now lets you set your own percentage for the
|
21
|
+
internal heuristic as an optional second argument.
|
22
|
+
* The VERSION constant is now frozen.
|
23
|
+
* Minor updates to the Rakefile and gemspec.
|
24
|
+
* Updated cert file.
|
25
|
+
|
26
|
+
== 1.3.3 - 25-Sep-2015
|
27
|
+
* This gem is now signed.
|
28
|
+
* The Rakefile tasks now assume Rubygems 2.x.
|
29
|
+
|
1
30
|
== 1.3.2 - 11-Dec-2014
|
2
31
|
* Update to the File.tail method that deals prevents potential line ending
|
3
32
|
issues in JRuby.
|
data/MANIFEST
CHANGED
@@ -1,8 +1,10 @@
|
|
1
1
|
* CHANGES
|
2
2
|
* README
|
3
3
|
* MANIFEST
|
4
|
+
* Gemfile
|
4
5
|
* Rakefile
|
5
6
|
* ptools.gemspec
|
7
|
+
* certs/djberg96_pub.pem
|
6
8
|
* lib/ptools.rb
|
7
9
|
* test/test_constants.rb
|
8
10
|
* test/test_head.rb
|
@@ -17,3 +19,4 @@
|
|
17
19
|
* test/img/test.gif
|
18
20
|
* test/img/test.jpg
|
19
21
|
* test/img/test.png
|
22
|
+
* test/img/test.ico
|
data/README
CHANGED
@@ -47,6 +47,8 @@
|
|
47
47
|
|
48
48
|
Thanks go to Matt Hoyle for help with the File.tail method.
|
49
49
|
|
50
|
+
And thanks to any and all contributors!
|
51
|
+
|
50
52
|
== Future Plans
|
51
53
|
Add whatever other tools people think might be useful.
|
52
54
|
|
@@ -54,7 +56,7 @@
|
|
54
56
|
Artistic 2.0
|
55
57
|
|
56
58
|
== Copyright
|
57
|
-
(C) 2003-
|
59
|
+
(C) 2003-2020 Daniel J. Berger
|
58
60
|
All Rights Reserved.
|
59
61
|
|
60
62
|
== Warranty
|
data/Rakefile
CHANGED
@@ -8,22 +8,18 @@ CLEAN.include("**/*.gem", "**/*.rbc", "**/*coverage*")
|
|
8
8
|
|
9
9
|
desc 'Install the ptools package (non-gem)'
|
10
10
|
task :install do
|
11
|
-
|
12
|
-
|
13
|
-
|
11
|
+
sitelibdir = CONFIG["sitelibdir"]
|
12
|
+
file = "lib/ptools.rb"
|
13
|
+
FileUtils.cp(file, sitelibdir, :verbose => true)
|
14
14
|
end
|
15
15
|
|
16
16
|
namespace 'gem' do
|
17
17
|
desc 'Create the ptools gem'
|
18
18
|
task :create => [:clean] do
|
19
|
-
|
19
|
+
require 'rubygems/package'
|
20
20
|
spec = eval(IO.read('ptools.gemspec'))
|
21
|
-
|
22
|
-
|
23
|
-
else
|
24
|
-
require 'rubygems/package'
|
25
|
-
Gem::Package.build(spec)
|
26
|
-
end
|
21
|
+
spec.signing_key = File.join(Dir.home, '.ssh', 'gem-private_key.pem')
|
22
|
+
Gem::Package.build(spec, true)
|
27
23
|
end
|
28
24
|
|
29
25
|
desc 'Install the ptools gem'
|
@@ -0,0 +1,26 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIEcDCCAtigAwIBAgIBATANBgkqhkiG9w0BAQsFADA/MREwDwYDVQQDDAhkamJl
|
3
|
+
cmc5NjEVMBMGCgmSJomT8ixkARkWBWdtYWlsMRMwEQYKCZImiZPyLGQBGRYDY29t
|
4
|
+
MB4XDTE4MDMxODE1MjIwN1oXDTI4MDMxNTE1MjIwN1owPzERMA8GA1UEAwwIZGpi
|
5
|
+
ZXJnOTYxFTATBgoJkiaJk/IsZAEZFgVnbWFpbDETMBEGCgmSJomT8ixkARkWA2Nv
|
6
|
+
bTCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBALgfaroVM6CI06cxr0/h
|
7
|
+
A+j+pc8fgpRgBVmHFaFunq28GPC3IvW7Nvc3Y8SnAW7pP1EQIbhlwRIaQzJ93/yj
|
8
|
+
u95KpkP7tA9erypnV7dpzBkzNlX14ACaFD/6pHoXoe2ltBxk3CCyyzx70mTqJpph
|
9
|
+
75IB03ni9a8yqn8pmse+s83bFJOAqddSj009sGPcQO+QOWiNxqYv1n5EHcvj2ebO
|
10
|
+
6hN7YTmhx7aSia4qL/quc4DlIaGMWoAhvML7u1fmo53CYxkKskfN8MOecq2vfEmL
|
11
|
+
iLu+SsVVEAufMDDFMXMJlvDsviolUSGMSNRTujkyCcJoXKYYxZSNtIiyd9etI0X3
|
12
|
+
ctu0uhrFyrMZXCedutvXNjUolD5r9KGBFSWH1R9u2I3n3SAyFF2yzv/7idQHLJJq
|
13
|
+
74BMnx0FIq6fCpu5slAipvxZ3ZkZpEXZFr3cIBtO1gFvQWW7E/Y3ijliWJS1GQFq
|
14
|
+
058qERadHGu1yu1dojmFRo6W2KZvY9al2yIlbkpDrD5MYQIDAQABo3cwdTAJBgNV
|
15
|
+
HRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUFZsMapgzJimzsbaBG2Tm8j5e
|
16
|
+
AzgwHQYDVR0RBBYwFIESZGpiZXJnOTZAZ21haWwuY29tMB0GA1UdEgQWMBSBEmRq
|
17
|
+
YmVyZzk2QGdtYWlsLmNvbTANBgkqhkiG9w0BAQsFAAOCAYEAW2tnYixXQtKxgGXq
|
18
|
+
/3iSWG2bLwvxS4go3srO+aRXZHrFUMlJ5W0mCxl03aazxxKTsVVpZD8QZxvK91OQ
|
19
|
+
h9zr9JBYqCLcCVbr8SkmYCi/laxIZxsNE5YI8cC8vvlLI7AMgSfPSnn/Epq1GjGY
|
20
|
+
6L1iRcEDtanGCIvjqlCXO9+BmsnCfEVehqZkQHeYczA03tpOWb6pon2wzvMKSsKH
|
21
|
+
ks0ApVdstSLz1kzzAqem/uHdG9FyXdbTAwH1G4ZPv69sQAFAOCgAqYmdnzedsQtE
|
22
|
+
1LQfaQrx0twO+CZJPcRLEESjq8ScQxWRRkfuh2VeR7cEU7L7KqT10mtUwrvw7APf
|
23
|
+
DYoeCY9KyjIBjQXfbj2ke5u1hZj94Fsq9FfbEQg8ygCgwThnmkTrrKEiMSs3alYR
|
24
|
+
ORVCZpRuCPpmC8qmqxUnARDArzucjaclkxjLWvCVHeFa9UP7K3Nl9oTjJNv+7/jM
|
25
|
+
WZs4eecIcUc4tKdHxcAJ0MO/Dkqq7hGaiHpwKY76wQ1+8xAh
|
26
|
+
-----END CERTIFICATE-----
|
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.3.
|
6
|
+
PTOOLS_VERSION = '1.3.7'.freeze
|
7
7
|
|
8
8
|
# :stopdoc:
|
9
9
|
|
@@ -23,8 +23,8 @@ class File
|
|
23
23
|
|
24
24
|
# :startdoc:
|
25
25
|
|
26
|
-
# Returns whether or not the file is an image. Only JPEG, PNG, BMP
|
27
|
-
# GIF are checked against.
|
26
|
+
# Returns whether or not the file is an image. Only JPEG, PNG, BMP,
|
27
|
+
# GIF, and ICO are checked against.
|
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
|
@@ -39,8 +39,8 @@ class File
|
|
39
39
|
# http://en.wikipedia.org/wiki/Magic_number_(programming)
|
40
40
|
#
|
41
41
|
def self.image?(file)
|
42
|
-
bool = IMAGE_EXT.include?(File.extname(file).downcase)
|
43
|
-
bool = bmp?(file) || jpg?(file) || png?(file) || gif?(file) || tiff?(file)
|
42
|
+
bool = IMAGE_EXT.include?(File.extname(file).downcase)
|
43
|
+
bool = bmp?(file) || jpg?(file) || png?(file) || gif?(file) || tiff?(file) || ico?(file)
|
44
44
|
bool
|
45
45
|
end
|
46
46
|
|
@@ -79,6 +79,10 @@ class File
|
|
79
79
|
# It performs a "best guess" based on a simple test of the first
|
80
80
|
# +File.blksize+ characters, or 4096, whichever is smaller.
|
81
81
|
#
|
82
|
+
# By default it will check to see if more than 30 percent of the characters
|
83
|
+
# are non-text characters. If so, the method returns true. You can configure
|
84
|
+
# this percentage by passing your own as a second argument.
|
85
|
+
#
|
82
86
|
# Example:
|
83
87
|
#
|
84
88
|
# File.binary?('somefile.exe') # => true
|
@@ -87,13 +91,15 @@ class File
|
|
87
91
|
# Based on code originally provided by Ryan Davis (which, in turn, is
|
88
92
|
# based on Perl's -B switch).
|
89
93
|
#
|
90
|
-
def self.binary?(file)
|
94
|
+
def self.binary?(file, percentage = 0.30)
|
95
|
+
return false if File.stat(file).zero?
|
91
96
|
return false if image?(file)
|
97
|
+
return false if check_bom?(file)
|
92
98
|
bytes = File.stat(file).blksize
|
93
99
|
bytes = 4096 if bytes > 4096
|
94
100
|
s = (File.read(file, bytes) || "")
|
95
101
|
s = s.encode('US-ASCII', :undef => :replace).split(//)
|
96
|
-
((s.size - s.grep(" ".."~").size) / s.size.to_f) >
|
102
|
+
((s.size - s.grep(" ".."~").size) / s.size.to_f) > percentage
|
97
103
|
end
|
98
104
|
|
99
105
|
# Looks for the first occurrence of +program+ within +path+.
|
@@ -428,6 +434,20 @@ class File
|
|
428
434
|
|
429
435
|
private
|
430
436
|
|
437
|
+
# Returns whether or not the given +text+ contains a BOM marker.
|
438
|
+
# If present, we can generally assume it's a text file.
|
439
|
+
#
|
440
|
+
def self.check_bom?(file)
|
441
|
+
text = File.read(file, 4).force_encoding('utf-8')
|
442
|
+
|
443
|
+
bool = false
|
444
|
+
bool = true if text[0,3] == "\xEF\xBB\xBF"
|
445
|
+
bool = true if text[0,4] == "\x00\x00\xFE\xFF" || text[0,4] == "\xFF\xFE\x00\x00"
|
446
|
+
bool = true if text[0,2] == "\xFF\xFE" || text[0,2] == "\xFE\xFF"
|
447
|
+
|
448
|
+
bool
|
449
|
+
end
|
450
|
+
|
431
451
|
def self.nl_for_platform(platform)
|
432
452
|
platform = RbConfig::CONFIG["host_os"] if platform == 'local'
|
433
453
|
|
@@ -479,4 +499,8 @@ class File
|
|
479
499
|
|
480
500
|
true
|
481
501
|
end
|
502
|
+
|
503
|
+
def self.ico?(file)
|
504
|
+
["\000\000\001\000", "\000\000\002\000"].include?(IO.read(file, 4, nil, :encoding => 'binary'))
|
505
|
+
end
|
482
506
|
end
|
data/ptools.gemspec
CHANGED
@@ -1,30 +1,30 @@
|
|
1
|
-
require 'rubygems'
|
2
1
|
require 'rbconfig'
|
3
2
|
|
4
|
-
Gem::Specification.new do |
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
3
|
+
Gem::Specification.new do |spec|
|
4
|
+
spec.name = 'ptools'
|
5
|
+
spec.version = '1.3.7'
|
6
|
+
spec.license = 'Artistic-2.0'
|
7
|
+
spec.author = 'Daniel J. Berger'
|
8
|
+
spec.email = 'djberg96@gmail.com'
|
9
|
+
spec.homepage = 'https://github.com/djberg96/ptools'
|
10
|
+
spec.summary = 'Extra methods for the File class'
|
11
|
+
spec.test_files = Dir['test/test*']
|
12
|
+
spec.files = Dir['**/*'].reject{ |f| f.include?('git') }
|
13
|
+
spec.cert_chain = ['certs/djberg96_pub.pem']
|
14
14
|
|
15
|
-
|
15
|
+
spec.extra_rdoc_files = ['README', 'CHANGES', 'MANIFEST']
|
16
16
|
|
17
|
-
|
17
|
+
spec.description = <<-EOF
|
18
18
|
The ptools (power tools) library provides several handy methods to
|
19
19
|
Ruby's core File class, such as File.which for finding executables,
|
20
20
|
File.null to return the null device on your platform, and so on.
|
21
21
|
EOF
|
22
22
|
|
23
|
-
|
24
|
-
|
23
|
+
spec.add_development_dependency('rake')
|
24
|
+
spec.add_development_dependency('test-unit')
|
25
25
|
|
26
26
|
if File::ALT_SEPARATOR
|
27
|
-
|
28
|
-
|
27
|
+
spec.platform = Gem::Platform.new(['universal', 'mingw32'])
|
28
|
+
spec.add_dependency('win32-file')
|
29
29
|
end
|
30
30
|
end
|
data/test/img/test.ico
ADDED
Binary file
|
data/test/test_binary.rb
CHANGED
@@ -21,7 +21,9 @@ class TC_Ptools_Binary < Test::Unit::TestCase
|
|
21
21
|
|
22
22
|
def setup
|
23
23
|
@txt_file = File.join(@@dirname, 'txt', 'english.txt')
|
24
|
+
@emp_file = File.join(@@dirname, 'txt', 'empty.txt')
|
24
25
|
@uni_file = File.join(@@dirname, 'txt', 'korean.txt')
|
26
|
+
@utf_file = File.join(@@dirname, 'txt', 'english.utf16')
|
25
27
|
@png_file = File.join(@@dirname, 'img', 'test.png')
|
26
28
|
@jpg_file = File.join(@@dirname, 'img', 'test.jpg')
|
27
29
|
@gif_file = File.join(@@dirname, 'img', 'test.gif')
|
@@ -37,8 +39,10 @@ class TC_Ptools_Binary < Test::Unit::TestCase
|
|
37
39
|
end
|
38
40
|
|
39
41
|
test "File.binary? returns false for text files" do
|
42
|
+
assert_false(File.binary?(@emp_file))
|
40
43
|
assert_false(File.binary?(@txt_file))
|
41
44
|
assert_false(File.binary?(@uni_file))
|
45
|
+
assert_false(File.binary?(@utf_file))
|
42
46
|
end
|
43
47
|
|
44
48
|
test "File.binary? returns false for image files" do
|
@@ -47,6 +51,11 @@ class TC_Ptools_Binary < Test::Unit::TestCase
|
|
47
51
|
assert_false(File.binary?(@gif_file))
|
48
52
|
end
|
49
53
|
|
54
|
+
test "File.binary? accepts an optional percentage argument" do
|
55
|
+
assert_false(File.binary?(@txt_file, 0.50))
|
56
|
+
assert_true(File.binary?(@txt_file, 0.05))
|
57
|
+
end
|
58
|
+
|
50
59
|
test "File.binary? raises an error if the file cannot be found" do
|
51
60
|
assert_raise_kind_of(SystemCallError){ File.binary?('bogus') }
|
52
61
|
end
|
data/test/test_constants.rb
CHANGED
@@ -15,7 +15,8 @@ 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.3.
|
18
|
+
assert_equal('1.3.7', File::PTOOLS_VERSION)
|
19
|
+
assert_true(File::PTOOLS_VERSION.frozen?)
|
19
20
|
end
|
20
21
|
|
21
22
|
test "IMAGE_EXT constant is set to array of values" do
|
@@ -27,7 +28,7 @@ class TC_Ptools_Constants < Test::Unit::TestCase
|
|
27
28
|
assert_not_nil(File::MSWINDOWS)
|
28
29
|
end
|
29
30
|
|
30
|
-
test "WIN32EXTS constant is
|
31
|
+
test "WIN32EXTS constant is defined on MS Windows" do
|
31
32
|
omit_unless(@@windows, "Skipping on Unix systems")
|
32
33
|
assert_not_nil(File::WIN32EXTS)
|
33
34
|
end
|
data/test/test_image.rb
CHANGED
@@ -18,6 +18,7 @@ class TC_Ptools_Image < Test::Unit::TestCase
|
|
18
18
|
@jpg_file = File.join(Dir.pwd, 'img', 'test.jpg')
|
19
19
|
@png_file = File.join(Dir.pwd, 'img', 'test.png')
|
20
20
|
@gif_file = File.join(Dir.pwd, 'img', 'test.gif')
|
21
|
+
@ico_file = File.join(Dir.pwd, 'img', 'test.ico')
|
21
22
|
end
|
22
23
|
|
23
24
|
test "image? method basic functionality" do
|
@@ -43,6 +44,10 @@ class TC_Ptools_Image < Test::Unit::TestCase
|
|
43
44
|
assert_true(File.image?(@png_file))
|
44
45
|
end
|
45
46
|
|
47
|
+
test "image? method returns true for an ico" do
|
48
|
+
assert_true(File.image?(@ico_file))
|
49
|
+
end
|
50
|
+
|
46
51
|
test "image? method raises an error if the file does not exist" do
|
47
52
|
assert_raises(Errno::ENOENT, ArgumentError){ File.image?('bogus') }
|
48
53
|
end
|
File without changes
|
Binary file
|
metadata
CHANGED
@@ -1,14 +1,41 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ptools
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel J. Berger
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
|
-
cert_chain:
|
11
|
-
|
10
|
+
cert_chain:
|
11
|
+
- |
|
12
|
+
-----BEGIN CERTIFICATE-----
|
13
|
+
MIIEcDCCAtigAwIBAgIBATANBgkqhkiG9w0BAQsFADA/MREwDwYDVQQDDAhkamJl
|
14
|
+
cmc5NjEVMBMGCgmSJomT8ixkARkWBWdtYWlsMRMwEQYKCZImiZPyLGQBGRYDY29t
|
15
|
+
MB4XDTE4MDMxODE1MjIwN1oXDTI4MDMxNTE1MjIwN1owPzERMA8GA1UEAwwIZGpi
|
16
|
+
ZXJnOTYxFTATBgoJkiaJk/IsZAEZFgVnbWFpbDETMBEGCgmSJomT8ixkARkWA2Nv
|
17
|
+
bTCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBALgfaroVM6CI06cxr0/h
|
18
|
+
A+j+pc8fgpRgBVmHFaFunq28GPC3IvW7Nvc3Y8SnAW7pP1EQIbhlwRIaQzJ93/yj
|
19
|
+
u95KpkP7tA9erypnV7dpzBkzNlX14ACaFD/6pHoXoe2ltBxk3CCyyzx70mTqJpph
|
20
|
+
75IB03ni9a8yqn8pmse+s83bFJOAqddSj009sGPcQO+QOWiNxqYv1n5EHcvj2ebO
|
21
|
+
6hN7YTmhx7aSia4qL/quc4DlIaGMWoAhvML7u1fmo53CYxkKskfN8MOecq2vfEmL
|
22
|
+
iLu+SsVVEAufMDDFMXMJlvDsviolUSGMSNRTujkyCcJoXKYYxZSNtIiyd9etI0X3
|
23
|
+
ctu0uhrFyrMZXCedutvXNjUolD5r9KGBFSWH1R9u2I3n3SAyFF2yzv/7idQHLJJq
|
24
|
+
74BMnx0FIq6fCpu5slAipvxZ3ZkZpEXZFr3cIBtO1gFvQWW7E/Y3ijliWJS1GQFq
|
25
|
+
058qERadHGu1yu1dojmFRo6W2KZvY9al2yIlbkpDrD5MYQIDAQABo3cwdTAJBgNV
|
26
|
+
HRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUFZsMapgzJimzsbaBG2Tm8j5e
|
27
|
+
AzgwHQYDVR0RBBYwFIESZGpiZXJnOTZAZ21haWwuY29tMB0GA1UdEgQWMBSBEmRq
|
28
|
+
YmVyZzk2QGdtYWlsLmNvbTANBgkqhkiG9w0BAQsFAAOCAYEAW2tnYixXQtKxgGXq
|
29
|
+
/3iSWG2bLwvxS4go3srO+aRXZHrFUMlJ5W0mCxl03aazxxKTsVVpZD8QZxvK91OQ
|
30
|
+
h9zr9JBYqCLcCVbr8SkmYCi/laxIZxsNE5YI8cC8vvlLI7AMgSfPSnn/Epq1GjGY
|
31
|
+
6L1iRcEDtanGCIvjqlCXO9+BmsnCfEVehqZkQHeYczA03tpOWb6pon2wzvMKSsKH
|
32
|
+
ks0ApVdstSLz1kzzAqem/uHdG9FyXdbTAwH1G4ZPv69sQAFAOCgAqYmdnzedsQtE
|
33
|
+
1LQfaQrx0twO+CZJPcRLEESjq8ScQxWRRkfuh2VeR7cEU7L7KqT10mtUwrvw7APf
|
34
|
+
DYoeCY9KyjIBjQXfbj2ke5u1hZj94Fsq9FfbEQg8ygCgwThnmkTrrKEiMSs3alYR
|
35
|
+
ORVCZpRuCPpmC8qmqxUnARDArzucjaclkxjLWvCVHeFa9UP7K3Nl9oTjJNv+7/jM
|
36
|
+
WZs4eecIcUc4tKdHxcAJ0MO/Dkqq7hGaiHpwKY76wQ1+8xAh
|
37
|
+
-----END CERTIFICATE-----
|
38
|
+
date:
|
12
39
|
dependencies:
|
13
40
|
- !ruby/object:Gem::Dependency
|
14
41
|
name: rake
|
@@ -30,14 +57,14 @@ dependencies:
|
|
30
57
|
requirements:
|
31
58
|
- - ">="
|
32
59
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
60
|
+
version: '0'
|
34
61
|
type: :development
|
35
62
|
prerelease: false
|
36
63
|
version_requirements: !ruby/object:Gem::Requirement
|
37
64
|
requirements:
|
38
65
|
- - ">="
|
39
66
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
67
|
+
version: '0'
|
41
68
|
description: |2
|
42
69
|
The ptools (power tools) library provides several handy methods to
|
43
70
|
Ruby's core File class, such as File.which for finding executables,
|
@@ -50,34 +77,42 @@ extra_rdoc_files:
|
|
50
77
|
- CHANGES
|
51
78
|
- MANIFEST
|
52
79
|
files:
|
53
|
-
-
|
54
|
-
-
|
55
|
-
-
|
56
|
-
-
|
57
|
-
-
|
58
|
-
-
|
59
|
-
-
|
60
|
-
-
|
80
|
+
- test
|
81
|
+
- test/test_constants.rb
|
82
|
+
- test/txt
|
83
|
+
- test/txt/empty.txt
|
84
|
+
- test/txt/english.utf16
|
85
|
+
- test/txt/english.txt
|
86
|
+
- test/txt/korean.txt
|
87
|
+
- test/test_head.rb
|
88
|
+
- test/test_binary.rb
|
89
|
+
- test/img
|
61
90
|
- test/img/test.gif
|
91
|
+
- test/img/test.ico
|
62
92
|
- test/img/test.jpg
|
63
93
|
- test/img/test.png
|
64
|
-
- test/test_binary.rb
|
65
|
-
- test/test_constants.rb
|
66
|
-
- test/test_head.rb
|
67
94
|
- test/test_image.rb
|
68
|
-
- test/test_is_sparse.rb
|
69
|
-
- test/test_nlconvert.rb
|
70
95
|
- test/test_null.rb
|
96
|
+
- test/test_which.rb
|
71
97
|
- test/test_tail.rb
|
98
|
+
- test/test_is_sparse.rb
|
99
|
+
- test/test_nlconvert.rb
|
100
|
+
- test/test_whereis.rb
|
72
101
|
- test/test_touch.rb
|
73
102
|
- test/test_wc.rb
|
74
|
-
-
|
75
|
-
-
|
76
|
-
-
|
77
|
-
-
|
103
|
+
- CHANGES
|
104
|
+
- MANIFEST
|
105
|
+
- README
|
106
|
+
- ptools.gemspec
|
107
|
+
- Rakefile
|
108
|
+
- certs
|
109
|
+
- certs/djberg96_pub.pem
|
110
|
+
- lib
|
111
|
+
- lib/ptools.rb
|
112
|
+
- Gemfile
|
78
113
|
homepage: https://github.com/djberg96/ptools
|
79
114
|
licenses:
|
80
|
-
- Artistic
|
115
|
+
- Artistic-2.0
|
81
116
|
metadata: {}
|
82
117
|
post_install_message:
|
83
118
|
rdoc_options: []
|
@@ -94,21 +129,20 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
94
129
|
- !ruby/object:Gem::Version
|
95
130
|
version: '0'
|
96
131
|
requirements: []
|
97
|
-
|
98
|
-
rubygems_version: 2.4.5
|
132
|
+
rubygems_version: 3.0.3
|
99
133
|
signing_key:
|
100
134
|
specification_version: 4
|
101
135
|
summary: Extra methods for the File class
|
102
136
|
test_files:
|
103
|
-
- test/
|
104
|
-
- test/test_wc.rb
|
137
|
+
- test/test_constants.rb
|
105
138
|
- test/test_head.rb
|
139
|
+
- test/test_binary.rb
|
140
|
+
- test/test_image.rb
|
106
141
|
- test/test_null.rb
|
142
|
+
- test/test_which.rb
|
143
|
+
- test/test_tail.rb
|
107
144
|
- test/test_is_sparse.rb
|
145
|
+
- test/test_nlconvert.rb
|
108
146
|
- test/test_whereis.rb
|
109
|
-
- test/test_binary.rb
|
110
147
|
- test/test_touch.rb
|
111
|
-
- test/
|
112
|
-
- test/test_constants.rb
|
113
|
-
- test/test_image.rb
|
114
|
-
- test/test_which.rb
|
148
|
+
- test/test_wc.rb
|
metadata.gz.sig
ADDED
Binary file
|