diff options
Diffstat (limited to 'app/lib')
-rw-r--r-- | app/lib/formatter.rb | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/app/lib/formatter.rb b/app/lib/formatter.rb index 044407a6c..073ab0784 100644 --- a/app/lib/formatter.rb +++ b/app/lib/formatter.rb @@ -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) |