Sha256: 07dad453847d9ca563eaf132fc8f9e00c0159461d4460a00bbd681ee25ca23c8

Contents?: true

Size: 781 Bytes

Versions: 1

Compression:

Stored size: 781 Bytes

Contents

# -*- encoding : utf-8 -*-

module Phrase::Extensions::Hash
  extend ActiveSupport::Concern
  
  def to_shallow_hash
    self.inject({}) do |shallow_hash, (key, value)|
      if value.is_a?(Hash)
        value.to_shallow_hash.each do |sub_key, sub_value|
          shallow_hash[[key, sub_key].join(".")] = sub_value
        end
      else
        shallow_hash[key.to_s] = value
      end
      shallow_hash
    end
  end
  
  def deep_stringify_keys
    inject({}) { |result, (key, value)|
      value = value.deep_stringify_keys if value.is_a?(Hash)
      unless value.is_a? Proc
        result[(key.to_s rescue key) || key] = value
      else
        result[(key.to_s rescue key) || key] = nil
      end
      result
    }
  end
end

Hash.send(:include, Phrase::Extensions::Hash)

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
phrase-0.1.3 lib/phrase/extensions/hash.rb