Skip to content
Browse files

Added TextHelper#auto_link, TextHelper#auto_link_urls, and TextHelper…

…#auto_link_email_addresses to turn those elements into ahrefs

git-svn-id: 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
  • Loading branch information...
1 parent bc8e412 commit b305756d9f5e92d0e1cf41c1036139a510882f1f @dhh dhh committed Feb 18, 2005
2 actionpack/CHANGELOG
@@ -1,5 +1,7 @@
+* Added TextHelper#auto_link, TextHelper#auto_link_urls, and TextHelper#auto_link_email_addresses to turn those elements into ahrefs
* Fixed that on validation errors, scaffold couldn't find template #654 [mindel]
* Added Base#hide_actions(*names) to hide public methods from a controller that would otherwise have been callable through the URL. For the majority of cases, its preferred just to make the methods you don't want to expose protected or private (so they'll automatically be hidden) -- but if you must have a public method, this is a way to make it uncallable. Base#hidden_actions retrieve the list of all hidden actions for the controller #644 [Nicholas Seckar]
18 actionpack/lib/action_view/helpers/text_helper.rb
@@ -96,6 +96,24 @@ def markdown(text)
# We can't really help what's not there
+ # Turns all urls and email addresses into clickable links. Example:
+ # "Go to and say hello to" =>
+ # Go to <a href=""></a> and
+ # say hello to <a href=""></a>
+ def auto_link(text)
+ auto_link_urls(auto_link_email_addresses(text))
+ end
+ # Turns all urls into clickable links.
+ def auto_link_urls(text)
+ text.gsub(/([^=><!:'"\/]|^)((http[s]?:\/\/)|(www\.))(\S+\b\/?)([[:punct:]]*)(\s|$)/, '\1<a href="\3\4\5">\3\4\5</a>\6\7')
+ end
+ # Turns all email addresses into clickable links.
+ def auto_link_email_addresses(text)
+ text.gsub(/([\w\.!#\$%\-+.]+@[A-Za-z0-9\-]+(\.[A-Za-z0-9\-]+)+)/, '<a href="mailto:\1">\1</a>')
+ end
# Turns all links into words, like "<a href="something">else</a>" to "else".
def strip_links(text)
text.gsub(/<a.*>(.*)<\/a>/m, '\1')
6 actionpack/test/template/text_helper_test.rb
@@ -59,4 +59,10 @@ def test_pluralization
assert_equal("1 count", pluralize(1, "count"))
assert_equal("2 counts", pluralize(2, "count"))
+ def test_auto_linking
+ assert_equal %(hello <a href=""></a>), auto_link_email_addresses("hello")
+ assert_equal %(Go to <a href=""></a>), auto_link_urls("Go to")
+ assert_equal %(Go to <a href=""></a> and say hello to <a href=""></a>), auto_link("Go to and say hello to")
+ end

0 comments on commit b305756

Please sign in to comment.
Something went wrong with that request. Please try again.