class PredictEmail::FindPattern

Attributes

emails[R]

Public Class Methods

new() click to toggle source
# File lib/predict_email/find_pattern.rb, line 7
def initialize 
  @emails = CSV.read(Dir.pwd + '/lib/predict_email/csv/sample_data.csv').inject({}) do |result, element|
    result[element.first] = element.last
    result
  end 
end

Public Instance Methods

email_pattern(contact) click to toggle source
# File lib/predict_email/find_pattern.rb, line 27
def email_pattern(contact)
  first_name, last_name = contact.first.downcase.split(' ')
  before_dot, after_dot = split_email(contact.last)

    if first_name == before_dot && last_name == after_dot
      "first_name_dot_last_name"
    elsif first_name == before_dot && last_name[0] == after_dot
      "first_name_dot_last_initial"
    elsif first_name[0] == before_dot && last_name == after_dot
      "first_initial_dot_last_name"
    elsif first_name[0] == before_dot && last_name[0] == after_dot
      "first_initial_dot_last_initial"
    else 
      nil
    end 
end
find_contacts(company) click to toggle source
# File lib/predict_email/find_pattern.rb, line 18
def find_contacts(company)
  company = normalize_company_name(company)
  emails.select {|k,v| v.include?(company) }
end
find_patterns(company) click to toggle source
# File lib/predict_email/find_pattern.rb, line 44
def find_patterns(company)
  patterns = []

  if find_contacts(company).empty? 
    patterns << nil
  else 
   
    find_contacts(company).each do |contact|
      patterns << email_pattern(contact)
    end 

  end 
    patterns = patterns.uniq
end
normalize_company_name(company) click to toggle source
# File lib/predict_email/find_pattern.rb, line 14
def normalize_company_name(company)
  company.downcase.gsub(/\s+/, "")
end
split_email(email) click to toggle source
# File lib/predict_email/find_pattern.rb, line 23
def split_email(email)
  email[/[^@]+/].downcase.split('.')
end