Defect #1591 » urls_fix.patch
lib/redcloth.rb Mon Aug 25 18:35:20 2008 +0200 → lib/redcloth.rb Tue Aug 26 12:02:05 2008 +0200 | ||
---|---|---|
788 | 788 |
": |
789 | 789 |
([\w\/]\S+?) # $url |
790 | 790 |
(\/)? # $slash |
791 |
([^\w\/;]*?) # $post
|
|
791 |
([^\w\=\/;\(\)]*?) # $post
|
|
792 | 792 |
(?=<|\s|$) |
793 | 793 |
/x |
794 | ||
794 |
#" |
|
795 | 795 |
def inline_textile_link( text ) |
796 | 796 |
text.gsub!( LINK_RE ) do |m| |
797 | 797 |
pre,atts,text,title,url,slash,post = $~[1..7] |
... | ... | |
799 | 799 |
url, url_title = check_refs( url ) |
800 | 800 |
title ||= url_title |
801 | 801 |
|
802 |
# Idea below : an URL with unbalanced parethesis and |
|
803 |
# ending by ')' is put into external parenthesis |
|
804 |
if ( url[-1]==?) and ((url.count("(") - url.count(")")) < 0 ) ) |
|
805 |
url=url[0..-2] # discard closing parenth from url |
|
806 |
post = ")"+post # add closing parenth to post |
|
807 |
end |
|
802 | 808 |
atts = pba( atts ) |
803 | 809 |
atts = " href=\"#{ url }#{ slash }\"#{ atts }" |
804 | 810 |
atts << " title=\"#{ title }\"" if title |
lib/redmine/wiki_formatting.rb Mon Aug 25 18:35:20 2008 +0200 → lib/redmine/wiki_formatting.rb Tue Aug 26 12:02:05 2008 +0200 | ||
---|---|---|
144 | 144 |
(\S+?) # url |
145 | 145 |
(\/)? # slash |
146 | 146 |
) |
147 |
([^\w\=\/;]*?) # post |
|
147 |
([^\w\=\/;\(\)]*?) # post
|
|
148 | 148 |
(?=<|\s|$) |
149 | 149 |
}x unless const_defined?(:AUTO_LINK_RE) |
150 | 150 | |
... | ... | |
156 | 156 |
# don't replace URL's that are already linked |
157 | 157 |
# and URL's prefixed with ! !> !< != (textile images) |
158 | 158 |
all |
159 |
else |
|
159 |
else |
|
160 |
# Idea below : an URL with unbalanced parethesis and |
|
161 |
# ending by ')' is put into external parenthesis |
|
162 |
if ( url[-1]==?) and ((url.count("(") - url.count(")")) < 0 ) ) |
|
163 |
url=url[0..-2] # discard closing parenth from url |
|
164 |
post = ")"+post # add closing parenth to post |
|
165 |
end |
|
160 | 166 |
%(#{leading}<a class="external" href="#{proto=="www."?"http://www.":proto}#{url}">#{proto + url}</a>#{post}) |
161 | 167 |
end |
162 | 168 |
end |
test/unit/helpers/application_helper_test.rb Mon Aug 25 18:35:20 2008 +0200 → test/unit/helpers/application_helper_test.rb Tue Aug 26 12:02:05 2008 +0200 | ||
---|---|---|
38 | 38 |
'This is a link: http://foo.bar.' => 'This is a link: <a class="external" href="http://foo.bar">http://foo.bar</a>.', |
39 | 39 |
'A link (eg. http://foo.bar).' => 'A link (eg. <a class="external" href="http://foo.bar">http://foo.bar</a>).', |
40 | 40 |
'http://foo.bar/foo.bar#foo.bar.' => '<a class="external" href="http://foo.bar/foo.bar#foo.bar">http://foo.bar/foo.bar#foo.bar</a>.', |
41 |
'http://www.foo.bar/Test_(foobar)' => '<a class="external" href="http://www.foo.bar/Test_(foobar)">http://www.foo.bar/Test_(foobar)</a>', |
|
42 |
'(see inline link : http://www.foo.bar/Test_(foobar))' => '(see inline link : <a class="external" href="http://www.foo.bar/Test_(foobar)">http://www.foo.bar/Test_(foobar)</a>)', |
|
43 |
'(see "inline link":http://www.foo.bar/Test_(foobar))' => '(see <a href="http://www.foo.bar/Test_(foobar)" class="external">inline link</a>)', |
|
41 | 44 |
'www.foo.bar' => '<a class="external" href="http://www.foo.bar">www.foo.bar</a>', |
42 | 45 |
'http://foo.bar/page?p=1&t=z&s=' => '<a class="external" href="http://foo.bar/page?p=1&t=z&s=">http://foo.bar/page?p=1&t=z&s=</a>', |
43 | 46 |
'http://foo.bar/page#125' => '<a class="external" href="http://foo.bar/page#125">http://foo.bar/page#125</a>', |
44 | 47 |
'http://foo@www.bar.com' => '<a class="external" href="http://foo@www.bar.com">http://foo@www.bar.com</a>', |
48 |
'http://foo:bar@www.bar.com' => '<a class="external" href="http://foo:bar@www.bar.com">http://foo:bar@www.bar.com</a>', |
|
45 | 49 |
'ftp://foo.bar' => '<a class="external" href="ftp://foo.bar">ftp://foo.bar</a>', |
46 | 50 |
} |
47 | 51 |
to_test.each { |text, result| assert_equal "<p>#{result}</p>", textilizable(text) } |
- « Previous
- 1
- 2
- Next »