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()
click to toggle source
# File lib/ackr/search.rb, line 36 def search results = search_into_file unless results.empty? puts Colorizer::for_file(@file) results.each {|res| puts res} puts "" end end
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