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