Module: Spamspanify

Defined in:
lib/spamspanify.rb,
lib/spamspanify/version.rb,
lib/spamspanify/exceptions.rb

Defined Under Namespace

Classes: ParanoiaLevelNotSupportedError

Constant Summary collapse

EMAIL_REGEXP =
/([\w|\-\.])+@([\w|\-\.])+\w+/
MAILTO_REGEXP =
/<a\s*href=(\'|\")mailto:#{ EMAIL_REGEXP }(\'|\").*<\/a>/
VERSION =
"1.1.0"

Class Method Summary collapse

Class Method Details

.all(input, paranoia_level = 1) ⇒ String

Converts plain email addresses and mailto links in the input into SpamSpan markup.

Parameters:

  • input (String)
  • paranoia_level (Integer) (defaults to: 1)

    SpamSpan paranoia level

Returns:

  • (String)

    the input with all plain email addresses converted to SpamSpam markup



18
19
20
# File 'lib/spamspanify.rb', line 18

def all input, paranoia_level = 1
  plain_email_addresses(mailto_links(input, paranoia_level), paranoia_level)
end

.create_markup(email_address, paranoia_level = 1, mailto_link_text = nil) ⇒ String

Creates SpanSpam HTML markup.

Parameters:

  • email_address (String)
  • paranoia_level (Integer) (defaults to: 1)
  • mailto_link_text (String) (defaults to: nil)

Returns:

  • (String)

    SpamSpan HTML markup

Raises:



54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/spamspanify.rb', line 54

def create_markup email_address, paranoia_level = 1, mailto_link_text = nil
  mailto_link_text = nil if (email_address == mailto_link_text)
  user, domain = email_address.split("@")
  case paranoia_level
  when 1
    "<span class='spamspan'><span class='u'>#{ user }</span>@<span class='d'>"\
      "#{ domain }</span>#{ "(<span class='t'>#{ mailto_link_text }</span>)" if mailto_link_text }</span>"
  when 3
    "<span class='spamspan'><span class='u'>#{ undotify(user) }</span> [at] "\
      "<span class='d'>#{ undotify(domain) }</span>#{ "(<span class='t'>#{ mailto_link_text }</span>)" if mailto_link_text }</span>"
  else
    Raise ParanoiaLevelNotSupportError
  end
end

Converts all HTML mailto links in the input into SpamSpan markup.

Parameters:

  • input (String)
  • paranoia_level (Integer) (defaults to: 1)

    SpamSpan paranoia level

Returns:

  • (String)

    the input with all plain email addresses converted to SpamSpam markup



40
41
42
43
44
# File 'lib/spamspanify.rb', line 40

def mailto_links input, paranoia_level = 1
  input.gsub(MAILTO_REGEXP) do |mailto|
    create_markup(mailto[EMAIL_REGEXP], paranoia_level, mailto.split(">")[1].split("<")[0])
  end
end

.plain_email_addresses(input, paranoia_level = 1) ⇒ String

Converts all plain email addresses in the input into SpamSpan markup.

Parameters:

  • input (String)
  • paranoia_level (Integer) (defaults to: 1)

    SpamSpan paranoia level

Returns:

  • (String)

    the input with all plain email addresses converted to SpamSpam markup



28
29
30
31
32
# File 'lib/spamspanify.rb', line 28

def plain_email_addresses input, paranoia_level = 1
  input.gsub(EMAIL_REGEXP) do |email|
    create_markup(email, paranoia_level)
  end
end

.undotify(input) ⇒ String

Converts every “.” in a string into “ [dot] ”

Parameters:

Returns:

  • (String)

    the input with each dot replaced by “ [dot] ”



73
74
75
# File 'lib/spamspanify.rb', line 73

def undotify input
  input.gsub ".", " [dot] "
end