tracks/lib/tracks/utils.rb
Dan Rice dc311221f1 Render notes using RedCloth without formatize
Removes the outdated bluecloth dependency
2013-03-13 17:03:58 +02:00

49 lines
No EOL
1.3 KiB
Ruby

require 'redcloth'
module Tracks
class Utils
AUTO_LINK_MESSAGE_RE = %r{message://<[^>]+>} unless const_defined?(:AUTO_LINK_MESSAGE_RE)
# Converts message:// links to href. This URL scheme is used on Mac OS X
# to link to a mail message in Mail.app.
def self.auto_link_message(text)
text.gsub(AUTO_LINK_MESSAGE_RE) do
href = $&
left, right = $`, $'
# detect already linked URLs and URLs in the middle of a tag
if left =~ /<[^>]+$/ && right =~ /^[^>]*>/
# do not change string; URL is alreay linked
href
else
content = helpers.content_tag(:a, h(href), :href => h(href))
end
end
end
def self.render_text(text)
rendered = auto_link_message(text)
rendered = textile(rendered)
rendered = helpers.auto_link(rendered, :link => :urls)
# add onenote and message protocols
Sanitize::Config::RELAXED[:protocols]['a']['href'] << 'onenote'
Sanitize::Config::RELAXED[:protocols]['a']['href'] << 'message'
rendered = Sanitize.clean(rendered, Sanitize::Config::RELAXED)
return rendered.html_safe
end
def self.textile(text)
RedCloth.new(text).to_html
end
private
def self.helpers
ActionController::Base.helpers
end
end
end