Permalink
Browse files

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
  • Loading branch information...
1 parent 40860e9 commit 652fe645f6a199417f672965b1f4d4078d046f7d @jeremy jeremy committed May 26, 2007
View
@@ -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

0 comments on commit 652fe64

Please sign in to comment.