class Rubygrep::FileSearcher

Attributes

found_file_names[RW]
options[RW]

Public Class Methods

new(options = {}) click to toggle source
# File lib/rubygrep/file_searcher.rb, line 5
def initialize(options = {})
  @options = options
  @found_file_names = []
end

Public Instance Methods

Private Instance Methods

inner_files(folder_name) click to toggle source
# File lib/rubygrep/file_searcher.rb, line 30
def inner_files(folder_name)
  Dir.entries(folder_name).select {|entry| entry != '.' and entry != '..'}
end
relative_path(file_name, folder) click to toggle source
# File lib/rubygrep/file_searcher.rb, line 34
def relative_path(file_name, folder)
  if file_name =~ /^\\/ || folder == '.'
    file_name
  else
    "#{folder}/#{file_name}"
  end
end
search_with_options(file_names, current_folder = '.') click to toggle source
# File lib/rubygrep/file_searcher.rb, line 17
def search_with_options(file_names, current_folder = '.')
  file_names.each do |file_name|
    file_path = relative_path(file_name, current_folder)
    if File.directory?(file_path) && options[:recursive]
      search_with_options(inner_files(file_path), file_path)
    elsif text_file?(file_path)
      found_file_names << file_path
    elsif !File.exists?(file_path)
      puts "No such file or directory #{file_path}"
    end
  end
end
text_file?(file_name) click to toggle source
# File lib/rubygrep/file_searcher.rb, line 42
def text_file?(file_name)
  File.file?(file_name)
end