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