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
link_attr()
click to toggle source
# File lib/jekyll-autolink_email.rb, line 60 def link_attr @link_attr ||= @site.config['autolink_email']['link_attr'] 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