merge (XmlSimple)

    # File lib/xmlsimple.rb, line 640
      def merge(hash, key, value)
        if value.instance_of?(String)
          value = normalise_space(value) if @options['normalisespace'] == 2

          # do variable substitutions
          unless @_var_values.nil? || @_var_values.empty?
            value.gsub!(/\$\{(\w+)\}/) { |x| get_var($1) }
          end

          # look for variable definitions
          if @options.has_key?('varattr')
            varattr = @options['varattr']
            if hash.has_key?(varattr)
              set_var(hash[varattr], value)
            end
          end
        end
        if hash.has_key?(key)
          if hash[key].instance_of?(Array)
            hash[key] << value
          else
            hash[key] = [ hash[key], value ]
          end
        elsif value.instance_of?(Array) # Handle anonymous arrays.
          hash[key] = [ value ]
        else
          if force_array?(key)
            hash[key] = [ value ]
          else
            hash[key] = value
          end
        end
        hash
      end