summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGo MAEDA <maeda@farend.jp>2019-03-03 15:18:04 +0000
committerGo MAEDA <maeda@farend.jp>2019-03-03 15:18:04 +0000
commit193b02567b1d889324d8709547b135e14f80d837 (patch)
treed71db95aecaad0d50e785505197033c299a84eef
parent3c85ee43faab2afbf15cb9ef0d9ccb053ea2c382 (diff)
downloadredmine-193b02567b1d889324d8709547b135e14f80d837.tar.gz
redmine-193b02567b1d889324d8709547b135e14f80d837.zip
URLs end with "-" are rendered incorrectly in Textile (#30259).
Patch by Yuichi HARADA. git-svn-id: http://svn.redmine.org/redmine/trunk@17917 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r--lib/redmine/wiki_formatting.rb2
-rw-r--r--lib/redmine/wiki_formatting/textile/redcloth3.rb6
-rw-r--r--test/helpers/application_helper_test.rb7
3 files changed, 10 insertions, 5 deletions
diff --git a/lib/redmine/wiki_formatting.rb b/lib/redmine/wiki_formatting.rb
index 66764551d..d4dd05a93 100644
--- a/lib/redmine/wiki_formatting.rb
+++ b/lib/redmine/wiki_formatting.rb
@@ -125,7 +125,7 @@ module Redmine
([^<]\S*?) # url
(\/)? # slash
)
- ((?:&gt;)?|[^[:alnum:]_\=\/;\(\)]*?) # post
+ ((?:&gt;)?|[^[:alnum:]_\=\/;\(\)\-]*?) # post
(?=<|\s|$)
}x unless const_defined?(:AUTO_LINK_RE)
diff --git a/lib/redmine/wiki_formatting/textile/redcloth3.rb b/lib/redmine/wiki_formatting/textile/redcloth3.rb
index 5fbfc4338..5da17be5b 100644
--- a/lib/redmine/wiki_formatting/textile/redcloth3.rb
+++ b/lib/redmine/wiki_formatting/textile/redcloth3.rb
@@ -272,8 +272,8 @@ class RedCloth3 < String
@urlrefs = {}
@shelf = []
textile_rules = [:block_textile_table, :block_textile_lists,
- :block_textile_prefix, :inline_textile_image, :inline_textile_link,
- :inline_textile_code, :inline_textile_span, :glyphs_textile]
+ :block_textile_prefix, :inline_textile_image, :inline_textile_code,
+ :inline_textile_span, :inline_textile_link, :glyphs_textile]
markdown_rules = [:refs_markdown, :block_markdown_setext, :block_markdown_atx, :block_markdown_rule,
:block_markdown_bq, :block_markdown_lists,
:inline_markdown_reflink, :inline_markdown_link]
@@ -829,7 +829,7 @@ class RedCloth3 < String
[[:alnum:]_\/]\S+?
)
(\/)? # $slash
- ([^[:alnum:]_\=\/;\(\)]*?) # $post
+ ([^[:alnum:]_\=\/;\(\)\-]*?) # $post
)
(?=<|\s|$)
/x
diff --git a/test/helpers/application_helper_test.rb b/test/helpers/application_helper_test.rb
index 26ca772b7..bfefc1052 100644
--- a/test/helpers/application_helper_test.rb
+++ b/test/helpers/application_helper_test.rb
@@ -94,6 +94,8 @@ class ApplicationHelperTest < Redmine::HelperTest
'http://' => 'http://',
'www.' => 'www.',
'test-www.bar.com' => 'test-www.bar.com',
+ # ends with a hyphen
+ 'http://www.redmine.org/example-' => '<a class="external" href="http://www.redmine.org/example-">http://www.redmine.org/example-</a>',
}
to_test.each { |text, result| assert_equal "<p>#{result}</p>", textilizable(text) }
end
@@ -270,7 +272,10 @@ RAW
'"a link":http://example.net/path!602815048C7B5C20!302.html' => '<a href="http://example.net/path!602815048C7B5C20!302.html" class="external">a link</a>',
# escaping
'"test":http://foo"bar' => '<a href="http://foo&quot;bar" class="external">test</a>',
- }
+ # ends with a hyphen
+ '(see "inline link":http://www.foo.bar/Test-)' => '(see <a href="http://www.foo.bar/Test-" class="external">inline link</a>)',
+ 'http://foo.bar/page?p=1&t=z&s=-' => '<a class="external" href="http://foo.bar/page?p=1&#38;t=z&#38;s=-">http://foo.bar/page?p=1&#38;t=z&#38;s=-</a>',
+ 'This is an intern "link":/foo/bar-' => 'This is an intern <a href="/foo/bar-">link</a>', }
to_test.each { |text, result| assert_equal "<p>#{result}</p>", textilizable(text) }
end