lib/darkext/hash.rb in darkhelmet-darkext-0.11.2 vs lib/darkext/hash.rb in darkhelmet-darkext-0.12.0

- old
+ new

@@ -1,16 +1,6 @@ class Hash - # Merges defaults with the hash - def with_defaults(defaults) - self.merge(defaults) { |key,old,new| old.nil? ? new : old } - end - - # Merges defaults with the hash (destructive) - def with_defaults!(defaults) - self.merge!(defaults) { |key,old,new| old.nil? ? new : old } - end - def nested_find(*keys) v = self keys.each do |key| v = v[key] return nil if v.nil? @@ -32,7 +22,17 @@ elsif a.empty? self[m] else raise NoMethodError, "#{ m}" end + end + + # http://noobkit.com/show/ruby/gems/development/merb/hash/symbolize_keys-21.html + 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 end