|
|
|
@ -9,6 +9,8 @@ class Formatter |
|
|
|
|
include ActionView::Helpers::TextHelper |
|
|
|
|
include ActionView::Helpers::SanitizeHelper |
|
|
|
|
|
|
|
|
|
AUTOLINK_RE = /https?:\/\/([\S]+\.[!#$&-;=?-[\]_a-z~]|%[\w\d]{2}]+[\w])/i |
|
|
|
|
|
|
|
|
|
def format(status) |
|
|
|
|
return reformat(status.content) unless status.local? |
|
|
|
|
|
|
|
|
@ -44,9 +46,9 @@ class Formatter |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
def link_urls(html) |
|
|
|
|
html.gsub(URI.regexp(%w(http https))) do |match| |
|
|
|
|
link_html(match) |
|
|
|
|
end |
|
|
|
|
Twitter::Autolink.auto_link_urls(html, url_target: '_blank', |
|
|
|
|
link_attribute_block: lambda { |_, a| a[:rel] << ' noopener' }, |
|
|
|
|
link_text_block: lambda { |_, text| link_html(text) }) |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
def link_mentions(html, mentions) |
|
|
|
@ -70,7 +72,7 @@ class Formatter |
|
|
|
|
suffix = url[prefix.length + 30..-1] |
|
|
|
|
cutoff = url[prefix.length..-1].length > 30 |
|
|
|
|
|
|
|
|
|
"<a rel=\"nofollow noopener\" target=\"_blank\" href=\"#{url}\"><span class=\"invisible\">#{prefix}</span><span class=\"#{cutoff ? 'ellipsis' : ''}\">#{text}</span><span class=\"invisible\">#{suffix}</span></a>" |
|
|
|
|
"<span class=\"invisible\">#{prefix}</span><span class=\"#{cutoff ? 'ellipsis' : ''}\">#{text}</span><span class=\"invisible\">#{suffix}</span>" |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
def hashtag_html(match) |
|
|
|
|