ptools 1.3.3 → 1.4.0

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
- SHA1:
3
- metadata.gz: c180275bc8e38301a9c1d13771831614cf4febb5
4
- data.tar.gz: 0de46ac283166ffc26a20955f2b4d4809116a6fc
2
+ SHA256:
3
+ metadata.gz: be2c833dd51c09611f84da85481ae3b8039d427955fa951c5aab0745bef680d7
4
+ data.tar.gz: 612f6f1ab4cb5e605d9b1c18d26a9b35b95e798a9e9e11d54f539bb5ee1f1082
5
5
  SHA512:
6
- metadata.gz: 8bf975d8d26c1f464f48cdb831347eba7a4094ccba45e9f974766ca14f343db58d87a41dad2a7647ad1f3b3a1923622549177c6936638b60a796ba33088984ee
7
- data.tar.gz: 849697b55d1a7ee705f5eec78f3a2e19dcfe086e5b1cbf753bcf185509554dac11ee153709fd356ff8dc601d7806ebe9cc5d288abfb70cd6df5c6cd631449fdb
6
+ metadata.gz: 8ec40d7c6e2d9edb2cc0e5a41a74469d7a17d208cd67d0461963488c20f97ab06b125c17903c976c6f741f93a36612ccdd63fde6c9ac0a64671340b2dbe7d78c
7
+ data.tar.gz: 7cd78b2d229c8f98a7df154275d74cb0055336bac5b40368112dd83a3cf5b8ed96c3b708b5fe5cda543a263041ab2ab44fe1a656e8be70f5d4c0c36259646bb0
Binary file
data.tar.gz.sig CHANGED
Binary file
data/CHANGES CHANGED
@@ -1,10 +1,38 @@
1
+ == 1.4.0 - 20-Aug-2020
2
+ * Switched from test-unit to rspec, and reworked the tests bit in general.
3
+ * Removed the File.null method since Ruby has IO::NULL.
4
+
5
+ == 1.3.7 - 24-Jun-2020
6
+ * Fixed a bug where the File.binary? method would bomb on a zero byte file.
7
+ Thanks go to Alexandru Emil Lupu for the spot and patch.
8
+ * Remove Gemfile.lock from repo. You can generate that yourself locally if
9
+ you want.
10
+
11
+ == 1.3.6 - 7-Jun-2020
12
+ * Updated gemspec, added more versions to .travis.yml file, fixed typo.
13
+ Thanks go to Al Snow for the updates.
14
+ * Fixed a bug where the File.binary? method would return true for utf16
15
+ or utf32 encoded files. Thanks go to Andrew McAndre for the spot.
16
+ * Updated cert.
17
+
18
+ == 1.3.5 - 3-Sep-2017
19
+ * The File.image? method now checks against .ico files.
20
+ * Eliminated Fixnum warning that showed up in Ruby 2.4.x.
21
+ * Updated cert.
22
+
23
+ == 1.3.4 - 4-Jul-2017
24
+ * The File.binary? method now lets you set your own percentage for the
25
+ internal heuristic as an optional second argument.
26
+ * The VERSION constant is now frozen.
27
+ * Minor updates to the Rakefile and gemspec.
28
+ * Updated cert file.
29
+
1
30
  == 1.3.3 - 25-Sep-2015
2
31
  * This gem is now signed.
3
32
  * The Rakefile tasks now assume Rubygems 2.x.
4
33
 
5
34
  == 1.3.2 - 11-Dec-2014
6
- * Update to the File.tail method that deals prevents potential line ending
7
- issues in JRuby.
35
+ * Update to the File.tail method that prevents potential line ending issues in JRuby.
8
36
  * Added known issues with JRuby to the README.
9
37
 
10
38
  == 1.3.1 - 9-Dec-2014
data/Gemfile CHANGED
@@ -8,5 +8,5 @@ end
8
8
 
9
9
  group :test do
10
10
  gem 'rake'
11
- gem 'test-unit'
11
+ gem 'rspec'
12
12
  end
data/MANIFEST CHANGED
@@ -1,20 +1,27 @@
1
1
  * CHANGES
2
2
  * README
3
3
  * MANIFEST
4
+ * Gemfile
4
5
  * Rakefile
5
6
  * ptools.gemspec
6
7
  * certs/djberg96_pub.pem
7
8
  * lib/ptools.rb
8
- * test/test_constants.rb
9
- * test/test_head.rb
10
- * test/test_image.rb
11
- * test/test_nlconvert.rb
12
- * test/test_null.rb
13
- * test/test_tail.rb
14
- * test/test_touch.rb
15
- * test/test_wc.rb
16
- * test/test_which.rb
17
- * test/test_whereis.rb
18
- * test/img/test.gif
19
- * test/img/test.jpg
20
- * test/img/test.png
9
+ * spec/binary_spec.rb
10
+ * spec/constants_spec.rb
11
+ * spec/head_spec.rb
12
+ * spec/image_spec.rb
13
+ * spec/nlconvert_spec.rb
14
+ * spec/sparse_spec.rb
15
+ * spec/tail_spec.rb
16
+ * spec/touch_spec.rb
17
+ * spec/wc_spec.rb
18
+ * spec/whereis_spec.rb
19
+ * spec/which_spec.rb
20
+ * spec/img/test.gif
21
+ * spec/img/test.ico
22
+ * spec/img/test.jpg
23
+ * spec/img/test.png
24
+ * spec/txt/empty.txt
25
+ * spec/txt/english.txt
26
+ * spec/txt/english.utf16
27
+ * spec/txt/korean.txt
data/README CHANGED
@@ -47,14 +47,16 @@
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
 
53
55
  == License
54
- Artistic 2.0
56
+ Artistic-2.0
55
57
 
56
58
  == Copyright
57
- (C) 2003-2014 Daniel J. Berger
59
+ (C) 2003-2020 Daniel J. Berger
58
60
  All Rights Reserved.
59
61
 
60
62
  == Warranty
data/Rakefile CHANGED
@@ -2,15 +2,16 @@ require 'rake'
2
2
  require 'rake/clean'
3
3
  require 'rake/testtask'
4
4
  require 'rbconfig'
5
+ require 'rspec/core/rake_task'
5
6
  include RbConfig
6
7
 
7
8
  CLEAN.include("**/*.gem", "**/*.rbc", "**/*coverage*")
8
9
 
9
10
  desc 'Install the ptools package (non-gem)'
10
11
  task :install do
11
- sitelibdir = CONFIG["sitelibdir"]
12
- file = "lib/ptools.rb"
13
- FileUtils.cp(file, sitelibdir, :verbose => true)
12
+ sitelibdir = CONFIG["sitelibdir"]
13
+ file = "lib/ptools.rb"
14
+ FileUtils.cp(file, sitelibdir, :verbose => true)
14
15
  end
15
16
 
16
17
  namespace 'gem' do
@@ -33,103 +34,54 @@ namespace 'gem' do
33
34
  end
34
35
  end
35
36
 
36
- Rake::TestTask.new do |t|
37
- task :test => :clean
38
- t.verbose = true
39
- t.warning = true
40
- end
41
-
42
- namespace 'test' do
43
- desc "Check test coverage using rcov"
44
- task :coverage => [:clean] do
45
- require 'rcov'
46
- rm_rf 'coverage'
47
- sh "rcov -Ilib test/test*.rb"
37
+ namespace 'spec' do
38
+ RSpec::Core::RakeTask.new(:binary) do |t|
39
+ t.pattern = 'spec/binary_spec.rb'
48
40
  end
49
41
 
50
- Rake::TestTask.new('binary') do |t|
51
- t.libs << 'test'
52
- t.verbose = true
53
- t.warning = true
54
- t.test_files = FileList['test/test_binary.rb']
42
+ RSpec::Core::RakeTask.new(:constants) do |t|
43
+ t.pattern = 'spec/constants_spec.rb'
55
44
  end
56
45
 
57
- Rake::TestTask.new('constants') do |t|
58
- t.libs << 'test'
59
- t.verbose = true
60
- t.warning = true
61
- t.test_files = FileList['test/test_constants.rb']
46
+ RSpec::Core::RakeTask.new(:head) do |t|
47
+ t.pattern = 'spec/head_spec.rb'
62
48
  end
63
49
 
64
- Rake::TestTask.new('head') do |t|
65
- t.libs << 'test'
66
- t.verbose = true
67
- t.warning = true
68
- t.test_files = FileList['test/test_head.rb']
50
+ RSpec::Core::RakeTask.new(:image) do |t|
51
+ t.pattern = 'spec/image_spec.rb'
69
52
  end
70
53
 
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']
54
+ RSpec::Core::RakeTask.new(:nlconvert) do |t|
55
+ t.pattern = 'spec/nlconvert_spec.rb'
76
56
  end
77
57
 
78
- Rake::TestTask.new('nlconvert') do |t|
79
- t.libs << 'test'
80
- t.verbose = true
81
- t.warning = true
82
- t.test_files = FileList['test/test_nlconvert.rb']
58
+ RSpec::Core::RakeTask.new(:sparse) do |t|
59
+ t.pattern = 'spec/sparse_spec.rb'
83
60
  end
84
61
 
85
- Rake::TestTask.new('null') do |t|
86
- t.libs << 'test'
87
- t.verbose = true
88
- t.warning = true
89
- t.test_files = FileList['test/test_null.rb']
62
+ RSpec::Core::RakeTask.new(:tail) do |t|
63
+ t.pattern = 'spec/tail_spec.rb'
90
64
  end
91
65
 
92
- Rake::TestTask.new('sparse') do |t|
93
- t.libs << 'test'
94
- t.verbose = true
95
- t.warning = true
96
- t.test_files = FileList['test/test_is_sparse.rb']
66
+ RSpec::Core::RakeTask.new(:touch) do |t|
67
+ t.pattern = 'spec/touch_spec.rb'
97
68
  end
98
69
 
99
- Rake::TestTask.new('tail') do |t|
100
- t.libs << 'test'
101
- t.verbose = true
102
- t.warning = true
103
- t.test_files = FileList['test/test_tail.rb']
70
+ RSpec::Core::RakeTask.new(:wc) do |t|
71
+ t.pattern = 'spec/wc_spec.rb'
104
72
  end
105
-
106
- Rake::TestTask.new('touch') do |t|
107
- t.libs << 'test'
108
- t.verbose = true
109
- t.warning = true
110
- t.test_files = FileList['test/test_touch.rb']
111
- end
112
-
113
- Rake::TestTask.new('wc') do |t|
114
- t.libs << 'test'
115
- t.verbose = true
116
- t.warning = true
117
- t.test_files = FileList['test/test_wc.rb']
73
+
74
+ RSpec::Core::RakeTask.new(:whereis) do |t|
75
+ t.pattern = 'spec/whereis_spec.rb'
118
76
  end
119
77
 
120
- Rake::TestTask.new('whereis') do |t|
121
- t.libs << 'test'
122
- t.verbose = true
123
- t.warning = true
124
- t.test_files = FileList['test/test_whereis.rb']
78
+ RSpec::Core::RakeTask.new(:which) do |t|
79
+ t.pattern = 'spec/which_spec.rb'
125
80
  end
126
81
 
127
- Rake::TestTask.new('which') do |t|
128
- t.libs << 'test'
129
- t.verbose = true
130
- t.warning = true
131
- t.test_files = FileList['test/test_which.rb']
82
+ RSpec::Core::RakeTask.new(:all) do |t|
83
+ t.pattern = 'spec/*_spec.rb'
132
84
  end
133
85
  end
134
86
 
135
- task :default => :test
87
+ task :default => 'spec:all'
@@ -1,21 +1,26 @@
1
1
  -----BEGIN CERTIFICATE-----
2
- MIIDcDCCAligAwIBAgIBATANBgkqhkiG9w0BAQUFADA/MREwDwYDVQQDDAhkamJl
2
+ MIIEcDCCAtigAwIBAgIBATANBgkqhkiG9w0BAQsFADA/MREwDwYDVQQDDAhkamJl
3
3
  cmc5NjEVMBMGCgmSJomT8ixkARkWBWdtYWlsMRMwEQYKCZImiZPyLGQBGRYDY29t
4
- MB4XDTE1MDkwMjIwNDkxOFoXDTE2MDkwMTIwNDkxOFowPzERMA8GA1UEAwwIZGpi
4
+ MB4XDTE4MDMxODE1MjIwN1oXDTI4MDMxNTE1MjIwN1owPzERMA8GA1UEAwwIZGpi
5
5
  ZXJnOTYxFTATBgoJkiaJk/IsZAEZFgVnbWFpbDETMBEGCgmSJomT8ixkARkWA2Nv
6
- bTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMyTkvXqRp6hLs9eoJOS
7
- Hmi8kRYbq9Vkf15/hMxJpotYMgJVHHWrmDcC5Dye2PbnXjTkKf266Zw0PtT9h+lI
8
- S3ts9HO+vaCFSMwFFZmnWJSpQ3CNw2RcHxjWkk9yF7imEM8Kz9ojhiDXzBetdV6M
9
- gr0lV/alUr7TNVBDngbXEfTWscyXh1qd7xZ4EcOdsDktCe5G45N/o3662tPQvJsi
10
- FOF0CM/KuBsa/HL1/eoEmF4B3EKIRfTHrQ3hu20Kv3RJ88QM4ec2+0dd97uX693O
11
- zv6981fyEg+aXLkxrkViM/tz2qR2ZE0jPhHTREPYeMEgptRkTmWSKAuLVWrJEfgl
12
- DtkCAwEAAaN3MHUwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFEwe
13
- nn6bfJADmuIDiMSOzedOrL+xMB0GA1UdEQQWMBSBEmRqYmVyZzk2QGdtYWlsLmNv
14
- bTAdBgNVHRIEFjAUgRJkamJlcmc5NkBnbWFpbC5jb20wDQYJKoZIhvcNAQEFBQAD
15
- ggEBAHmNOCWoDVD75zHFueY0viwGDVP1BNGFC+yXcb7u2GlK+nEMCORqzURbYPf7
16
- tL+/hzmePIRz7i30UM//64GI1NLv9jl7nIwjhPpXpf7/lu2I9hOTsvwSumb5UiKC
17
- /sqBxI3sfj9pr79Wpv4MuikX1XPik7Ncb7NPsJPw06Lvyc3Hkg5X2XpPtLtS+Gr2
18
- wKJnmzb5rIPS1cmsqv0M9LPWflzfwoZ/SpnmhagP+g05p8bRNKjZSA2iImM/GyYZ
19
- EJYzxdPOrx2n6NYR3Hk+vHP0U7UBSveI6+qx+ndQYaeyCn+GRX2PKS9h66YF/Q1V
20
- tGSHgAmcLlkdGgan182qsE/4kKM=
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
21
26
  -----END CERTIFICATE-----
@@ -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.3'
6
+ PTOOLS_VERSION = '1.4.0'.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 and
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,46 +39,20 @@ 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) # Match ext
43
- bool = bmp?(file) || jpg?(file) || png?(file) || gif?(file) || tiff?(file) # Check data
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
 
47
- # Returns the name of the null device (aka bitbucket) on your platform.
48
- #
49
- # Examples:
50
- #
51
- # # On Linux
52
- # File.null # => '/dev/null'
53
- #
54
- # # On MS Windows
55
- # File.null # => 'NUL'
56
- #--
57
- # The values I used here are based on information from
58
- # http://en.wikipedia.org/wiki//dev/null
59
- #
60
- def self.null
61
- case RbConfig::CONFIG['host_os']
62
- when /mswin|win32|msdos|mingw|windows/i
63
- 'NUL'
64
- when /amiga/i
65
- 'NIL:'
66
- when /openvms/i
67
- 'NL:'
68
- else
69
- '/dev/null'
70
- end
71
- end
72
-
73
- class << self
74
- alias null_device null
75
- end
76
-
77
47
  # Returns whether or not +file+ is a binary non-image file, i.e. executable,
78
48
  # shared object, ect. Note that this is NOT guaranteed to be 100% accurate.
79
49
  # It performs a "best guess" based on a simple test of the first
80
50
  # +File.blksize+ characters, or 4096, whichever is smaller.
81
51
  #
52
+ # By default it will check to see if more than 30 percent of the characters
53
+ # are non-text characters. If so, the method returns true. You can configure
54
+ # this percentage by passing your own as a second argument.
55
+ #
82
56
  # Example:
83
57
  #
84
58
  # File.binary?('somefile.exe') # => true
@@ -87,13 +61,15 @@ class File
87
61
  # Based on code originally provided by Ryan Davis (which, in turn, is
88
62
  # based on Perl's -B switch).
89
63
  #
90
- def self.binary?(file)
64
+ def self.binary?(file, percentage = 0.30)
65
+ return false if File.stat(file).zero?
91
66
  return false if image?(file)
67
+ return false if check_bom?(file)
92
68
  bytes = File.stat(file).blksize
93
69
  bytes = 4096 if bytes > 4096
94
70
  s = (File.read(file, bytes) || "")
95
71
  s = s.encode('US-ASCII', :undef => :replace).split(//)
96
- ((s.size - s.grep(" ".."~").size) / s.size.to_f) > 0.30
72
+ ((s.size - s.grep(" ".."~").size) / s.size.to_f) > percentage
97
73
  end
98
74
 
99
75
  # Looks for the first occurrence of +program+ within +path+.
@@ -428,6 +404,20 @@ class File
428
404
 
429
405
  private
430
406
 
407
+ # Returns whether or not the given +text+ contains a BOM marker.
408
+ # If present, we can generally assume it's a text file.
409
+ #
410
+ def self.check_bom?(file)
411
+ text = File.read(file, 4).force_encoding('utf-8')
412
+
413
+ bool = false
414
+ bool = true if text[0,3] == "\xEF\xBB\xBF"
415
+ bool = true if text[0,4] == "\x00\x00\xFE\xFF" || text[0,4] == "\xFF\xFE\x00\x00"
416
+ bool = true if text[0,2] == "\xFF\xFE" || text[0,2] == "\xFE\xFF"
417
+
418
+ bool
419
+ end
420
+
431
421
  def self.nl_for_platform(platform)
432
422
  platform = RbConfig::CONFIG["host_os"] if platform == 'local'
433
423
 
@@ -479,4 +469,8 @@ class File
479
469
 
480
470
  true
481
471
  end
472
+
473
+ def self.ico?(file)
474
+ ["\000\000\001\000", "\000\000\002\000"].include?(IO.read(file, 4, nil, :encoding => 'binary'))
475
+ end
482
476
  end
@@ -1,16 +1,15 @@
1
- require 'rubygems'
2
1
  require 'rbconfig'
3
2
 
4
3
  Gem::Specification.new do |spec|
5
4
  spec.name = 'ptools'
6
- spec.version = '1.3.3'
7
- spec.license = 'Artistic 2.0'
5
+ spec.version = '1.4.0'
6
+ spec.license = 'Artistic-2.0'
8
7
  spec.author = 'Daniel J. Berger'
9
8
  spec.email = 'djberg96@gmail.com'
10
9
  spec.homepage = 'https://github.com/djberg96/ptools'
11
10
  spec.summary = 'Extra methods for the File class'
12
- spec.test_files = Dir['test/test*']
13
- spec.files = Dir['**/*'] << '.gemtest'
11
+ spec.test_files = Dir['spec/_spec*']
12
+ spec.files = Dir['**/*'].reject{ |f| f.include?('git') }
14
13
  spec.cert_chain = ['certs/djberg96_pub.pem']
15
14
 
16
15
  spec.extra_rdoc_files = ['README', 'CHANGES', 'MANIFEST']
@@ -22,10 +21,10 @@ Gem::Specification.new do |spec|
22
21
  EOF
23
22
 
24
23
  spec.add_development_dependency('rake')
25
- spec.add_development_dependency('test-unit', '>= 2.5.0')
24
+ spec.add_development_dependency('rspec', '~> 3.9')
26
25
 
27
26
  if File::ALT_SEPARATOR
28
27
  spec.platform = Gem::Platform.new(['universal', 'mingw32'])
29
- spec.add_dependency('win32-file', '>= 0.7.0')
28
+ spec.add_dependency('win32-file')
30
29
  end
31
30
  end