Class: PredictEmail::FindPattern

Inherits:
Object
  • Object
show all
Defined in:
lib/predict_email/find_pattern.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeFindPattern

Returns a new instance of FindPattern.



7
8
9
10
11
12
# 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

Instance Attribute Details

#emailsObject (readonly)

Returns the value of attribute emails.



5
6
7
# File 'lib/predict_email/find_pattern.rb', line 5

def emails
  @emails
end

Instance Method Details

#email_pattern(contact) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# 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) ⇒ Object



18
19
20
21
# 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) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
55
56
57
# 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) ⇒ Object



14
15
16
# File 'lib/predict_email/find_pattern.rb', line 14

def normalize_company_name(company)
  company.downcase.gsub(/\s+/, "")
end

#split_email(email) ⇒ Object



23
24
25
# File 'lib/predict_email/find_pattern.rb', line 23

def split_email(email)
  email[/[^@]+/].downcase.split('.')
end