summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/redmine/wiki_formatting.rb24
-rw-r--r--test/unit/helpers/application_helper_test.rb2
2 files changed, 12 insertions, 14 deletions
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
+ (\S+?) # url
+ (\/)? # slash
)
- ([[:punct:]]|\s|<|$) # trailing text
+ ([^\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 =~ /<a\s/i || a =~ /![<>=]?/
+ all, leading, proto, url, post = $&, $1, $2, $3, $6
+ if leading =~ /<a\s/i || leading =~ /![<>=]?/
# don't replace URL's that are already linked
# and URL's prefixed with ! !> !< != (textile images)
all
- else
- text = b + c
- %(#{a}<a href="#{b=="www."?"http://www.":b}#{c}">#{text}</a>#{d})
+ else
+ %(#{leading}<a href="#{proto=="www."?"http://www.":proto}#{url}">#{proto + url}</a>#{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' => '<a href="http://foo.bar">http://foo.bar</a>',
+ 'http://foo.bar.' => '<a href="http://foo.bar">http://foo.bar</a>.',
+ 'http://foo.bar/foo.bar#foo.bar.' => '<a href="http://foo.bar/foo.bar#foo.bar">http://foo.bar/foo.bar#foo.bar</a>.',
'www.foo.bar' => '<a href="http://www.foo.bar">www.foo.bar</a>',
'http://foo.bar/page?p=1&t=z&s=' => '<a href="http://foo.bar/page?p=1&#38;t=z&#38;s=">http://foo.bar/page?p=1&#38;t=z&#38;s=</a>',
'http://foo.bar/page#125' => '<a href="http://foo.bar/page#125">http://foo.bar/page#125</a>'