Class: Hash

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

Instance Method Summary collapse

Instance Method Details

#except(*keys) ⇒ Object

Usage { :a => 1, :b => 2, :c => 3}.except(:a) -> { :b => 2, :c => 3}



10
11
12
13
14
# File 'lib/midwire_common/hash.rb', line 10

def except(*keys)
  self.reject { |k,v|
    keys.flatten.include? k.to_sym
  }
end

#grep(pattern) ⇒ Object



2
3
4
5
6
7
# File 'lib/midwire_common/hash.rb', line 2

def grep(pattern)
  inject([]) do |res, kv|
    res << kv if kv[0] =~ pattern or kv[1] =~ pattern
    res
  end
end

#only(*keys) ⇒ Object

Usage { :a => 1, :b => 2, :c => 3}.only(:a) -> => 1



17
18
19
20
21
# File 'lib/midwire_common/hash.rb', line 17

def only(*keys)
  self.dup.reject { |k,v|
    !keys.flatten.include? k.to_sym
  }
end

#pop(*keys) ⇒ Object

Usage h = { :a => 1, :b => 2, :c => 3}.pop(:a) -> => 1 … and now h == { :b => 2, :c => 3}



25
26
27
28
29
30
31
32
33
# File 'lib/midwire_common/hash.rb', line 25

def pop(*keys)
  r = self.reject { |k,v|
    !keys.flatten.include? k.to_sym
  }
  self.reject! { |k,v|
    keys.flatten.include? k.to_sym
  }
  r
end

#recursively_symbolize_keys!Object



54
55
56
57
58
59
60
61
62
# File 'lib/midwire_common/hash.rb', line 54

def recursively_symbolize_keys!
  self.symbolize_keys!
  self.values.each do |v|
    if v.is_a? Hash
      v.recursively_symbolize_keys!
    end
  end
  self
end

#symbolize_keysObject



50
51
52
# File 'lib/midwire_common/hash.rb', line 50

def symbolize_keys
  dup.symbolize_keys!
end

#symbolize_keys!Object



43
44
45
46
47
48
# File 'lib/midwire_common/hash.rb', line 43

def symbolize_keys!
  keys.each do |key|
    self[(key.to_sym rescue key) || key] = delete(key)
  end
  self
end

#to_query_stringObject

Usage { :a => 1, :b => 2, :c => 3}.to_query_string #= a=1&b=2&c=3



36
37
38
39
40
41
# File 'lib/midwire_common/hash.rb', line 36

def to_query_string
  require 'uri'
  collect do |k, v|
    "#{URI.encode(k.to_s)}=#{URI.encode(v.to_s)}"
  end.join("&")
end