Module: EmailTypo

Defined in:
lib/email_typo.rb,
lib/email_typo/aol.rb,
lib/email_typo/gmail.rb,
lib/email_typo/yahoo.rb,
lib/email_typo/icloud.rb,
lib/email_typo/dot_com.rb,
lib/email_typo/dot_net.rb,
lib/email_typo/dot_org.rb,
lib/email_typo/hotmail.rb,
lib/email_typo/version.rb,
lib/email_typo/providers.rb,
lib/email_typo/googlemail.rb,
lib/email_typo/add_missing_m.rb,
lib/email_typo/known_dot_com.rb,
lib/email_typo/remove_mailto.rb,
lib/email_typo/different_tlds.rb,
lib/email_typo/add_missing_period.rb,
lib/email_typo/transposed_periods.rb,
lib/email_typo/remove_invalid_chars.rb,
lib/email_typo/period_around_at_sign.rb

Constant Summary collapse

Aol =
lambda do |email|
  email.gsub(/@(ol|ao|ail)\./, "@aol.")
end
Gmail =
lambda do |email|
  email.gsub(/@g[nm]{0,2}s?[ail]{1,2}[aiklmou]{0,3}\.(?!gov|edu)/, "@gmail.")
end
Yahoo =
lambda do |email|
  email.gsub(/@(ya|yh|ua|ah)+h*a*o+\./, "@yahoo.")
end
Icloud =
lambda do |email|
  email.gsub(/@icl{0,2}(?:uo|u|o)d\./, "@icloud.")
end
DotCom =
lambda do |email|
  email
    .gsub(/\.co[mn]\.com/, ".com")
    .gsub(/\.com\.$/, ".com")
    .gsub(/\.com(?!cast|\.|@).{1,3}$/, ".com")
    .gsub(/\.co[^op]$/, ".com")
    .gsub(/\.c*(c|ck|ci|coi|l|m|n|o|op|cp|0|9)*m+o*$/, ".com")
    .gsub(/\.(c|f|v|x)o+(m|n)$/, ".com")
end
DotNet =
lambda do |email|
  email.gsub(/\.(nte*|n*et*)$/, ".net")
end
DotOrg =

require the o, to not false-positive .gr e-mails

lambda do |email|
  email.gsub(/\.og?r?g{0,2}$/, ".org")
end
Hotmail =
lambda do |email|
  email.gsub(/@h(i|o|p)?y?t?o?a?m?n?t?[aikl]{1,3}l?\./, "@hotmail.")
end
VERSION =
"0.1.2".freeze
Providers =
lambda do |email|
  email
    .gsub(/@co?(m|n)a?cas?t{0,2}\./, "@comcast.")
    .gsub(/@sbc?gl?ob[al]{0,2}l?\./, "@sbcglobal.")
    .gsub(/@ver?i?z?on\./, "@verizon.")
    .gsub(/@icl{0,2}oud\./, "@icloud.")
    .gsub(/@outl?ook?\./, "@outlook.")
end
Googlemail =
lambda do |email|
  email
    .gsub(/@go{0,3}g{0,2}o?le?[mn]?[ail]{1,2}m?[aikl]{0,3}\./, "@googlemail.")
end
AddMissingM =
lambda do |email|
  email.gsub(/(aol|googlemail|gmail|hotmail|yahoo).co$/, "\\1.com")
end
KnownDotCom =
lambda do |email|
  email
    .gsub(
      /@(aol|googlemail|gmail|hotmail|yahoo|icloud|outlook)\.([a-z]+)$/,
      "@\\1.com"
    )
end
RemoveMailTo =
lambda do |email|
  email.gsub(/\Amailto:/, "")
end
DifferentTlds =
lambda do |email|
  email
    .gsub(/\.(o\.uk|couk|co\.um)$/, ".co.uk")
    .gsub(/\.(cojp|co\.lp)$/, ".co.jp")
end
AddMissingPeriod =
lambda do |email|
  email.gsub(/([^\.])(com|org|net)$/, "\\1.\\2")
end
TransposedPeriods =

can’t do “o.gr” => “.org”, as “.gr” is a valid TLD

lambda do |email|
  email
    .gsub(/c\.om$/, ".com")
    .gsub(/n\.et$/, ".net")
end
RemoveInvalidChars =
lambda do |email|
  email
    .gsub(/(\s|\#|\'|\"|\\)*/, "")
    .gsub(/(\,|\.\.)/, ".")
    .gsub("@@", "@")
end
PeriodAroundAtSign =
lambda do |email|
  email.gsub(/(\.@|@\.)/, "@")
end

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.default_processorsObject

List of default processors that will be applied to fix any email’s typos.



27
28
29
# File 'lib/email_typo.rb', line 27

def default_processors
  @default_processors
end

Class Method Details

.fix(email, processors = default_processors) ⇒ Object



51
52
53
54
55
56
57
# File 'lib/email_typo.rb', line 51

def self.fix(email, processors = default_processors)
  return unless email

  processors.reduce(email.downcase) do |processed_email, processor|
    processor.call(processed_email)
  end
end