aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib
diff options
context:
space:
mode:
authorMislav Marohnić <mislav.marohnic@gmail.com>2010-04-17 05:13:40 +0200
committerMikel Lindsaar <raasdnil@gmail.com>2010-06-03 23:32:09 +1000
commitf00561e0f1e61e31f8957eda3897f15518942ed4 (patch)
tree60c0a2c2e2a4263251c6f651da79823bcd049779 /actionpack/lib
parent884716564c3f84f285b58ccc786684782cee8c5a (diff)
downloadrails-f00561e0f1e61e31f8957eda3897f15518942ed4.tar.gz
rails-f00561e0f1e61e31f8957eda3897f15518942ed4.tar.bz2
rails-f00561e0f1e61e31f8957eda3897f15518942ed4.zip
auto_link: support arbitrary URI schemes like "ftp:" and "file:"
recognizes all URI scheme allowed characters, such as colon and period. [#3494 state:resolved]
Diffstat (limited to 'actionpack/lib')
-rw-r--r--actionpack/lib/action_view/helpers/text_helper.rb6
1 files changed, 3 insertions, 3 deletions
diff --git a/actionpack/lib/action_view/helpers/text_helper.rb b/actionpack/lib/action_view/helpers/text_helper.rb
index 0e1bc139ff..fa930ac626 100644
--- a/actionpack/lib/action_view/helpers/text_helper.rb
+++ b/actionpack/lib/action_view/helpers/text_helper.rb
@@ -537,7 +537,7 @@ module ActionView
end
AUTO_LINK_RE = %r{
- ( https?:// | www\. )
+ (?: ([\w+.:-]+:)// | www\. )
[^\s<]+
}x unless const_defined?(:AUTO_LINK_RE)
@@ -548,7 +548,7 @@ module ActionView
def auto_link_urls(text, html_options = {})
link_attributes = html_options.stringify_keys
text.gsub(AUTO_LINK_RE) do
- href = $&
+ scheme, href = $1, $&
punctuation = []
left, right = $`, $'
# detect already linked URLs and URLs in the middle of a tag
@@ -566,7 +566,7 @@ module ActionView
end
link_text = block_given?? yield(href) : href
- href = 'http://' + href unless href =~ %r{^[a-z]+://}i
+ href = 'http://' + href unless scheme
content_tag(:a, h(link_text), link_attributes.merge('href' => href)) + punctuation.reverse.join('')
end