class Hash
Public Instance Methods
clean()
click to toggle source
# File lib/x_tensions/hash.rb, line 18 def clean each do |k, v| if v.is_a?(Hash) v.clean elsif v.to_s.empty? delete(k) end end end
evaluate(*args)
click to toggle source
# File lib/x_tensions/hash.rb, line 2 def evaluate(*args) options = {:default => nil}.merge(args.last.is_a?(Hash) ? args.pop : {}) target = self # Initial target is self. while target && key = args.shift target = target[key] end return target if target return options[:default] end
get(*keys)
click to toggle source
# File lib/x_tensions/hash.rb, line 13 def get(*keys) return nil if keys.blank? self.fetch keys.shift, self.get(*keys) end
rename_keys(mapping)
click to toggle source
# File lib/x_tensions/hash.rb, line 37 def rename_keys(mapping) result = {} self.map do |k,v| mapped_key = mapping[k] ? mapping[k] : k result[mapped_key] = v.kind_of?(Hash) ? v.rename_keys(mapping) : v result[mapped_key] = v.collect{ |obj| obj.rename_keys(mapping) if obj.kind_of?(Hash)} if v.kind_of?(Array) end result end
symbolize_keys_recursive()
click to toggle source
# File lib/x_tensions/hash.rb, line 28 def symbolize_keys_recursive inject({}) do |options, (key, value)| value = value.symbolize_keys_recursive if value.instance_of? Hash value = value.symbolize_keys_recursive if value.instance_of? Array options[key.to_sym || key] = value options end end