Sha256: 0fdffa14c3fea1fa5a82dc948b0d0a6dc2f3771b0ab799766557a4e463054fb7

Contents?: true

Size: 1.05 KB

Versions: 24

Compression:

Stored size: 1.05 KB

Contents

require 'uri'
class Hash
  
  def join(pair_string, join_string)
    output = []
    sorted = self.sort {|a,b| a[0].to_s <=> b[0].to_s}
    sorted.each do |ar|
      output << sprintf(pair_string, ar[0], ar[1])
    end
    output.join(join_string)
  end
  
  # 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 = v.to_s.uri_escape 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 = v.to_s.uri_escape if escape
          params << "#{parent}[#{k}]=#{v}&"
        end
      end
    end
    
    params.chop! # trailing &
    params.split("&").sort.join("&")
  end
  
end

Version data entries

24 entries across 24 versions & 2 rubygems

Version Path
mack-facets-0.6.0 lib/extensions/hash.rb
mack-facets-0.6.1.1 lib/mack-facets/extensions/hash.rb
mack-facets-0.6.0.1 lib/extensions/hash.rb
mack-facets-0.7.1.1 lib/mack-facets/extensions/hash.rb
mack-facets-0.6.1 lib/mack-facets/extensions/hash.rb
mack-facets-0.6.1.2 lib/mack-facets/extensions/hash.rb
mack-facets-0.7.0 lib/mack-facets/extensions/hash.rb
mack-facets-0.7.0.1 lib/mack-facets/extensions/hash.rb
mack-facets-0.8.0.101 lib/mack-facets/extensions/hash.rb
mack-facets-0.8.0.2 lib/mack-facets/extensions/hash.rb
mack-facets-0.7.1 lib/mack-facets/extensions/hash.rb
mack-facets-0.8.0.3 lib/mack-facets/extensions/hash.rb
mack-facets-0.8.0.1 lib/mack-facets/extensions/hash.rb
mack-facets-0.8.1 lib/mack-facets/extensions/hash.rb
mack-facets-0.8.0 lib/mack-facets/extensions/hash.rb
mack-facets-0.8.2 lib/mack-facets/extensions/hash.rb
mack-facets-0.8.3 lib/mack-facets/extensions/hash.rb
mack-facets-0.8.3.1 lib/mack-facets/extensions/hash.rb
mack_ruby_core_extensions-0.1.21 lib/extensions/hash.rb
mack_ruby_core_extensions-0.1.20 lib/extensions/hash.rb