From 136962322b8da0d6c09b4962194216cc4d248130 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Tue, 25 Jan 2005 12:47:11 +0000 Subject: [PATCH] Fixed the ordering of attributes in the xml-decleration of Builder #540 [woeye] git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@505 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- actionpack/CHANGELOG | 2 ++ .../action_view/vendor/builder/xmlmarkup.rb | 21 +++++++++++++------ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/actionpack/CHANGELOG b/actionpack/CHANGELOG index f66d6bbd96..c00d72230e 100644 --- a/actionpack/CHANGELOG +++ b/actionpack/CHANGELOG @@ -1,5 +1,7 @@ *SVN* +* Fixed the ordering of attributes in the xml-decleration of Builder #540 [woeye] + * Added @request.raw_post as a convenience access to @request.env['RAW_POST_DATA'] #534 [Tobias Luetke] * Added support for automatic id-based indexing for lists of items #532 [dblack]. Example: diff --git a/actionpack/lib/action_view/vendor/builder/xmlmarkup.rb b/actionpack/lib/action_view/vendor/builder/xmlmarkup.rb index 716ff52535..4f82704c20 100644 --- a/actionpack/lib/action_view/vendor/builder/xmlmarkup.rb +++ b/actionpack/lib/action_view/vendor/builder/xmlmarkup.rb @@ -221,7 +221,7 @@ def declare!(inst, *args, &block) # For example: # # xml.instruct! - # #=> + # #=> # xml.instruct! :aaa, :bbb=>"ccc" # #=> # @@ -231,7 +231,12 @@ def instruct!(directive_tag=:xml, attrs={}) a = { :version=>"1.0", :encoding=>"UTF-8" } attrs = a.merge attrs end - _special("", nil, attrs) + _special( + "", + nil, + attrs, + [:version, :encoding, :standalone]) end private @@ -245,11 +250,11 @@ def _text(text) end # Insert special instruction. - def _special(open, close, data=nil, attrs=nil) + def _special(open, close, data=nil, attrs=nil, order=[]) _indent @target << open @target << data if data - _insert_attributes(attrs) if attrs + _insert_attributes(attrs, order) if attrs @target << close _newline end @@ -269,10 +274,14 @@ def _end_tag(sym) end # Insert the attributes (given in the hash). - def _insert_attributes(attrs) + def _insert_attributes(attrs, order=[]) return if attrs.nil? + order.each do |k| + v = attrs[k] + @target << %{ #{k}="#{v}"} if v + end attrs.each do |k, v| - @target << %{ #{k}="#{v}"} + @target << %{ #{k}="#{v}"} unless order.member?(k) end end -- GitLab