module LessStruct::Util::Hash
Public Class Methods
deep_stringify_keys(hash)
click to toggle source
# File lib/less_struct/util/hash.rb, line 11 def deep_stringify_keys(hash) deep_transform_keys_in_hac(hash, &:to_s) end
deep_symbolize_keys(hash)
click to toggle source
# File lib/less_struct/util/hash.rb, line 15 def deep_symbolize_keys(hash) deep_transform_keys_in_hac(hash, &:to_sym) end
deep_transform_keys(hash, &block)
click to toggle source
# File lib/less_struct/util/hash.rb, line 19 def deep_transform_keys(hash, &block) deep_transform_keys_in_hac(hash, &block) end
deep_transform_values(hash, &block)
click to toggle source
# File lib/less_struct/util/hash.rb, line 23 def deep_transform_values(hash, &block) deep_transform_values_in_hac(hash, &block) end
Private Class Methods
deep_transform_keys_in_hac(object) { |key| ... }
click to toggle source
def deep_restore_time_in_hac(hash)
hash.inject({}) do |result_hash,(k,v)| case v when ::Hash result_hash[k] = deep_restore_time_in_hac(v) when Array result_hash[k] = v.map {|o| deep_restore_time_in_hac(o) } else if k.to_s.end_with?("_at") && v.is_a?(::String) result_hash[k] = Time.parse(v).utc else result_hash[k] = v end end result_hash end
end
# File lib/less_struct/util/hash.rb, line 47 def deep_transform_keys_in_hac(object, &block) case object when ::Hash object.keys.each do |key| value = object.delete(key) object[yield(key)] = deep_transform_keys_in_hac(value, &block) end object when Array object.map! { |element| deep_transform_keys_in_hac(element, &block) } else object end end
deep_transform_values_in_hac(object) { |object| ... }
click to toggle source
# File lib/less_struct/util/hash.rb, line 62 def deep_transform_values_in_hac(object, &block) case object when ::Hash object.each_with_object({}) do |(key, value), result| result[key] = deep_transform_values_in_hac(value, &block) end when Array object.map {|element| deep_transform_values_in_hac(element, &block) } else yield(object) end end