diff options
author | Jeremy Kemper <jeremy@bitsweat.net> | 2006-11-14 09:08:40 +0000 |
---|---|---|
committer | Jeremy Kemper <jeremy@bitsweat.net> | 2006-11-14 09:08:40 +0000 |
commit | b97ffa2a4fcb59de757745a71a6522662039e634 (patch) | |
tree | cd3d971e5551d4066bde957a4bf744fcfed1508a | |
parent | 50ee332c4aa97aa797e814d3ab6ae63a0f8351e2 (diff) | |
download | rails-b97ffa2a4fcb59de757745a71a6522662039e634.tar.gz rails-b97ffa2a4fcb59de757745a71a6522662039e634.tar.bz2 rails-b97ffa2a4fcb59de757745a71a6522662039e634.zip |
Hash#to_xml handles keys with the same name as Kernel methods. Closes #6613.
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@5521 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
-rw-r--r-- | activesupport/CHANGELOG | 2 | ||||
-rw-r--r-- | activesupport/lib/active_support/core_ext/hash/conversions.rb | 2 | ||||
-rw-r--r-- | activesupport/test/core_ext/hash_ext_test.rb | 11 |
3 files changed, 14 insertions, 1 deletions
diff --git a/activesupport/CHANGELOG b/activesupport/CHANGELOG index 402afa237f..432780a94e 100644 --- a/activesupport/CHANGELOG +++ b/activesupport/CHANGELOG @@ -1,5 +1,7 @@ *SVN* +* Hash#to_xml handles keys with the same name as Kernel methods. #6613 [Catfish] + * Added Time#end_of_day to get 23:59:59 of that day [DHH] * Don't quote hash keys in Hash#to_json if they're valid JavaScript identifiers. Disable this with ActiveSupport::JSON.unquote_hash_key_identifiers = false if you need strict JSON compliance. [Sam Stephenson] diff --git a/activesupport/lib/active_support/core_ext/hash/conversions.rb b/activesupport/lib/active_support/core_ext/hash/conversions.rb index 65047b2d3c..83054cde93 100644 --- a/activesupport/lib/active_support/core_ext/hash/conversions.rb +++ b/activesupport/lib/active_support/core_ext/hash/conversions.rb @@ -35,7 +35,7 @@ module ActiveSupport #:nodoc: dasherize = !options.has_key?(:dasherize) || options[:dasherize] root = dasherize ? options[:root].to_s.dasherize : options[:root].to_s - options[:builder].__send__(root) do + options[:builder].__send__(:method_missing, root) do each do |key, value| case value when ::Hash diff --git a/activesupport/test/core_ext/hash_ext_test.rb b/activesupport/test/core_ext/hash_ext_test.rb index 020e383c1a..3ede4893a5 100644 --- a/activesupport/test/core_ext/hash_ext_test.rb +++ b/activesupport/test/core_ext/hash_ext_test.rb @@ -458,4 +458,15 @@ class HashToXmlTest < Test::Unit::TestCase hash_wia = hash.with_indifferent_access assert_equal 3, hash_wia.default end + + # The XML builder seems to fail miserably when trying to tag something + # with the same name as a Kernel method (throw, test, loop, select ...) + def test_kernel_method_names_to_xml + hash = { :throw => { :ball => 'red' } } + expected = '<person><throw><ball>red</ball></throw></person>' + + assert_nothing_raised do + assert_equal expected, hash.to_xml(@xml_options) + end + end end |