Class: Hash

Inherits:
Object show all
Defined in:
lib/extensions/hash.rb

Instance Method Summary collapse

Instance Method Details

#-(ars) ⇒ Object

Deletes the key(s) passed in from the hash.



14
15
16
17
# File 'lib/extensions/hash.rb', line 14

def -(ars)
  [ars].flatten.each {|a| self.delete(a)}
  self
end

#join(pair_string, join_string) ⇒ Object



4
5
6
7
8
9
10
11
# File 'lib/extensions/hash.rb', line 4

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

#symbolize_keysObject



49
50
51
52
53
54
55
56
# File 'lib/extensions/hash.rb', line 49

def symbolize_keys
  n = {}
  self.each do |k, v|
    k = k.to_sym if k.is_a?(String)
    n[k] = v
  end
  n
end

#symbolize_keys!Object



58
59
60
# File 'lib/extensions/hash.rb', line 58

def symbolize_keys!
  self.replace(symbolize_keys)
end

#to_params(escape = true) ⇒ Object

Converts a hash to query string parameters. An optional boolean escapes the values if true, which is the default.



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/extensions/hash.rb', line 21

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