Class: Hash

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

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)
  # From: http://www.ruby-forum.com/topic/142809
  # Author: Stefan Rusterholz
  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