class Jekyll::AutolinkEmail

Constants

HTML_ENTITIES

Attributes

email_addresses[RW]

Public Class Methods

new(config) click to toggle source
# File lib/jekyll-autolink_email.rb, line 16
def initialize(config)
  config['autolink_email'] ||= {}
  self.email_addresses = []
end

Public Instance Methods

generate(site) click to toggle source
# File lib/jekyll-autolink_email.rb, line 21
def generate(site)
  @site = site
  site.pages.each { |page| autolinkify page if page.html?}
  site.posts.docs.each { |page| autolinkify page }
end

Private Instance Methods

autolinkify(page) click to toggle source
# File lib/jekyll-autolink_email.rb, line 29
def autolinkify(page)
  page.content = Rinku.auto_link(page.content, :email_addresses, link_attr, skip_tags) do |email_address|
    if escape?
      email_addresses << email_address.dup
      html_encode(email_address)
    else
      email_address
    end
  end
  url_encode_email_addresses(page.content) if escape?
end
escape?() click to toggle source
# File lib/jekyll-autolink_email.rb, line 56
def escape?
  @site.config['autolink_email']['escape']
end
html_encode(email_address) click to toggle source
# File lib/jekyll-autolink_email.rb, line 41
def html_encode(email_address)
  HTML_ENTITIES.each do |char, code|
    email_address.gsub!(char, code)
  end
  email_address
end
skip_tags() click to toggle source
# File lib/jekyll-autolink_email.rb, line 64
def skip_tags
  @skip_tags ||= Array(@site.config['autolink_email']['skip_tags'])
end
url_encode_email_addresses(content) click to toggle source

A hack since Rinku doesn't offer a hook into changing what the link is

# File lib/jekyll-autolink_email.rb, line 49
def url_encode_email_addresses(content)
  content.gsub!(/mailto:(#{email_addresses.join('|')})/) do |m|
    m[$1] = ERB::Util.url_encode($1)
    m
  end
end