diff options
author | Jacob Lauemoeller <jacob.lauemoeller@iteray.com> | 2009-10-02 16:34:28 +0200 |
---|---|---|
committer | Michael Koziarski <michael@koziarski.com> | 2009-10-15 10:54:30 +1300 |
commit | fc46c9b2207c62d4b029c2c891c61fc660c0b627 (patch) | |
tree | 8f3923fd4d49fc3026a5764a7bb3b05911eae8de /activesupport/lib/active_support/xml_mini/libxml.rb | |
parent | 3fa7e2fc98235fdb6abba1d0e703464e880aa2af (diff) | |
download | rails-fc46c9b2207c62d4b029c2c891c61fc660c0b627.tar.gz rails-fc46c9b2207c62d4b029c2c891c61fc660c0b627.tar.bz2 rails-fc46c9b2207c62d4b029c2c891c61fc660c0b627.zip |
Added CDATA support to the XmlMini LibXML engine, adjusted whitespace handling to closer match that of the REXML engine, and added a LibXML engine test
Signed-off-by: Michael Koziarski <michael@koziarski.com>
Diffstat (limited to 'activesupport/lib/active_support/xml_mini/libxml.rb')
-rw-r--r-- | activesupport/lib/active_support/xml_mini/libxml.rb | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/activesupport/lib/active_support/xml_mini/libxml.rb b/activesupport/lib/active_support/xml_mini/libxml.rb index 2ae22c35fb..0f7ba1918b 100644 --- a/activesupport/lib/active_support/xml_mini/libxml.rb +++ b/activesupport/lib/active_support/xml_mini/libxml.rb @@ -13,8 +13,6 @@ module ActiveSupport data = StringIO.new(data || '') end - LibXML::XML.default_keep_blanks = false - char = data.getc if char.nil? {} @@ -44,9 +42,9 @@ module LibXML #:nodoc: # hash:: # Hash to merge the converted element into. def to_hash(hash={}) - if text? - raise LibXML::XML::Error if content.length >= LIB_XML_LIMIT - hash[CONTENT_ROOT] = content + if text? || cdata? + raise LibXML::XML::Error if hash[CONTENT_ROOT].to_s.length + content.length >= LIB_XML_LIMIT + hash[CONTENT_ROOT] = hash[CONTENT_ROOT].to_s + content else sub_hash = insert_name_into_hash(hash, name) attributes_to_hash(sub_hash) @@ -88,6 +86,11 @@ module LibXML #:nodoc: # Hash to merge the children into. def children_to_hash(hash={}) each { |child| child.to_hash(hash) } + + if hash.length > 1 && hash[CONTENT_ROOT].blank? + hash.delete(CONTENT_ROOT) + end + attributes_to_hash(hash) hash end |