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