class Ackr::Search

Search for an expression into all text files under current directory AND print results.

FIXME Separate behaviours: search / print

Public Class Methods

new(search_term) click to toggle source

Public:

search_term - The String to look for.

This param could be a 'real' string or a String
representing a regexp. If the string looks like
a regexp, it will be treated like a regexp.

Examples:

Search.new("abc")
Search.new("/abc/i")
# File lib/ackr/search.rb, line 20
def initialize search_term
  @search_term = search_term.to_regexp
  @search_term = search_term.downcase if @search_term.nil?
  @format = Formatter.new @search_term
end

Public Instance Methods

run() click to toggle source

Public: Launch the search.

# File lib/ackr/search.rb, line 27
def run
  Finder::all_files do |file|
    @file = file
    search
  end
end

Private Instance Methods

search_into_file() click to toggle source
# File lib/ackr/search.rb, line 45
def search_into_file
  result = []
  File.readlines(@file).each_with_index do |line, idx|
    found = search_into_line(line)
    result << @format.line(line, idx + 1) if found
  end
  result
end
search_into_line(line) click to toggle source
# File lib/ackr/search.rb, line 54
def search_into_line line
  begin
    if @search_term.is_a?(String)
      line.downcase.include?(@search_term)
    else
      @search_term =~ line
    end
  rescue
  end
end