#!/usr/bin/env ruby

class Parameters
  attr_accessor :line

  def initialize(line)
    self.line = line.match(/^  Parameters: \{(.*)\}$/)[1]
  end

  def search_parameter(p)
    begin
      self.line.match(Regexp.new("\"#{p}\"=>\"(.*)\"\"?"))[1].split(", \"")[0].gsub("\"","")
    rescue
      nil
    end
  end
  def method_missing(method)
    search_parameter(method.to_s)
  end
end

# Caso seja digitada uma data, como 2008-07-05, por exemplo, ele localizará dados com esta data.
# Caso contrário, ele irá procurar dados do dia anterior.
ARGV[0] ||= Time.mktime(Time.now.year,Time.now.month,Time.now.day-1).strftime("%Y-%m-%d")
re = Regexp.new '^Processing SearchsController#research \(for (.*) at ' << ARGV[0] << ' (.*)\).*$'


log = File.open("log/production.log").readlines.select { |l| l =~ /research/ }

log.each_with_index do |line,index|

  date = line.match(re)
  if !date.nil? and date.size > 1
    puts "\n#{date[2]}"

    params = Parameters.new(log[index+1])

    puts "What: #{params.what}"
    puts "Where: #{params.where}"
    puts "Raio: #{params.raio}"
  end

end