fun_with_files 0.0.14 → 0.0.15

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
  SHA1:
3
- metadata.gz: cf6595c5de6273e8d7fb668ddc70d161a1354c4c
4
- data.tar.gz: 4938516e5ad413f8ffa722985d963fcb6eb1f039
3
+ metadata.gz: 6d1ccc274aea1937c63f81c2fe7897349aadbdc9
4
+ data.tar.gz: 5ae174de323cfa4aba42d459b5848416c173bcfa
5
5
  SHA512:
6
- metadata.gz: 09db56d93b3cde0407d1f0e7d8691ab0373158301828ee5af974c1cb259369c2f8a5c43c79eb37352760bede2d5d4d4f310887b9129aba917100109643138787
7
- data.tar.gz: 06690ccc56d90230e7d8c55a9f9372cc74dc9f6ff1104fe7f8ea26c1efdb601b5ff221a0c4250630d40ab7e2a065cc71ff124545de1ed1a66405fc591ffbc49a
6
+ metadata.gz: 8125f7794e66f690c5180e88f6d827463d251878417e1689e2360bac84ad9d9909530a2c299409468558320817763a2d66ac4bf45308e6cacdca26363a63eda4
7
+ data.tar.gz: 13c43cb5c978693715ffa1a21c72c07c464eaab0deb4260826b49d120748967ed7fd20c65234888347a2a96ab59529a6517a10c304dc99d9cf0bae33046661c1
data/Gemfile CHANGED
@@ -10,9 +10,9 @@ group :development do
10
10
  # gem "shoulda", "~> 3", ">= 3.5"
11
11
  # gem "rdoc", "~> 3.12"
12
12
  # gem "bundler", "~> 1.5"
13
- # gem "jeweler", "~> 2.0"
13
+ # gem "juwelier", "~> 2.0"
14
14
  # gem "debugger", "~> 1.6"
15
- gem "fun_with_testing", "~> 0.0"
15
+ gem "fun_with_testing", "~> 0.0", ">= 0.0.5"
16
16
  end
17
17
 
18
18
  gem "xdg", "~> 2"
@@ -108,7 +108,7 @@ DirectoryBuilder is a class for defining and populating a file hierarchy with re
108
108
 
109
109
  == Contributing to fun_with_files
110
110
 
111
- Boilerplate from Jeweler, but seems to make sense.
111
+ Boilerplate from Juwelier, but seems to make sense.
112
112
 
113
113
  * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet.
114
114
  * Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it.
data/Rakefile CHANGED
@@ -14,8 +14,8 @@ end
14
14
 
15
15
  require 'rake'
16
16
 
17
- # require 'jeweler'
18
- Jeweler::Tasks.new do |gem|
17
+ # require 'juwelier'
18
+ Juwelier::Tasks.new do |gem|
19
19
  # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
20
20
  gem.name = "fun_with_files"
21
21
  gem.homepage = "http://github.com/darthschmoo/fun_with_files"
@@ -50,7 +50,7 @@ DESC
50
50
  ]
51
51
  end
52
52
 
53
- Jeweler::RubygemsDotOrgTasks.new
53
+ Juwelier::RubygemsDotOrgTasks.new
54
54
 
55
55
  require 'rake/testtask'
56
56
  Rake::TestTask.new(:test) do |test|
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.14
1
+ 0.0.15
@@ -1,5 +1,17 @@
1
- class File < IO
2
- def fwf_filepath( *args )
3
- FunWith::Files::FilePath.new( self.path, *args )
1
+ module FunWith
2
+ module Files
3
+ module CoreExtensions
4
+ module File
5
+ def fwf_filepath( *args )
6
+ FunWith::Files::FilePath.new( self.path, *args )
7
+ end
8
+
9
+ # I'm not sure this is the most intuitive meaning, but it seems better than
10
+ # delegating to Object.
11
+ def fwf_blank?
12
+ ! self.fwf_filepath.exist?
13
+ end
14
+ end
15
+ end
4
16
  end
5
17
  end
@@ -0,0 +1,12 @@
1
+ module FunWith
2
+ module Files
3
+ module CoreExtensions
4
+ module Set
5
+ def fwf_blank?
6
+ self.length == 0
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
12
+
@@ -0,0 +1,11 @@
1
+ module FunWith
2
+ module Files
3
+ module CoreExtensions
4
+ module TrueClass
5
+ def fwf_blank?
6
+ false
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -1,5 +1,7 @@
1
1
  module FunWith
2
2
  module Files
3
+ DIGEST_METHODS = [:md5, :sha1, :sha2, :sha224, :sha256, :sha384, :sha512]
4
+
3
5
  module DigestMethods
4
6
  def md5
5
7
  digest( Digest::MD5 )
@@ -28,10 +30,27 @@ module FunWith
28
30
  def sha512
29
31
  digest( Digest::SHA512 )
30
32
  end
31
-
33
+
32
34
  def digest( digest_class = Digest::MD5 )
33
35
  self.file? ? digest_class.hexdigest( self.read ) : ""
34
36
  end
37
+
38
+ # Takes any of the above-named digest functions, determines
39
+ # whether the file matches a given digest string.
40
+ #
41
+ # Multiple digests can be given simultaneously. All must pass.
42
+ #
43
+ # TODO: how to get around the :md6 problem? That is, where the
44
+ # user is sending the wrong key, and hence not getting false back
45
+ def valid_digest?( opts )
46
+ for method, digest in opts
47
+ if DIGEST_METHODS.include?( method )
48
+ return false unless self.send( method ) == digest
49
+ end
50
+ end
51
+
52
+ return true
53
+ end
35
54
  end
36
55
  end
37
56
  end
@@ -9,6 +9,7 @@ module FunWith
9
9
  def initialize( path )
10
10
  @paths = []
11
11
  @current_path = path.fwf_filepath
12
+ @current_file = nil
12
13
  make_path
13
14
  end
14
15
 
@@ -79,7 +80,7 @@ module FunWith
79
80
  # end
80
81
 
81
82
  # if file not given, the result is appended to the current file.
82
- def download( url, file = nil )
83
+ def download( url, file = nil, opts = {} )
83
84
  if file
84
85
  if file.fwf_filepath.relative?
85
86
  file = FunWith::Files::FilePath.new( @current_path, file )
@@ -89,7 +90,7 @@ module FunWith
89
90
  download_to_target( url, f )
90
91
  end
91
92
  elsif @current_file
92
- download_to_target( url, @current_file )
93
+ download_to_target( url, @current_file, opts )
93
94
  else
94
95
  puts "No current file to append #{url} to."
95
96
  end
@@ -132,8 +133,8 @@ module FunWith
132
133
  @current_file = nil
133
134
  end
134
135
 
135
- def download_to_target( url, file )
136
- Downloader.new.download( url, file )
136
+ def download_to_target( url, file, signatures = {} )
137
+ Downloader.new.download( url, file, signatures )
137
138
  end
138
139
  end
139
140
  end
@@ -1,21 +1,46 @@
1
1
  require 'open-uri' # needed by Utils::Downloader
2
2
  require 'net/http'
3
+ require 'net/https'
4
+ require 'openssl'
3
5
  require 'timeout'
4
6
 
5
7
 
6
8
  module FunWith
7
9
  module Files
8
10
  class Downloader
11
+ def self.download( *args )
12
+ self.new.download( *args )
13
+ end
14
+
9
15
  # stolen from:
10
16
  # http://stackoverflow.com/questions/2263540/how-do-i-download-a-binary-file-over-http-using-ruby
11
- def download( url, io )
17
+
18
+ # options:
19
+ # :md5 => <digest> : Running md5 on the downloaded file should result in an error
20
+ # :sha256 => <digest> :
21
+ def download( url, io, opts = {} )
12
22
  @uri = URI.parse( url )
13
23
  @io = io
14
24
 
15
25
  open( url ) do |f|
16
26
  @io << f.read
17
27
  end
18
-
28
+
29
+ io_path = @io.fwf_filepath
30
+
31
+ if io_path.file?
32
+ if io_path.valid_digest?( opts )
33
+ true
34
+ else
35
+ warn( "File may not have downloaded correctly, or is validating against a bad hash #{io_path} #{opts.inspect}")
36
+ false
37
+
38
+ end
39
+ else
40
+ warn( "File did not download correctly, or was deleted: #{io_path}")
41
+ false
42
+ end
43
+
19
44
  # @io << Net::HTTP.get( @uri )
20
45
 
21
46
  # Net::HTTP.start( @uri.host, @uri.port ) do |http|
@@ -28,6 +53,10 @@ module FunWith
28
53
  # end
29
54
  # end
30
55
  # end
56
+
57
+
58
+
59
+
31
60
  rescue Exception => e
32
61
  handle_network_errors( e )
33
62
  end
@@ -38,6 +38,8 @@ module FunWith
38
38
 
39
39
  collector
40
40
  end
41
+
42
+ ordered_files
41
43
  end
42
44
  end
43
45
  end
@@ -1,10 +1,9 @@
1
1
  module FunWith
2
2
  module Files
3
3
  class FilePath < Pathname
4
-
5
4
  SUCC_DIGIT_COUNT = 6
6
5
  DEFAULT_TIMESTAMP_FORMAT = "%Y%m%d%H%M%S%L"
7
-
6
+
8
7
  def initialize( *args )
9
8
  super( File.join( *args ) )
10
9
  end
@@ -25,9 +24,22 @@ module FunWith
25
24
  Dir.mktmpdir.fwf_filepath
26
25
  end
27
26
  end
27
+
28
+ # The file is created within a temporary directory
29
+ def self.tmpfile( ext = :tmp, &block )
30
+ filename = rand( 2 ** 64 ).to_s(16).fwf_filepath.ext( ext )
31
+
32
+ if block_given?
33
+ self.tmpdir do |tmp|
34
+ yield tmp.join( filename ).touch
35
+ end
36
+ else
37
+ self.tmpdir.join( filename ).touch
38
+ end
39
+ end
28
40
 
29
41
  def join( *args, &block )
30
- joined_path = self.class.new( super(*args) )
42
+ joined_path = self.class.new( super( *(args.map(&:to_s) ) ) )
31
43
  yield joined_path if block_given?
32
44
  joined_path
33
45
  end
@@ -273,6 +285,8 @@ module FunWith
273
285
  end
274
286
  end
275
287
  end
288
+
289
+ alias :<< :append
276
290
 
277
291
  # Returns a [list] of the lines in the file matching the given file. Contrast with
278
292
 
@@ -302,12 +316,84 @@ module FunWith
302
316
  end
303
317
 
304
318
  # Does not return a filepath
319
+ #
320
+ # TODO: Why not?
305
321
  def basename_no_ext
306
322
  self.basename.to_s.split(".")[0..-2].join(".")
307
323
  end
308
324
 
309
- def without_ext
310
- self.gsub(/\.#{self.ext}$/, '')
325
+ # Returns the path, stripped of the final extension (.ARG).
326
+ # The result cannot destroy a dotfile or leave an empty
327
+ # path
328
+ # "~/.bashrc".without_ext( .bashrc ) => "~/.bashrc",
329
+ # if an argument is given, the final ext must match
330
+ # the given argument, or a copy of the unaltered path
331
+ # is returned.
332
+ #
333
+ # Also:
334
+ # Don't add a leading ./ when the original didn't have one
335
+ # Case InSeNSItive, because I can't think of a use case for "only"
336
+ # strip the extension if the capitalization matches
337
+ # Chews up any number of leading '.'s
338
+ # For the moment,
339
+ def without_ext( ext_val = nil )
340
+ ext_chopper_regex = if ext_val.fwf_blank?
341
+ /\.+\w+$/i # any ending "word characters"
342
+ else
343
+ # It's okay for the caller to make the leading period explicit
344
+ ext_val = ext_val.to_s.gsub( /^\./, '' )
345
+ /\.+#{ext_val}+$/i
346
+ end
347
+
348
+ chopped_str = @path.gsub( ext_chopper_regex, "" )
349
+
350
+ do_we_chop = if chopped_str == @path # no change, then sure, why not?
351
+ true
352
+ elsif chopped_str.fwf_blank? || chopped_str[-1] == self.separator() || chopped_str[-1] == "."
353
+ false
354
+ else
355
+ true
356
+ end
357
+
358
+ self.class.new( do_we_chop ? chopped_str : @path )
359
+
360
+ # # If the results fail to live up to some pre-defined
361
+ #
362
+ #
363
+ #
364
+ # # do we or don't we?
365
+ # chop_extension = true
366
+ #
367
+ # # Don't if there's an extension mismatch
368
+ # # Don't if the remainder is a /. (original was a dot_file)
369
+ #
370
+ #
371
+ #
372
+ #
373
+ #
374
+ #
375
+ # _dirname, _basename, _ext = self.dirname_and_basename_and_ext
376
+ # debugger if _basename =~ "hello"
377
+ # ext_val = ext_val.to_s
378
+ #
379
+ # # 1) Only perform if the extension match the one given (or was a blank ext given?)
380
+ #
381
+ #
382
+ #
383
+ # new_path = @path.clone
384
+ #
385
+ # current_ext = self.ext
386
+ #
387
+ # e = e.to_s
388
+ #
389
+ # if e.fwf_present?
390
+ # new_path.gsub!( /\.#{e}$/, "" )
391
+ # result = self.gsub(/#{ not_beginning_of_line_or_separator}\.#{self.ext}$/, '')
392
+ # else
393
+ # self.clone
394
+ # end
395
+ #
396
+ # self.class.new( new_path )
311
397
  end
312
398
 
313
399
  # Two separate modes. With no arguments given, returns the current extension as a string (not a filepath)
@@ -584,6 +670,9 @@ module FunWith
584
670
  # end
585
671
  # # otherwise we're installing a separator
586
672
  # end
673
+ def separator
674
+ File::SEPARATOR
675
+ end
587
676
 
588
677
  protected
589
678
  # TODO: Need a separate API for user to call
@@ -4,15 +4,59 @@ require 'pathname' # stdlib
4
4
  require 'tmpdir' # Dir.tmpdir
5
5
 
6
6
 
7
- for fil in ["string", "array", "false", "hash", "nil", "object"]
8
- require_relative File.join( "fun_with", "files", "core_extensions", fil )
9
- end
7
+ # Do the bare minimum to get FilePath.requir working
8
+ # file_path = File.join( "fun_with", "files", "file_path" )
9
+ # string_behavior = File.join( "fun_with", "files", "string_behavior" )
10
+ #
11
+ #
12
+ # require_relative file_path
13
+ # require_relative string_behavior
14
+ #
15
+ # FunWith::Files::FilePath.send( :include, FunWith::Files::StringBehavior )
16
+ # FunWith::Files::FilePath.new( "fun_with" ).requir
17
+ #
18
+ # debugger
19
+
20
+
21
+
22
+ core_extension_folder = File.join( "lib", "fun_with", "files", "core_extensions" )
10
23
 
11
- for klass in ["String", "Object", "NilClass", "Hash", "FalseClass", "Array"]
12
- Kernel.const_get(klass).send( :include, FunWith::Files::CoreExtensions.const_get(klass))
24
+ for fil in Dir.glob( File.join( core_extension_folder, "*.rb" ) )
25
+ # Dir.glob targets the root directory, while require_relative is relative to lib/,
26
+ # so the [4..-4] removes the leading lib/ and the trailing extension to make it
27
+ # require_relative-friendly.
28
+ require_path = fil[4..-4] #
29
+ basename = File.basename( fil )[0..-4]
30
+ # debugger if basename =~ /class/
31
+
32
+ target_class_str = basename.split( "_" ).map(&:capitalize).join("")
33
+ target_class = Kernel.const_get( target_class_str )
34
+ mixin_class_str = "FunWith::Files::CoreExtensions::#{target_class_str}"
35
+
36
+ # puts "Basename: #{basename}"
37
+ # puts "Mixin: " + mixin_class_str.inspect
38
+ # puts "Target: #{target_class}"
39
+ # puts "requiring: #{require_path}"
40
+ require_relative require_path
41
+ mixin_class = Kernel.const_get( mixin_class_str )
42
+ # puts mixin_class.to_s
43
+
44
+ target_class.send( :include, mixin_class )
13
45
  end
14
46
 
15
47
 
48
+
49
+ # for fil in ["string", "array", "false", "hash", "nil", "object",]
50
+ # require_relative File.join( "fun_with", "files", "core_extensions", fil )
51
+ # end
52
+ #
53
+ # for klass in ["String", "Object", "NilClass", "Hash", "FalseClass", "Array", "Set"]
54
+ # puts klass
55
+ # debugger if klass == "Set"
56
+ # Kernel.const_get(klass).send( :include, FunWith::Files::CoreExtensions.const_get(klass))
57
+ # end
58
+ #
59
+
16
60
  for fil in ["file_path", "string_behavior", "file_manipulation_methods", "file_permission_methods", "digest_methods", "file_requirements"]
17
61
  require_relative File.join( "fun_with", "files", fil )
18
62
  end
@@ -26,6 +26,7 @@ class TestCoreExtensions < FunWith::Files::TestCase
26
26
  should "fwf_blank? nicely." do
27
27
  assert_equal false, { 1 => 2 }.fwf_blank?
28
28
  assert_equal true, {}.fwf_blank?
29
+ assert_equal true, true.fwf_present?
29
30
  end
30
31
  end
31
32
  end
@@ -7,11 +7,11 @@ class TestDescent < FunWith::Files::TestCase
7
7
  ascent = []
8
8
  descent = []
9
9
 
10
- FunWith::Files.root.ascend do |path|
10
+ root.ascend do |path|
11
11
  ascent << path
12
12
  end
13
13
 
14
- FunWith::Files.root.descend do |path|
14
+ root.descend do |path|
15
15
  descent << path
16
16
  end
17
17
 
@@ -54,7 +54,7 @@ class TestDirectoryBuilder < FunWith::Files::TestCase
54
54
  gemfile = b.current_path.join("Gemfile")
55
55
  assert gemfile.exist?
56
56
  assert !gemfile.zero?
57
- assert_equal 1, gemfile.grep( /jeweler/ ).length
57
+ assert_equal 1, gemfile.grep( /juwelier/ ).length
58
58
  end
59
59
  end
60
60
 
@@ -72,7 +72,7 @@ class TestDirectoryBuilder < FunWith::Files::TestCase
72
72
  DirectoryBuilder.tmpdir do |b|
73
73
  gist_url = "http://bannedsorcery.com/downloads/testfile.txt"
74
74
  gist_text = "This is a file\n==============\n\n**silent**: But _bold_! [Link](http://slashdot.org)\n"
75
- b.download( gist_url, "gist.txt" )
75
+ b.download( gist_url, "gist.txt", :md5 => "f498e76ea5690a4c29ef97d0a1d8e58e", :sha1 => "ccabf74107cba7ad69f70e45c04c3876e7f34630" )
76
76
 
77
77
  b.file( "gist.txt.2" ) do
78
78
  b.download( gist_url )
@@ -13,7 +13,7 @@ class TestFileManipulation < FunWith::Files::TestCase
13
13
 
14
14
  should "copy LICENSE.txt" do
15
15
  copied = @license.cp( "test", "tmp" )
16
- assert_match /LICENSE\.txt/, copied.to_s
16
+ assert_match( /LICENSE\.txt/, copied.to_s )
17
17
  assert_file copied
18
18
  assert_file_has_content copied
19
19
  end
@@ -120,7 +120,7 @@ class TestFileManipulation < FunWith::Files::TestCase
120
120
 
121
121
  file_def = file_abc.cp( dir_def )
122
122
 
123
- assert_match /abc\.txt/, file_def.path
123
+ assert_match( /abc\.txt/, file_def.path )
124
124
  assert_file_contents file_def, /rent/
125
125
 
126
126
 
@@ -32,7 +32,7 @@ class TestFilePath < FunWith::Files::TestCase
32
32
  assert_equal root, f1.up.up.up.up.up.up.up
33
33
 
34
34
  #invoking up didn't change original
35
- assert_match /ask_for_floyd/, f1.to_s
35
+ assert_match( /ask_for_floyd/, f1.to_s )
36
36
 
37
37
  assert_equal f1, f2.down( "monkeylips" ).down( "ask_for_floyd" )
38
38
  assert_equal f1, f2.down( "monkeylips", "ask_for_floyd" )
@@ -216,34 +216,82 @@ class TestFilePath < FunWith::Files::TestCase
216
216
  end
217
217
  end
218
218
 
219
- context "test ext()" do
219
+ context "testing extension methods" do
220
220
  setup do
221
- @path = "hello.txt".fwf_filepath
221
+ @hello_path = "hello.txt".fwf_filepath
222
+ @dot_path0 = ".config".fwf_filepath
223
+ @dot_path1 = "~/.ssh".fwf_filepath
222
224
  end
223
225
 
224
- should "not change path when sent nil as an argument" do
225
- assert_equal @path.path, @path.ext( nil ).path
226
- end
226
+ context "test ext()" do
227
227
 
228
- should "append when given symbol" do
229
- assert_equal @path.path + ".tgz", @path.ext( :tgz ).path
230
- end
228
+ should "not change path when sent nil as an argument" do
229
+ assert_equal @hello_path.path, @hello_path.ext( nil ).path
230
+ end
231
231
 
232
- should "append when given string" do
233
- assert_equal @path.path + ".tgz", @path.ext( 'tgz' ).path
234
- end
232
+ should "append when given symbol" do
233
+ assert_equal @hello_path.path + ".tgz", @hello_path.ext( :tgz ).path
234
+ end
235
+
236
+ should "append when given string" do
237
+ assert_equal @hello_path.path + ".tgz", @hello_path.ext( 'tgz' ).path
238
+ end
239
+
240
+ should "append correctly when given leading ." do
241
+ assert_equal @hello_path.path + ".tgz", @hello_path.ext( '.tgz' ).path
242
+ end
235
243
 
236
- should "append correctly when given leading ." do
237
- assert_equal @path.path + ".tgz", @path.ext( '.tgz' ).path
244
+ should "append multiple extensions as separate args" do
245
+ assert_equal @hello_path.path + ".backup.tar.gz", @hello_path.ext( :backup, "tar", nil, ".gz" ).path
246
+ end
247
+
248
+ should "append multiple extensions as a single string" do
249
+ assert_equal @hello_path.path + ".backup.tar.gz", @hello_path.ext( ".backup.tar.gz" ).path
250
+ end
238
251
  end
239
252
 
240
- should "append multiple extensions as separate args" do
241
- assert_equal @path.path + ".backup.tar.gz", @path.ext( :backup, "tar", nil, ".gz" ).path
253
+ context "test without_ext()" do
254
+ setup do
255
+
256
+ end
257
+
258
+ should "pop the extension (normal)" do
259
+ #debugger
260
+ assert_equal "hello", @hello_path.without_ext.to_s
261
+ assert_equal "hello", @hello_path.without_ext("txt").path
262
+ assert_equal "hello", @hello_path.without_ext(".txt").path
263
+ assert_equal "hello.txt", @hello_path.without_ext(".html").path
264
+ assert_equal "hello.txt", @hello_path.without_ext("html").path
265
+
266
+ assert_equal "hello", @hello_path.without_ext(:txt).path
267
+ end
268
+
269
+ should "not affect dot files" do
270
+ assert_equal ".config", @dot_path0.without_ext.path
271
+ assert_equal ".config", @dot_path0.without_ext("config").path
272
+ assert_equal ".config", @dot_path0.without_ext(".config").path
273
+ assert_equal ".config", @dot_path0.without_ext(:config).path
274
+ end
242
275
  end
243
276
 
244
- should "append multiple extensions as a single string" do
245
- assert_equal @path.path + ".backup.tar.gz", @path.ext( ".backup.tar.gz" ).path
277
+ # Why does it return a filepath for the dirname piece, strings for the other two pieces?
278
+ context "test dirname_and_basename_and_ext" do
279
+ end
280
+ end
281
+
282
+ context "test join()" do
283
+ setup do
284
+ @path = "/".fwf_filepath
246
285
  end
247
286
 
287
+ should "accept all manner of arguments" do
288
+ expected = "/bin/0/file.rb".fwf_filepath
289
+ result = @path.join( :bin, 0, "file.rb" )
290
+
291
+ assert_equal expected, result
292
+
293
+ result = @path / :bin / 0 / "file.rb"
294
+ assert_equal expected, result
295
+ end
248
296
  end
249
297
  end
@@ -26,7 +26,7 @@ class TestFunWithFiles < FunWith::Files::TestCase
26
26
  assert_respond_to( FunWith::Files, :root )
27
27
  assert_respond_to( FunWith::Files, :version )
28
28
 
29
- assert_equal "0.0.13", FunWith::Files.version # Gotta change with every point release. Ick.
29
+ assert_equal "0.0.14", FunWith::Files.version # Gotta change with every point release. Ick.
30
30
  end
31
31
  end
32
32
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fun_with_files
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.14
4
+ version: 0.0.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bryce Anderson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-06-26 00:00:00.000000000 Z
11
+ date: 2017-02-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: xdg
@@ -28,6 +28,9 @@ dependencies:
28
28
  name: fun_with_testing
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 0.0.5
31
34
  - - "~>"
32
35
  - !ruby/object:Gem::Version
33
36
  version: '0.0'
@@ -35,6 +38,9 @@ dependencies:
35
38
  prerelease: false
36
39
  version_requirements: !ruby/object:Gem::Requirement
37
40
  requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: 0.0.5
38
44
  - - "~>"
39
45
  - !ruby/object:Gem::Version
40
46
  version: '0.0'
@@ -59,12 +65,14 @@ extra_rdoc_files:
59
65
  - README.rdoc
60
66
  files:
61
67
  - "./lib/fun_with/files/core_extensions/array.rb"
62
- - "./lib/fun_with/files/core_extensions/false.rb"
68
+ - "./lib/fun_with/files/core_extensions/false_class.rb"
63
69
  - "./lib/fun_with/files/core_extensions/file.rb"
64
70
  - "./lib/fun_with/files/core_extensions/hash.rb"
65
- - "./lib/fun_with/files/core_extensions/nil.rb"
71
+ - "./lib/fun_with/files/core_extensions/nil_class.rb"
66
72
  - "./lib/fun_with/files/core_extensions/object.rb"
73
+ - "./lib/fun_with/files/core_extensions/set.rb"
67
74
  - "./lib/fun_with/files/core_extensions/string.rb"
75
+ - "./lib/fun_with/files/core_extensions/true_class.rb"
68
76
  - "./lib/fun_with/files/digest_methods.rb"
69
77
  - "./lib/fun_with/files/directory_builder.rb"
70
78
  - "./lib/fun_with/files/downloader.rb"
@@ -136,7 +144,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
136
144
  version: '0'
137
145
  requirements: []
138
146
  rubyforge_project:
139
- rubygems_version: 2.4.6
147
+ rubygems_version: 2.6.6
140
148
  signing_key:
141
149
  specification_version: 4
142
150
  summary: A mashup of several File, FileUtils, and Dir class functions, with a peppy,