Module: Karafka::Web::Ui::Lib::HashFlattener
- Defined in:
- lib/karafka/web/ui/lib/hash_flattener.rb
Overview
Flattens a nested hash into a single-level hash with dotted keys, so nested structures (e.g. a topic's routing settings) can be presented, sorted and filtered as a flat list of name/value rows.
Class Method Summary collapse
-
.call(hash, prefix = nil, result = {}) ⇒ Hash
Flattened
{ "a.b.c" => value }hash.
Class Method Details
.call(hash, prefix = nil, result = {}) ⇒ Hash
Returns flattened { "a.b.c" => value } hash.
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/karafka/web/ui/lib/hash_flattener.rb', line 16 def call(hash, prefix = nil, result = {}) hash.each do |key, value| flat_key = prefix ? "#{prefix}.#{key}" : key.to_s case value when Hash call(value, flat_key, result) when Array value.each_with_index { |item, index| call({ index => item }, flat_key, result) } else result[flat_key] = value end end result end |