diff --git a/lib/redmine/wiki_formatting.rb b/lib/redmine/wiki_formatting.rb
index 623f2491f..dc296547d 100644
--- a/lib/redmine/wiki_formatting.rb
+++ b/lib/redmine/wiki_formatting.rb
@@ -1,6 +1,6 @@
require 'redcloth'
require 'coderay'
-
+require 'pp'
module Redmine
module WikiFormatting
@@ -79,29 +79,25 @@ module Redmine
(
(?:https?://)| # protocol spec, or
(?:www\.) # www.*
- )
- (
- [-\w]+ # subdomain or domain
- (?:\.[-\w]+)* # remaining subdomains or domain
- (?::\d+)? # port
- (?:/(?:(?:[~\w\+%-]|(?:[,.;:][^\s$]))+)?)* # path
- (?:\?[\w\+%&=.;-]+)? # query string
- (?:\#[\w\-]*)? # trailing anchor
)
- ([[:punct:]]|\s|<|$) # trailing text
+ (
+ (\S+?) # url
+ (\/)? # slash
+ )
+ ([^\w\=\/;]*?) # post
+ (?=<|\s|$)
}x unless const_defined?(:AUTO_LINK_RE)
# Turns all urls into clickable links (code from Rails).
def inline_auto_link(text)
text.gsub!(AUTO_LINK_RE) do
- all, a, b, c, d = $&, $1, $2, $3, $4
- if a =~ /=]?/
+ all, leading, proto, url, post = $&, $1, $2, $3, $6
+ if leading =~ /=]?/
# don't replace URL's that are already linked
# and URL's prefixed with ! !> !< != (textile images)
all
- else
- text = b + c
- %(#{a}#{text}#{d})
+ else
+ %(#{leading}#{proto + url}#{post})
end
end
end
diff --git a/test/unit/helpers/application_helper_test.rb b/test/unit/helpers/application_helper_test.rb
index 10372fb74..24935bbb7 100644
--- a/test/unit/helpers/application_helper_test.rb
+++ b/test/unit/helpers/application_helper_test.rb
@@ -29,6 +29,8 @@ class ApplicationHelperTest < HelperTestCase
def test_auto_links
to_test = {
'http://foo.bar' => 'http://foo.bar',
+ 'http://foo.bar.' => 'http://foo.bar.',
+ 'http://foo.bar/foo.bar#foo.bar.' => 'http://foo.bar/foo.bar#foo.bar.',
'www.foo.bar' => 'www.foo.bar',
'http://foo.bar/page?p=1&t=z&s=' => 'http://foo.bar/page?p=1&t=z&s=',
'http://foo.bar/page#125' => 'http://foo.bar/page#125'