aboutsummaryrefslogtreecommitdiffstats
path: root/actionview
diff options
context:
space:
mode:
authorCarsten Zimmermann <carp@hacksocke.de>2013-10-29 18:17:57 +0100
committerCarsten Zimmermann <carp@hacksocke.de>2013-10-29 18:17:57 +0100
commit805a6cc56469ae50803e922e09e2b9867daff1dd (patch)
tree223c677daf429fcb5e6ec6cef0833f7a735ec9ca /actionview
parentdf2226ea16922fd4e2ea72b8ee372a4cb5621114 (diff)
downloadrails-805a6cc56469ae50803e922e09e2b9867daff1dd.tar.gz
rails-805a6cc56469ae50803e922e09e2b9867daff1dd.tar.bz2
rails-805a6cc56469ae50803e922e09e2b9867daff1dd.zip
Convert CDATA input to string before gsub'ing
Rails 3.2 API allowed arbitrary input for cdata_section; this change re-introduces the old behaviour.
Diffstat (limited to 'actionview')
-rw-r--r--actionview/lib/action_view/helpers/tag_helper.rb2
-rw-r--r--actionview/test/template/tag_helper_test.rb4
2 files changed, 5 insertions, 1 deletions
diff --git a/actionview/lib/action_view/helpers/tag_helper.rb b/actionview/lib/action_view/helpers/tag_helper.rb
index 732f35643a..11e41ec056 100644
--- a/actionview/lib/action_view/helpers/tag_helper.rb
+++ b/actionview/lib/action_view/helpers/tag_helper.rb
@@ -114,7 +114,7 @@ module ActionView
# cdata_section("hello]]>world")
# # => <![CDATA[hello]]]]><![CDATA[>world]]>
def cdata_section(content)
- splitted = content.gsub(']]>', ']]]]><![CDATA[>')
+ splitted = content.to_s.gsub(']]>', ']]]]><![CDATA[>')
"<![CDATA[#{splitted}]]>".html_safe
end
diff --git a/actionview/test/template/tag_helper_test.rb b/actionview/test/template/tag_helper_test.rb
index 802da5d566..fb016a52de 100644
--- a/actionview/test/template/tag_helper_test.rb
+++ b/actionview/test/template/tag_helper_test.rb
@@ -96,6 +96,10 @@ class TagHelperTest < ActionView::TestCase
assert_equal "<![CDATA[<hello world>]]>", cdata_section("<hello world>")
end
+ def test_cdata_section_with_string_conversion
+ assert_equal "<![CDATA[]]>", cdata_section(nil)
+ end
+
def test_cdata_section_splitted
assert_equal "<![CDATA[hello]]]]><![CDATA[>world]]>", cdata_section("hello]]>world")
assert_equal "<![CDATA[hello]]]]><![CDATA[>world]]]]><![CDATA[>again]]>", cdata_section("hello]]>world]]>again")