Sha256: 11199cbf85533567bed0f2b2fdd2fc90c7f225c2083a82d7fb5172360eb5fcc5

Contents?: true

Size: 818 Bytes

Versions: 4

Compression:

Stored size: 818 Bytes

Contents

class Hash
  
  # Deletes the key(s) passed in from the hash.
  def -(ars)
    [ars].flatten.each {|a| self.delete(a)}
    self
  end
  
  # Converts a hash to query string parameters. 
  # An optional boolean escapes the values if true, which is the default.
  def to_params(escape = true)
    params = ''
    stack = []
    
    each do |k, v|
      if v.is_a?(Hash)
        stack << [k,v]
      else
        v = Rack::Utils.escape(v) if escape
        params << "#{k}=#{v}&"
      end
    end
    
    stack.each do |parent, hash|
      hash.each do |k, v|
        if v.is_a?(Hash)
          stack << ["#{parent}[#{k}]", v]
        else
          v = Rack::Utils.escape(v) if escape
          params << "#{parent}[#{k}]=#{v}&"
        end
      end
    end
    
    params.chop! # trailing &
    params
  end
  
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
mack-0.2.0 lib/core_extensions/hash.rb
mack-0.1.0 lib/core_extensions/hash.rb
mack-0.2.0.1 lib/core_extensions/hash.rb
mack-0.3.0 lib/core_extensions/hash.rb