Class: Hash
Instance Method Summary
collapse
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(m, *a) ⇒ Object
19
20
21
22
23
24
25
26
27
|
# File 'lib/darkext/hash.rb', line 19
def method_missing(m,*a)
if m.to_s =~ /=$/
self[$`] = a[0]
elsif a.empty?
self[m]
else
raise NoMethodError, "#{ m}"
end
end
|
Instance Method Details
#deep_merge!(second) ⇒ Object
12
13
14
15
16
17
|
# File 'lib/darkext/hash.rb', line 12
def deep_merge!(second)
merger = proc { |key,v1,v2| Hash === v1 && Hash === v2 ? v1.merge(v2, &merger) : v2 }
self.merge!(second, &merger)
end
|
#nested_find(*keys) ⇒ Object
2
3
4
5
6
7
8
9
|
# File 'lib/darkext/hash.rb', line 2
def nested_find(*keys)
v = self
keys.each do |key|
v = v[key]
return nil if v.nil?
end
return v
end
|
#symbolize_keys! ⇒ Object
30
31
32
33
34
35
36
37
|
# File 'lib/darkext/hash.rb', line 30
def symbolize_keys!
each do |k,v|
sym = k.respond_to?(:to_sym) ? k.to_sym : k
self[sym] = Hash === v ? v.symbolize_keys! : v
delete(k) unless k == sym
end
self
end
|