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:
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 @@ 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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue