module Refract::KeysTransform

Public Class Methods

deep_stringify_keys(origin) click to toggle source
# File lib/refract/keys_transform.rb, line 19
def self.deep_stringify_keys(origin)
  transform_hash(origin) do |hash, key, value|
    hash[key.to_s] = value
  end
end
transform_hash(origin, &block) click to toggle source
# File lib/refract/keys_transform.rb, line 3
def self.transform_hash(origin, &block)
  return origin unless origin.is_a?(Hash) || origin.is_a?(Array)

  origin.inject({}) do |result, (key, value)|
    value = if value.is_a?(Hash)
              transform_hash(value, &block)
            elsif value.is_a?(Array)
              value.map { |v| transform_hash(v, &block) }
            else
              value
            end
    block.call(result, key, value)
    result
  end
end