Sha256: bdaacdb9aa8a80fc081c9a985bed4b57f53d9c2a5a86c2f4761c4ea58b16ade2

Contents?: true

Size: 679 Bytes

Versions: 41

Compression:

Stored size: 679 Bytes

Contents

# frozen_string_literal: true

module Enumerable
  def flatten_keys(keep_roots: false)
    flatten_keys_recurse(self, keep_roots: keep_roots)
  end

  private

  def flatten_keys_recurse(root, keep_roots: false)
    unless root.is_a?(Enumerable)
      return {}
    end

    unless root.is_a?(Hash)
      root = root.each_with_index.to_h { |v, k| [k, v] }
    end

    result = {}
    root.each do |k, v|
      result[k] = v if keep_roots

      if v.is_a?(Enumerable)
        flatten_keys_recurse(v, keep_roots: keep_roots).each do |sub_key, sub_v|
          result["#{k}.#{sub_key}"] = sub_v
        end
      else
        result[k] = v
      end
    end

    result
  end
end

Version data entries

41 entries across 41 versions & 1 rubygems

Version Path
mini_defender-0.6.8 lib/mini_defender/extensions/enumerable.rb
mini_defender-0.6.7 lib/mini_defender/extensions/enumerable.rb
mini_defender-0.6.5 lib/mini_defender/extensions/enumerable.rb
mini_defender-0.6.4 lib/mini_defender/extensions/enumerable.rb
mini_defender-0.6.3 lib/mini_defender/extensions/enumerable.rb
mini_defender-0.6.2 lib/mini_defender/extensions/enumerable.rb
mini_defender-0.6.1 lib/mini_defender/extensions/enumerable.rb
mini_defender-0.6.0 lib/mini_defender/extensions/enumerable.rb
mini_defender-0.5.8 lib/mini_defender/extensions/enumerable.rb
mini_defender-0.5.7 lib/mini_defender/extensions/enumerable.rb
mini_defender-0.5.6 lib/mini_defender/extensions/enumerable.rb
mini_defender-0.5.5 lib/mini_defender/extensions/enumerable.rb
mini_defender-0.5.4 lib/mini_defender/extensions/enumerable.rb
mini_defender-0.5.3 lib/mini_defender/extensions/enumerable.rb
mini_defender-0.5.2 lib/mini_defender/extensions/enumerable.rb
mini_defender-0.5.1 lib/mini_defender/extensions/enumerable.rb
mini_defender-0.5.0 lib/mini_defender/extensions/enumerable.rb
mini_defender-0.4.1 lib/mini_defender/extensions/enumerable.rb
mini_defender-0.4.0 lib/mini_defender/extensions/enumerable.rb
mini_defender-0.3.14 lib/mini_defender/extensions/enumerable.rb