Class: PredictEmail::FindPattern
- Inherits:
-
Object
- Object
- PredictEmail::FindPattern
- Defined in:
- lib/predict_email/find_pattern.rb
Instance Attribute Summary collapse
-
#emails ⇒ Object
readonly
Returns the value of attribute emails.
Instance Method Summary collapse
- #email_pattern(contact) ⇒ Object
- #find_contacts(company) ⇒ Object
- #find_patterns(company) ⇒ Object
-
#initialize ⇒ FindPattern
constructor
A new instance of FindPattern.
- #normalize_company_name(company) ⇒ Object
- #split_email(email) ⇒ Object
Constructor Details
#initialize ⇒ FindPattern
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
#emails ⇒ Object (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 |