1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

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

View file

@ -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]

View file

@ -63,7 +63,10 @@ module ActiveSupport #:nodoc:
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

View file

@ -179,4 +179,15 @@ class ArrayToXmlTests < Test::Unit::TestCase
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