Sha256: ea721d68a61dbe20a80122f2e426031435254eabb61e328e6a71cc094e543df7

Contents?: true

Size: 636 Bytes

Versions: 2

Compression:

Stored size: 636 Bytes

Contents

require "hash_deep_join/version"

class Hash
  def deep_join(separator = '_')
    joined_hash = {}
    each do |key, value|
      unless value.is_a? Hash
        joined_hash.merge! key => value
        next
      end

      value.map do |nested_key, nested_value|
        inner_hash = ({ nested_key => nested_value }).deep_join(separator)
        inner_hash.each do |joined_key, joined_value|
          joined_hash.merge! "#{key}#{separator}#{joined_key}" => joined_value
        end
      end
    end
    joined_hash
  end

  def deep_join!(separator = '_')
    _self = dup
    clear
    self.merge! _self.deep_join separator
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
hash_deep_join-0.0.2 lib/hash_deep_join.rb
hash_deep_join-0.0.1 lib/hash_deep_join.rb