Extract rendering to helper method. Shift filename sanitization to controller.

This commit is contained in:
Jan-Yves Ruzicka 2015-04-03 12:13:21 +01:00
parent 7801364662
commit ccf13418f4
12 changed files with 105 additions and 78 deletions

View file

@ -1,58 +0,0 @@
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, :html => {:target => '_blank'})
relaxed_config = Sanitize::Config::RELAXED
config = relaxed_config
# add onenote and message protocols, allow a target
a_href_config = relaxed_config[:protocols]['a']['href'] + %w(onenote message)
a_attributes = relaxed_config[:attributes]['a'] + ['target']
config = Sanitize::Config.merge(config, :protocols => {'a' => {'href' => a_href_config}}, :attributes => {'a' => a_attributes})
rendered = Sanitize.fragment(rendered, config)
return rendered.html_safe
end
def self.textile(text)
RedCloth.new(text).to_html
end
def self.sanitize_filename(filename)
filename.gsub(/[^0-9A-z.\-]/, '_')
end
private
def self.helpers
ActionController::Base.helpers
end
end
end