Sha256: 8ee60a336b44fedf073effc06c4372293e155e7ff8de4f49407780e86f1a7d31

Contents?: true

Size: 1.08 KB

Versions: 1

Compression:

Stored size: 1.08 KB

Contents

require 'cgi'
require 'pp'

class Hash
  def to_url_params
    elements = []
    self.each_pair do |key, value|
      url_node(key, value, elements)
    end
    elements.join('&')
  end
  
  private
    def url_node(key, value, elements, curr_path=nil)
      if value.class != Hash && value.class != Array && curr_path.nil?
        elements << "#{CGI::escape(key.to_s)}=#{CGI::escape(value.to_s)}"
      elsif value.class != Hash && value.class != Array
        elements << curr_path + CGI::escape("[#{key.to_s}]"+ '=' + CGI::escape(value.to_s))
      elsif value.class == Hash
        value.each_pair do |k, v|
          if curr_path.nil?
            url_node(k,v, elements, CGI::escape(key.to_s))
          else
            url_node(k,v, elements, curr_path + "[#{CGI::escape(key.to_s)}]")
          end
        end
      elsif value.class == Array
        value.each do |v|
          if curr_path.nil?
            url_node('',v, elements, CGI::escape(key.to_s))
          else
            url_node('',v, elements, curr_path + "[#{CGI::escape(key.to_s)}]")
          end
        end
      end
    end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
valdemaximus-xx-0.4.0 lib/extensions/hash.rb