Sha256: f53ec7f35843ccf3c8598d920df771e2b519e7e80928b315cc280c1598273fff
Contents?: true
Size: 533 Bytes
Versions: 15
Compression:
Stored size: 533 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.all? { |k, _v| k.match?(/\A\d+\z/) } result.values else result end end end
Version data entries
15 entries across 15 versions & 1 rubygems