class NameToEmail

Public Class Methods

new(input, namefield, presetdomain, chosendomain, urlfield, formattype) click to toggle source
# File lib/nametoemail.rb, line 4
def initialize(input, namefield, presetdomain, chosendomain, urlfield, formattype)
  @input = JSON.parse(input)
  @namefield = namefield
  @urlfield = urlfield
  @presetdomain = presetdomain
  @chosendomain = chosendomain
  @emaillist = Array.new
  @formattype = formattype
end

Public Instance Methods

emaillist() click to toggle source

Get list of just emails

# File lib/nametoemail.rb, line 126
def emaillist
  return JSON.pretty_generate(@emaillist)
end
firstinitiallastname(firstname, lastname, domain) click to toggle source

Emails of the form firstinitiallastname@domain

# File lib/nametoemail.rb, line 98
def firstinitiallastname(firstname, lastname, domain)
  return firstname[0] + lastname + "@" + domain
end
firstlastdot(firstname, lastname, domain) click to toggle source

Emails of form domain at firstname.lastname

# File lib/nametoemail.rb, line 88
def firstlastdot(firstname, lastname, domain)
  return firstname + "." + lastname + "@" + domain
end
firstunderscorelast(firstname, lastname, domain) click to toggle source

Emails of the form domain at firstname_lastname

# File lib/nametoemail.rb, line 103
def firstunderscorelast(firstname, lastname, domain)
  return firstname + "_" + lastname + "@" + domain
end
genemails() click to toggle source

Get emails of all formats

# File lib/nametoemail.rb, line 15
def genemails
  nametrack = Array.new

  @input.each do |i|
    # Parse domain
    if @presetdomain == false
      domain = parseurl(i[@urlfield])
    else
      domain = @chosendomain
    end

    if i[@namefield] && domain
      name = parsename(i[@namefield])
      
      # Check if combination already exists
      if name && domain
        namedomain = name[0] + name[1] + domain
        if !(nametrack.include? namedomain)
          nametrack.push(namedomain)

          if @formattype == "all"
            itememails = tryallformats(name, domain)
          else
            itememails = tryoneformat(name, domain, @formattype)
          end

          i["emails"] = itememails
        end
      end
    end
  end
end
jsonwithemails() click to toggle source

Get JSON with emails appended

# File lib/nametoemail.rb, line 131
def jsonwithemails
  return JSON.pretty_generate(@input)
end
justlast(lastname, domain) click to toggle source

Emails of the form lastname@domain

# File lib/nametoemail.rb, line 83
def justlast(lastname, domain)
  return lastname + "@" + domain
end
lastnamefirstinitial(firstname, lastname, domain) click to toggle source

Emails of the form lastnamefirstinitial

# File lib/nametoemail.rb, line 93
def lastnamefirstinitial(firstname, lastname, domain)
  return lastname + firstname[0] + "@" + domain
end
parsename(name) click to toggle source

Gets first and last name and removes certain characters

# File lib/nametoemail.rb, line 117
def parsename(name)
  splitn = name.split(" ")
  first = splitn.first.gsub("'", "").gsub("-", "").gsub(".", "")
  last = splitn.last.gsub("'", "").gsub("-", "").gsub(".", "")
  narray = [first.downcase, last.downcase]
  return narray
end
parseurl(url) click to toggle source

Parse url to get just the domain

# File lib/nametoemail.rb, line 108
def parseurl(url)
  parsed = url.gsub("http://", "").gsub("www.", "")
  split = parsed.split("/")
  if split[0]
    return split[0]
  end
end
tryallformats(name, domain) click to toggle source

Get emails in all formats

# File lib/nametoemail.rb, line 49
def tryallformats(name, domain)
  itememails = Array.new

  # Generate emails
  itememails.push(firstlastdot(name[0], name[1], domain))
  itememails.push(firstinitiallastname(name[0], name[1], domain))
  itememails.push(firstunderscorelast(name[0], name[1], domain))
  itememails.push(lastnamefirstinitial(name[0], name[1], domain))
  itememails.push(justlast(name[1], domain))
  itememails.each do |e|
    @emaillist.push(e)
  end

  return itememails
end
tryoneformat(name, domain, format) click to toggle source

Gets all emails of one format

# File lib/nametoemail.rb, line 66
def tryoneformat(name, domain, format)
  email = ""

  case format
  when "firstlastdot" then email = firstlastdot(name[0], name[1], domain)
  when "firstinitiallastname" then email = firstinitiallastname(name[0], name[1], domain)
  when "firstunderscorelast" then email = firstunderscorelast(name[0], name[1], domain)
  when "lastnamefirstinitial" then email = lastnamefirstinitial(name[0], name[1], domain)
  when "justlast" then email = justlast(name[1], domain)
  else email = nil
  end

  @emaillist.push(email)
  return email
end