Array#to_xml yields the builder just like Hash and ActiveRecord::Base. Closes #8472.

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@6858 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
Jeremy Kemper 2007-05-26 06:20:07 +00:00
parent 40860e9852
commit 652fe645f6
3 changed files with 17 additions and 1 deletions

@ -1,5 +1,7 @@
*SVN*
* Array#to_xml yields the builder just like Hash and ActiveRecord::Base. #8472 [seth]
* Date, Time, and DateTime support formatting blocks in addition to strftime strings. Introduce :long_ordinal format, e.g. "February 21st, 2005". #8191 [Coda Hale]
* Document Object#blank?. #6491 [Chris Mear]

@ -63,7 +63,10 @@ def to_xml(options = {})
opts = options.merge({ :root => children })
options[:builder].tag!(root) { each { |e| e.to_xml(opts.merge!({ :skip_instruct => true })) } }
options[:builder].tag!(root) {
yield options[:builder] if block_given?
each { |e| e.to_xml(opts.merge!({ :skip_instruct => true })) }
}
end
end

@ -179,4 +179,15 @@ def test_to_with_instruct
assert_match(/^<\?xml [^>]*/, xml)
assert_equal 0, xml.rindex(/<\?xml /)
end
def test_to_xml_with_block
xml = [
{ :name => "David", :age => 26, :age_in_millis => 820497600000 },
{ :name => "Jason", :age => 31, :age_in_millis => BigDecimal.new('1.0') }
].to_xml(:skip_instruct => true, :indent => 0) do |xml|
xml.count 2
end
assert xml.include?(%(<count>2</count>)), xml
end
end