# 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