Sha256: 1694ecba4b4f79f1dcaf5c3a5dd5ee66a30f13b6c7aef2efdf84a5fb47119463
Contents?: true
Size: 551 Bytes
Versions: 9
Compression:
Stored size: 551 Bytes
Contents
# frozen_string_literal: true class Hash def expand expanded = {} reject{ |_, v| v.is_a?(Hash) || v.is_a?(Array) }.each do |k, v| keys = k.split('.') node = expanded node = (node[keys.shift] ||= {}) while keys.length > 1 node[keys.shift] = v end expanded.compact_keys end def compact_keys result = to_h do |k, v| [k, v.is_a?(Hash) ? v.compact_keys : v] end if !result.empty? && result.all? { |k, _v| k.match?(/\A\d+\z/) } result.values else result end end end
Version data entries
9 entries across 9 versions & 1 rubygems