From 5b3bc3139a1b15054f26092eb95a5fbc8fdc07aa Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Thu, 16 Jun 2005 06:00:18 +0000 Subject: Added a third parameter to TextHelper#auto_link called href_options for specifying additional tag options on the links generated #1401 [tyler.kovacs@gmail.com] git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1432 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- actionpack/CHANGELOG | 2 ++ actionpack/lib/action_view/helpers/text_helper.rb | 13 ++++++++----- actionpack/test/template/text_helper_test.rb | 3 +++ 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/actionpack/CHANGELOG b/actionpack/CHANGELOG index b161b1d552..e49ae64a99 100644 --- a/actionpack/CHANGELOG +++ b/actionpack/CHANGELOG @@ -1,5 +1,7 @@ *SVN* +* Added a third parameter to TextHelper#auto_link called href_options for specifying additional tag options on the links generated #1401 [tyler.kovacs@gmail.com]. Example: auto_link(text, :all, { :target => "_blank" }) to have all the generated links open in a new window. + * Fixed TextHelper#highlight to return the text, not nil, if the phrase is blank #1409 [patrick@lenz.sh] * Fixed TagHelper such that :name and 'name' keys in the options doesn't result in two attributes #1455 [take_tk] diff --git a/actionpack/lib/action_view/helpers/text_helper.rb b/actionpack/lib/action_view/helpers/text_helper.rb index 0abd8e79fa..a65a979343 100644 --- a/actionpack/lib/action_view/helpers/text_helper.rb +++ b/actionpack/lib/action_view/helpers/text_helper.rb @@ -1,3 +1,5 @@ +require File.dirname(__FILE__) + '/tag_helper' + module ActionView module Helpers #:nodoc: # Provides a set of methods for working with text strings that can help unburden the level of inline Ruby code in the @@ -116,11 +118,11 @@ module ActionView # auto_link("Go to http://www.rubyonrails.com and say hello to david@loudthinking.com") => # Go to http://www.rubyonrails.com and # say hello to david@loudthinking.com - def auto_link(text, link = :all) + def auto_link(text, link = :all, href_options = {}) case link - when :all then auto_link_urls(auto_link_email_addresses(text)) + when :all then auto_link_urls(auto_link_email_addresses(text), href_options) when :email_addresses then auto_link_email_addresses(text) - when :urls then auto_link_urls(text) + when :urls then auto_link_urls(text, href_options) end end @@ -191,13 +193,14 @@ module ActionView end # Turns all urls into clickable links. - def auto_link_urls(text) + def auto_link_urls(text, href_options = {}) text.gsub(/(<\w+.*?>|[^=!:'"\/]|^)((?:http[s]?:\/\/)|(?:www\.))([^\s<]+\/?)([[:punct:]]|\s|<|$)/) do all, a, b, c, d = $&, $1, $2, $3, $4 if a =~ /#{b}#{c}#{d}) + extra_options = tag_options(href_options.stringify_keys) || "" + %(#{a}#{b}#{c}#{d}) end end end diff --git a/actionpack/test/template/text_helper_test.rb b/actionpack/test/template/text_helper_test.rb index 81aca6f638..722f08a7cf 100644 --- a/actionpack/test/template/text_helper_test.rb +++ b/actionpack/test/template/text_helper_test.rb @@ -4,6 +4,7 @@ require File.dirname(__FILE__) + '/../../../activesupport/lib/active_support/cor class TextHelperTest < Test::Unit::TestCase include ActionView::Helpers::TextHelper + include ActionView::Helpers::TagHelper def test_simple_format assert_equal "

crazy\n
cross\n
platform linebreaks

", simple_format("crazy\r\n cross\r platform linebreaks") @@ -77,6 +78,7 @@ class TextHelperTest < Test::Unit::TestCase email_result = %{#{email_raw}} link_raw = 'http://www.rubyonrails.com' link_result = %{#{link_raw}} + link_result_with_options = %{#{link_raw}} link2_raw = 'www.rubyonrails.com' link2_result = %{#{link2_raw}} @@ -90,6 +92,7 @@ class TextHelperTest < Test::Unit::TestCase assert_equal %(Go to #{link2_raw}), auto_link("Go to #{link2_raw}", :email_addresses) assert_equal %(

Link #{link2_result}

), auto_link("

Link #{link2_raw}

") assert_equal %(

#{link2_result} Link

), auto_link("

#{link2_raw} Link

") + assert_equal %(

Link #{link_result_with_options}

), auto_link("

Link #{link_raw}

", :all, {:target => "_blank"}) end def test_sanitize_form -- cgit v1.2.3