summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog9
-rw-r--r--lib/rexml/xmldecl.rb11
-rw-r--r--test/rexml/test_xml_declaration.rb12
3 files changed, 25 insertions, 7 deletions
diff --git a/ChangeLog b/ChangeLog
index a52c0aa10b..80ae14e802 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+Sat Nov 3 12:36:35 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/xmldecl.rb (REXML::XMLDecl): Stop using REXML::Encoding
+ module because XMLDecl doesn't convert encoding. This causes
+ removing XML encoding name normalization (encoding.upcase).
+ Encoding name in XML declaration is what user specifies.
+ I think this is reasonable change.
+ * test/rexml/test_xml_declaration.rb: Add tests for the above change.
+
Sat Nov 3 12:18:35 2012 Masaki Matsushita <glass.saga@gmail.com>
* array.c (recursive_equal): fix not to make invalid pointers when
diff --git a/lib/rexml/xmldecl.rb b/lib/rexml/xmldecl.rb
index 361e4b7106..6b48a6f8ea 100644
--- a/lib/rexml/xmldecl.rb
+++ b/lib/rexml/xmldecl.rb
@@ -4,8 +4,6 @@ require 'rexml/source'
module REXML
# NEEDS DOCUMENTATION
class XMLDecl < Child
- include Encoding
-
DEFAULT_VERSION = "1.0";
DEFAULT_ENCODING = "UTF-8";
DEFAULT_STANDALONE = "no";
@@ -13,7 +11,7 @@ module REXML
STOP = '\?>';
attr_accessor :version, :standalone
- attr_reader :writeencoding, :writethis
+ attr_reader :encoding, :writeencoding, :writethis
def initialize(version=DEFAULT_VERSION, encoding=nil, standalone=nil)
@writethis = true
@@ -57,7 +55,7 @@ module REXML
def ==( other )
other.kind_of?(XMLDecl) and
other.version == @version and
- other.encoding == self.encoding and
+ other.encoding.upcase == self.encoding.upcase and
other.standalone == @standalone
end
@@ -72,14 +70,13 @@ module REXML
end
alias :stand_alone? :standalone
- alias :old_enc= :encoding=
def encoding=( enc )
if enc.nil?
- self.old_enc = "UTF-8"
+ @encoding = "UTF-8"
@writeencoding = false
else
- self.old_enc = enc
+ @encoding = enc
@writeencoding = true
end
self.dowrite
diff --git a/test/rexml/test_xml_declaration.rb b/test/rexml/test_xml_declaration.rb
index d58f9f08ba..16427c7d1a 100644
--- a/test/rexml/test_xml_declaration.rb
+++ b/test/rexml/test_xml_declaration.rb
@@ -31,4 +31,16 @@ class TestXmlDeclaration < Test::Unit::TestCase
assert_kind_of(REXML::XMLDecl, @root.previous_sibling.previous_sibling)
assert_kind_of(REXML::Element, @xml_declaration.next_sibling.next_sibling)
end
+
+ def test_equal
+ lower_encoding_xml_decl = REXML::XMLDecl.new("1.0", "utf-8")
+ upper_encoding_xml_decl = REXML::XMLDecl.new("1.0", "UTF-8")
+ assert_equal(lower_encoding_xml_decl, upper_encoding_xml_decl)
+ end
+
+ def test_encoding_is_not_normalized
+ lower_encoding_xml_decl = REXML::XMLDecl.new("1.0", "utf-8")
+ assert_equal("<?xml version='1.0' encoding='utf-8'?>",
+ lower_encoding_xml_decl.to_s)
+ end
end