Sha256: 86e8a9f20f07b1c1725448e5870ef1be01b49384679f38c43dc61797873eacde
Contents?: true
Size: 570 Bytes
Versions: 12
Compression:
Stored size: 570 Bytes
Contents
# -*- encoding : utf-8 -*- module Phrase::HashFlattener FLATTEN_SEPARATOR = "." SEPARATOR_ESCAPE_CHAR = "\001" def self.escape_default_separator(key) key.to_s.tr(FLATTEN_SEPARATOR, SEPARATOR_ESCAPE_CHAR) end def self.flatten(hash, escape, previous_key=nil, &block) hash.each_pair do |key, value| key = escape_default_separator(key) if escape current_key = [previous_key, key].compact.join(FLATTEN_SEPARATOR).to_sym yield current_key, value flatten(value, escape, current_key, &block) if value.is_a?(Hash) end end end
Version data entries
12 entries across 12 versions & 1 rubygems