diff --git a/ChangeLog b/ChangeLog index a1d8e1b7b6..c2278137be 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +Fri Apr 26 22:53:55 2013 Kouhei Sutou + + * lib/rexml/element.rb (REXML::Attributes#to_a): Support + namespaced attributes. [ruby-dev:47277] [Bug #8301] + Patch by Ippei Obayashi. Thanks!!! + * test/rexml/test_attributes.rb + (AttributesTester#test_to_a_with_namespaces): Add a test of the + above change. + Fri Apr 26 21:48:29 2013 Kouhei Sutou * lib/rss/atom.rb (RSS::Atom::Entry): Fix indent of document comment. diff --git a/lib/rexml/element.rb b/lib/rexml/element.rb index c415830c14..c30b150c0b 100644 --- a/lib/rexml/element.rb +++ b/lib/rexml/element.rb @@ -987,7 +987,7 @@ module REXML end def to_a - values.flatten + enum_for(:each_attribute).to_a end # Returns the number of attributes the owning Element contains. diff --git a/test/rexml/test_attributes.rb b/test/rexml/test_attributes.rb index e46850de3a..f9c09876f7 100644 --- a/test/rexml/test_attributes.rb +++ b/test/rexml/test_attributes.rb @@ -195,4 +195,26 @@ class AttributesTester < Test::Unit::TestCase doc.add_element 'a', { 'v' => 'x & y' } assert doc.to_s.index(';') end + + def test_to_a_with_namespaces + document = Document.new(<<-XML) + + + +XML + child = document.root.elements["child"] + assert_equal([ + "attribute='no-ns'", + "ns1:attribute='ns1'", + "ns2:attribute='ns2'", + "other-attribute='other-value'", + ], + child.attributes.to_a.collect(&:to_string).sort) + end end