diff --git a/app/logical/d_text.rb b/app/logical/d_text.rb index 3e4a19d1f..5d349a5ec 100644 --- a/app/logical/d_text.rb +++ b/app/logical/d_text.rb @@ -27,7 +27,7 @@ class DText end def self.parse_links(str) - str.gsub(/("[^"]+":(https?:\/\/|\/)\S+|https?:\/\/\S+)/m) do |url| + str.gsub(/("[^"]+":(https?:\/\/|\/)[^\s\r\n<>]+|https?:\/\/[^\s\r\n<>]+)+/) do |url| if url =~ /^"([^"]+)":(.+)$/ text = $1 url = $2 diff --git a/test/unit/dtext_test.rb b/test/unit/dtext_test.rb index a42442a5f..68dc72188 100644 --- a/test/unit/dtext_test.rb +++ b/test/unit/dtext_test.rb @@ -43,6 +43,7 @@ class DTextTest < ActiveSupport::TestCase def test_urls assert_equal('
a http://test.com b
', p('a http://test.com b')) + assert_equal('', p("http://test.com\nb")) assert_equal('a http://test.com/~bob/image.jpg b
', p('a http://test.com/~bob/image.jpg b')) assert_equal('a http://test.com/home.html#toc b
', p('a http://test.com/home.html#toc b')) assert_equal('a http://test.com. b
', p('a http://test.com. b'))