Fix #555 - Use a better URL parser
This commit is contained in:
parent
c96fd24f48
commit
3202bdd744
4 changed files with 41 additions and 5 deletions
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue