Class: FileSieve

Inherits:
Object
  • Object
show all
Defined in:
lib/file_sieve.rb

Overview

Traverse a directory tree looking for files with a specific extension

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(directory, extension) ⇒ FileSieve

Returns a new instance of FileSieve.



7
8
9
10
11
12
# File 'lib/file_sieve.rb', line 7

def initialize(directory, extension)
  @found_files = []
  @extension = extension
  @search_directory = directory
  sieve(directory)
end

Instance Attribute Details

#found_filesObject (readonly)

Returns the value of attribute found_files.



5
6
7
# File 'lib/file_sieve.rb', line 5

def found_files
  @found_files
end

Instance Method Details

#de_dot(list) ⇒ Object

Clean away . and .. from the directory list



27
28
29
30
31
# File 'lib/file_sieve.rb', line 27

def de_dot(list)
  list.delete('.')
  list.delete('..')
  list
end

#sieve(directory) ⇒ Object

Recursively search the directory tree for files with @extension



15
16
17
18
19
20
21
22
23
24
# File 'lib/file_sieve.rb', line 15

def sieve(directory)
  de_dot(Dir.entries(directory)).each { |file|
    search = File.absolute_path(directory + File::SEPARATOR + file)
    if File.directory?(search)
      sieve(search)
    elsif file.match?(@extension)
      @found_files.push(search)
    end
  }
end