instance method to_hash

Ruby on Rails 2.3.18

Since v2.3.18 Last seen in v2.3.18

Signature

to_hash(hash={})

Convert XML document to hash

hash

Hash to merge the converted element into.

Parameters

hash opt = {}
Source
# File activesupport/lib/active_support/xml_mini/libxml.rb, line 36
      def to_hash(hash={})
        node_hash = {}

        # Insert node hash into parent hash correctly.
        case hash[name]
          when Array then hash[name] << node_hash
          when Hash  then hash[name] = [hash[name], node_hash]
          when nil   then hash[name] = node_hash
          else raise "Unexpected error during hash insertion!"
        end

        # Handle child elements
        each_child do |c|
          if c.element?
            c.to_hash(node_hash)
          elsif c.text? || c.cdata?
            node_hash[CONTENT_ROOT] ||= ''
            node_hash[CONTENT_ROOT] << c.content
          end
        end


        # Remove content node if it is blank
        if node_hash.length > 1 && node_hash[CONTENT_ROOT].blank?
          node_hash.delete(CONTENT_ROOT)
        end

        # Handle attributes
        each_attr { |a| node_hash[a.name] = a.value }

        hash
      end

Defined in activesupport/lib/active_support/xml_mini/libxml.rb line 36 · View on GitHub · Improve this page · Find usages on GitHub

Defined in LibXML::Conversions::Node

Type at least 2 characters to search.

↑↓ navigate · open · esc close