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 =

TODO split EMAIL_REGEXP in separate local and domain parts

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

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



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

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:



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

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



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

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



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

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] ”



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

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